{"version":3,"file":"application-RJgt28-k.js","sources":["../../../node_modules/svelte/src/version.js","../../../node_modules/svelte/src/internal/disclose-version.js","../../../node_modules/svelte/src/internal/common.js","../../../node_modules/svelte/src/store/utils.js","../../../node_modules/svelte/src/internal/client/utils.js","../../../node_modules/svelte/src/constants.js","../../../node_modules/svelte/src/internal/client/proxy.js","../../../node_modules/svelte/src/internal/client/block.js","../../../node_modules/svelte/src/internal/client/runtime.js","../../../node_modules/svelte/src/internal/client/hydration.js","../../../node_modules/svelte/src/internal/client/operations.js","../../../node_modules/svelte/src/internal/client/reconciler.js","../../../node_modules/svelte/src/internal/client/timing.js","../../../node_modules/svelte/src/internal/client/transitions.js","../../../node_modules/svelte/src/internal/client/render.js","../../../node_modules/svelte/src/internal/client/each.js","../../../node_modules/svelte/src/main/main-client.js","../../../node_modules/svelte/src/store/index.js","../../../packages/engine/src/functions/internal/Callback.js","../../../packages/engine/src/functions/internal/RuntimeEvent.js","../../../packages/engine/src/functions/internal/create_layers_proxy.js","../../../packages/engine/src/functions/internal/class_function_wrapper.ts","../../../packages/engine/src/functions/types/Color.js","../../../packages/engine/src/functions/types/Point.js","../../../packages/engine/src/functions/types/Vector.js","../../../packages/engine/src/functions/types/Velocity.js","../../../packages/engine/src/functions/effects/effect.js","../../../packages/engine/src/functions/collisions/colliding/entities.ts","../../../packages/engine/src/functions/collisions/colliding/shapes.ts","../../../packages/engine/src/functions/collisions/colliding/groups.ts","../../../packages/engine/src/functions/collisions/colliding/tags.ts","../../../packages/engine/src/functions/collisions/colliding/colliding.ts","../../../packages/engine/src/functions/collisions/contain.js","../../../packages/engine/src/functions/fun/gameOfLife.js","../../../packages/engine/src/functions/timers/sleep.js","../../../packages/engine/src/functions/timers/countdown.js","../../../packages/engine/src/functions/drawing/draw.js","../../../packages/engine/src/functions/events/config.js","../../../packages/engine/src/functions/events/event_listeners.js","../../../packages/engine/src/functions/events/keyboard_event_helpers.js","../../../packages/engine/src/functions/utilities/arrays.js","../../../packages/engine/src/functions/utilities/go.js","../../../packages/engine/src/functions/entities/get.js","../../../packages/engine/src/models/layers/Shape/Pixels.js","../../../packages/engine/src/models/Entity.js","../../../packages/engine/src/models/layers/Shape/Shape.js","../../../packages/engine/src/models/layers/Group.js","../../../packages/engine/src/models/layers/Text.js","../../../packages/engine/src/models/Scene.js","../../../packages/engine/src/models/Project.js","../../../packages/engine/src/fonts/Font.js","../../../packages/engine/src/fonts/RetroGaming/RetroGaming.png","../../../packages/engine/src/fonts/index.js","../../../packages/engine/src/config/config.js","../../../packages/engine/src/utilities/colors.js","../../../packages/engine/src/utilities/misc.ts","../../../packages/engine/src/utilities/rendering.js","../../../packages/engine/src/utilities/coordinates.js","../../../packages/engine/src/models/Canvas.js","../../../packages/engine/src/stores/is_running.js","../../../packages/engine/src/stores/canvases.svelte.js","../../../packages/engine/src/stores/textures.js","../../../packages/engine/src/stores/positions.js","../../../packages/engine/src/stores/active.svelte.js","../../../packages/engine/src/utilities/layers.js","../../../packages/engine/src/utilities/scenes.js","../../../packages/engine/src/webgl/matrices.js","../../../packages/engine/src/webgl/utils.js","../../../packages/engine/src/webgl/Texture.js","../../../packages/engine/src/webgl/config.js","../../../packages/engine/src/webgl/Shader.js","../../../packages/engine/src/webgl/BatchRenderer.js","../../../packages/engine/src/webgl/Graphics.js","../../../packages/engine/src/webgl/MatrixStack.js","../../../packages/engine/src/webgl/Context.js","../../../packages/engine/src/webgl/index.js","../../../packages/engine/src/drawing/drawing.js","../../../packages/engine/src/Runtime/evaluate.js","../../../packages/engine/src/Runtime/Console.js","../../../packages/engine/src/Runtime/errors.js","../../../packages/engine/src/Runtime/Scope.js","../../../packages/engine/src/Runtime/Runtime.js","../../../packages/artboard/dist/utilities/rendering/renderLayer.js","../../../packages/artboard/dist/utilities/rendering/renderScene.js","../../../packages/artboard/dist/utilities/rendering/renderPixels.js","../../../node_modules/canvas2svg/canvas2svg.js","../../../packages/artboard/dist/utilities/canvas/create_svg.js","../../../packages/artboard/dist/utilities/canvas/import_image.js","../../../node_modules/sortablejs/modular/sortable.esm.js","../../../packages/artboard/dist/components/SortableList/SortableList.svelte","../../../packages/artboard/dist/components/Icon/icons.js","../../../packages/artboard/dist/components/Icon/Icon.svelte","../../../packages/artboard/dist/stores/artboard_state.js","../../../packages/artboard/dist/stores/clipboard.svelte.js","../../../packages/artboard/dist/tools/Tool.js","../../../packages/artboard/dist/tools/MoveTool.js","../../../packages/artboard/dist/tools/BrushTool.js","../../../packages/artboard/dist/tools/RectangleTool.js","../../../packages/artboard/dist/tools/LineTool.js","../../../packages/artboard/dist/tools/FillTool.js","../../../packages/artboard/dist/tools/ToolEvent.js","../../../packages/artboard/dist/tools/index.js","../../../packages/artboard/dist/Artboard/Layers/Layers.svelte","../../../packages/artboard/dist/Artboard/Layers/LayerOptions.svelte","../../../packages/artboard/dist/Artboard/Layers/TextLayerInput.svelte","../../../packages/artboard/dist/Artboard/Canvas/Canvas.svelte","../../../packages/artboard/dist/config/shortcuts.js","../../../packages/artboard/dist/Artboard/EventListeners/EventListeners.svelte","../../../packages/artboard/dist/Artboard/Tools/Tools.svelte","../../../packages/artboard/dist/Artboard/Scenes/Scenes.svelte","../../../packages/artboard/dist/Artboard/Artboard.svelte","../../../packages/artboard/dist/Artboard/Experience.svelte","../../../node_modules/localforage/dist/localforage.js","../../../app/javascript/lib/stores/storage.svelte.js","../../../app/javascript/lib/stores/project.js","../../../app/javascript/lib/stores/present_users.js","../../../node_modules/axios/lib/helpers/bind.js","../../../node_modules/axios/lib/utils.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/helpers/parseHeaders.js","../../../node_modules/axios/lib/core/AxiosHeaders.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/adapters/fetch.js","../../../node_modules/axios/lib/adapters/adapters.js","../../../node_modules/axios/lib/core/dispatchRequest.js","../../../node_modules/axios/lib/env/data.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/deepmerge/dist/cjs.js","../../../node_modules/es-errors/index.js","../../../node_modules/es-errors/eval.js","../../../node_modules/es-errors/range.js","../../../node_modules/es-errors/ref.js","../../../node_modules/es-errors/syntax.js","../../../node_modules/es-errors/type.js","../../../node_modules/es-errors/uri.js","../../../node_modules/has-symbols/shams.js","../../../node_modules/has-symbols/index.js","../../../node_modules/has-proto/index.js","../../../node_modules/function-bind/implementation.js","../../../node_modules/function-bind/index.js","../../../node_modules/hasown/index.js","../../../node_modules/get-intrinsic/index.js","../../../node_modules/es-define-property/index.js","../../../node_modules/gopd/index.js","../../../node_modules/define-data-property/index.js","../../../node_modules/has-property-descriptors/index.js","../../../node_modules/set-function-length/index.js","../../../node_modules/call-bind/index.js","../../../node_modules/call-bind/callBound.js","../../../__vite-browser-external","../../../node_modules/object-inspect/index.js","../../../node_modules/side-channel/index.js","../../../node_modules/qs/lib/formats.js","../../../node_modules/qs/lib/utils.js","../../../node_modules/qs/lib/stringify.js","../../../node_modules/qs/lib/parse.js","../../../node_modules/qs/lib/index.js","../../../node_modules/nprogress/nprogress.js","../../../node_modules/@inertiajs/core/dist/index.esm.js","../../../node_modules/@inertiajs/svelte/src/link.js","../../../node_modules/@inertiajs/svelte/src/Link.svelte","../../../node_modules/@inertiajs/svelte/src/store.js","../../../node_modules/@inertiajs/svelte/src/Render.svelte","../../../node_modules/@inertiajs/svelte/src/App.svelte","../../../node_modules/@inertiajs/svelte/src/SSR.svelte","../../../node_modules/@inertiajs/svelte/src/createInertiaApp.js","../../../node_modules/@inertiajs/svelte/src/page.js","../../../node_modules/lodash.clonedeep/index.js","../../../node_modules/lodash.isequal/index.js","../../../node_modules/@inertiajs/svelte/src/useForm.js","../../../node_modules/js-cookie/dist/js.cookie.mjs","../../../app/javascript/lib/stores/preferences.svelte.js","../../../app/javascript/lib/stores/has_run.js","../../../node_modules/lib0/map.js","../../../node_modules/lib0/set.js","../../../node_modules/lib0/array.js","../../../node_modules/lib0/observable.js","../../../node_modules/lib0/math.js","../../../node_modules/lib0/binary.js","../../../node_modules/lib0/number.js","../../../node_modules/lib0/string.js","../../../node_modules/lib0/encoding.js","../../../node_modules/lib0/error.js","../../../node_modules/lib0/decoding.js","../../../node_modules/lib0/webcrypto.js","../../../node_modules/lib0/random.js","../../../node_modules/lib0/time.js","../../../node_modules/lib0/promise.js","../../../node_modules/lib0/conditions.js","../../../node_modules/lib0/storage.js","../../../node_modules/lib0/object.js","../../../node_modules/lib0/function.js","../../../node_modules/lib0/environment.js","../../../node_modules/lib0/buffer.js","../../../node_modules/lib0/pair.js","../../../node_modules/lib0/dom.js","../../../node_modules/lib0/symbol.js","../../../node_modules/lib0/logging.common.js","../../../node_modules/lib0/logging.js","../../../node_modules/lib0/iterator.js","../../../node_modules/yjs/dist/yjs.mjs","../../../node_modules/lib0/indexeddb.js","../../../node_modules/y-indexeddb/src/y-indexeddb.js","../../../node_modules/@hocuspocus/common/dist/hocuspocus-common.esm.js","../../../node_modules/@lifeomic/attempt/dist/es6/src/index.js","../../../node_modules/@hocuspocus/provider/dist/hocuspocus-provider.esm.js","../../../node_modules/@codemirror/state/dist/index.js","../../../node_modules/style-mod/src/style-mod.js","../../../node_modules/w3c-keyname/index.js","../../../node_modules/@codemirror/view/dist/index.js","../../../node_modules/y-codemirror.next/src/y-range.js","../../../node_modules/y-codemirror.next/src/y-sync.js","../../../node_modules/y-codemirror.next/src/y-remote-selections.js","../../../node_modules/lib0/mutex.js","../../../node_modules/y-codemirror.next/src/y-undomanager.js","../../../node_modules/y-codemirror.next/src/index.js","../../../app/javascript/lib/realtime/utilities.js","../../../app/javascript/lib/realtime/sync.js","../../../app/javascript/lib/components/PresentUsers.svelte","../../../app/javascript/lib/components/ThemeSwitcher.svelte","../../../app/javascript/lib/components/ShortcutsModal.svelte","../../../app/javascript/lib/components/ToggleIDE.svelte","../../../app/javascript/lib/components/Navbar.svelte","../../../app/javascript/lib/components/ForkProject.svelte","../../../app/javascript/lib/components/MetaTags.svelte","../../../node_modules/svelte/src/transition/index.js","../../../node_modules/svelte/src/easing/index.js","../../../node_modules/svelte/src/animate/index.js","../../../app/javascript/lib/components/FlashMessages.svelte","../../../app/javascript/lib/components/ProjectsList/DeleteProjectModal.svelte","../../../app/javascript/lib/components/ProjectsList/ProjectsList.svelte","../../../app/javascript/lib/components/ActionBar/ProjectSwitcher.svelte","../../../app/javascript/lib/utilities/clipboard.js","../../../app/javascript/lib/components/ActionBar/CollaborationForm.svelte","../../../app/javascript/lib/components/ActionBar/PublishingForm.svelte","../../../app/javascript/lib/components/ActionBar/ShareModal.svelte","../../../app/javascript/lib/components/ActionBar/ActionBar.svelte","../../../app/javascript/lib/components/SaveModal/SignUpForm.svelte","../../../app/javascript/lib/components/SaveModal/SignInForm.svelte","../../../app/javascript/lib/components/SaveModal/SaveModal.svelte","../../../app/views/blog/index.svelte","../../../app/views/blog/show.svelte","../../../node_modules/@honeybadger-io/js/dist/browser/honeybadger.js","../../../node_modules/posthog-js/dist/module.js","../../../app/views/layouts/BaseLayout.svelte","../../../app/views/experiences/show.svelte","../../../app/views/layouts/Layout.svelte","../../../app/views/projects/index.svelte","../../../node_modules/@lezer/common/dist/index.js","../../../node_modules/@lezer/lr/dist/index.js","../../../node_modules/@lezer/highlight/dist/index.js","../../../node_modules/@lezer/javascript/dist/index.js","../../../node_modules/@codemirror/language/dist/index.js","../../../node_modules/@codemirror/autocomplete/dist/index.js","../../../node_modules/@codemirror/lang-javascript/dist/index.js","../../../node_modules/@codemirror/commands/dist/index.js","../../../node_modules/crelt/index.js","../../../node_modules/@codemirror/search/dist/index.js","../../../packages/IDE/dist/config/codemirror.js","../../../packages/IDE/dist/IDE/TextEditor.svelte","../../../packages/IDE/dist/IDE/Terminal.svelte","../../../packages/IDE/dist/IDE/IDE.svelte","../../../app/views/projects/show.svelte","../../../app/views/static/index.svelte","../../../app/javascript/entrypoints/application.js"],"sourcesContent":["// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n *\n * https://svelte.dev/docs/svelte-compiler#svelte-version\n * @type {string}\n */\nexport const VERSION = '5.0.0-next.45';\nexport const PUBLIC_VERSION = '5';\n","import { PUBLIC_VERSION } from '../version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte ||= { v: new Set() }).v.add(PUBLIC_VERSION);\n","// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop = () => {};\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n\n/**\n * @template [T=any]\n * @param {any} value\n * @returns {value is PromiseLike}\n */\nexport function is_promise(value) {\n\treturn typeof value?.then === 'function';\n}\n\n/** @param {Array<() => void>} arr */\nexport function run_all(arr) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tarr[i]();\n\t}\n}\n","import { noop } from '../internal/common.js';\n\n/**\n * @template T\n * @param {import('./public').Readable | null | undefined} store\n * @param {(value: T) => void} run\n * @param {(value: T) => void} [invalidate]\n * @returns {() => void}\n */\nexport function subscribe_to_store(store, run, invalidate) {\n\tif (store == null) {\n\t\t// @ts-expect-error\n\t\trun(undefined);\n\n\t\t// @ts-expect-error\n\t\tif (invalidate) invalidate(undefined);\n\n\t\treturn noop;\n\t}\n\n\t// Svelte store takes a private second argument\n\tconst unsub = store.subscribe(\n\t\trun,\n\t\t// @ts-expect-error\n\t\tinvalidate\n\t);\n\n\t// Also support RxJS\n\t// @ts-expect-error TODO fix this in the types?\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n","// Store the references to globals in case someone tries to monkey patch these, causing the below\n// to de-opt (this occurs often when using popular extensions).\nexport var is_array = Array.isArray;\nexport var array_from = Array.from;\nexport var object_keys = Object.keys;\nexport var object_assign = Object.assign;\nexport var is_frozen = Object.isFrozen;\nexport var object_freeze = Object.freeze;\nexport var define_property = Object.defineProperty;\nexport var get_descriptor = Object.getOwnPropertyDescriptor;\nexport var get_descriptors = Object.getOwnPropertyDescriptors;\nexport var object_prototype = Object.prototype;\nexport var array_prototype = Array.prototype;\nexport var get_prototype_of = Object.getPrototypeOf;\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n","export const EACH_ITEM_REACTIVE = 1;\nexport const EACH_INDEX_REACTIVE = 1 << 1;\nexport const EACH_KEYED = 1 << 2;\n\n/** See EachBlock interface metadata.is_controlled for an explanation what this is */\nexport const EACH_IS_CONTROLLED = 1 << 3;\nexport const EACH_IS_ANIMATED = 1 << 4;\nexport const EACH_IS_IMMUTABLE = 1 << 6;\n\nexport const PROPS_IS_IMMUTABLE = 1;\nexport const PROPS_IS_RUNES = 1 << 1;\nexport const PROPS_IS_UPDATED = 1 << 2;\nexport const PROPS_IS_LAZY_INITIAL = 1 << 3;\n\n/** List of Element events that will be delegated */\nexport const DelegatedEvents = [\n\t'beforeinput',\n\t'click',\n\t'dblclick',\n\t'contextmenu',\n\t'focusin',\n\t'focusout',\n\t// 'input', This conflicts with bind:input\n\t'keydown',\n\t'keyup',\n\t'mousedown',\n\t'mousemove',\n\t'mouseout',\n\t'mouseover',\n\t'mouseup',\n\t'pointerdown',\n\t'pointermove',\n\t'pointerout',\n\t'pointerover',\n\t'pointerup',\n\t'touchend',\n\t'touchmove',\n\t'touchstart'\n];\n\n/** List of Element events that will be delegated and are passive */\nexport const PassiveDelegatedEvents = ['touchstart', 'touchmove', 'touchend'];\n\n/**\n * @type {Record}\n * List of attribute names that should be aliased to their property names\n * because they behave differently between setting them as an attribute and\n * setting them as a property.\n */\nexport const AttributeAliases = {\n\t// no `class: 'className'` because we handle that separately\n\tformnovalidate: 'formNoValidate',\n\tismap: 'isMap',\n\tnomodule: 'noModule',\n\tplaysinline: 'playsInline',\n\treadonly: 'readOnly'\n};\n\n/**\n * Attributes that are boolean, i.e. they are present or not present.\n */\nexport const DOMBooleanAttributes = [\n\t'allowfullscreen',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'disabled',\n\t'formnovalidate',\n\t'hidden',\n\t'indeterminate',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'seamless',\n\t'selected'\n];\n\nexport const namespace_svg = 'http://www.w3.org/2000/svg';\nexport const namespace_html = 'http://www.w3.org/1999/xhtml';\n","import { DEV } from 'esm-env';\nimport {\n\teffect_active,\n\tget,\n\tset,\n\tupdate,\n\tsource,\n\tupdating_derived,\n\tUNINITIALIZED,\n\tmutable_source,\n\tbatch_inspect\n} from './runtime.js';\nimport {\n\tarray_prototype,\n\tdefine_property,\n\tget_descriptor,\n\tget_descriptors,\n\tget_prototype_of,\n\tis_array,\n\tis_frozen,\n\tobject_keys,\n\tobject_prototype\n} from './utils.js';\n\nexport const STATE_SYMBOL = Symbol('$state');\nexport const READONLY_SYMBOL = Symbol('readonly');\n\n/**\n * @template T\n * @param {T} value\n * @param {boolean} [immutable]\n * @returns {import('./types.js').ProxyStateObject | T}\n */\nexport function proxy(value, immutable = true) {\n\tif (typeof value === 'object' && value != null && !is_frozen(value)) {\n\t\tif (STATE_SYMBOL in value) {\n\t\t\tconst metadata = /** @type {import('./types.js').ProxyMetadata} */ (value[STATE_SYMBOL]);\n\t\t\t// Check that the incoming value is the same proxy that this state symbol was created for:\n\t\t\t// If someone copies over the state symbol to a new object (using Reflect.ownKeys) the referenced\n\t\t\t// proxy could be stale and we should not return it.\n\t\t\tif (metadata.t === value || metadata.p === value) return metadata.p;\n\t\t}\n\n\t\tconst prototype = get_prototype_of(value);\n\n\t\t// TODO handle Map and Set as well\n\t\tif (prototype === object_prototype || prototype === array_prototype) {\n\t\t\tconst proxy = new Proxy(\n\t\t\t\tvalue,\n\t\t\t\t/** @type {ProxyHandler>} */ (state_proxy_handler)\n\t\t\t);\n\t\t\tdefine_property(value, STATE_SYMBOL, {\n\t\t\t\tvalue: init(\n\t\t\t\t\t/** @type {import('./types.js').ProxyStateObject} */ (value),\n\t\t\t\t\t/** @type {import('./types.js').ProxyStateObject} */ (proxy),\n\t\t\t\t\timmutable\n\t\t\t\t),\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: false\n\t\t\t});\n\n\t\t\treturn proxy;\n\t\t}\n\t}\n\n\treturn value;\n}\n\n/**\n * @template {import('./types.js').ProxyStateObject} T\n * @param {T} value\n * @param {Map>} already_unwrapped\n * @returns {Record}\n */\nfunction unwrap(value, already_unwrapped = new Map()) {\n\tif (typeof value === 'object' && value != null && STATE_SYMBOL in value) {\n\t\tconst unwrapped = already_unwrapped.get(value);\n\t\tif (unwrapped !== undefined) {\n\t\t\treturn unwrapped;\n\t\t}\n\t\tif (is_array(value)) {\n\t\t\t/** @type {Record} */\n\t\t\tconst array = [];\n\t\t\talready_unwrapped.set(value, array);\n\t\t\tfor (const element of value) {\n\t\t\t\tarray.push(unwrap(element, already_unwrapped));\n\t\t\t}\n\t\t\treturn array;\n\t\t} else {\n\t\t\t/** @type {Record} */\n\t\t\tconst obj = {};\n\t\t\tconst keys = Reflect.ownKeys(value);\n\t\t\tconst descriptors = get_descriptors(value);\n\t\t\talready_unwrapped.set(value, obj);\n\t\t\tfor (const key of keys) {\n\t\t\t\tif (key === STATE_SYMBOL || (DEV && key === READONLY_SYMBOL)) continue;\n\t\t\t\tif (descriptors[key].get) {\n\t\t\t\t\tdefine_property(obj, key, descriptors[key]);\n\t\t\t\t} else {\n\t\t\t\t\t/** @type {T} */\n\t\t\t\t\tconst property = value[key];\n\t\t\t\t\tobj[key] = unwrap(property, already_unwrapped);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn obj;\n\t\t}\n\t}\n\n\treturn value;\n}\n\n/**\n * @template T\n * @param {T} value\n * @returns {T}\n */\nexport function unstate(value) {\n\treturn /** @type {T} */ (unwrap(/** @type {import('./types.js').ProxyStateObject} */ (value)));\n}\n\n/**\n * @param {import('./types.js').ProxyStateObject} value\n * @param {import('./types.js').ProxyStateObject} proxy\n * @param {boolean} immutable\n * @returns {import('./types.js').ProxyMetadata}\n */\nfunction init(value, proxy, immutable) {\n\treturn {\n\t\ts: new Map(),\n\t\tv: source(0),\n\t\ta: is_array(value),\n\t\ti: immutable,\n\t\tp: proxy,\n\t\tt: value\n\t};\n}\n\n/** @type {ProxyHandler} */\nconst state_proxy_handler = {\n\tdefineProperty(target, prop, descriptor) {\n\t\tif (descriptor.value) {\n\t\t\tconst metadata = target[STATE_SYMBOL];\n\n\t\t\tconst s = metadata.s.get(prop);\n\t\t\tif (s !== undefined) set(s, proxy(descriptor.value, metadata.i));\n\t\t}\n\n\t\treturn Reflect.defineProperty(target, prop, descriptor);\n\t},\n\n\tdeleteProperty(target, prop) {\n\t\tconst metadata = target[STATE_SYMBOL];\n\t\tconst s = metadata.s.get(prop);\n\t\tconst is_array = metadata.a;\n\t\tconst boolean = delete target[prop];\n\n\t\t// If we have mutated an array directly, and the deletion\n\t\t// was successful we will also need to update the length\n\t\t// before updating the field or the version. This is to\n\t\t// ensure any effects observing length can execute before\n\t\t// effects that listen to the fields – otherwise they will\n\t\t// operate an an index that no longer exists.\n\t\tif (is_array && boolean) {\n\t\t\tconst ls = metadata.s.get('length');\n\t\t\tconst length = target.length - 1;\n\t\t\tif (ls !== undefined && ls.v !== length) {\n\t\t\t\tset(ls, length);\n\t\t\t}\n\t\t}\n\t\tif (s !== undefined) set(s, UNINITIALIZED);\n\n\t\tif (prop in target) update(metadata.v);\n\n\t\treturn boolean;\n\t},\n\n\tget(target, prop, receiver) {\n\t\tif (DEV && prop === READONLY_SYMBOL) {\n\t\t\treturn Reflect.get(target, READONLY_SYMBOL);\n\t\t}\n\t\tif (prop === STATE_SYMBOL) {\n\t\t\treturn Reflect.get(target, STATE_SYMBOL);\n\t\t}\n\n\t\tconst metadata = target[STATE_SYMBOL];\n\t\tlet s = metadata.s.get(prop);\n\n\t\t// if we're reading a property in a reactive context, create a source,\n\t\t// but only if it's an own property and not a prototype property\n\t\tif (\n\t\t\ts === undefined &&\n\t\t\t(effect_active() || updating_derived) &&\n\t\t\t(!(prop in target) || get_descriptor(target, prop)?.writable)\n\t\t) {\n\t\t\ts = (metadata.i ? source : mutable_source)(proxy(target[prop], metadata.i));\n\t\t\tmetadata.s.set(prop, s);\n\t\t}\n\n\t\tif (s !== undefined) {\n\t\t\tconst value = get(s);\n\t\t\treturn value === UNINITIALIZED ? undefined : value;\n\t\t}\n\n\t\tif (DEV) {\n\t\t\tif (typeof target[prop] === 'function' && prop !== Symbol.iterator) {\n\t\t\t\treturn batch_inspect(target, prop, receiver);\n\t\t\t}\n\t\t}\n\t\treturn Reflect.get(target, prop, receiver);\n\t},\n\n\tgetOwnPropertyDescriptor(target, prop) {\n\t\tconst descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\t\tif (descriptor && 'value' in descriptor) {\n\t\t\tconst metadata = target[STATE_SYMBOL];\n\t\t\tconst s = metadata.s.get(prop);\n\n\t\t\tif (s) {\n\t\t\t\tdescriptor.value = get(s);\n\t\t\t}\n\t\t}\n\n\t\treturn descriptor;\n\t},\n\n\thas(target, prop) {\n\t\tif (DEV && prop === READONLY_SYMBOL) {\n\t\t\treturn Reflect.has(target, READONLY_SYMBOL);\n\t\t}\n\t\tif (prop === STATE_SYMBOL) {\n\t\t\treturn true;\n\t\t}\n\t\tconst metadata = target[STATE_SYMBOL];\n\t\tconst has = Reflect.has(target, prop);\n\n\t\tlet s = metadata.s.get(prop);\n\t\tif (s !== undefined || (effect_active() && (!has || get_descriptor(target, prop)?.writable))) {\n\t\t\tif (s === undefined) {\n\t\t\t\ts = (metadata.i ? source : mutable_source)(\n\t\t\t\t\thas ? proxy(target[prop], metadata.i) : UNINITIALIZED\n\t\t\t\t);\n\t\t\t\tmetadata.s.set(prop, s);\n\t\t\t}\n\t\t\tconst value = get(s);\n\t\t\tif (value === UNINITIALIZED) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn has;\n\t},\n\n\tset(target, prop, value) {\n\t\tif (DEV && prop === READONLY_SYMBOL) {\n\t\t\ttarget[READONLY_SYMBOL] = value;\n\t\t\treturn true;\n\t\t}\n\t\tconst metadata = target[STATE_SYMBOL];\n\t\tconst s = metadata.s.get(prop);\n\t\tif (s !== undefined) set(s, proxy(value, metadata.i));\n\t\tconst is_array = metadata.a;\n\t\tconst not_has = !(prop in target);\n\n\t\t// variable.length = value -> clear all signals with index >= value\n\t\tif (is_array && prop === 'length') {\n\t\t\tfor (let i = value; i < target.length; i += 1) {\n\t\t\t\tconst s = metadata.s.get(i + '');\n\t\t\t\tif (s !== undefined) set(s, UNINITIALIZED);\n\t\t\t}\n\t\t}\n\n\t\t// Set the new value before updating any signals so that any listeners get the new value\n\t\t// @ts-ignore\n\t\ttarget[prop] = value;\n\n\t\tif (not_has) {\n\t\t\t// If we have mutated an array directly, we might need to\n\t\t\t// signal that length has also changed. Do it before updating metadata\n\t\t\t// to ensure that iterating over the array as a result of a metadata update\n\t\t\t// will not cause the length to be out of sync.\n\t\t\tif (is_array) {\n\t\t\t\tconst ls = metadata.s.get('length');\n\t\t\t\tconst length = target.length;\n\t\t\t\tif (ls !== undefined && ls.v !== length) {\n\t\t\t\t\tset(ls, length);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tupdate(metadata.v);\n\t\t}\n\n\t\treturn true;\n\t},\n\n\townKeys(target) {\n\t\tconst metadata = target[STATE_SYMBOL];\n\n\t\tget(metadata.v);\n\t\treturn Reflect.ownKeys(target);\n\t}\n};\n\nif (DEV) {\n\tstate_proxy_handler.setPrototypeOf = () => {\n\t\tthrow new Error('Cannot set prototype of $state object');\n\t};\n}\n\n/**\n * Expects a value that was wrapped with `proxy` and makes it readonly.\n *\n * @template {Record} T\n * @template {import('./types.js').ProxyReadonlyObject | T} U\n * @param {U} value\n * @returns {Proxy | U}\n */\nexport function readonly(value) {\n\tconst proxy = value && value[READONLY_SYMBOL];\n\tif (proxy) {\n\t\tconst metadata = value[STATE_SYMBOL];\n\t\t// Check that the incoming value is the same proxy that this readonly symbol was created for:\n\t\t// If someone copies over the readonly symbol to a new object (using Reflect.ownKeys) the referenced\n\t\t// proxy could be stale and we should not return it.\n\t\tif (metadata.p === value) return proxy;\n\t}\n\n\tif (\n\t\ttypeof value === 'object' &&\n\t\tvalue != null &&\n\t\t!is_frozen(value) &&\n\t\tSTATE_SYMBOL in value && // TODO handle Map and Set as well\n\t\t!(READONLY_SYMBOL in value)\n\t) {\n\t\tconst proxy = new Proxy(\n\t\t\tvalue,\n\t\t\t/** @type {ProxyHandler>} */ (\n\t\t\t\treadonly_proxy_handler\n\t\t\t)\n\t\t);\n\t\tdefine_property(value, READONLY_SYMBOL, { value: proxy, writable: false });\n\t\treturn proxy;\n\t}\n\n\treturn value;\n}\n\n/**\n * @param {any}\t_\n * @param {string} prop\n * @returns {never}\n */\nconst readonly_error = (_, prop) => {\n\tthrow new Error(\n\t\t`Non-bound props cannot be mutated — to make the \\`${prop}\\` settable, ensure the object it is used within is bound as a prop \\`bind:={...}\\`. Fallback values can never be mutated.`\n\t);\n};\n\n/** @type {ProxyHandler} */\nconst readonly_proxy_handler = {\n\tdefineProperty: readonly_error,\n\tdeleteProperty: readonly_error,\n\tset: readonly_error,\n\n\tget(target, prop, receiver) {\n\t\tconst value = Reflect.get(target, prop, receiver);\n\n\t\tif (!(prop in target)) {\n\t\t\treturn readonly(value);\n\t\t}\n\n\t\treturn value;\n\t}\n};\n","import { current_block } from './runtime.js';\n\nexport const ROOT_BLOCK = 0;\nexport const IF_BLOCK = 1;\nexport const EACH_BLOCK = 2;\nexport const EACH_ITEM_BLOCK = 3;\nexport const AWAIT_BLOCK = 4;\nexport const KEY_BLOCK = 5;\nexport const HEAD_BLOCK = 6;\nexport const DYNAMIC_COMPONENT_BLOCK = 7;\nexport const DYNAMIC_ELEMENT_BLOCK = 8;\nexport const SNIPPET_BLOCK = 9;\n\n/**\n * @param {boolean} intro\n * @returns {import('./types.js').RootBlock}\n */\nexport function create_root_block(intro) {\n\treturn {\n\t\t// dom\n\t\td: null,\n\t\t// effect\n\t\te: null,\n\t\t// intro\n\t\ti: intro,\n\t\t// parent\n\t\tp: null,\n\t\t// transition\n\t\tr: null,\n\t\t// type\n\t\tt: ROOT_BLOCK\n\t};\n}\n\n/** @returns {import('./types.js').IfBlock} */\nexport function create_if_block() {\n\treturn {\n\t\t// alternate transitions\n\t\ta: null,\n\t\t// alternate effect\n\t\tae: null,\n\t\t// consequent transitions\n\t\tc: null,\n\t\t// consequent effect\n\t\tce: null,\n\t\t// dom\n\t\td: null,\n\t\t// effect\n\t\te: null,\n\t\t// parent\n\t\tp: /** @type {import('./types.js').Block} */ (current_block),\n\t\t// transition\n\t\tr: null,\n\t\t// type\n\t\tt: IF_BLOCK,\n\t\t// value\n\t\tv: false\n\t};\n}\n\n/** @returns {import('./types.js').KeyBlock} */\nexport function create_key_block() {\n\treturn {\n\t\t// dom\n\t\td: null,\n\t\t// effect\n\t\te: null,\n\t\t// parent\n\t\tp: /** @type {import('./types.js').Block} */ (current_block),\n\t\t// transition\n\t\tr: null,\n\t\t// type\n\t\tt: KEY_BLOCK\n\t};\n}\n\n/** @returns {import('./types.js').HeadBlock} */\nexport function create_head_block() {\n\treturn {\n\t\t// dom\n\t\td: null,\n\t\t// effect\n\t\te: null,\n\t\t// parent\n\t\tp: /** @type {import('./types.js').Block} */ (current_block),\n\t\t// transition\n\t\tr: null,\n\t\t// type\n\t\tt: HEAD_BLOCK\n\t};\n}\n\n/** @returns {import('./types.js').DynamicElementBlock} */\nexport function create_dynamic_element_block() {\n\treturn {\n\t\t// dom\n\t\td: null,\n\t\t// effect\n\t\te: null,\n\t\t// parent\n\t\tp: /** @type {import('./types.js').Block} */ (current_block),\n\t\t// transition\n\t\tr: null,\n\t\t// type\n\t\tt: DYNAMIC_ELEMENT_BLOCK\n\t};\n}\n\n/** @returns {import('./types.js').DynamicComponentBlock} */\nexport function create_dynamic_component_block() {\n\treturn {\n\t\t// dom\n\t\td: null,\n\t\t// effect\n\t\te: null,\n\t\t// parent\n\t\tp: /** @type {import('./types.js').Block} */ (current_block),\n\t\t// transition\n\t\tr: null,\n\t\t// type\n\t\tt: DYNAMIC_COMPONENT_BLOCK\n\t};\n}\n\n/** @returns {import('./types.js').AwaitBlock} */\nexport function create_await_block() {\n\treturn {\n\t\t// dom\n\t\td: null,\n\t\t// effect\n\t\te: null,\n\t\t// parent\n\t\tp: /** @type {import('./types.js').Block} */ (current_block),\n\t\t// pending\n\t\tn: true,\n\t\t// transition\n\t\tr: null,\n\t\t// type\n\t\tt: AWAIT_BLOCK\n\t};\n}\n\n/**\n * @param {number} flags\n * @param {Element | Comment} anchor\n * @returns {import('./types.js').EachBlock}\n */\nexport function create_each_block(flags, anchor) {\n\treturn {\n\t\t// anchor\n\t\ta: anchor,\n\t\t// dom\n\t\td: null,\n\t\t// flags\n\t\tf: flags,\n\t\t// items\n\t\tv: [],\n\t\t// effect\n\t\te: null,\n\t\tp: /** @type {import('./types.js').Block} */ (current_block),\n\t\t// transition\n\t\tr: null,\n\t\t// transitions\n\t\ts: [],\n\t\t// type\n\t\tt: EACH_BLOCK\n\t};\n}\n\n/**\n * @param {any | import('./types.js').Signal} item\n * @param {number | import('./types.js').Signal} index\n * @param {null | unknown} key\n * @returns {import('./types.js').EachItemBlock}\n */\nexport function create_each_item_block(item, index, key) {\n\treturn {\n\t\t// animate transition\n\t\ta: null,\n\t\t// dom\n\t\td: null,\n\t\t// effect\n\t\te: null,\n\t\t// index\n\t\ti: index,\n\t\t// key\n\t\tk: key,\n\t\t// item\n\t\tv: item,\n\t\t// parent\n\t\tp: /** @type {import('./types.js').EachBlock} */ (current_block),\n\t\t// transition\n\t\tr: null,\n\t\t// transitions\n\t\ts: null,\n\t\t// type\n\t\tt: EACH_ITEM_BLOCK\n\t};\n}\n\n/** @returns {import('./types.js').SnippetBlock} */\nexport function create_snippet_block() {\n\treturn {\n\t\t// dom\n\t\td: null,\n\t\t// parent\n\t\tp: /** @type {import('./types.js').Block} */ (current_block),\n\t\t// effect\n\t\te: null,\n\t\t// transition\n\t\tr: null,\n\t\t// type\n\t\tt: SNIPPET_BLOCK\n\t};\n}\n","import { DEV } from 'esm-env';\nimport { subscribe_to_store } from '../../store/utils.js';\nimport { noop, run_all } from '../common.js';\nimport {\n\tarray_prototype,\n\tget_descriptor,\n\tget_descriptors,\n\tget_prototype_of,\n\tis_array,\n\tis_frozen,\n\tobject_freeze,\n\tobject_prototype\n} from './utils.js';\nimport {\n\tPROPS_IS_LAZY_INITIAL,\n\tPROPS_IS_IMMUTABLE,\n\tPROPS_IS_RUNES,\n\tPROPS_IS_UPDATED\n} from '../../constants.js';\nimport { READONLY_SYMBOL, STATE_SYMBOL, proxy, readonly, unstate } from './proxy.js';\nimport { EACH_BLOCK, IF_BLOCK } from './block.js';\n\nexport const SOURCE = 1;\nexport const DERIVED = 1 << 1;\nexport const EFFECT = 1 << 2;\nexport const PRE_EFFECT = 1 << 3;\nexport const RENDER_EFFECT = 1 << 4;\nconst MANAGED = 1 << 6;\nconst UNOWNED = 1 << 7;\nexport const CLEAN = 1 << 8;\nexport const DIRTY = 1 << 9;\nexport const MAYBE_DIRTY = 1 << 10;\nexport const INERT = 1 << 11;\nexport const DESTROYED = 1 << 12;\n\nconst IS_EFFECT = EFFECT | PRE_EFFECT | RENDER_EFFECT;\n\nconst FLUSH_MICROTASK = 0;\nconst FLUSH_SYNC = 1;\n\nexport const UNINITIALIZED = Symbol();\nexport const LAZY_PROPERTY = Symbol();\n\n// Used for controlling the flush of effects.\nlet current_scheduler_mode = FLUSH_MICROTASK;\n// Used for handling scheduling\nlet is_micro_task_queued = false;\nlet is_task_queued = false;\nlet is_raf_queued = false;\nlet is_flushing_effect = false;\n// Used for $inspect\nexport let is_batching_effect = false;\n\n// Handle effect queues\n\n/** @type {import('./types.js').EffectSignal[]} */\nlet current_queued_pre_and_render_effects = [];\n\n/** @type {import('./types.js').EffectSignal[]} */\nlet current_queued_effects = [];\n\n/** @type {Array<() => void>} */\nlet current_queued_tasks = [];\n/** @type {Array<() => void>} */\nlet current_raf_tasks = [];\nlet flush_count = 0;\n// Handle signal reactivity tree dependencies and consumer\n\n/** @type {null | import('./types.js').ComputationSignal} */\nlet current_consumer = null;\n\n/** @type {null | import('./types.js').EffectSignal} */\nexport let current_effect = null;\n\n/** @type {null | import('./types.js').Signal[]} */\nlet current_dependencies = null;\nlet current_dependencies_index = 0;\n/** @type {null | import('./types.js').Signal[]} */\nlet current_untracked_writes = null;\n/** @type {null | import('./types.js').SignalDebug} */\nlet last_inspected_signal = null;\n/** If `true`, `get`ting the signal should not register it as a dependency */\nexport let current_untracking = false;\n/** Exists to opt out of the mutation validation for stores which may be set for the first time during a derivation */\nlet ignore_mutation_validation = false;\n\n// If we are working with a get() chain that has no active container,\n// to prevent memory leaks, we skip adding the consumer.\nlet current_skip_consumer = false;\n// Handle collecting all signals which are read during a specific time frame\nlet is_signals_recorded = false;\nlet captured_signals = new Set();\n\n/** @type {Function | null} */\nlet inspect_fn = null;\n\n/** @type {Array} */\nlet inspect_captured_signals = [];\n\n// Handle rendering tree blocks and anchors\n/** @type {null | import('./types.js').Block} */\nexport let current_block = null;\n// Handling runtime component context\n\n/** @type {import('./types.js').ComponentContext | null} */\nexport let current_component_context = null;\nexport let is_ssr = false;\n\nexport let updating_derived = false;\n\n/**\n * @param {boolean} ssr\n * @returns {void}\n */\nexport function set_is_ssr(ssr) {\n\tis_ssr = ssr;\n}\n\n/**\n * @param {null | import('./types.js').ComponentContext} context\n * @returns {boolean}\n */\nfunction is_runes(context) {\n\tconst component_context = context || current_component_context;\n\treturn component_context !== null && component_context.r;\n}\n\n/**\n * @param {import('./types.js').ProxyStateObject} target\n * @param {string | symbol} prop\n * @param {any} receiver\n */\nexport function batch_inspect(target, prop, receiver) {\n\tconst value = Reflect.get(target, prop, receiver);\n\treturn function () {\n\t\tconst previously_batching_effect = is_batching_effect;\n\t\tis_batching_effect = true;\n\t\ttry {\n\t\t\treturn Reflect.apply(value, receiver, arguments);\n\t\t} finally {\n\t\t\tis_batching_effect = previously_batching_effect;\n\t\t\tif (last_inspected_signal !== null) {\n\t\t\t\tfor (const fn of last_inspected_signal.inspect) fn();\n\t\t\t\tlast_inspected_signal = null;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {null | import('./types.js').ComponentContext} context_stack_item\n * @returns {void}\n */\nexport function set_current_component_context(context_stack_item) {\n\tcurrent_component_context = context_stack_item;\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function default_equals(a, b) {\n\treturn a === b;\n}\n\n/**\n * @template V\n * @param {import('./types.js').SignalFlags} flags\n * @param {V} value\n * @returns {import('./types.js').SourceSignal | import('./types.js').SourceSignal & import('./types.js').SourceSignalDebug}\n */\nfunction create_source_signal(flags, value) {\n\tif (DEV) {\n\t\treturn {\n\t\t\t// consumers\n\t\t\tc: null,\n\t\t\t// equals\n\t\t\te: default_equals,\n\t\t\t// flags\n\t\t\tf: flags,\n\t\t\t// value\n\t\t\tv: value,\n\t\t\t// context: We can remove this if we get rid of beforeUpdate/afterUpdate\n\t\t\tx: null,\n\t\t\t// this is for DEV only\n\t\t\tinspect: new Set()\n\t\t};\n\t}\n\treturn {\n\t\t// consumers\n\t\tc: null,\n\t\t// equals\n\t\te: default_equals,\n\t\t// flags\n\t\tf: flags,\n\t\t// value\n\t\tv: value,\n\t\t// context: We can remove this if we get rid of beforeUpdate/afterUpdate\n\t\tx: null\n\t};\n}\n\n/**\n * @template V\n * @param {import('./types.js').SignalFlags} flags\n * @param {V} value\n * @param {import('./types.js').Block | null} block\n * @returns {import('./types.js').ComputationSignal | import('./types.js').ComputationSignal & import('./types.js').SourceSignalDebug}\n */\nfunction create_computation_signal(flags, value, block) {\n\tif (DEV) {\n\t\treturn {\n\t\t\t// block\n\t\t\tb: block,\n\t\t\t// consumers\n\t\t\tc: null,\n\t\t\t// destroy\n\t\t\td: null,\n\t\t\t// equals\n\t\t\te: null,\n\t\t\t// flags\n\t\t\tf: flags,\n\t\t\t// init\n\t\t\ti: null,\n\t\t\t// level\n\t\t\tl: 0,\n\t\t\t// references\n\t\t\tr: null,\n\t\t\t// value\n\t\t\tv: value,\n\t\t\t// context: We can remove this if we get rid of beforeUpdate/afterUpdate\n\t\t\tx: null,\n\t\t\t// destroy\n\t\t\ty: null,\n\t\t\t// this is for DEV only\n\t\t\tinspect: new Set()\n\t\t};\n\t}\n\n\treturn {\n\t\t// block\n\t\tb: block,\n\t\t// consumers\n\t\tc: null,\n\t\t// destroy\n\t\td: null,\n\t\t// equals\n\t\te: null,\n\t\t// flags\n\t\tf: flags,\n\t\t// level\n\t\tl: 0,\n\t\t// init\n\t\ti: null,\n\t\t// references\n\t\tr: null,\n\t\t// value\n\t\tv: value,\n\t\t// context: We can remove this if we get rid of beforeUpdate/afterUpdate\n\t\tx: null,\n\t\t// destroy\n\t\ty: null\n\t};\n}\n\n/**\n * @param {import('./types.js').ComputationSignal} target_signal\n * @param {import('./types.js').ComputationSignal} ref_signal\n * @returns {void}\n */\nfunction push_reference(target_signal, ref_signal) {\n\tconst references = target_signal.r;\n\tif (references === null) {\n\t\ttarget_signal.r = [ref_signal];\n\t} else {\n\t\treferences.push(ref_signal);\n\t}\n}\n\n/**\n * @template V\n * @param {import('./types.js').Signal} signal\n * @returns {boolean}\n */\nfunction is_signal_dirty(signal) {\n\tconst flags = signal.f;\n\tif ((flags & DIRTY) !== 0 || signal.v === UNINITIALIZED) {\n\t\treturn true;\n\t}\n\tif ((flags & MAYBE_DIRTY) !== 0) {\n\t\tconst dependencies = /** @type {import('./types.js').ComputationSignal} **/ (signal).d;\n\t\tif (dependencies !== null) {\n\t\t\tconst length = dependencies.length;\n\t\t\tlet i;\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tconst dependency = dependencies[i];\n\t\t\t\tif ((dependency.f & MAYBE_DIRTY) !== 0 && !is_signal_dirty(dependency)) {\n\t\t\t\t\tset_signal_status(dependency, CLEAN);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// The flags can be marked as dirty from the above is_signal_dirty call.\n\t\t\t\tif ((dependency.f & DIRTY) !== 0) {\n\t\t\t\t\tif ((dependency.f & DERIVED) !== 0) {\n\t\t\t\t\t\tupdate_derived(\n\t\t\t\t\t\t\t/** @type {import('./types.js').ComputationSignal} **/ (dependency),\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// Might have been mutated from above get.\n\t\t\t\t\t\tif ((signal.f & DIRTY) !== 0) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * @template V\n * @param {import('./types.js').ComputationSignal} signal\n * @returns {V}\n */\nfunction execute_signal_fn(signal) {\n\tconst init = signal.i;\n\tconst flags = signal.f;\n\tconst previous_dependencies = current_dependencies;\n\tconst previous_dependencies_index = current_dependencies_index;\n\tconst previous_untracked_writes = current_untracked_writes;\n\tconst previous_consumer = current_consumer;\n\tconst previous_block = current_block;\n\tconst previous_component_context = current_component_context;\n\tconst previous_skip_consumer = current_skip_consumer;\n\tconst is_render_effect = (flags & RENDER_EFFECT) !== 0;\n\tconst previous_untracking = current_untracking;\n\tcurrent_dependencies = /** @type {null | import('./types.js').Signal[]} */ (null);\n\tcurrent_dependencies_index = 0;\n\tcurrent_untracked_writes = null;\n\tcurrent_consumer = signal;\n\tcurrent_block = signal.b;\n\tcurrent_component_context = signal.x;\n\tcurrent_skip_consumer = !is_flushing_effect && (flags & UNOWNED) !== 0;\n\tcurrent_untracking = false;\n\n\t// Render effects are invoked when the UI is about to be updated - run beforeUpdate at that point\n\tif (is_render_effect && current_component_context?.u != null) {\n\t\t// update_callbacks.execute()\n\t\tcurrent_component_context.u.e();\n\t}\n\n\ttry {\n\t\tlet res;\n\t\tif (is_render_effect) {\n\t\t\tres =\n\t\t\t\t/** @type {(block: import('./types.js').Block, signal: import('./types.js').Signal) => V} */ (\n\t\t\t\t\tinit\n\t\t\t\t)(\n\t\t\t\t\t/** @type {import('./types.js').Block} */ (signal.b),\n\t\t\t\t\t/** @type {import('./types.js').Signal} */ (signal)\n\t\t\t\t);\n\t\t} else {\n\t\t\tres = /** @type {() => V} */ (init)();\n\t\t}\n\t\tlet dependencies = /** @type {import('./types.js').Signal[]} **/ (signal.d);\n\t\tif (current_dependencies !== null) {\n\t\t\tlet i;\n\t\t\tif (dependencies !== null) {\n\t\t\t\tconst deps_length = dependencies.length;\n\t\t\t\t// Include any dependencies up until the current_dependencies_index.\n\t\t\t\tconst full_current_dependencies =\n\t\t\t\t\tcurrent_dependencies_index === 0\n\t\t\t\t\t\t? current_dependencies\n\t\t\t\t\t\t: dependencies.slice(0, current_dependencies_index).concat(current_dependencies);\n\t\t\t\tconst current_dep_length = full_current_dependencies.length;\n\t\t\t\t// If we have more than 16 elements in the array then use a Set for faster performance\n\t\t\t\t// TODO: evaluate if we should always just use a Set or not here?\n\t\t\t\tconst full_current_dependencies_set =\n\t\t\t\t\tcurrent_dep_length > 16 && deps_length - current_dependencies_index > 1\n\t\t\t\t\t\t? new Set(full_current_dependencies)\n\t\t\t\t\t\t: null;\n\t\t\t\tfor (i = current_dependencies_index; i < deps_length; i++) {\n\t\t\t\t\tconst dependency = dependencies[i];\n\t\t\t\t\tif (\n\t\t\t\t\t\tfull_current_dependencies_set !== null\n\t\t\t\t\t\t\t? !full_current_dependencies_set.has(dependency)\n\t\t\t\t\t\t\t: !full_current_dependencies.includes(dependency)\n\t\t\t\t\t) {\n\t\t\t\t\t\tremove_consumer(signal, dependency);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (dependencies !== null && current_dependencies_index > 0) {\n\t\t\t\tdependencies.length = current_dependencies_index + current_dependencies.length;\n\t\t\t\tfor (i = 0; i < current_dependencies.length; i++) {\n\t\t\t\t\tdependencies[current_dependencies_index + i] = current_dependencies[i];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsignal.d = /** @type {import('./types.js').Signal[]} **/ (\n\t\t\t\t\tdependencies = current_dependencies\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (!current_skip_consumer) {\n\t\t\t\tfor (i = current_dependencies_index; i < dependencies.length; i++) {\n\t\t\t\t\tconst dependency = dependencies[i];\n\t\t\t\t\tconst consumers = dependency.c;\n\n\t\t\t\t\tif (consumers === null) {\n\t\t\t\t\t\tdependency.c = [signal];\n\t\t\t\t\t} else if (consumers[consumers.length - 1] !== signal) {\n\t\t\t\t\t\t// TODO: should this be:\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// } else if (!consumers.includes(signal)) {\n\t\t\t\t\t\t//\n\t\t\t\t\t\tconsumers.push(signal);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (dependencies !== null && current_dependencies_index < dependencies.length) {\n\t\t\tremove_consumers(signal, current_dependencies_index);\n\t\t\tdependencies.length = current_dependencies_index;\n\t\t}\n\t\treturn res;\n\t} finally {\n\t\tcurrent_dependencies = previous_dependencies;\n\t\tcurrent_dependencies_index = previous_dependencies_index;\n\t\tcurrent_untracked_writes = previous_untracked_writes;\n\t\tcurrent_consumer = previous_consumer;\n\t\tcurrent_block = previous_block;\n\t\tcurrent_component_context = previous_component_context;\n\t\tcurrent_skip_consumer = previous_skip_consumer;\n\t\tcurrent_untracking = previous_untracking;\n\t}\n}\n\n/**\n * @template V\n * @param {import('./types.js').ComputationSignal} signal\n * @param {import('./types.js').Signal} dependency\n * @returns {void}\n */\nfunction remove_consumer(signal, dependency) {\n\tconst consumers = dependency.c;\n\tlet consumers_length = 0;\n\tif (consumers !== null) {\n\t\tconsumers_length = consumers.length - 1;\n\t\tconst index = consumers.indexOf(signal);\n\t\tif (index !== -1) {\n\t\t\tif (consumers_length === 0) {\n\t\t\t\tdependency.c = null;\n\t\t\t} else {\n\t\t\t\t// Swap with last element and then remove.\n\t\t\t\tconsumers[index] = consumers[consumers_length];\n\t\t\t\tconsumers.pop();\n\t\t\t}\n\t\t}\n\t}\n\tif (consumers_length === 0 && (dependency.f & UNOWNED) !== 0) {\n\t\t// If the signal is unowned then we need to make sure to change it to dirty.\n\t\tset_signal_status(dependency, DIRTY);\n\t\tremove_consumers(/** @type {import('./types.js').ComputationSignal} **/ (dependency), 0);\n\t}\n}\n\n/**\n * @template V\n * @param {import('./types.js').ComputationSignal} signal\n * @param {number} start_index\n * @returns {void}\n */\nfunction remove_consumers(signal, start_index) {\n\tconst dependencies = signal.d;\n\tif (dependencies !== null) {\n\t\tconst active_dependencies = start_index === 0 ? null : dependencies.slice(0, start_index);\n\t\tlet i;\n\t\tfor (i = start_index; i < dependencies.length; i++) {\n\t\t\tconst dependency = dependencies[i];\n\t\t\t// Avoid removing a consumer if we know that it is active (start_index will not be 0)\n\t\t\tif (active_dependencies === null || !active_dependencies.includes(dependency)) {\n\t\t\t\tremove_consumer(signal, dependency);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @template V\n * @param {import('./types.js').ComputationSignal} signal\n * @returns {void}\n */\nfunction destroy_references(signal) {\n\tconst references = signal.r;\n\tsignal.r = null;\n\tif (references !== null) {\n\t\tlet i;\n\t\tfor (i = 0; i < references.length; i++) {\n\t\t\tdestroy_signal(references[i]);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./types.js').Block} block\n * @param {unknown} error\n * @returns {void}\n */\nfunction report_error(block, error) {\n\t/** @type {import('./types.js').Block | null} */\n\tlet current_block = block;\n\n\tif (current_block !== null) {\n\t\tthrow error;\n\t}\n}\n\n/**\n * @param {import('./types.js').EffectSignal} signal\n * @returns {void}\n */\nexport function execute_effect(signal) {\n\tif ((signal.f & DESTROYED) !== 0) {\n\t\treturn;\n\t}\n\tconst teardown = signal.v;\n\tconst previous_effect = current_effect;\n\tcurrent_effect = signal;\n\n\ttry {\n\t\tdestroy_references(signal);\n\t\tif (teardown !== null) {\n\t\t\tteardown();\n\t\t}\n\t\tconst possible_teardown = execute_signal_fn(signal);\n\t\tif (typeof possible_teardown === 'function') {\n\t\t\tsignal.v = possible_teardown;\n\t\t}\n\t} catch (error) {\n\t\tconst block = signal.b;\n\t\tif (block !== null) {\n\t\t\treport_error(block, error);\n\t\t} else {\n\t\t\tthrow error;\n\t\t}\n\t} finally {\n\t\tcurrent_effect = previous_effect;\n\t}\n\tconst component_context = signal.x;\n\tif (\n\t\tis_runes(component_context) && // Don't rerun pre effects more than once to accomodate for \"$: only runs once\" behavior\n\t\t(signal.f & PRE_EFFECT) !== 0 &&\n\t\tcurrent_queued_pre_and_render_effects.length > 0\n\t) {\n\t\tflush_local_pre_effects(component_context);\n\t}\n}\n\nfunction infinite_loop_guard() {\n\tif (flush_count > 100) {\n\t\tthrow new Error(\n\t\t\t'ERR_SVELTE_TOO_MANY_UPDATES' +\n\t\t\t\t(DEV\n\t\t\t\t\t? ': Maximum update depth exceeded. This can happen when a reactive block or effect ' +\n\t\t\t\t\t\t'repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops.'\n\t\t\t\t\t: '')\n\t\t);\n\t}\n\tflush_count++;\n}\n\n/**\n * @param {Array} effects\n * @returns {void}\n */\nfunction flush_queued_effects(effects) {\n\tconst length = effects.length;\n\tif (length > 0) {\n\t\tinfinite_loop_guard();\n\t\tconst previously_flushing_effect = is_flushing_effect;\n\t\tis_flushing_effect = true;\n\t\ttry {\n\t\t\tlet i;\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tconst signal = effects[i];\n\t\t\t\tconst flags = signal.f;\n\t\t\t\tif ((flags & (DESTROYED | INERT)) === 0) {\n\t\t\t\t\tif (is_signal_dirty(signal)) {\n\t\t\t\t\t\tset_signal_status(signal, CLEAN);\n\t\t\t\t\t\texecute_effect(signal);\n\t\t\t\t\t} else if ((flags & MAYBE_DIRTY) !== 0) {\n\t\t\t\t\t\tset_signal_status(signal, CLEAN);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tis_flushing_effect = previously_flushing_effect;\n\t\t}\n\n\t\teffects.length = 0;\n\t}\n}\n\nfunction process_microtask() {\n\tis_micro_task_queued = false;\n\tif (flush_count > 101) {\n\t\treturn;\n\t}\n\tconst previous_queued_pre_and_render_effects = current_queued_pre_and_render_effects;\n\tconst previous_queued_effects = current_queued_effects;\n\tcurrent_queued_pre_and_render_effects = [];\n\tcurrent_queued_effects = [];\n\tflush_queued_effects(previous_queued_pre_and_render_effects);\n\tflush_queued_effects(previous_queued_effects);\n\tif (!is_micro_task_queued) {\n\t\tflush_count = 0;\n\t}\n}\n\n/**\n * @param {import('./types.js').EffectSignal} signal\n * @param {boolean} sync\n * @returns {void}\n */\nexport function schedule_effect(signal, sync) {\n\tconst flags = signal.f;\n\tif (sync) {\n\t\tconst previously_flushing_effect = is_flushing_effect;\n\t\ttry {\n\t\t\tis_flushing_effect = true;\n\t\t\texecute_effect(signal);\n\t\t\tset_signal_status(signal, CLEAN);\n\t\t} finally {\n\t\t\tis_flushing_effect = previously_flushing_effect;\n\t\t}\n\t} else {\n\t\tif (current_scheduler_mode === FLUSH_MICROTASK) {\n\t\t\tif (!is_micro_task_queued) {\n\t\t\t\tis_micro_task_queued = true;\n\t\t\t\tqueueMicrotask(process_microtask);\n\t\t\t}\n\t\t}\n\t\tif ((flags & EFFECT) !== 0) {\n\t\t\tcurrent_queued_effects.push(signal);\n\t\t\t// Prevent any nested user effects from potentially triggering\n\t\t\t// before this effect is scheduled. We know they will be destroyed\n\t\t\t// so we can make them inert to avoid having to find them in the\n\t\t\t// queue and remove them.\n\t\t\tif ((flags & MANAGED) === 0) {\n\t\t\t\tmark_subtree_children_inert(signal, true);\n\t\t\t}\n\t\t} else {\n\t\t\t// We need to ensure we insert the signal in the right topological order. In other words,\n\t\t\t// we need to evaluate where to insert the signal based off its level and whether or not it's\n\t\t\t// a pre-effect and within the same block. By checking the signals in the queue in reverse order\n\t\t\t// we can find the right place quickly. TODO: maybe opt to use a linked list rather than an array\n\t\t\t// for these operations.\n\t\t\tconst length = current_queued_pre_and_render_effects.length;\n\t\t\tlet should_append = length === 0;\n\n\t\t\tif (!should_append) {\n\t\t\t\tconst target_level = signal.l;\n\t\t\t\tconst target_block = signal.b;\n\t\t\t\tconst is_pre_effect = (flags & PRE_EFFECT) !== 0;\n\t\t\t\tlet target_signal;\n\t\t\t\tlet is_target_pre_effect;\n\t\t\t\tlet i = length;\n\t\t\t\twhile (true) {\n\t\t\t\t\ttarget_signal = current_queued_pre_and_render_effects[--i];\n\t\t\t\t\tif (target_signal.l <= target_level) {\n\t\t\t\t\t\tif (i + 1 === length) {\n\t\t\t\t\t\t\tshould_append = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tis_target_pre_effect = (target_signal.f & PRE_EFFECT) !== 0;\n\t\t\t\t\t\t\tif (target_signal.b !== target_block || (is_target_pre_effect && !is_pre_effect)) {\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurrent_queued_pre_and_render_effects.splice(i, 0, signal);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\tcurrent_queued_pre_and_render_effects.unshift(signal);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (should_append) {\n\t\t\t\tcurrent_queued_pre_and_render_effects.push(signal);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction process_task() {\n\tis_task_queued = false;\n\tconst tasks = current_queued_tasks.slice();\n\tcurrent_queued_tasks = [];\n\trun_all(tasks);\n}\n\nfunction process_raf_task() {\n\tis_raf_queued = false;\n\tconst tasks = current_raf_tasks.slice();\n\tcurrent_raf_tasks = [];\n\trun_all(tasks);\n}\n\n/**\n * @param {() => void} fn\n * @returns {void}\n */\nexport function schedule_task(fn) {\n\tif (!is_task_queued) {\n\t\tis_task_queued = true;\n\t\tsetTimeout(process_task, 0);\n\t}\n\tcurrent_queued_tasks.push(fn);\n}\n\n/**\n * @param {() => void} fn\n * @returns {void}\n */\nexport function schedule_raf_task(fn) {\n\tif (!is_raf_queued) {\n\t\tis_raf_queued = true;\n\t\trequestAnimationFrame(process_raf_task);\n\t}\n\tcurrent_raf_tasks.push(fn);\n}\n\n/**\n * @returns {void}\n */\nexport function flush_local_render_effects() {\n\tconst effects = [];\n\tfor (let i = 0; i < current_queued_pre_and_render_effects.length; i++) {\n\t\tconst effect = current_queued_pre_and_render_effects[i];\n\t\tif ((effect.f & RENDER_EFFECT) !== 0 && effect.x === current_component_context) {\n\t\t\teffects.push(effect);\n\t\t\tcurrent_queued_pre_and_render_effects.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n\tflush_queued_effects(effects);\n}\n\n/**\n * @param {null | import('./types.js').ComponentContext} context\n * @returns {void}\n */\nexport function flush_local_pre_effects(context) {\n\tconst effects = [];\n\tfor (let i = 0; i < current_queued_pre_and_render_effects.length; i++) {\n\t\tconst effect = current_queued_pre_and_render_effects[i];\n\t\tif ((effect.f & PRE_EFFECT) !== 0 && effect.x === context) {\n\t\t\teffects.push(effect);\n\t\t\tcurrent_queued_pre_and_render_effects.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n\tflush_queued_effects(effects);\n}\n\n/**\n * Synchronously flushes any pending state changes and those that result from it.\n * @param {() => void} [fn]\n * @returns {void}\n */\nexport function flushSync(fn) {\n\tconst previous_scheduler_mode = current_scheduler_mode;\n\tconst previous_queued_pre_and_render_effects = current_queued_pre_and_render_effects;\n\tconst previous_queued_effects = current_queued_effects;\n\ttry {\n\t\tinfinite_loop_guard();\n\t\t/** @type {import('./types.js').EffectSignal[]} */\n\t\tconst pre_and_render_effects = [];\n\n\t\t/** @type {import('./types.js').EffectSignal[]} */\n\t\tconst effects = [];\n\t\tcurrent_scheduler_mode = FLUSH_SYNC;\n\t\tcurrent_queued_pre_and_render_effects = pre_and_render_effects;\n\t\tcurrent_queued_effects = effects;\n\t\tflush_queued_effects(previous_queued_pre_and_render_effects);\n\t\tflush_queued_effects(previous_queued_effects);\n\t\tif (fn !== undefined) {\n\t\t\tfn();\n\t\t}\n\t\tif (current_queued_pre_and_render_effects.length > 0 || effects.length > 0) {\n\t\t\tflushSync();\n\t\t}\n\t\tif (is_raf_queued) {\n\t\t\tprocess_raf_task();\n\t\t}\n\t\tif (is_task_queued) {\n\t\t\tprocess_task();\n\t\t}\n\t\tflush_count = 0;\n\t} finally {\n\t\tcurrent_scheduler_mode = previous_scheduler_mode;\n\t\tcurrent_queued_pre_and_render_effects = previous_queued_pre_and_render_effects;\n\t\tcurrent_queued_effects = previous_queued_effects;\n\t}\n}\n\n/**\n * Returns a promise that resolves once any pending state changes have been applied.\n * @returns {Promise}\n */\nexport async function tick() {\n\tawait Promise.resolve();\n\t// By calling flushSync we guarantee that any pending state changes are applied after one tick.\n\t// TODO look into whether we can make flushing subsequent updates synchronously in the future.\n\tflushSync();\n}\n\n/**\n * @template V\n * @param {import('./types.js').ComputationSignal} signal\n * @param {boolean} force_schedule\n * @returns {void}\n */\nfunction update_derived(signal, force_schedule) {\n\tconst previous_updating_derived = updating_derived;\n\tupdating_derived = true;\n\tdestroy_references(signal);\n\tconst value = execute_signal_fn(signal);\n\tupdating_derived = previous_updating_derived;\n\tconst status = current_skip_consumer || (signal.f & UNOWNED) !== 0 ? DIRTY : CLEAN;\n\tset_signal_status(signal, status);\n\tconst equals = /** @type {import('./types.js').EqualsFunctions} */ (signal.e);\n\tif (!equals(value, signal.v)) {\n\t\tsignal.v = value;\n\t\tmark_signal_consumers(signal, DIRTY, force_schedule);\n\n\t\t// @ts-expect-error\n\t\tif (DEV && signal.inspect && force_schedule) {\n\t\t\tfor (const fn of /** @type {import('./types.js').SignalDebug} */ (signal).inspect) fn();\n\t\t}\n\t}\n}\n\n/**\n * Gets the current value of a store. If the store isn't subscribed to yet, it will create a proxy\n * signal that will be updated when the store is. The store references container is needed to\n * track reassignments to stores and to track the correct component context.\n * @template V\n * @param {import('./types.js').Store | null | undefined} store\n * @param {string} store_name\n * @param {import('./types.js').StoreReferencesContainer} stores\n * @returns {V}\n */\nexport function store_get(store, store_name, stores) {\n\t/** @type {import('./types.js').StoreReferencesContainer[''] | undefined} */\n\tlet entry = stores[store_name];\n\tconst is_new = entry === undefined;\n\n\tif (is_new) {\n\t\tentry = {\n\t\t\tstore: null,\n\t\t\tlast_value: null,\n\t\t\tvalue: mutable_source(UNINITIALIZED),\n\t\t\tunsubscribe: noop\n\t\t};\n\t\t// TODO: can we remove this code? it was refactored out when we split up source/comptued signals\n\t\t// push_destroy_fn(entry.value, () => {\n\t\t// \t/** @type {import('./types.js').StoreReferencesContainer['']} */ (entry).last_value =\n\t\t// \t\t/** @type {import('./types.js').StoreReferencesContainer['']} */ (entry).value.value;\n\t\t// });\n\t\tstores[store_name] = entry;\n\t}\n\n\tif (is_new || entry.store !== store) {\n\t\tentry.unsubscribe();\n\t\tentry.store = store ?? null;\n\t\tentry.unsubscribe = connect_store_to_signal(store, entry.value);\n\t}\n\n\tconst value = get(entry.value);\n\t// This could happen if the store was cleaned up because the component was destroyed and there's a leak on the user side.\n\t// In that case we don't want to fail with a cryptic Symbol error, but rather return the last value we got.\n\treturn value === UNINITIALIZED ? entry.last_value : value;\n}\n\n/**\n * @template V\n * @param {import('./types.js').Store | null | undefined} store\n * @param {import('./types.js').SourceSignal} source\n */\nfunction connect_store_to_signal(store, source) {\n\tif (store == null) {\n\t\tset(source, undefined);\n\t\treturn noop;\n\t}\n\n\t/** @param {V} v */\n\tconst run = (v) => {\n\t\tignore_mutation_validation = true;\n\t\tset(source, v);\n\t\tignore_mutation_validation = false;\n\t};\n\treturn subscribe_to_store(store, run);\n}\n\n/**\n * Sets the new value of a store and returns that value.\n * @template V\n * @param {import('./types.js').Store} store\n * @param {V} value\n * @returns {V}\n */\nexport function store_set(store, value) {\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * Unsubscribes from all auto-subscribed stores on destroy\n * @param {import('./types.js').StoreReferencesContainer} stores\n */\nexport function unsubscribe_on_destroy(stores) {\n\tonDestroy(() => {\n\t\tlet store_name;\n\t\tfor (store_name in stores) {\n\t\t\tconst ref = stores[store_name];\n\t\t\tref.unsubscribe();\n\t\t\t// TODO: can we remove this code? it was refactored out when we split up source/comptued signals\n\t\t\t// destroy_signal(ref.value);\n\t\t}\n\t});\n}\n\n/**\n * @template V\n * @param {import('./types.js').Signal} signal\n * @returns {V}\n */\nexport function get(signal) {\n\t// @ts-expect-error\n\tif (DEV && signal.inspect && inspect_fn) {\n\t\t/** @type {import('./types.js').SignalDebug} */ (signal).inspect.add(inspect_fn);\n\t\t// @ts-expect-error\n\t\tinspect_captured_signals.push(signal);\n\t}\n\n\tconst flags = signal.f;\n\tif ((flags & DESTROYED) !== 0) {\n\t\treturn signal.v;\n\t}\n\n\tif (is_signals_recorded) {\n\t\tcaptured_signals.add(signal);\n\t}\n\n\t// Register the dependency on the current consumer signal.\n\tif (current_consumer !== null && (current_consumer.f & MANAGED) === 0 && !current_untracking) {\n\t\tconst unowned = (current_consumer.f & UNOWNED) !== 0;\n\t\tconst dependencies = current_consumer.d;\n\t\tif (\n\t\t\tcurrent_dependencies === null &&\n\t\t\tdependencies !== null &&\n\t\t\tdependencies[current_dependencies_index] === signal &&\n\t\t\t!(unowned && current_effect !== null)\n\t\t) {\n\t\t\tcurrent_dependencies_index++;\n\t\t} else if (\n\t\t\tdependencies === null ||\n\t\t\tcurrent_dependencies_index === 0 ||\n\t\t\tdependencies[current_dependencies_index - 1] !== signal\n\t\t) {\n\t\t\tif (current_dependencies === null) {\n\t\t\t\tcurrent_dependencies = [signal];\n\t\t\t} else {\n\t\t\t\tcurrent_dependencies.push(signal);\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tcurrent_untracked_writes !== null &&\n\t\t\tcurrent_effect !== null &&\n\t\t\t(current_effect.f & CLEAN) !== 0 &&\n\t\t\tcurrent_untracked_writes.includes(signal)\n\t\t) {\n\t\t\tset_signal_status(current_effect, DIRTY);\n\t\t\tschedule_effect(current_effect, false);\n\t\t}\n\t}\n\n\tif ((flags & DERIVED) !== 0 && is_signal_dirty(signal)) {\n\t\tif (DEV) {\n\t\t\t// we want to avoid tracking indirect dependencies\n\t\t\tconst previous_inspect_fn = inspect_fn;\n\t\t\tinspect_fn = null;\n\t\t\tupdate_derived(/** @type {import('./types.js').ComputationSignal} **/ (signal), false);\n\t\t\tinspect_fn = previous_inspect_fn;\n\t\t} else {\n\t\t\tupdate_derived(/** @type {import('./types.js').ComputationSignal} **/ (signal), false);\n\t\t}\n\t}\n\treturn signal.v;\n}\n\n/**\n * @template V\n * @param {import('./types.js').Signal} signal\n * @param {V} value\n * @returns {V}\n */\nexport function set(signal, value) {\n\tset_signal_value(signal, value);\n\treturn value;\n}\n\n/**\n * @template V\n * @param {import('./types.js').Signal} signal\n * @param {V} value\n * @returns {void}\n */\nexport function set_sync(signal, value) {\n\tflushSync(() => set(signal, value));\n}\n\n/**\n * Invokes a function and captures all signals that are read during the invocation,\n * then invalidates them.\n * @param {() => any} fn\n */\nexport function invalidate_inner_signals(fn) {\n\tvar previous_is_signals_recorded = is_signals_recorded;\n\tvar previous_captured_signals = captured_signals;\n\tis_signals_recorded = true;\n\tcaptured_signals = new Set();\n\tvar captured = captured_signals;\n\tvar signal;\n\ttry {\n\t\tuntrack(fn);\n\t} finally {\n\t\tis_signals_recorded = previous_is_signals_recorded;\n\t\tif (is_signals_recorded) {\n\t\t\tfor (signal of captured_signals) {\n\t\t\t\tprevious_captured_signals.add(signal);\n\t\t\t}\n\t\t}\n\t\tcaptured_signals = previous_captured_signals;\n\t}\n\tfor (signal of captured) {\n\t\tmutate(signal, null /* doesnt matter */);\n\t}\n}\n\n/**\n * @template V\n * @param {import('./types.js').Signal} source\n * @param {V} value\n */\nexport function mutate(source, value) {\n\tset_signal_value(\n\t\tsource,\n\t\tuntrack(() => get(source))\n\t);\n\treturn value;\n}\n\n/**\n * Updates a store with a new value.\n * @param {import('./types.js').Store} store the store to update\n * @param {any} expression the expression that mutates the store\n * @param {V} new_value the new store value\n * @template V\n */\nexport function mutate_store(store, expression, new_value) {\n\tstore.set(new_value);\n\treturn expression;\n}\n\n/**\n * @param {import('./types.js').ComputationSignal} signal\n * @param {boolean} inert\n * @param {Set} [visited_blocks]\n * @returns {void}\n */\nfunction mark_subtree_children_inert(signal, inert, visited_blocks) {\n\tconst references = signal.r;\n\tif (references !== null) {\n\t\tlet i;\n\t\tfor (i = 0; i < references.length; i++) {\n\t\t\tconst reference = references[i];\n\t\t\tif ((reference.f & IS_EFFECT) !== 0) {\n\t\t\t\tmark_subtree_inert(reference, inert, visited_blocks);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./types.js').ComputationSignal} signal\n * @param {boolean} inert\n * @param {Set} [visited_blocks]\n * @returns {void}\n */\nexport function mark_subtree_inert(signal, inert, visited_blocks = new Set()) {\n\tconst flags = signal.f;\n\tconst is_already_inert = (flags & INERT) !== 0;\n\tif (is_already_inert !== inert) {\n\t\tsignal.f ^= INERT;\n\t\tif (!inert && (flags & IS_EFFECT) !== 0 && (flags & CLEAN) === 0) {\n\t\t\tschedule_effect(/** @type {import('./types.js').EffectSignal} */ (signal), false);\n\t\t}\n\t\t// Nested if block effects\n\t\tconst block = signal.b;\n\t\tif (block !== null && !visited_blocks.has(block)) {\n\t\t\tvisited_blocks.add(block);\n\t\t\tconst type = block.t;\n\t\t\tif (type === IF_BLOCK) {\n\t\t\t\tconst condition_effect = block.e;\n\t\t\t\tif (condition_effect !== null && block !== current_block) {\n\t\t\t\t\tmark_subtree_inert(condition_effect, inert);\n\t\t\t\t}\n\t\t\t\tconst consequent_effect = block.ce;\n\t\t\t\tif (consequent_effect !== null && block.v) {\n\t\t\t\t\tmark_subtree_inert(consequent_effect, inert, visited_blocks);\n\t\t\t\t}\n\t\t\t\tconst alternate_effect = block.ae;\n\t\t\t\tif (alternate_effect !== null && !block.v) {\n\t\t\t\t\tmark_subtree_inert(alternate_effect, inert, visited_blocks);\n\t\t\t\t}\n\t\t\t} else if (type === EACH_BLOCK) {\n\t\t\t\tconst items = block.v;\n\t\t\t\tfor (let { e: each_item_effect } of items) {\n\t\t\t\t\tif (each_item_effect !== null) {\n\t\t\t\t\t\tmark_subtree_inert(each_item_effect, inert, visited_blocks);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tmark_subtree_children_inert(signal, inert, visited_blocks);\n}\n\n/**\n * @template V\n * @param {import('./types.js').Signal} signal\n * @param {number} to_status\n * @param {boolean} force_schedule\n * @returns {void}\n */\nfunction mark_signal_consumers(signal, to_status, force_schedule) {\n\tconst runes = is_runes(signal.x);\n\tconst consumers = signal.c;\n\tif (consumers !== null) {\n\t\tconst length = consumers.length;\n\t\tlet i;\n\t\tfor (i = 0; i < length; i++) {\n\t\t\tconst consumer = consumers[i];\n\t\t\tconst flags = consumer.f;\n\t\t\tconst unowned = (flags & UNOWNED) !== 0;\n\t\t\tconst dirty = (flags & DIRTY) !== 0;\n\t\t\t// We skip any effects that are already dirty (but not unowned). Additionally, we also\n\t\t\t// skip if the consumer is the same as the current effect (except if we're not in runes or we\n\t\t\t// are in force schedule mode).\n\t\t\tif ((dirty && !unowned) || ((!force_schedule || !runes) && consumer === current_effect)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tset_signal_status(consumer, to_status);\n\t\t\t// If the signal is not clean, then skip over it – with the exception of unowned signals that\n\t\t\t// are already dirty. Unowned signals might be dirty because they are not captured as part of an\n\t\t\t// effect.\n\t\t\tif ((flags & CLEAN) !== 0 || (dirty && unowned)) {\n\t\t\t\tif ((consumer.f & IS_EFFECT) !== 0) {\n\t\t\t\t\tschedule_effect(/** @type {import('./types.js').EffectSignal} */ (consumer), false);\n\t\t\t\t} else {\n\t\t\t\t\tmark_signal_consumers(consumer, MAYBE_DIRTY, force_schedule);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @template V\n * @param {import('./types.js').Signal} signal\n * @param {V} value\n * @returns {void}\n */\nexport function set_signal_value(signal, value) {\n\tif (\n\t\t!current_untracking &&\n\t\t!ignore_mutation_validation &&\n\t\tcurrent_consumer !== null &&\n\t\tis_runes(signal.x) &&\n\t\t(current_consumer.f & DERIVED) !== 0\n\t) {\n\t\tthrow new Error(\n\t\t\t'ERR_SVELTE_UNSAFE_MUTATION' +\n\t\t\t\t(DEV\n\t\t\t\t\t? \": Unsafe mutations during Svelte's render or derived phase are not permitted in runes mode. \" +\n\t\t\t\t\t\t'This can lead to unexpected errors and possibly cause infinite loops.\\n\\nIf this mutation is not meant ' +\n\t\t\t\t\t\t'to be reactive do not use the \"$state\" rune for that declaration.'\n\t\t\t\t\t: '')\n\t\t);\n\t}\n\tif (\n\t\t(signal.f & SOURCE) !== 0 &&\n\t\t!(/** @type {import('./types.js').EqualsFunctions} */ (signal.e)(value, signal.v))\n\t) {\n\t\tconst component_context = signal.x;\n\t\tsignal.v = value;\n\t\t// If the current signal is running for the first time, it won't have any\n\t\t// consumers as we only allocate and assign the consumers after the signal\n\t\t// has fully executed. So in the case of ensuring it registers the consumer\n\t\t// properly for itself, we need to ensure the current effect actually gets\n\t\t// scheduled. i.e:\n\t\t//\n\t\t// $effect(() => x++)\n\t\t//\n\t\tif (\n\t\t\tis_runes(component_context) &&\n\t\t\tcurrent_effect !== null &&\n\t\t\tcurrent_effect.c === null &&\n\t\t\t(current_effect.f & CLEAN) !== 0\n\t\t) {\n\t\t\tif (current_dependencies !== null && current_dependencies.includes(signal)) {\n\t\t\t\tset_signal_status(current_effect, DIRTY);\n\t\t\t\tschedule_effect(current_effect, false);\n\t\t\t} else {\n\t\t\t\tif (current_untracked_writes === null) {\n\t\t\t\t\tcurrent_untracked_writes = [signal];\n\t\t\t\t} else {\n\t\t\t\t\tcurrent_untracked_writes.push(signal);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tmark_signal_consumers(signal, DIRTY, true);\n\t\t// If we have afterUpdates locally on the component, but we're within a render effect\n\t\t// then we will need to manually invoke the beforeUpdate/afterUpdate logic.\n\t\t// TODO: should we put this being a is_runes check and only run it in non-runes mode?\n\t\tif (current_effect === null && current_queued_pre_and_render_effects.length === 0) {\n\t\t\tconst update_callbacks = component_context?.u;\n\t\t\tif (update_callbacks != null) {\n\t\t\t\trun_all(update_callbacks.b);\n\t\t\t\tconst managed = managed_effect(() => {\n\t\t\t\t\tdestroy_signal(managed);\n\t\t\t\t\trun_all(update_callbacks.a);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error\n\t\tif (DEV && signal.inspect) {\n\t\t\tif (is_batching_effect) {\n\t\t\t\tlast_inspected_signal = /** @type {import('./types.js').SignalDebug} */ (signal);\n\t\t\t} else {\n\t\t\t\tfor (const fn of /** @type {import('./types.js').SignalDebug} */ (signal).inspect) fn();\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @template V\n * @param {import('./types.js').ComputationSignal} signal\n * @returns {void}\n */\nexport function destroy_signal(signal) {\n\tconst teardown = /** @type {null | (() => void)} */ (signal.v);\n\tconst destroy = signal.y;\n\tconst flags = signal.f;\n\tdestroy_references(signal);\n\tremove_consumers(signal, 0);\n\tsignal.i = signal.r = signal.y = signal.x = signal.b = signal.d = signal.c = null;\n\tset_signal_status(signal, DESTROYED);\n\tif (destroy !== null) {\n\t\tif (is_array(destroy)) {\n\t\t\trun_all(destroy);\n\t\t} else {\n\t\t\tdestroy();\n\t\t}\n\t}\n\tif (teardown !== null && (flags & IS_EFFECT) !== 0) {\n\t\tteardown();\n\t}\n}\n\n/**\n * @template V\n * @param {() => V} init\n * @returns {import('./types.js').ComputationSignal}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function derived(init) {\n\tconst is_unowned = current_effect === null;\n\tconst flags = is_unowned ? DERIVED | UNOWNED : DERIVED;\n\tconst signal = /** @type {import('./types.js').ComputationSignal} */ (\n\t\tcreate_computation_signal(flags | CLEAN, UNINITIALIZED, current_block)\n\t);\n\tsignal.i = init;\n\tsignal.x = current_component_context;\n\tsignal.e = default_equals;\n\tif (current_consumer !== null) {\n\t\tpush_reference(current_consumer, signal);\n\t}\n\treturn signal;\n}\n\n/**\n * @template V\n * @param {() => V} init\n * @returns {import('./types.js').ComputationSignal}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function derived_safe_equal(init) {\n\tconst signal = derived(init);\n\tsignal.e = safe_equal;\n\treturn signal;\n}\n\n/**\n * @template V\n * @param {V} initial_value\n * @returns {import('./types.js').SourceSignal}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function source(initial_value) {\n\tconst source = create_source_signal(SOURCE | CLEAN, initial_value);\n\tsource.x = current_component_context;\n\treturn source;\n}\n\n/**\n * @template V\n * @param {V} initial_value\n * @returns {import('./types.js').SourceSignal}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function mutable_source(initial_value) {\n\tconst s = source(initial_value);\n\ts.e = safe_equal;\n\treturn s;\n}\n\n/**\n * Use `untrack` to prevent something from being treated as an `$effect`/`$derived` dependency.\n *\n * https://svelte-5-preview.vercel.app/docs/functions#untrack\n * @template T\n * @param {() => T} fn\n * @returns {T}\n */\nexport function untrack(fn) {\n\tconst previous_untracking = current_untracking;\n\ttry {\n\t\tcurrent_untracking = true;\n\t\treturn fn();\n\t} finally {\n\t\tcurrent_untracking = previous_untracking;\n\t}\n}\n\n/**\n * @param {import('./types.js').EffectType} type\n * @param {(() => void | (() => void)) | ((b: import('./types.js').Block) => void | (() => void))} init\n * @param {boolean} sync\n * @param {null | import('./types.js').Block} block\n * @param {boolean} schedule\n * @returns {import('./types.js').EffectSignal}\n */\nfunction internal_create_effect(type, init, sync, block, schedule) {\n\tconst signal = create_computation_signal(type | DIRTY, null, block);\n\tsignal.i = init;\n\tsignal.x = current_component_context;\n\tif (current_effect !== null) {\n\t\tsignal.l = current_effect.l + 1;\n\t\tif ((type & MANAGED) === 0) {\n\t\t\tpush_reference(current_effect, signal);\n\t\t}\n\t}\n\tif (schedule) {\n\t\tschedule_effect(signal, sync);\n\t}\n\treturn signal;\n}\n\n/**\n * @returns {boolean}\n */\nexport function effect_active() {\n\treturn current_effect ? (current_effect.f & MANAGED) === 0 : false;\n}\n\n/**\n * @param {() => void | (() => void)} init\n * @returns {import('./types.js').EffectSignal}\n */\nexport function user_effect(init) {\n\tif (current_effect === null) {\n\t\tthrow new Error(\n\t\t\t'ERR_SVELTE_ORPHAN_EFFECT' +\n\t\t\t\t(DEV ? ': The Svelte $effect rune can only be used during component initialisation.' : '')\n\t\t);\n\t}\n\tconst apply_component_effect_heuristics =\n\t\tcurrent_effect.f & RENDER_EFFECT &&\n\t\tcurrent_component_context !== null &&\n\t\t!current_component_context.m;\n\tconst effect = internal_create_effect(\n\t\tEFFECT,\n\t\tinit,\n\t\tfalse,\n\t\tcurrent_block,\n\t\t!apply_component_effect_heuristics\n\t);\n\tif (apply_component_effect_heuristics) {\n\t\tconst context = /** @type {import('./types.js').ComponentContext} */ (\n\t\t\tcurrent_component_context\n\t\t);\n\t\t(context.e ??= []).push(effect);\n\t}\n\treturn effect;\n}\n\n/**\n * @param {() => void | (() => void)} init\n * @returns {() => void}\n */\nexport function user_root_effect(init) {\n\tconst effect = managed_render_effect(init);\n\treturn () => {\n\t\tdestroy_signal(effect);\n\t};\n}\n\n/**\n * @param {() => void | (() => void)} init\n * @returns {import('./types.js').EffectSignal}\n */\nexport function effect(init) {\n\treturn internal_create_effect(EFFECT, init, false, current_block, true);\n}\n\n/**\n * @param {() => void | (() => void)} init\n * @returns {import('./types.js').EffectSignal}\n */\nexport function managed_effect(init) {\n\treturn internal_create_effect(EFFECT | MANAGED, init, false, current_block, true);\n}\n\n/**\n * @param {() => void | (() => void)} init\n * @param {boolean} sync\n * @returns {import('./types.js').EffectSignal}\n */\nexport function managed_pre_effect(init, sync) {\n\treturn internal_create_effect(PRE_EFFECT | MANAGED, init, sync, current_block, true);\n}\n\n/**\n * @param {() => void | (() => void)} init\n * @returns {import('./types.js').EffectSignal}\n */\nexport function pre_effect(init) {\n\tif (current_effect === null) {\n\t\tthrow new Error(\n\t\t\t'ERR_SVELTE_ORPHAN_EFFECT' +\n\t\t\t\t(DEV\n\t\t\t\t\t? ': The Svelte $effect.pre rune can only be used during component initialisation.'\n\t\t\t\t\t: '')\n\t\t);\n\t}\n\tconst sync = current_effect !== null && (current_effect.f & RENDER_EFFECT) !== 0;\n\treturn internal_create_effect(\n\t\tPRE_EFFECT,\n\t\t() => {\n\t\t\tconst val = init();\n\t\t\tflush_local_render_effects();\n\t\t\treturn val;\n\t\t},\n\t\tsync,\n\t\tcurrent_block,\n\t\ttrue\n\t);\n}\n\n/**\n * This effect is used to ensure binding are kept in sync. We use a pre effect to ensure we run before the\n * bindings which are in later effects. However, we don't use a pre_effect directly as we don't want to flush anything.\n *\n * @param {() => void | (() => void)} init\n * @returns {import('./types.js').EffectSignal}\n */\nexport function invalidate_effect(init) {\n\treturn internal_create_effect(PRE_EFFECT, init, true, current_block, true);\n}\n\n/**\n * @template {import('./types.js').Block} B\n * @param {(block: B) => void | (() => void)} init\n * @param {any} block\n * @param {any} managed\n * @param {any} sync\n * @returns {import('./types.js').EffectSignal}\n */\nexport function render_effect(init, block = current_block, managed = false, sync = true) {\n\tlet flags = RENDER_EFFECT;\n\tif (managed) {\n\t\tflags |= MANAGED;\n\t}\n\treturn internal_create_effect(flags, /** @type {any} */ (init), sync, block, true);\n}\n\n/**\n * @template {import('./types.js').Block} B\n * @param {(block: B) => void | (() => void)} init\n * @param {any} block\n * @param {any} sync\n * @returns {import('./types.js').EffectSignal}\n */\nexport function managed_render_effect(init, block = current_block, sync = true) {\n\tconst flags = RENDER_EFFECT | MANAGED;\n\treturn internal_create_effect(flags, /** @type {any} */ (init), sync, block, true);\n}\n\n/**\n * @template V\n * @param {import('./types.js').ComputationSignal} signal\n * @param {() => void} destroy_fn\n * @returns {void}\n */\nexport function push_destroy_fn(signal, destroy_fn) {\n\tlet destroy = signal.y;\n\tif (destroy === null) {\n\t\tsignal.y = destroy_fn;\n\t} else if (is_array(destroy)) {\n\t\tdestroy.push(destroy_fn);\n\t} else {\n\t\tsignal.y = [destroy, destroy_fn];\n\t}\n}\n\nconst STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);\n/**\n * @template V\n * @param {import('./types.js').Signal} signal\n * @param {number} status\n * @returns {void}\n */\nexport function set_signal_status(signal, status) {\n\tsignal.f = (signal.f & STATUS_MASK) | status;\n}\n\n/**\n * @template V\n * @param {V | import('./types.js').Signal} val\n * @returns {val is import('./types.js').Signal}\n */\nexport function is_signal(val) {\n\treturn (\n\t\ttypeof val === 'object' &&\n\t\tval !== null &&\n\t\ttypeof (/** @type {import('./types.js').Signal} */ (val).f) === 'number'\n\t);\n}\n\n/**\n * @template O\n * @template P\n * @param {any} val\n * @returns {val is import('./types.js').LazyProperty}\n */\nexport function is_lazy_property(val) {\n\treturn (\n\t\ttypeof val === 'object' &&\n\t\tval !== null &&\n\t\t/** @type {import('./types.js').LazyProperty} */ (val).t === LAZY_PROPERTY\n\t);\n}\n\n/**\n * @template V\n * @param {unknown} val\n * @returns {val is import('./types.js').Store}\n */\nexport function is_store(val) {\n\treturn (\n\t\ttypeof val === 'object' &&\n\t\tval !== null &&\n\t\ttypeof (/** @type {import('./types.js').Store} */ (val).subscribe) === 'function'\n\t);\n}\n\n/**\n * This function is responsible for synchronizing a possibly bound prop with the inner component state.\n * It is used whenever the compiler sees that the component writes to the prop, or when it has a default prop_value.\n * @template V\n * @param {Record} props\n * @param {string} key\n * @param {number} flags\n * @param {V | (() => V)} [initial]\n * @returns {(() => V | ((arg: V) => V) | ((arg: V, mutation: boolean) => V))}\n */\nexport function prop(props, key, flags, initial) {\n\tvar immutable = (flags & PROPS_IS_IMMUTABLE) !== 0;\n\tvar runes = (flags & PROPS_IS_RUNES) !== 0;\n\n\tvar setter = get_descriptor(props, key)?.set;\n\tif (DEV && setter && runes && initial !== undefined) {\n\t\t// TODO consolidate all these random runtime errors\n\t\tthrow new Error('Cannot use fallback values with bind:');\n\t}\n\n\tvar prop_value = /** @type {V} */ (props[key]);\n\n\tif (prop_value === undefined && initial !== undefined) {\n\t\t// @ts-expect-error would need a cumbersome method overload to type this\n\t\tif ((flags & PROPS_IS_LAZY_INITIAL) !== 0) initial = initial();\n\n\t\tif (DEV && runes) {\n\t\t\tinitial = readonly(proxy(/** @type {any} */ (initial)));\n\t\t}\n\n\t\tprop_value = /** @type {V} */ (initial);\n\n\t\tif (setter) setter(prop_value);\n\t}\n\n\tvar getter = () => {\n\t\tvar value = /** @type {V} */ (props[key]);\n\t\tif (value !== undefined) initial = undefined;\n\t\treturn value === undefined ? /** @type {V} */ (initial) : value;\n\t};\n\n\t// easy mode — prop is never written to\n\tif ((flags & PROPS_IS_UPDATED) === 0) {\n\t\treturn getter;\n\t}\n\n\t// intermediate mode — prop is written to, but the parent component had\n\t// `bind:foo` which means we can just call `$$props.foo = value` directly\n\tif (setter) {\n\t\treturn function (/** @type {V} */ value) {\n\t\t\tif (arguments.length === 1) {\n\t\t\t\t/** @type {Function} */ (setter)(value);\n\t\t\t\treturn value;\n\t\t\t} else {\n\t\t\t\treturn getter();\n\t\t\t}\n\t\t};\n\t}\n\n\t// hard mode. this is where it gets ugly — the value in the child should\n\t// synchronize with the parent, but it should also be possible to temporarily\n\t// set the value to something else locally.\n\tvar from_child = false;\n\tvar was_from_child = false;\n\n\t// The derived returns the current value. The underlying mutable\n\t// source is written to from various places to persist this value.\n\tvar inner_current_value = mutable_source(prop_value);\n\tvar current_value = derived(() => {\n\t\tvar parent_value = getter();\n\t\tvar child_value = get(inner_current_value);\n\n\t\tif (from_child) {\n\t\t\tfrom_child = false;\n\t\t\twas_from_child = true;\n\t\t\treturn child_value;\n\t\t}\n\n\t\twas_from_child = false;\n\t\treturn (inner_current_value.v = parent_value);\n\t});\n\n\tif (!immutable) current_value.e = safe_equal;\n\n\treturn function (/** @type {V} */ value, mutation = false) {\n\t\tvar current = get(current_value);\n\n\t\t// legacy nonsense — need to ensure the source is invalidated when necessary\n\t\tif (is_signals_recorded) {\n\t\t\t// set this so that we don't reset to the parent value if `d`\n\t\t\t// is invalidated because of `invalidate_inner_signals` (rather\n\t\t\t// than because the parent or child value changed)\n\t\t\tfrom_child = was_from_child;\n\t\t\t// invoke getters so that signals are picked up by `invalidate_inner_signals`\n\t\t\tgetter();\n\t\t\tget(inner_current_value);\n\t\t}\n\n\t\tif (arguments.length > 0) {\n\t\t\tif (mutation || (immutable ? value !== current : safe_not_equal(value, current))) {\n\t\t\t\tfrom_child = true;\n\t\t\t\tset(inner_current_value, mutation ? current : value);\n\t\t\t\tget(current_value); // force a synchronisation immediately\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\treturn current;\n\t};\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function safe_not_equal(a, b) {\n\t// eslint-disable-next-line eqeqeq\n\treturn a != a\n\t\t? // eslint-disable-next-line eqeqeq\n\t\t\tb == b\n\t\t: a !== b || (a !== null && typeof a === 'object') || typeof a === 'function';\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function safe_equal(a, b) {\n\treturn !safe_not_equal(a, b);\n}\n\n/** @returns {Map} */\nexport function get_or_init_context_map() {\n\tconst component_context = current_component_context;\n\tif (component_context === null) {\n\t\tthrow new Error(\n\t\t\t'ERR_SVELTE_ORPHAN_CONTEXT' +\n\t\t\t\t(DEV ? 'Context can only be used during component initialisation.' : '')\n\t\t);\n\t}\n\treturn (component_context.c ??= new Map(get_parent_context(component_context) || undefined));\n}\n\n/**\n * @param {import('./types.js').ComponentContext} component_context\n * @returns {Map | null}\n */\nfunction get_parent_context(component_context) {\n\tlet parent = component_context.p;\n\twhile (parent !== null) {\n\t\tconst context_map = parent.c;\n\t\tif (context_map !== null) {\n\t\t\treturn context_map;\n\t\t}\n\t\tparent = parent.p;\n\t}\n\treturn null;\n}\n\n/**\n * @this {any}\n * @param {Record} $$props\n * @param {Event} event\n * @returns {void}\n */\nexport function bubble_event($$props, event) {\n\tvar events = /** @type {Record} */ ($$props.$$events)?.[\n\t\tevent.type\n\t];\n\tvar callbacks = is_array(events) ? events.slice() : events == null ? [] : [events];\n\tfor (var fn of callbacks) {\n\t\t// Preserve \"this\" context\n\t\tfn.call(this, event);\n\t}\n}\n\n/**\n * @param {import('./types.js').Signal} signal\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update(signal, d = 1) {\n\tconst value = get(signal);\n\tset_signal_value(signal, value + d);\n\treturn value;\n}\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_prop(fn, d = 1) {\n\tconst value = fn();\n\tfn(value + d);\n\treturn value;\n}\n\n/**\n * @param {import('./types.js').Store} store\n * @param {number} store_value\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_store(store, store_value, d = 1) {\n\tstore.set(store_value + d);\n\treturn store_value;\n}\n\n/**\n * @param {import('./types.js').Signal} signal\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre(signal, d = 1) {\n\tconst value = get(signal) + d;\n\tset_signal_value(signal, value);\n\treturn value;\n}\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_prop(fn, d = 1) {\n\tconst value = fn() + d;\n\tfn(value);\n\treturn value;\n}\n\n/**\n * @param {import('./types.js').Store} store\n * @param {number} store_value\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_store(store, store_value, d = 1) {\n\tconst value = store_value + d;\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * Under some circumstances, imports may be reactive in legacy mode. In that case,\n * they should be using `reactive_import` as part of the transformation\n * @param {() => any} fn\n */\nexport function reactive_import(fn) {\n\tconst s = source(0);\n\treturn function () {\n\t\tif (arguments.length === 1) {\n\t\t\tset(s, get(s) + 1);\n\t\t\treturn arguments[0];\n\t\t} else {\n\t\t\tget(s);\n\t\t\treturn fn();\n\t\t}\n\t};\n}\n\n/**\n * @param {Record} obj\n * @param {string[]} keys\n * @returns {Record}\n */\nexport function exclude_from_object(obj, keys) {\n\tobj = { ...obj };\n\tlet key;\n\tfor (key of keys) {\n\t\tdelete obj[key];\n\t}\n\treturn obj;\n}\n\n/**\n * @template V\n * @param {V} value\n * @param {V} fallback\n * @returns {V}\n */\nexport function value_or_fallback(value, fallback) {\n\treturn value === undefined ? fallback : value;\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs/svelte#ondestroy\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tif (!is_ssr) {\n\t\tuser_effect(() => () => untrack(fn));\n\t}\n}\n\n/**\n * @param {Record} props\n * @param {any} runes\n * @returns {void}\n */\nexport function push(props, runes = false) {\n\tcurrent_component_context = {\n\t\t// accessors\n\t\ta: null,\n\t\t// context\n\t\tc: null,\n\t\t// effects\n\t\te: null,\n\t\t// mounted\n\t\tm: false,\n\t\t// parent\n\t\tp: current_component_context,\n\t\t// props\n\t\ts: props,\n\t\t// runes\n\t\tr: runes,\n\t\t// update_callbacks\n\t\tu: null\n\t};\n}\n\n/**\n * @param {Record} [accessors]\n * @returns {void}\n */\nexport function pop(accessors) {\n\tconst context_stack_item = current_component_context;\n\tif (context_stack_item !== null) {\n\t\tif (accessors !== undefined) {\n\t\t\tcontext_stack_item.a = accessors;\n\t\t}\n\t\tconst effects = context_stack_item.e;\n\t\tif (effects !== null) {\n\t\t\tcontext_stack_item.e = null;\n\t\t\tfor (let i = 0; i < effects.length; i++) {\n\t\t\t\tschedule_effect(effects[i], false);\n\t\t\t}\n\t\t}\n\t\tcurrent_component_context = context_stack_item.p;\n\t\tcontext_stack_item.m = true;\n\t}\n}\n\n/**\n * @param {any} value\n * @param {Set} visited\n * @returns {void}\n */\nfunction deep_read(value, visited = new Set()) {\n\tif (typeof value === 'object' && value !== null && !visited.has(value)) {\n\t\tvisited.add(value);\n\t\tfor (let key in value) {\n\t\t\ttry {\n\t\t\t\tdeep_read(value[key], visited);\n\t\t\t} catch (e) {\n\t\t\t\t// continue\n\t\t\t}\n\t\t}\n\t\tconst proto = Object.getPrototypeOf(value);\n\t\tif (\n\t\t\tproto !== Object.prototype &&\n\t\t\tproto !== Array.prototype &&\n\t\t\tproto !== Map.prototype &&\n\t\t\tproto !== Set.prototype &&\n\t\t\tproto !== Date.prototype\n\t\t) {\n\t\t\tconst descriptors = get_descriptors(proto);\n\t\t\tfor (let key in descriptors) {\n\t\t\t\tconst get = descriptors[key].get;\n\t\t\t\tif (get) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tget.call(value);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// continue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Like `unstate`, but recursively traverses into normal arrays/objects to find potential states in them.\n * @param {any} value\n * @param {Map} visited\n * @returns {any}\n */\nfunction deep_unstate(value, visited = new Map()) {\n\tif (typeof value === 'object' && value !== null && !visited.has(value)) {\n\t\tconst unstated = unstate(value);\n\t\tif (unstated !== value) {\n\t\t\tvisited.set(value, unstated);\n\t\t\treturn unstated;\n\t\t}\n\t\tconst prototype = get_prototype_of(value);\n\t\t// Only deeply unstate plain objects and arrays\n\t\tif (prototype === object_prototype || prototype === array_prototype) {\n\t\t\tlet contains_unstated = false;\n\t\t\t/** @type {any} */\n\t\t\tconst nested_unstated = Array.isArray(value) ? [] : {};\n\t\t\tfor (let key in value) {\n\t\t\t\tconst result = deep_unstate(value[key], visited);\n\t\t\t\tnested_unstated[key] = result;\n\t\t\t\tif (result !== value[key]) {\n\t\t\t\t\tcontains_unstated = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvisited.set(value, contains_unstated ? nested_unstated : value);\n\t\t} else {\n\t\t\tvisited.set(value, value);\n\t\t}\n\t}\n\n\treturn visited.get(value) ?? value;\n}\n\n// TODO remove in a few versions, before 5.0 at the latest\nlet warned_inspect_changed = false;\n\n/**\n * @param {() => any[]} get_value\n * @param {Function} [inspect]\n */\n// eslint-disable-next-line no-console\nexport function inspect(get_value, inspect = console.log) {\n\tlet initial = true;\n\n\tpre_effect(() => {\n\t\tconst fn = () => {\n\t\t\tconst value = get_value().map((v) => deep_unstate(v));\n\t\t\tif (value.length === 2 && typeof value[1] === 'function' && !warned_inspect_changed) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'$inspect() API has changed. See https://svelte-5-preview.vercel.app/docs/runes#$inspect for more information.'\n\t\t\t\t);\n\t\t\t\twarned_inspect_changed = true;\n\t\t\t}\n\t\t\tinspect(initial ? 'init' : 'update', ...value);\n\t\t};\n\n\t\tinspect_fn = fn;\n\t\tconst value = get_value();\n\t\tdeep_read(value);\n\t\tinspect_fn = null;\n\n\t\tconst signals = inspect_captured_signals.slice();\n\t\tinspect_captured_signals = [];\n\n\t\tif (initial) {\n\t\t\tfn();\n\t\t\tinitial = false;\n\t\t}\n\n\t\treturn () => {\n\t\t\tfor (const s of signals) {\n\t\t\t\ts.inspect.delete(fn);\n\t\t\t}\n\t\t};\n\t});\n}\n\n/**\n * @template O\n * @template P\n * @param {O} o\n * @param {P} p\n * @returns {import('./types.js').LazyProperty}\n */\nexport function lazy_property(o, p) {\n\treturn {\n\t\to,\n\t\tp,\n\t\tt: LAZY_PROPERTY\n\t};\n}\n\n/**\n * @template V\n * @param {V} value\n * @returns {import('./types.js').UnwrappedSignal}\n */\nexport function unwrap(value) {\n\tif (is_signal(value)) {\n\t\t// @ts-ignore\n\t\treturn get(value);\n\t}\n\tif (is_lazy_property(value)) {\n\t\treturn value.o[value.p];\n\t}\n\t// @ts-ignore\n\treturn value;\n}\n\nif (DEV) {\n\t/** @param {string} rune */\n\tfunction throw_rune_error(rune) {\n\t\tif (!(rune in globalThis)) {\n\t\t\t// @ts-ignore\n\t\t\tglobalThis[rune] = () => {\n\t\t\t\t// TODO if people start adjusting the \"this can contain runes\" config through v-p-s more, adjust this message\n\t\t\t\tthrow new Error(`${rune} is only available inside .svelte and .svelte.js/ts files`);\n\t\t\t};\n\t\t}\n\t}\n\n\tthrow_rune_error('$state');\n\tthrow_rune_error('$effect');\n\tthrow_rune_error('$derived');\n\tthrow_rune_error('$inspect');\n\tthrow_rune_error('$props');\n}\n\n/**\n * Expects a value that was wrapped with `freeze` and makes it frozen.\n * @template T\n * @param {T} value\n * @returns {Readonly}\n */\nexport function freeze(value) {\n\tif (typeof value === 'object' && value != null && !is_frozen(value)) {\n\t\t// If the object is already proxified, then unstate the value\n\t\tif (STATE_SYMBOL in value) {\n\t\t\treturn object_freeze(unstate(value));\n\t\t}\n\t\t// If the value is already read-only then just use that\n\t\tif (DEV && READONLY_SYMBOL in value) {\n\t\t\treturn value;\n\t\t}\n\t\t// Otherwise freeze the object\n\t\tobject_freeze(value);\n\t}\n\treturn value;\n}\n","// Handle hydration\n\nimport { schedule_task } from './runtime.js';\n\n/** @type {null | Array} */\nexport let current_hydration_fragment = null;\n\n/**\n * @param {null | Array} fragment\n * @returns {void}\n */\nexport function set_current_hydration_fragment(fragment) {\n\tcurrent_hydration_fragment = fragment;\n}\n\n/**\n * Returns all nodes between the first `` comment tag pair encountered.\n * @param {Node | null} node\n * @returns {Array | null}\n */\nexport function get_hydration_fragment(node) {\n\t/** @type {Array} */\n\tconst fragment = [];\n\n\t/** @type {null | Node} */\n\tlet current_node = node;\n\n\t/** @type {null | string} */\n\tlet target_depth = null;\n\twhile (current_node !== null) {\n\t\tconst node_type = current_node.nodeType;\n\t\tconst next_sibling = current_node.nextSibling;\n\t\tif (node_type === 8) {\n\t\t\tconst data = /** @type {Comment} */ (current_node).data;\n\t\t\tif (data.startsWith('ssr:')) {\n\t\t\t\tconst depth = data.slice(4);\n\t\t\t\tif (target_depth === null) {\n\t\t\t\t\ttarget_depth = depth;\n\t\t\t\t} else if (depth === target_depth) {\n\t\t\t\t\treturn fragment;\n\t\t\t\t} else {\n\t\t\t\t\tfragment.push(/** @type {Text | Comment | Element} */ (current_node));\n\t\t\t\t}\n\t\t\t\tcurrent_node = next_sibling;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (target_depth !== null) {\n\t\t\tfragment.push(/** @type {Text | Comment | Element} */ (current_node));\n\t\t}\n\t\tcurrent_node = next_sibling;\n\t}\n\treturn null;\n}\n\n/**\n * @param {Text | Comment | Element} anchor_node\n * @param {boolean} [is_controlled]\n * @returns {void}\n */\nexport function hydrate_block_anchor(anchor_node, is_controlled) {\n\t/** @type {Node} */\n\tlet target_node = anchor_node;\n\tif (current_hydration_fragment !== null) {\n\t\tif (is_controlled) {\n\t\t\ttarget_node = /** @type {Node} */ (target_node.firstChild);\n\t\t}\n\t\tif (target_node.nodeType === 8) {\n\t\t\t// @ts-ignore\n\t\t\tlet fragment = target_node.$$fragment;\n\t\t\tif (fragment === undefined) {\n\t\t\t\tfragment = get_hydration_fragment(target_node);\n\t\t\t} else {\n\t\t\t\tschedule_task(() => {\n\t\t\t\t\t// @ts-expect-error clean up memory\n\t\t\t\t\ttarget_node.$$fragment = undefined;\n\t\t\t\t});\n\t\t\t}\n\t\t\tset_current_hydration_fragment(fragment);\n\t\t} else {\n\t\t\tconst first_child = /** @type {Element | null} */ (target_node.firstChild);\n\t\t\tset_current_hydration_fragment(first_child === null ? [] : [first_child]);\n\t\t}\n\t}\n}\n","import { current_hydration_fragment, get_hydration_fragment } from './hydration.js';\nimport { get_descriptor } from './utils.js';\n\n// We cache the Node and Element prototype methods, so that we can avoid doing\n// expensive prototype chain lookups.\n\n/** @type {Node} */\nvar node_prototype;\n\n/** @type {Element} */\nvar element_prototype;\n\n/** @type {Text} */\nvar text_prototype;\n\n/** @type {Map} */\nvar map_prototype;\n\n/** @type {typeof Node.prototype.appendChild} */\nvar append_child_method;\n\n/** @type {typeof Node.prototype.cloneNode} */\nvar clone_node_method;\n\n/** @type {typeof Map.prototype.set} */\nvar map_set_method;\n\n/** @type {typeof Map.prototype.get} */\nvar map_get_method;\n\n/** @type {typeof Map.prototype.delete} */\nvar map_delete_method;\n\n/** @type {(this: Node) => ChildNode | null} */\nvar first_child_get;\n\n/** @type {(this: Node) => ChildNode | null} */\nvar next_sibling_get;\n\n/** @type {(this: Node, text: string ) => void} */\nvar text_content_set;\n\n/** @type {(this: Element, class_name: string) => void} */\nvar class_name_set;\n\n// export these for reference in the compiled code, making global name deduplication unnecessary\n/**\n * @type {Window}\n */\nexport var $window;\n/**\n * @type {Document}\n */\nexport var $document;\n\n/**\n * Initialize these lazily to avoid issues when using the runtime in a server context\n * where these globals are not available while avoiding a separate server entry point\n */\nexport function init_operations() {\n\tif (node_prototype !== undefined) {\n\t\treturn;\n\t}\n\n\tnode_prototype = Node.prototype;\n\telement_prototype = Element.prototype;\n\ttext_prototype = Text.prototype;\n\tmap_prototype = Map.prototype;\n\n\tappend_child_method = node_prototype.appendChild;\n\tclone_node_method = node_prototype.cloneNode;\n\tmap_set_method = map_prototype.set;\n\tmap_get_method = map_prototype.get;\n\tmap_delete_method = map_prototype.delete;\n\n\t$window = window;\n\t$document = document;\n\n\t// the following assignments improve perf of lookups on DOM nodes\n\t// @ts-expect-error\n\telement_prototype.__click = undefined;\n\t// @ts-expect-error\n\ttext_prototype.__nodeValue = ' ';\n\t// @ts-expect-error\n\telement_prototype.__className = '';\n\n\tfirst_child_get = /** @type {(this: Node) => ChildNode | null} */ (\n\t\t// @ts-ignore\n\t\tget_descriptor(node_prototype, 'firstChild').get\n\t);\n\n\tnext_sibling_get = /** @type {(this: Node) => ChildNode | null} */ (\n\t\t// @ts-ignore\n\t\tget_descriptor(node_prototype, 'nextSibling').get\n\t);\n\n\ttext_content_set = /** @type {(this: Node, text: string ) => void} */ (\n\t\t// @ts-ignore\n\t\tget_descriptor(node_prototype, 'textContent').set\n\t);\n\n\tclass_name_set = /** @type {(this: Element, class_name: string) => void} */ (\n\t\t// @ts-ignore\n\t\tget_descriptor(element_prototype, 'className').set\n\t);\n}\n\n/**\n * @template {Element} E\n * @template {Node} T\n * @param {E} element\n * @param {T} child\n */\nexport function append_child(element, child) {\n\tappend_child_method.call(element, child);\n}\n\n/**\n * @template K\n * @template V\n * @param {Map} map\n * @param {K} key\n * @param {V} value\n */\nexport function map_set(map, key, value) {\n\tmap_set_method.call(map, key, value);\n}\n\n/**\n * @template K\n * @template V\n * @param {Map} map\n * @param {K} key\n */\nexport function map_delete(map, key) {\n\tmap_delete_method.call(map, key);\n}\n\n/**\n * @template K\n * @template V\n * @param {Map} map\n * @param {K} key\n * @return {V}\n */\nexport function map_get(map, key) {\n\treturn map_get_method.call(map, key);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @param {boolean} deep\n * @returns {N}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function clone_node(node, deep) {\n\treturn /** @type {N} */ (clone_node_method.call(node, deep));\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {Node | null}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function child(node) {\n\tconst child = first_child_get.call(node);\n\tif (current_hydration_fragment !== null) {\n\t\t// Child can be null if we have an element with a single child, like `

{text}

`, where `text` is empty\n\t\tif (child === null) {\n\t\t\tconst text = document.createTextNode('');\n\t\t\tnode.appendChild(text);\n\t\t\treturn text;\n\t\t} else {\n\t\t\treturn capture_fragment_from_node(child);\n\t\t}\n\t}\n\treturn child;\n}\n\n/**\n * @template {Node | Node[]} N\n * @param {N} node\n * @param {boolean} is_text\n * @returns {Node | null}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function child_frag(node, is_text) {\n\tif (current_hydration_fragment !== null) {\n\t\tconst first_node = /** @type {Node[]} */ (node)[0];\n\n\t\t// if an {expression} is empty during SSR, there might be no\n\t\t// text node to hydrate — we must therefore create one\n\t\tif (is_text && first_node?.nodeType !== 3) {\n\t\t\tconst text = document.createTextNode('');\n\t\t\tcurrent_hydration_fragment.unshift(text);\n\t\t\tif (first_node) {\n\t\t\t\t/** @type {DocumentFragment} */ (first_node.parentNode).insertBefore(text, first_node);\n\t\t\t}\n\t\t\treturn text;\n\t\t}\n\n\t\tif (first_node !== null) {\n\t\t\treturn capture_fragment_from_node(first_node);\n\t\t}\n\n\t\treturn first_node;\n\t}\n\n\treturn first_child_get.call(/** @type {Node} */ (node));\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @param {boolean} is_text\n * @returns {Node | null}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function sibling(node, is_text = false) {\n\tconst next_sibling = next_sibling_get.call(node);\n\tif (current_hydration_fragment !== null) {\n\t\tif (is_text && next_sibling?.nodeType !== 3) {\n\t\t\tconst text = document.createTextNode('');\n\t\t\tif (next_sibling) {\n\t\t\t\tconst index = current_hydration_fragment.indexOf(\n\t\t\t\t\t/** @type {Text | Comment | Element} */ (next_sibling)\n\t\t\t\t);\n\t\t\t\tcurrent_hydration_fragment.splice(index, 0, text);\n\t\t\t\t/** @type {DocumentFragment} */ (next_sibling.parentNode).insertBefore(text, next_sibling);\n\t\t\t} else {\n\t\t\t\tcurrent_hydration_fragment.push(text);\n\t\t\t}\n\n\t\t\treturn text;\n\t\t}\n\n\t\tif (next_sibling !== null) {\n\t\t\treturn capture_fragment_from_node(next_sibling);\n\t\t}\n\t}\n\treturn next_sibling;\n}\n\n/**\n * @template {Element} N\n * @param {N} node\n * @param {string} class_name\n * @returns {void}\n */\nexport function set_class_name(node, class_name) {\n\tclass_name_set.call(node, class_name);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {void}\n */\nexport function clear_text_content(node) {\n\ttext_content_set.call(node, '');\n}\n\n/** @param {string} name */\n/*#__NO_SIDE_EFFECTS__*/\nexport function create_element(name) {\n\treturn document.createElement(name);\n}\n\n/**\n * @param {Node} node\n * @returns {Node}\n */\nfunction capture_fragment_from_node(node) {\n\tif (\n\t\tnode.nodeType === 8 &&\n\t\t/** @type {Comment} */ (node).data.startsWith('ssr:') &&\n\t\t/** @type {Array} */ (current_hydration_fragment).at(-1) !== node\n\t) {\n\t\tconst fragment = /** @type {Array} */ (get_hydration_fragment(node));\n\t\tconst last_child = fragment.at(-1) || node;\n\t\tconst target = /** @type {Node} */ (last_child.nextSibling);\n\t\t// @ts-ignore\n\t\ttarget.$$fragment = fragment;\n\t\treturn target;\n\t}\n\treturn node;\n}\n","import { append_child } from './operations.js';\nimport { current_hydration_fragment, hydrate_block_anchor } from './hydration.js';\nimport { is_array } from './utils.js';\n\n/** @param {string} html */\nexport function create_fragment_from_html(html) {\n\tvar elem = document.createElement('template');\n\telem.innerHTML = html;\n\treturn elem.content;\n}\n\n/**\n * @param {Array | import('./types.js').TemplateNode} current\n * @param {null | Element} parent_element\n * @param {null | Text | Element | Comment} sibling\n * @returns {Text | Element | Comment}\n */\nexport function insert(current, parent_element, sibling) {\n\tif (is_array(current)) {\n\t\tvar i = 0;\n\t\tvar node;\n\t\tfor (; i < current.length; i++) {\n\t\t\tnode = current[i];\n\t\t\tif (sibling === null) {\n\t\t\t\tappend_child(/** @type {Element} */ (parent_element), /** @type {Node} */ (node));\n\t\t\t} else {\n\t\t\t\tsibling.before(/** @type {Node} */ (node));\n\t\t\t}\n\t\t}\n\t\treturn current[0];\n\t} else if (current !== null) {\n\t\tif (sibling === null) {\n\t\t\tappend_child(/** @type {Element} */ (parent_element), /** @type {Node} */ (current));\n\t\t} else {\n\t\t\tsibling.before(/** @type {Node} */ (current));\n\t\t}\n\t}\n\treturn /** @type {Text | Element | Comment} */ (current);\n}\n\n/**\n * @param {Array | import('./types.js').TemplateNode} current\n * @returns {Element | Comment | Text}\n */\nexport function remove(current) {\n\tvar first_node = current;\n\tif (is_array(current)) {\n\t\tvar i = 0;\n\t\tvar node;\n\t\tfor (; i < current.length; i++) {\n\t\t\tnode = current[i];\n\t\t\tif (i === 0) {\n\t\t\t\tfirst_node = node;\n\t\t\t}\n\t\t\tif (node.isConnected) {\n\t\t\t\tnode.remove();\n\t\t\t}\n\t\t}\n\t} else if (current.isConnected) {\n\t\tcurrent.remove();\n\t}\n\treturn /** @type {Element | Comment | Text} */ (first_node);\n}\n\n/**\n * @template V\n * @param {Element | Text | Comment} dom\n * @param {V} value\n * @param {boolean} svg\n * @returns {Element | Comment | (Element | Comment | Text)[]}\n */\nexport function reconcile_html(dom, value, svg) {\n\thydrate_block_anchor(dom);\n\tif (current_hydration_fragment !== null) {\n\t\treturn current_hydration_fragment;\n\t}\n\tvar html = value + '';\n\t// Even if html is the empty string we need to continue to insert something or\n\t// else the element ordering gets out of sync, resulting in subsequent values\n\t// not getting inserted anymore.\n\tvar target = dom;\n\tvar frag_nodes;\n\tif (svg) {\n\t\thtml = `${html}`;\n\t}\n\tvar content = create_fragment_from_html(html);\n\tif (svg) {\n\t\tcontent = /** @type {DocumentFragment} */ (/** @type {unknown} */ (content.firstChild));\n\t}\n\tvar clone = content.cloneNode(true);\n\tfrag_nodes = Array.from(clone.childNodes);\n\tfrag_nodes.forEach((node) => {\n\t\ttarget.before(node);\n\t});\n\treturn /** @type {Array} */ (frag_nodes);\n}\n","/** @type {import('./types.js').Raf} */\nexport const raf = {\n\ttick: /** @param {any} _ */ (_) => requestAnimationFrame(_),\n\tnow: () => performance.now()\n};\n","import { EACH_IS_ANIMATED, EACH_IS_CONTROLLED } from '../../constants.js';\nimport { run_all } from '../common.js';\nimport {\n\tAWAIT_BLOCK,\n\tDYNAMIC_COMPONENT_BLOCK,\n\tEACH_BLOCK,\n\tEACH_ITEM_BLOCK,\n\tIF_BLOCK,\n\tKEY_BLOCK,\n\tROOT_BLOCK\n} from './block.js';\nimport { destroy_each_item_block, get_first_element } from './each.js';\nimport { append_child } from './operations.js';\nimport { empty } from './render.js';\nimport {\n\tcurrent_block,\n\tcurrent_effect,\n\tdestroy_signal,\n\teffect,\n\texecute_effect,\n\tmanaged_effect,\n\tmanaged_pre_effect,\n\tmark_subtree_inert,\n\tschedule_raf_task,\n\tuntrack\n} from './runtime.js';\nimport { raf } from './timing.js';\n\nconst active_tick_animations = new Set();\nconst DELAY_NEXT_TICK = Number.MIN_SAFE_INTEGER;\n\n/** @type {undefined | number} */\nlet active_tick_ref = undefined;\n\n/**\n * @template T\n * @param {string} type\n * @param {T} [detail]\n * @param {any}params_0\n * @returns {Event}\n */\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\tconst e = document.createEvent('CustomEvent');\n\te.initCustomEvent(type, bubbles, cancelable, detail);\n\treturn e;\n}\n\n/**\n * @param {HTMLElement} dom\n * @param {'introstart' | 'introend' | 'outrostart' | 'outroend'} type\n * @returns {void}\n */\nfunction dispatch_event(dom, type) {\n\tdom.dispatchEvent(custom_event(type));\n}\n\n/**\n * @param {string} style\n * @returns {string}\n */\nfunction css_style_from_camel_case(style) {\n\tconst parts = style.split('-');\n\tif (parts.length === 1) return parts[0];\n\treturn (\n\t\tparts[0] +\n\t\tparts\n\t\t\t.slice(1)\n\t\t\t.map(/** @param {any} word */ (word) => word[0].toUpperCase() + word.slice(1))\n\t\t\t.join('')\n\t);\n}\n\n/**\n * @param {string} css\n * @returns {Keyframe}\n */\nfunction css_to_keyframe(css) {\n\t/** @type {Keyframe} */\n\tconst keyframe = {};\n\tconst parts = css.split(';');\n\tfor (const part of parts) {\n\t\tconst [property, value] = part.split(':');\n\t\tif (!property || value === undefined) break;\n\n\t\tconst formatted_property = css_style_from_camel_case(property.trim());\n\t\tkeyframe[formatted_property] = value.trim();\n\t}\n\treturn keyframe;\n}\n\nclass TickAnimation {\n\t/** @type {null | (() => void)} */\n\tonfinish;\n\n\t/** @type {(t: number, u: number) => string} */\n\t#tick_fn;\n\n\t/** @type {number} */\n\t#duration;\n\n\t/** @type {number} */\n\t#current;\n\n\t/** @type {number} */\n\t#delay;\n\n\t/** @type {number} */\n\t#previous;\n\n\t/** @type {boolean} */\n\tpaused;\n\n\t/** @type {boolean} */\n\t#reversed;\n\n\t/** @type {number} */\n\t#delay_current;\n\n\t/** @type {boolean} */\n\t#delayed_reverse;\n\n\t/**\n\t * @param {(t: number, u: number) => string} tick_fn\n\t * @param {number} duration\n\t * @param {number} delay\n\t * @param {boolean} out\n\t */\n\tconstructor(tick_fn, duration, delay, out) {\n\t\tthis.#duration = duration;\n\t\tthis.#delay = delay;\n\t\tthis.paused = false;\n\t\tthis.#tick_fn = tick_fn;\n\t\tthis.#reversed = out;\n\t\tthis.#delay_current = delay;\n\t\tthis.#current = out ? duration : 0;\n\t\tthis.#previous = 0;\n\t\tthis.#delayed_reverse = false;\n\t\tthis.onfinish = null;\n\t\tif (this.#delay) {\n\t\t\tif (!out) {\n\t\t\t\tthis.#tick_fn(0, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tpause() {\n\t\tthis.paused = true;\n\t}\n\n\tplay() {\n\t\tthis.paused = false;\n\t\tif (!active_tick_animations.has(this)) {\n\t\t\tthis.#previous = raf.now();\n\t\t\tif (active_tick_ref === undefined) {\n\t\t\t\tactive_tick_ref = raf.tick(handle_raf);\n\t\t\t}\n\t\t\tactive_tick_animations.add(this);\n\t\t}\n\t}\n\n\t#reverse() {\n\t\tthis.#reversed = !this.#reversed;\n\t\tif (this.paused) {\n\t\t\tif (this.#current === 0) {\n\t\t\t\tthis.#current = this.#duration;\n\t\t\t}\n\t\t\tthis.play();\n\t\t}\n\t}\n\n\treverse() {\n\t\tif (this.#delay === 0) {\n\t\t\tthis.#reverse();\n\t\t} else {\n\t\t\tthis.#delay_current = this.#delay;\n\t\t\tthis.#delayed_reverse = true;\n\t\t}\n\t}\n\n\tcancel() {\n\t\tactive_tick_animations.delete(this);\n\t\tconst current = this.#current / this.#duration;\n\t\tif (current > 0 && current < 1) {\n\t\t\tconst t = this.#reversed ? 1 : 0;\n\t\t\tthis.#tick_fn(t, 1 - t);\n\t\t}\n\t}\n\n\tfinish() {\n\t\tactive_tick_animations.delete(this);\n\t\tif (this.onfinish) {\n\t\t\tthis.onfinish();\n\t\t}\n\t}\n\n\t/** @param {number} time */\n\t_update(time) {\n\t\tlet diff = time - this.#previous;\n\t\tthis.#previous = time;\n\t\tif (this.#delay_current !== 0) {\n\t\t\tconst is_delayed = this.#delay_current === DELAY_NEXT_TICK;\n\t\t\tlet cancel = !this.#delayed_reverse;\n\t\t\tthis.#delay_current -= diff;\n\t\t\tif (this.#delay_current < 0 || is_delayed || (this.#delay_current === 0 && this.#reversed)) {\n\t\t\t\tconst delay_diff = is_delayed ? 0 : -this.#delay_current;\n\t\t\t\tthis.#delay_current = 0;\n\n\t\t\t\tif (this.#delayed_reverse) {\n\t\t\t\t\tthis.#delayed_reverse = false;\n\t\t\t\t\tthis.#reverse();\n\t\t\t\t} else if (delay_diff !== 0 || this.#reversed) {\n\t\t\t\t\tdiff = delay_diff;\n\t\t\t\t}\n\t\t\t\tcancel = false;\n\t\t\t} else if (this.#delay_current === 0) {\n\t\t\t\tthis.#delay_current = DELAY_NEXT_TICK;\n\t\t\t}\n\t\t\tif (cancel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tthis.#current += this.#reversed ? -diff : diff;\n\t\tlet t = this.#current / this.#duration;\n\n\t\tif (t < 0) {\n\t\t\tt = 0;\n\t\t} else if (t > 1) {\n\t\t\tt = 1;\n\t\t}\n\n\t\tif ((this.#reversed && t <= 0) || (!this.#reversed && t >= 1)) {\n\t\t\tt = this.#reversed ? 0 : 1;\n\t\t\tif (this.#delay_current === 0) {\n\t\t\t\tactive_tick_animations.delete(this);\n\t\t\t\tif (this.onfinish) {\n\t\t\t\t\tthis.paused = true;\n\t\t\t\t\tthis.onfinish();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.#tick_fn(t, 1 - t);\n\t}\n}\n\n/** @param {number} time */\nfunction handle_raf(time) {\n\tfor (const animation of active_tick_animations) {\n\t\tif (!animation.paused) {\n\t\t\tanimation._update(time);\n\t\t}\n\t}\n\tif (active_tick_animations.size !== 0) {\n\t\tactive_tick_ref = raf.tick(handle_raf);\n\t} else {\n\t\tactive_tick_ref = undefined;\n\t}\n}\n\n/**\n * @param {{(t: number): number;(t: number): number;(arg0: number): any;}} easing_fn\n * @param {((t: number, u: number) => string)} css_fn\n * @param {number} duration\n * @param {string} direction\n * @param {boolean} reverse\n */\nfunction create_keyframes(easing_fn, css_fn, duration, direction, reverse) {\n\t/** @type {Keyframe[]} */\n\tconst keyframes = [];\n\t// We need at least two frames\n\tconst frame_time = 16.666;\n\tconst max_duration = Math.max(duration, frame_time);\n\t// Have a keyframe every fame for 60 FPS\n\tfor (let i = 0; i <= max_duration; i += frame_time) {\n\t\tlet time;\n\t\tif (i + frame_time > max_duration) {\n\t\t\ttime = 1;\n\t\t} else if (i === 0) {\n\t\t\ttime = 0;\n\t\t} else {\n\t\t\ttime = i / max_duration;\n\t\t}\n\t\tlet t = easing_fn(time);\n\t\tif (reverse) {\n\t\t\tt = 1 - t;\n\t\t}\n\t\tkeyframes.push(css_to_keyframe(css_fn(t, 1 - t)));\n\t}\n\tif (direction === 'out' || reverse) {\n\t\tkeyframes.reverse();\n\t}\n\treturn keyframes;\n}\n\n/** @param {number} t */\nconst linear = (t) => t;\n\n/**\n * @param {HTMLElement} dom\n * @param {() => import('./types.js').TransitionPayload} init\n * @param {'in' | 'out' | 'both' | 'key'} direction\n * @param {import('./types.js').EffectSignal} effect\n * @returns {import('./types.js').Transition}\n */\nfunction create_transition(dom, init, direction, effect) {\n\tlet curr_direction = 'in';\n\n\t/** @type {Array<() => void>} */\n\tlet subs = [];\n\n\t/** @type {null | Animation | TickAnimation} */\n\tlet animation = null;\n\tlet cancelled = false;\n\n\tconst create_animation = () => {\n\t\tlet payload = /** @type {import('./types.js').TransitionPayload} */ (transition.p);\n\t\tif (typeof payload === 'function') {\n\t\t\t// @ts-ignore\n\t\t\tpayload = payload({ direction: curr_direction });\n\t\t}\n\t\tif (payload == null) {\n\t\t\treturn;\n\t\t}\n\t\tconst duration = payload.duration ?? 300;\n\t\tconst delay = payload.delay ?? 0;\n\t\tconst css_fn = payload.css;\n\t\tconst tick_fn = payload.tick;\n\t\tconst easing_fn = payload.easing || linear;\n\n\t\tif (typeof tick_fn === 'function') {\n\t\t\tanimation = new TickAnimation(tick_fn, duration, delay, direction === 'out');\n\t\t} else {\n\t\t\tconst keyframes =\n\t\t\t\ttypeof css_fn === 'function'\n\t\t\t\t\t? create_keyframes(easing_fn, css_fn, duration, direction, false)\n\t\t\t\t\t: [];\n\t\t\tanimation = dom.animate(keyframes, {\n\t\t\t\tduration,\n\t\t\t\tendDelay: delay,\n\t\t\t\tdelay,\n\t\t\t\tfill: 'both'\n\t\t\t});\n\t\t}\n\t\tanimation.pause();\n\n\t\tanimation.onfinish = () => {\n\t\t\tconst is_outro = curr_direction === 'out';\n\t\t\t/** @type {Animation | TickAnimation} */ (animation).cancel();\n\t\t\tif (is_outro) {\n\t\t\t\trun_all(subs);\n\t\t\t\tsubs = [];\n\t\t\t}\n\t\t\tdispatch_event(dom, is_outro ? 'outroend' : 'introend');\n\t\t};\n\t};\n\n\t/** @type {import('./types.js').Transition} */\n\tconst transition = {\n\t\te: effect,\n\t\ti: init,\n\t\t// payload\n\t\tp: null,\n\n\t\t// finished\n\t\t/** @param {() => void} fn */\n\t\tf(fn) {\n\t\t\tsubs.push(fn);\n\t\t},\n\t\tin() {\n\t\t\tconst needs_reverse = curr_direction !== 'in';\n\t\t\tcurr_direction = 'in';\n\t\t\tif (animation === null || cancelled) {\n\t\t\t\tcancelled = false;\n\t\t\t\tcreate_animation();\n\t\t\t}\n\t\t\tif (animation === null) {\n\t\t\t\ttransition.x();\n\t\t\t} else {\n\t\t\t\tdispatch_event(dom, 'introstart');\n\t\t\t\tif (needs_reverse) {\n\t\t\t\t\t/** @type {Animation | TickAnimation} */ (animation).reverse();\n\t\t\t\t}\n\t\t\t\t/** @type {Animation | TickAnimation} */ (animation).play();\n\t\t\t}\n\t\t},\n\t\t// out\n\t\to() {\n\t\t\t// @ts-ignore\n\t\t\tconst has_keyed_transition = dom.__animate;\n\t\t\t// If we're outroing an element that has an animation, then we need to fix\n\t\t\t// its position to ensure it behaves nicely without causing layout shift.\n\t\t\tif (has_keyed_transition) {\n\t\t\t\tconst style = getComputedStyle(dom);\n\t\t\t\tconst position = style.position;\n\n\t\t\t\tif (position !== 'absolute' && position !== 'fixed') {\n\t\t\t\t\tconst { width, height } = style;\n\t\t\t\t\tconst a = dom.getBoundingClientRect();\n\t\t\t\t\tdom.style.position = 'absolute';\n\n\t\t\t\t\tdom.style.width = width;\n\t\t\t\t\tdom.style.height = height;\n\t\t\t\t\tconst b = dom.getBoundingClientRect();\n\t\t\t\t\tif (a.left !== b.left || a.top !== b.top) {\n\t\t\t\t\t\tconst translate = `translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n\t\t\t\t\t\tconst existing_transform = style.transform;\n\t\t\t\t\t\tif (existing_transform === 'none') {\n\t\t\t\t\t\t\tdom.style.transform = translate;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Previously, in the Svelte 4, we'd just apply the transform the the DOM element. However,\n\t\t\t\t\t\t\t// because we're now using Web Animations, we can't do that as it won't work properly if the\n\t\t\t\t\t\t\t// animation is also making use of the same transformations. So instead, we apply an\n\t\t\t\t\t\t\t// instantaneous animation and pause it on the first frame, just applying the same behavior.\n\t\t\t\t\t\t\t// We also need to take into consideration matrix transforms and how they might combine with\n\t\t\t\t\t\t\t// an existing behavior that is already in progress (such as scale).\n\t\t\t\t\t\t\t// > Follow the white rabbit.\n\t\t\t\t\t\t\tconst transform = existing_transform.startsWith('matrix(1,')\n\t\t\t\t\t\t\t\t? translate\n\t\t\t\t\t\t\t\t: `matrix(1,0,0,1,0,0)`;\n\t\t\t\t\t\t\tconst frame = {\n\t\t\t\t\t\t\t\ttransform\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst animation = dom.animate([frame, frame], { duration: 1 });\n\t\t\t\t\t\t\tanimation.pause();\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\tconst needs_reverse = direction === 'both' && curr_direction !== 'out';\n\t\t\tcurr_direction = 'out';\n\t\t\tif (animation === null || cancelled) {\n\t\t\t\tcancelled = false;\n\t\t\t\tcreate_animation();\n\t\t\t}\n\t\t\tif (animation === null) {\n\t\t\t\ttransition.x();\n\t\t\t} else {\n\t\t\t\tdispatch_event(dom, 'outrostart');\n\t\t\t\tif (needs_reverse) {\n\t\t\t\t\tconst payload = transition.p;\n\t\t\t\t\tconst current_animation = /** @type {Animation} */ (animation);\n\t\t\t\t\t// If we are working with CSS animations, then before we call reverse, we also need to ensure\n\t\t\t\t\t// that we reverse the easing logic. To do this we need to re-create the keyframes so they're\n\t\t\t\t\t// in reverse with easing properly reversed too.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpayload !== null &&\n\t\t\t\t\t\tpayload.css !== undefined &&\n\t\t\t\t\t\tcurrent_animation.playState === 'idle'\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst duration = payload.duration ?? 300;\n\t\t\t\t\t\tconst css_fn = payload.css;\n\t\t\t\t\t\tconst easing_fn = payload.easing || linear;\n\t\t\t\t\t\tconst keyframes = create_keyframes(easing_fn, css_fn, duration, direction, true);\n\t\t\t\t\t\tconst effect = current_animation.effect;\n\t\t\t\t\t\tif (effect !== null) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\teffect.setKeyframes(keyframes);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t/** @type {Animation | TickAnimation} */ (animation).reverse();\n\t\t\t\t} else {\n\t\t\t\t\t/** @type {Animation | TickAnimation} */ (animation).play();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// cancel\n\t\tc() {\n\t\t\tif (animation !== null) {\n\t\t\t\t/** @type {Animation | TickAnimation} */ (animation).cancel();\n\t\t\t}\n\t\t\tcancelled = true;\n\t\t},\n\t\t// cleanup\n\t\tx() {\n\t\t\trun_all(subs);\n\t\t\tsubs = [];\n\t\t},\n\t\tr: direction,\n\t\td: dom\n\t};\n\treturn transition;\n}\n\n/**\n * @param {import('./types.js').Block} block\n * @returns {boolean}\n */\nfunction is_transition_block(block) {\n\tconst type = block.t;\n\treturn (\n\t\ttype === IF_BLOCK ||\n\t\ttype === EACH_ITEM_BLOCK ||\n\t\ttype === KEY_BLOCK ||\n\t\ttype === AWAIT_BLOCK ||\n\t\ttype === DYNAMIC_COMPONENT_BLOCK ||\n\t\t(type === EACH_BLOCK && block.v.length === 0)\n\t);\n}\n\n/**\n * @template P\n * @param {HTMLElement} dom\n * @param {() => import('./types.js').TransitionFn

| import('./types.js').AnimateFn

} get_transition_fn\n * @param {(() => P) | null} props_fn\n * @param {'in' | 'out' | 'both' | 'key'} direction\n * @param {boolean} global\n * @returns {void}\n */\nexport function bind_transition(dom, get_transition_fn, props_fn, direction, global) {\n\tconst transition_effect = /** @type {import('./types.js').EffectSignal} */ (current_effect);\n\tconst block = current_block;\n\tconst is_keyed_transition = direction === 'key';\n\n\tlet can_show_intro_on_mount = true;\n\tlet can_apply_lazy_transitions = false;\n\n\tif (is_keyed_transition) {\n\t\t// @ts-ignore\n\t\tdom.__animate = true;\n\t}\n\t/** @type {import('./types.js').Block | null} */\n\tlet transition_block = block;\n\tmain: while (transition_block !== null) {\n\t\tif (is_transition_block(transition_block)) {\n\t\t\tif (transition_block.t === EACH_ITEM_BLOCK) {\n\t\t\t\t// Lazily apply the each block transition\n\t\t\t\ttransition_block.r = each_item_transition;\n\t\t\t\ttransition_block.a = each_item_animate;\n\t\t\t\ttransition_block = transition_block.p;\n\t\t\t} else if (transition_block.t === AWAIT_BLOCK && transition_block.n /* pending */) {\n\t\t\t\tcan_show_intro_on_mount = true;\n\t\t\t} else if (transition_block.t === IF_BLOCK) {\n\t\t\t\ttransition_block.r = if_block_transition;\n\t\t\t\tif (can_show_intro_on_mount) {\n\t\t\t\t\t/** @type {import('./types.js').Block | null} */\n\t\t\t\t\tlet if_block = transition_block;\n\t\t\t\t\twhile (if_block.t === IF_BLOCK) {\n\t\t\t\t\t\t// If we have an if block parent that is currently falsy then\n\t\t\t\t\t\t// we can show the intro on mount as long as that block is mounted\n\t\t\t\t\t\tif (if_block.e !== null && !if_block.v) {\n\t\t\t\t\t\t\tcan_show_intro_on_mount = true;\n\t\t\t\t\t\t\tbreak main;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif_block = if_block.p;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!can_apply_lazy_transitions && can_show_intro_on_mount) {\n\t\t\t\tcan_show_intro_on_mount = transition_block.e !== null;\n\t\t\t}\n\t\t\tif (can_show_intro_on_mount || !global) {\n\t\t\t\tcan_apply_lazy_transitions = true;\n\t\t\t}\n\t\t} else if (transition_block.t === ROOT_BLOCK && !can_apply_lazy_transitions) {\n\t\t\tcan_show_intro_on_mount = transition_block.e !== null || transition_block.i;\n\t\t}\n\t\ttransition_block = transition_block.p;\n\t}\n\n\t/** @type {import('./types.js').Transition} */\n\tlet transition;\n\n\teffect(() => {\n\t\tlet already_mounted = false;\n\t\tif (transition !== undefined) {\n\t\t\talready_mounted = true;\n\t\t\t// Destroy any existing transitions first\n\t\t\ttransition.x();\n\t\t}\n\t\tconst transition_fn = get_transition_fn();\n\t\t/** @param {DOMRect} [from] */\n\t\tconst init = (from) =>\n\t\t\tuntrack(() => {\n\t\t\t\tconst props = props_fn === null ? {} : props_fn();\n\t\t\t\treturn is_keyed_transition\n\t\t\t\t\t? /** @type {import('./types.js').AnimateFn} */ (transition_fn)(\n\t\t\t\t\t\t\tdom,\n\t\t\t\t\t\t\t{ from: /** @type {DOMRect} */ (from), to: dom.getBoundingClientRect() },\n\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t)\n\t\t\t\t\t: /** @type {import('./types.js').TransitionFn} */ (transition_fn)(dom, props, {\n\t\t\t\t\t\t\tdirection\n\t\t\t\t\t\t});\n\t\t\t});\n\n\t\ttransition = create_transition(dom, init, direction, transition_effect);\n\t\tconst is_intro = direction === 'in';\n\t\tconst show_intro = can_show_intro_on_mount && (is_intro || direction === 'both');\n\n\t\tif (show_intro && !already_mounted) {\n\t\t\ttransition.p = transition.i();\n\t\t}\n\n\t\tconst effect = managed_pre_effect(() => {\n\t\t\tdestroy_signal(effect);\n\t\t\tdom.inert = false;\n\n\t\t\tif (show_intro && !already_mounted) {\n\t\t\t\ttransition.in();\n\t\t\t}\n\n\t\t\t/** @type {import('./types.js').Block | null} */\n\t\t\tlet transition_block = block;\n\t\t\twhile (!is_intro && transition_block !== null) {\n\t\t\t\tconst parent = transition_block.p;\n\t\t\t\tif (is_transition_block(transition_block)) {\n\t\t\t\t\tif (transition_block.r !== null) {\n\t\t\t\t\t\ttransition_block.r(transition);\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\tparent === null ||\n\t\t\t\t\t\t(!global && (transition_block.t !== IF_BLOCK || parent.t !== IF_BLOCK || parent.v))\n\t\t\t\t\t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttransition_block = parent;\n\t\t\t}\n\t\t}, false);\n\t});\n\n\tif (direction === 'key') {\n\t\teffect(() => {\n\t\t\treturn () => {\n\t\t\t\ttransition.x();\n\t\t\t};\n\t\t});\n\t}\n}\n\n/**\n * @param {Set} transitions\n * @param {'in' | 'out' | 'key'} target_direction\n * @param {DOMRect} [from]\n * @returns {void}\n */\nexport function trigger_transitions(transitions, target_direction, from) {\n\t/** @type {Array<() => void>} */\n\tconst outros = [];\n\tfor (const transition of transitions) {\n\t\tconst direction = transition.r;\n\t\tconst effect = transition.e;\n\t\tif (target_direction === 'in') {\n\t\t\tif (direction === 'in' || direction === 'both') {\n\t\t\t\ttransition.in();\n\t\t\t} else {\n\t\t\t\ttransition.c();\n\t\t\t}\n\t\t\ttransition.d.inert = false;\n\t\t\tmark_subtree_inert(effect, false);\n\t\t} else if (target_direction === 'key') {\n\t\t\tif (direction === 'key') {\n\t\t\t\ttransition.p = transition.i(/** @type {DOMRect} */ (from));\n\t\t\t\ttransition.in();\n\t\t\t}\n\t\t} else {\n\t\t\tif (direction === 'out' || direction === 'both') {\n\t\t\t\ttransition.p = transition.i();\n\t\t\t\toutros.push(transition.o);\n\t\t\t}\n\t\t\ttransition.d.inert = true;\n\t\t\tmark_subtree_inert(effect, true);\n\t\t}\n\t}\n\tif (outros.length > 0) {\n\t\t// Defer the outros to a microtask\n\t\tconst e = managed_pre_effect(() => {\n\t\t\tdestroy_signal(e);\n\t\t\tconst e2 = managed_effect(() => {\n\t\t\t\tdestroy_signal(e2);\n\t\t\t\trun_all(outros);\n\t\t\t});\n\t\t}, false);\n\t}\n}\n\n/**\n * @this {import('./types.js').IfBlock}\n * @param {import('./types.js').Transition} transition\n * @returns {void}\n */\nfunction if_block_transition(transition) {\n\tconst block = this;\n\t// block.value === true\n\tif (block.v) {\n\t\tconst consequent_transitions = (block.c ??= new Set());\n\t\tconsequent_transitions.add(transition);\n\t\ttransition.f(() => {\n\t\t\tconst c = /** @type {Set} */ (consequent_transitions);\n\t\t\tc.delete(transition);\n\t\t\tif (c.size === 0) {\n\t\t\t\tconst consequent_effect = block.ce;\n\t\t\t\texecute_effect(/** @type {import('./types.js').EffectSignal} */ (consequent_effect));\n\t\t\t}\n\t\t});\n\t} else {\n\t\tconst alternate_transitions = (block.a ??= new Set());\n\t\talternate_transitions.add(transition);\n\t\ttransition.f(() => {\n\t\t\tconst a = /** @type {Set} */ (alternate_transitions);\n\t\t\ta.delete(transition);\n\t\t\tif (a.size === 0) {\n\t\t\t\tconst alternate_effect = block.ae;\n\t\t\t\texecute_effect(/** @type {import('./types.js').EffectSignal} */ (alternate_effect));\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * @this {import('./types.js').EachItemBlock}\n * @param {import('./types.js').Transition} transition\n * @returns {void}\n */\nfunction each_item_transition(transition) {\n\tconst block = this;\n\tconst each_block = block.p;\n\tconst is_controlled = (each_block.f & EACH_IS_CONTROLLED) !== 0;\n\t// Disable optimization\n\tif (is_controlled) {\n\t\tconst anchor = empty();\n\t\teach_block.f ^= EACH_IS_CONTROLLED;\n\t\tappend_child(/** @type {Element} */ (each_block.a), anchor);\n\t\teach_block.a = anchor;\n\t}\n\tif (transition.r === 'key' && (each_block.f & EACH_IS_ANIMATED) === 0) {\n\t\teach_block.f |= EACH_IS_ANIMATED;\n\t}\n\tconst transitions = (block.s ??= new Set());\n\ttransition.f(() => {\n\t\ttransitions.delete(transition);\n\t\tif (transition.r !== 'key') {\n\t\t\tfor (let other of transitions) {\n\t\t\t\tconst type = other.r;\n\t\t\t\tif (type === 'key' || type === 'in') {\n\t\t\t\t\ttransitions.delete(other);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (transitions.size === 0) {\n\t\t\t\tblock.s = null;\n\t\t\t\tdestroy_each_item_block(block, null, true);\n\t\t\t}\n\t\t}\n\t});\n\ttransitions.add(transition);\n}\n\n/**\n *\n * @param {import('./types.js').EachItemBlock} block\n * @param {Set} transitions\n */\nfunction each_item_animate(block, transitions) {\n\tconst from_dom = /** @type {Element} */ (get_first_element(block));\n\tconst from = from_dom.getBoundingClientRect();\n\t// Cancel any existing key transitions\n\tfor (const transition of transitions) {\n\t\tconst type = transition.r;\n\t\tif (type === 'key') {\n\t\t\ttransition.c();\n\t\t}\n\t}\n\tschedule_raf_task(() => {\n\t\ttrigger_transitions(transitions, 'key', from);\n\t});\n}\n","import { DEV } from 'esm-env';\nimport {\n\tappend_child,\n\tchild,\n\tclone_node,\n\tcreate_element,\n\tinit_operations,\n\tmap_get,\n\tmap_set,\n\tset_class_name\n} from './operations.js';\nimport {\n\tcreate_root_block,\n\tcreate_if_block,\n\tcreate_key_block,\n\tcreate_await_block,\n\tcreate_dynamic_element_block,\n\tcreate_head_block,\n\tcreate_dynamic_component_block,\n\tcreate_snippet_block\n} from './block.js';\nimport {\n\tPassiveDelegatedEvents,\n\tDelegatedEvents,\n\tAttributeAliases,\n\tnamespace_svg,\n\tnamespace_html\n} from '../../constants.js';\nimport { create_fragment_from_html, insert, reconcile_html, remove } from './reconciler.js';\nimport {\n\trender_effect,\n\tdestroy_signal,\n\tget,\n\tis_signal,\n\tpush_destroy_fn,\n\texecute_effect,\n\tUNINITIALIZED,\n\tuntrack,\n\teffect,\n\tflushSync,\n\tsafe_not_equal,\n\tcurrent_block,\n\tmanaged_effect,\n\tpush,\n\tcurrent_component_context,\n\tpop\n} from './runtime.js';\nimport {\n\tcurrent_hydration_fragment,\n\tget_hydration_fragment,\n\thydrate_block_anchor,\n\tset_current_hydration_fragment\n} from './hydration.js';\nimport {\n\tarray_from,\n\tdefine_property,\n\tget_descriptor,\n\tget_descriptors,\n\tis_array,\n\tis_function,\n\tobject_assign,\n\tobject_keys\n} from './utils.js';\nimport { is_promise } from '../common.js';\nimport { bind_transition, trigger_transitions } from './transitions.js';\nimport { proxy } from './proxy.js';\n\n/** @type {Set} */\nconst all_registerd_events = new Set();\n\n/** @type {Set<(events: Array) => void>} */\nconst root_event_handles = new Set();\n\n/** @returns {Text} */\nexport function empty() {\n\treturn document.createTextNode('');\n}\n\n/**\n * @param {string} html\n * @param {boolean} is_fragment\n * @returns {() => Node}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function template(html, is_fragment) {\n\t/** @type {undefined | Node} */\n\tlet cached_content;\n\treturn () => {\n\t\tif (cached_content === undefined) {\n\t\t\tconst content = create_fragment_from_html(html);\n\t\t\tcached_content = is_fragment ? content : /** @type {Node} */ (child(content));\n\t\t}\n\t\treturn cached_content;\n\t};\n}\n\n/**\n * @param {string} svg\n * @param {boolean} is_fragment\n * @returns {() => Node}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function svg_template(svg, is_fragment) {\n\t/** @type {undefined | Node} */\n\tlet cached_content;\n\treturn () => {\n\t\tif (cached_content === undefined) {\n\t\t\tconst content = /** @type {Node} */ (child(create_fragment_from_html(`${svg}`)));\n\t\t\tcached_content = is_fragment ? content : /** @type {Node} */ (child(content));\n\t\t}\n\t\treturn cached_content;\n\t};\n}\n\n/**\n * @param {Element} node\n * @returns {Element}\n */\nexport function svg_replace(node) {\n\tconst first_child = /** @type {Element} */ (node.firstChild);\n\tnode.replaceWith(first_child);\n\treturn first_child;\n}\n\n/**\n * @param {boolean} is_fragment\n * @param {boolean} use_clone_node\n * @param {null | Text | Comment | Element} anchor\n * @param {() => Node} [template_element_fn]\n * @returns {Element | DocumentFragment | Node[]}\n */\nfunction open_template(is_fragment, use_clone_node, anchor, template_element_fn) {\n\tif (current_hydration_fragment !== null) {\n\t\tif (anchor !== null) {\n\t\t\thydrate_block_anchor(anchor, false);\n\t\t}\n\t\t// In ssr+hydration optimization mode, we might remove the template_element,\n\t\t// so we need to is_fragment flag to properly handle hydrated content accordingly.\n\t\tconst fragment = current_hydration_fragment;\n\t\tif (fragment !== null) {\n\t\t\treturn is_fragment ? fragment : /** @type {Element} */ (fragment[0]);\n\t\t}\n\t}\n\treturn use_clone_node\n\t\t? clone_node(/** @type {() => Element} */ (template_element_fn)(), true)\n\t\t: document.importNode(/** @type {() => Element} */ (template_element_fn)(), true);\n}\n\n/**\n * @param {null | Text | Comment | Element} anchor\n * @param {boolean} use_clone_node\n * @param {() => Node} [template_element_fn]\n * @returns {Element | DocumentFragment | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function open(anchor, use_clone_node, template_element_fn) {\n\treturn open_template(false, use_clone_node, anchor, template_element_fn);\n}\n\n/**\n * @param {null | Text | Comment | Element} anchor\n * @param {boolean} use_clone_node\n * @param {() => Node} [template_element_fn]\n * @returns {Element | DocumentFragment | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function open_frag(anchor, use_clone_node, template_element_fn) {\n\treturn open_template(true, use_clone_node, anchor, template_element_fn);\n}\n\nconst space_template = template(' ', false);\nconst comment_template = template('', true);\n\n/**\n * @param {null | Text | Comment | Element} anchor\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function space(anchor) {\n\treturn open(anchor, true, space_template);\n}\n\n/**\n * @param {null | Text | Comment | Element} anchor\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function comment(anchor) {\n\treturn open_frag(anchor, true, comment_template);\n}\n\n/**\n * @param {Element | Text} dom\n * @param {boolean} is_fragment\n * @param {null | Text | Comment | Element} anchor\n * @returns {void}\n */\nfunction close_template(dom, is_fragment, anchor) {\n\tconst block = /** @type {import('./types.js').Block} */ (current_block);\n\n\t/** @type {import('./types.js').TemplateNode | Array} */\n\tconst current = is_fragment\n\t\t? is_array(dom)\n\t\t\t? dom\n\t\t\t: /** @type {import('./types.js').TemplateNode[]} */ (Array.from(dom.childNodes))\n\t\t: dom;\n\tif (anchor !== null) {\n\t\tif (current_hydration_fragment === null) {\n\t\t\tinsert(current, null, anchor);\n\t\t}\n\t}\n\tblock.d = current;\n}\n\n/**\n * @param {null | Text | Comment | Element} anchor\n * @param {Element | Text} dom\n * @returns {void}\n */\nexport function close(anchor, dom) {\n\tclose_template(dom, false, anchor);\n}\n\n/**\n * @param {null | Text | Comment | Element} anchor\n * @param {Element | Text} dom\n * @returns {void}\n */\nexport function close_frag(anchor, dom) {\n\tclose_template(dom, true, anchor);\n}\n\n/**\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function trusted(fn) {\n\treturn function (...args) {\n\t\tconst event = /** @type {Event} */ (args[0]);\n\t\tif (event.isTrusted) {\n\t\t\t// @ts-ignore\n\t\t\tfn.apply(this, args);\n\t\t}\n\t};\n}\n\n/**\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function self(fn) {\n\treturn function (...args) {\n\t\tconst event = /** @type {Event} */ (args[0]);\n\t\t// @ts-ignore\n\t\tif (event.target === this) {\n\t\t\t// @ts-ignore\n\t\t\tfn.apply(this, args);\n\t\t}\n\t};\n}\n\n/**\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function stopPropagation(fn) {\n\treturn function (...args) {\n\t\tconst event = /** @type {Event} */ (args[0]);\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn.apply(this, args);\n\t};\n}\n\n/**\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function once(fn) {\n\tlet ran = false;\n\treturn function (...args) {\n\t\tif (ran) {\n\t\t\treturn;\n\t\t}\n\t\tran = true;\n\t\t// @ts-ignore\n\t\treturn fn.apply(this, args);\n\t};\n}\n\n/**\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function stopImmediatePropagation(fn) {\n\treturn function (...args) {\n\t\tconst event = /** @type {Event} */ (args[0]);\n\t\tevent.stopImmediatePropagation();\n\t\t// @ts-ignore\n\t\treturn fn.apply(this, args);\n\t};\n}\n\n/**\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function preventDefault(fn) {\n\treturn function (...args) {\n\t\tconst event = /** @type {Event} */ (args[0]);\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn.apply(this, args);\n\t};\n}\n\n/**\n * @param {string} event_name\n * @param {Element} dom\n * @param {EventListener} handler\n * @param {boolean} capture\n * @param {boolean} [passive]\n * @returns {void}\n */\nexport function event(event_name, dom, handler, capture, passive) {\n\tconst options = {\n\t\tcapture,\n\t\tpassive\n\t};\n\t/**\n\t * @this {EventTarget}\n\t */\n\tfunction target_handler(/** @type {Event} */ event) {\n\t\thandle_event_propagation(dom, event);\n\t\tif (!event.cancelBubble) {\n\t\t\treturn handler.call(this, event);\n\t\t}\n\t}\n\tdom.addEventListener(event_name, target_handler, options);\n\t// @ts-ignore\n\tif (dom === document.body || dom === window || dom === document) {\n\t\trender_effect(() => {\n\t\t\treturn () => {\n\t\t\t\tdom.removeEventListener(event_name, target_handler, options);\n\t\t\t};\n\t\t});\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {() => string} value\n * @returns {void}\n */\nexport function class_name_effect(dom, value) {\n\trender_effect(() => {\n\t\tconst string = value();\n\t\tclass_name(dom, string);\n\t});\n}\n\n/**\n * @param {Element} dom\n * @param {string} value\n * @returns {void}\n */\nexport function class_name(dom, value) {\n\t// @ts-expect-error need to add __className to patched prototype\n\tconst prev_class_name = dom.__className;\n\tconst next_class_name = to_class(value);\n\tconst is_hydrating = current_hydration_fragment !== null;\n\tif (is_hydrating && dom.className === next_class_name) {\n\t\t// In case of hydration don't reset the class as it's already correct.\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = next_class_name;\n\t} else if (\n\t\tprev_class_name !== next_class_name ||\n\t\t(is_hydrating && dom.className !== next_class_name)\n\t) {\n\t\tif (next_class_name === '') {\n\t\t\tdom.removeAttribute('class');\n\t\t} else {\n\t\t\tset_class_name(dom, next_class_name);\n\t\t}\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = next_class_name;\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {() => string} value\n * @returns {void}\n */\nexport function text_effect(dom, value) {\n\trender_effect(() => text(dom, value()));\n}\n\n/**\n * @param {Element} dom\n * @param {string} value\n * @returns {void}\n */\nexport function text(dom, value) {\n\t// @ts-expect-error need to add __value to patched prototype\n\tconst prev_node_value = dom.__nodeValue;\n\tconst next_node_value = stringify(value);\n\tif (current_hydration_fragment !== null && dom.nodeValue === next_node_value) {\n\t\t// In case of hydration don't reset the nodeValue as it's already correct.\n\t\t// @ts-expect-error need to add __nodeValue to patched prototype\n\t\tdom.__nodeValue = next_node_value;\n\t} else if (prev_node_value !== next_node_value) {\n\t\tdom.nodeValue = next_node_value;\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__nodeValue = next_node_value;\n\t}\n}\n\n/**\n * @param {HTMLElement} dom\n * @param {boolean} value\n * @returns {void}\n */\nexport function auto_focus(dom, value) {\n\tif (value) {\n\t\tconst body = document.body;\n\t\tdom.autofocus = true;\n\t\trender_effect(\n\t\t\t() => {\n\t\t\t\tif (document.activeElement === body) {\n\t\t\t\t\tdom.focus();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcurrent_block,\n\t\t\ttrue,\n\t\t\tfalse\n\t\t);\n\t}\n}\n\n/**\n * @template V\n * @param {V} value\n * @returns {string | V}\n */\nexport function to_class(value) {\n\treturn value == null ? '' : value;\n}\n\n/**\n * @param {Element} dom\n * @param {string} class_name\n * @param {boolean} value\n * @returns {void}\n */\nexport function class_toggle(dom, class_name, value) {\n\tif (value) {\n\t\tdom.classList.add(class_name);\n\t} else {\n\t\tdom.classList.remove(class_name);\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {string} class_name\n * @param {() => boolean} value\n * @returns {void}\n */\nexport function class_toggle_effect(dom, class_name, value) {\n\trender_effect(() => {\n\t\tconst string = value();\n\t\tclass_toggle(dom, class_name, string);\n\t});\n}\n\n/**\n * Selects the correct option(s) (depending on whether this is a multiple select)\n * @template V\n * @param {HTMLSelectElement} select\n * @param {V} value\n * @param {boolean} [mounting]\n */\nexport function select_option(select, value, mounting) {\n\tif (select.multiple) {\n\t\treturn select_options(select, value);\n\t}\n\tfor (const option of select.options) {\n\t\tconst option_value = get_option_value(option);\n\t\tif (option_value === value) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * @template V\n * @param {HTMLSelectElement} select\n * @param {V} value\n */\nfunction select_options(select, value) {\n\tfor (const option of select.options) {\n\t\t// @ts-ignore\n\t\toption.selected = ~value.indexOf(get_option_value(option));\n\t}\n}\n\n/** @param {HTMLOptionElement} option */\nfunction get_option_value(option) {\n\t// __value only exists if the

} get_transition_fn\n * @param {(() => P) | null} props\n * @param {any} global\n * @returns {void}\n */\nexport function transition(dom, get_transition_fn, props, global = false) {\n\tbind_transition(dom, get_transition_fn, props, 'both', global);\n}\n\n/**\n * @template P\n * @param {HTMLElement} dom\n * @param {() => import('./types.js').TransitionFn

} get_transition_fn\n * @param {(() => P) | null} props\n * @returns {void}\n */\nexport function animate(dom, get_transition_fn, props) {\n\tbind_transition(dom, get_transition_fn, props, 'key', false);\n}\n\n/**\n * @template P\n * @param {HTMLElement} dom\n * @param {() => import('./types.js').TransitionFn

} get_transition_fn\n * @param {(() => P) | null} props\n * @param {any} global\n * @returns {void}\n */\nfunction in_fn(dom, get_transition_fn, props, global = false) {\n\tbind_transition(dom, get_transition_fn, props, 'in', global);\n}\nexport { in_fn as in };\n\n/**\n * @template P\n * @param {HTMLElement} dom\n * @param {() => import('./types.js').TransitionFn

} get_transition_fn\n * @param {(() => P) | null} props\n * @param {any} global\n * @returns {void}\n */\nexport function out(dom, get_transition_fn, props, global = false) {\n\tbind_transition(dom, get_transition_fn, props, 'out', global);\n}\n\n/**\n * @template P\n * @param {Element} dom\n * @param {(dom: Element, value?: P) => import('./types.js').ActionPayload

} action\n * @param {() => P} [value_fn]\n * @returns {void}\n */\nexport function action(dom, action, value_fn) {\n\t/** @type {undefined | import('./types.js').ActionPayload

} */\n\tlet payload = undefined;\n\t// Action could come from a prop, therefore could be a signal, therefore untrack\n\t// TODO we could take advantage of this and enable https://github.com/sveltejs/svelte/issues/6942\n\teffect(() => {\n\t\tif (value_fn) {\n\t\t\tconst value = value_fn();\n\t\t\tuntrack(() => {\n\t\t\t\tif (payload === undefined) {\n\t\t\t\t\tpayload = action(dom, value) || {};\n\t\t\t\t} else {\n\t\t\t\t\tconst update = payload.update;\n\t\t\t\t\tif (typeof update === 'function') {\n\t\t\t\t\t\tupdate(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tuntrack(() => (payload = action(dom)));\n\t\t}\n\t});\n\teffect(() => {\n\t\tif (payload !== undefined) {\n\t\t\tconst destroy = payload.destroy;\n\t\t\tif (typeof destroy === 'function') {\n\t\t\t\treturn () => {\n\t\t\t\t\tdestroy();\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t});\n}\n/**\n * The value/checked attribute in the template actually corresponds to the defaultValue property, so we need\n * to remove it upon hydration to avoid a bug when someone resets the form value.\n * @param {HTMLInputElement | HTMLSelectElement} dom\n * @returns {void}\n */\nexport function remove_input_attr_defaults(dom) {\n\tif (current_hydration_fragment !== null) {\n\t\tattr(dom, 'value', null);\n\t\tattr(dom, 'checked', null);\n\t}\n}\n/**\n * The child of a textarea actually corresponds to the defaultValue property, so we need\n * to remove it upon hydration to avoid a bug when someone resets the form value.\n * @param {HTMLTextAreaElement} dom\n * @returns {void}\n */\nexport function remove_textarea_child(dom) {\n\tif (current_hydration_fragment !== null && dom.firstChild !== null) {\n\t\tdom.textContent = '';\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {() => string} value\n */\nexport function attr_effect(dom, attribute, value) {\n\trender_effect(() => {\n\t\tconst string = value();\n\t\tattr(dom, attribute, string);\n\t});\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {string | null} value\n */\nexport function attr(dom, attribute, value) {\n\tvalue = value == null ? null : value + '';\n\n\tif (DEV) {\n\t\tcheck_src_in_dev_hydration(dom, attribute, value);\n\t}\n\n\tif (\n\t\tcurrent_hydration_fragment === null ||\n\t\t(dom.getAttribute(attribute) !== value &&\n\t\t\t// If we reset those, they would result in another network request, which we want to avoid.\n\t\t\t// We assume they are the same between client and server as checking if they are equal is expensive\n\t\t\t// (we can't just compare the strings as they can be different between client and server but result in the\n\t\t\t// same url, so we would need to create hidden anchor elements to compare them)\n\t\t\tattribute !== 'src' &&\n\t\t\tattribute !== 'href' &&\n\t\t\tattribute !== 'srcset')\n\t) {\n\t\tif (value === null) {\n\t\t\tdom.removeAttribute(attribute);\n\t\t} else {\n\t\t\tdom.setAttribute(attribute, value);\n\t\t}\n\t}\n}\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nfunction src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\treturn new URL(element_src, document.baseURI).href === new URL(url, document.baseURI).href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element\n * @param {string | undefined | null} srcset\n * @returns {boolean}\n */\nexport function srcset_url_equal(element, srcset) {\n\tconst element_urls = split_srcset(element.srcset);\n\tconst urls = split_srcset(srcset ?? '');\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n\n/**\n * @param {any} dom\n * @param {string} attribute\n * @param {string | null} value\n */\nfunction check_src_in_dev_hydration(dom, attribute, value) {\n\tif (!current_hydration_fragment) return;\n\tif (attribute !== 'src' && attribute !== 'href' && attribute !== 'srcset') return;\n\n\tif (attribute === 'srcset' && srcset_url_equal(dom, value)) return;\n\tif (src_url_equal(dom.getAttribute(attribute) ?? '', value ?? '')) return;\n\n\t// eslint-disable-next-line no-console\n\tconsole.error(\n\t\t`Detected a ${attribute} attribute value change during hydration. This will not be repaired during hydration, ` +\n\t\t\t`the ${attribute} value that came from the server will be used. Related element:`,\n\t\tdom,\n\t\t' Differing value:',\n\t\tvalue\n\t);\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {() => string} value\n */\nexport function xlink_attr_effect(dom, attribute, value) {\n\trender_effect(() => {\n\t\tconst string = value();\n\t\txlink_attr(dom, attribute, string);\n\t});\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {string} value\n */\nexport function xlink_attr(dom, attribute, value) {\n\tdom.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {any} node\n * @param {string} prop\n * @param {() => any} value\n */\nexport function set_custom_element_data_effect(node, prop, value) {\n\trender_effect(() => {\n\t\tset_custom_element_data(node, prop, value());\n\t});\n}\n\n/**\n * @param {any} node\n * @param {string} prop\n * @param {any} value\n */\nexport function set_custom_element_data(node, prop, value) {\n\tif (prop in node) {\n\t\tnode[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n\t} else {\n\t\tattr(node, prop, value);\n\t}\n}\n\n/**\n * @param {HTMLElement} dom\n * @param {string} key\n * @param {string} value\n * @param {boolean} [important]\n */\nexport function style(dom, key, value, important) {\n\tconst style = dom.style;\n\tconst prev_value = style.getPropertyValue(key);\n\tif (value == null) {\n\t\tif (prev_value !== '') {\n\t\t\tstyle.removeProperty(key);\n\t\t}\n\t} else if (prev_value !== value) {\n\t\tstyle.setProperty(key, value, important ? 'important' : '');\n\t}\n}\n\n/**\n * @param {HTMLElement} dom\n * @param {string} key\n * @param {() => string} value\n * @param {boolean} [important]\n * @returns {void}\n */\nexport function style_effect(dom, key, value, important) {\n\trender_effect(() => {\n\t\tconst string = value();\n\t\tstyle(dom, key, string, important);\n\t});\n}\n\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\n\n/** @type {Map} */\nconst setters_cache = new Map();\n\n/** @param {Element} element */\nfunction get_setters(element) {\n\t/** @type {string[]} */\n\tconst setters = [];\n\t// @ts-expect-error\n\tconst descriptors = get_descriptors(element.__proto__);\n\tfor (const key in descriptors) {\n\t\tif (descriptors[key].set && !always_set_through_set_attribute.includes(key)) {\n\t\t\tsetters.push(key);\n\t\t}\n\t}\n\treturn setters;\n}\n\n/**\n * Like `spread_attributes` but self-contained\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {() => Record[]} attrs\n * @param {boolean} lowercase_attributes\n * @param {string} css_hash\n */\nexport function spread_attributes_effect(dom, attrs, lowercase_attributes, css_hash) {\n\t/** @type {Record | undefined} */\n\tlet current = undefined;\n\n\trender_effect(() => {\n\t\tcurrent = spread_attributes(dom, current, attrs(), lowercase_attributes, css_hash);\n\t});\n}\n\n/**\n * Spreads attributes onto a DOM element, taking into account the currently set attributes\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {Record | undefined} prev\n * @param {Record[]} attrs\n * @param {boolean} lowercase_attributes\n * @param {string} css_hash\n * @returns {Record}\n */\nexport function spread_attributes(dom, prev, attrs, lowercase_attributes, css_hash) {\n\tconst next = object_assign({}, ...attrs);\n\tconst has_hash = css_hash.length !== 0;\n\tfor (const key in prev) {\n\t\tif (!(key in next)) {\n\t\t\tnext[key] = null;\n\t\t}\n\t}\n\tif (has_hash && !next.class) {\n\t\tnext.class = '';\n\t}\n\n\tlet setters = map_get(setters_cache, dom.nodeName);\n\tif (!setters) map_set(setters_cache, dom.nodeName, (setters = get_setters(dom)));\n\n\tfor (const key in next) {\n\t\tlet value = next[key];\n\t\tif (value === prev?.[key]) continue;\n\n\t\tconst prefix = key[0] + key[1]; // this is faster than key.slice(0, 2)\n\t\tif (prefix === '$$') continue;\n\n\t\tif (prefix === 'on') {\n\t\t\t/** @type {{ capture?: true }} */\n\t\t\tconst opts = {};\n\t\t\tlet event_name = key.slice(2);\n\t\t\tconst delegated = DelegatedEvents.includes(event_name);\n\n\t\t\tif (\n\t\t\t\tevent_name.endsWith('capture') &&\n\t\t\t\tevent_name !== 'ongotpointercapture' &&\n\t\t\t\tevent_name !== 'onlostpointercapture'\n\t\t\t) {\n\t\t\t\tevent_name = event_name.slice(0, -7);\n\t\t\t\topts.capture = true;\n\t\t\t}\n\t\t\tif (!delegated && prev?.[key]) {\n\t\t\t\tdom.removeEventListener(event_name, /** @type {any} */ (prev[key]), opts);\n\t\t\t}\n\t\t\tif (value != null) {\n\t\t\t\tif (!delegated) {\n\t\t\t\t\tdom.addEventListener(event_name, value, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tdom[`__${event_name}`] = value;\n\t\t\t\t\tdelegate([event_name]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (value == null) {\n\t\t\tdom.removeAttribute(key);\n\t\t} else if (key === 'style') {\n\t\t\tdom.style.cssText = value + '';\n\t\t} else if (key === 'autofocus') {\n\t\t\tauto_focus(/** @type {HTMLElement} */ (dom), Boolean(value));\n\t\t} else if (key === '__value' || key === 'value') {\n\t\t\t// @ts-ignore\n\t\t\tdom.value = dom[key] = dom.__value = value;\n\t\t} else {\n\t\t\tlet name = key;\n\t\t\tif (lowercase_attributes) {\n\t\t\t\tname = name.toLowerCase();\n\t\t\t\tname = AttributeAliases[name] || name;\n\t\t\t}\n\n\t\t\tif (setters.includes(name)) {\n\t\t\t\tif (DEV) {\n\t\t\t\t\tcheck_src_in_dev_hydration(dom, name, value);\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tcurrent_hydration_fragment === null ||\n\t\t\t\t\t// @ts-ignore see attr method for an explanation of src/srcset\n\t\t\t\t\t(dom[name] !== value && name !== 'src' && name !== 'href' && name !== 'srcset')\n\t\t\t\t) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tdom[name] = value;\n\t\t\t\t}\n\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\tif (has_hash && name === 'class') {\n\t\t\t\t\tif (value) value += ' ';\n\t\t\t\t\tvalue += css_hash;\n\t\t\t\t}\n\n\t\t\t\tattr(dom, name, value);\n\t\t\t}\n\t\t}\n\t}\n\treturn next;\n}\n\n/**\n * @param {Element} node\n * @param {() => Record[]} attrs\n * @param {string} css_hash\n */\nexport function spread_dynamic_element_attributes_effect(node, attrs, css_hash) {\n\t/** @type {Record | undefined} */\n\tlet current = undefined;\n\n\trender_effect(() => {\n\t\tcurrent = spread_dynamic_element_attributes(node, current, attrs(), css_hash);\n\t});\n}\n\n/**\n * @param {Element} node\n * @param {Record | undefined} prev\n * @param {Record[]} attrs\n * @param {string} css_hash\n */\nexport function spread_dynamic_element_attributes(node, prev, attrs, css_hash) {\n\tif (node.tagName.includes('-')) {\n\t\tconst next = object_assign({}, ...attrs);\n\t\tfor (const key in prev) {\n\t\t\tif (!(key in next)) {\n\t\t\t\tnext[key] = null;\n\t\t\t}\n\t\t}\n\t\tfor (const key in next) {\n\t\t\tset_custom_element_data(node, key, next[key]);\n\t\t}\n\t\treturn next;\n\t} else {\n\t\treturn spread_attributes(\n\t\t\t/** @type {Element & ElementCSSInlineStyle} */ (node),\n\t\t\tprev,\n\t\t\tattrs,\n\t\t\tnode.namespaceURI !== namespace_svg,\n\t\t\tcss_hash\n\t\t);\n\t}\n}\n\n/**\n * The proxy handler for rest props (i.e. `const { x, ...rest } = $props()`).\n * Is passed the full `$$props` object and excludes the named props.\n * @type {ProxyHandler<{ props: Record, exclude: Array }>}}\n */\nconst rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\treturn target.props[key];\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\t/** @type {Array} */\n\t\tconst keys = [];\n\n\t\tfor (let key in target.props) {\n\t\t\tif (!target.exclude.includes(key)) keys.push(key);\n\t\t}\n\n\t\treturn keys;\n\t}\n};\n\n/**\n * @param {import('./types.js').Signal> | Record} props\n * @param {string[]} rest\n * @returns {Record}\n */\nexport function rest_props(props, rest) {\n\treturn new Proxy({ props, exclude: rest }, rest_props_handler);\n}\n\n/**\n * The proxy handler for spread props. Handles the incoming array of props\n * that looks like `() => { dynamic: props }, { static: prop }, ..` and wraps\n * them so that the whole thing is passed to the component as the `$$props` argument.\n * @template {Record} T\n * @type {ProxyHandler<{ props: Array T)> }>}}\n */\nconst spread_props_handler = {\n\tget(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) return p[key];\n\t\t}\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) return get_descriptor(p, key);\n\t\t}\n\t},\n\thas(target, key) {\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (key in p) return true;\n\t\t}\n\n\t\treturn false;\n\t},\n\townKeys(target) {\n\t\t/** @type {Array} */\n\t\tconst keys = [];\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tfor (const key in p) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t}\n};\n\n/**\n * @param {Array | (() => Record)>} props\n * @returns {any}\n */\nexport function spread_props(...props) {\n\treturn new Proxy({ props }, spread_props_handler);\n}\n\n/**\n * Mounts the given component to the given target and returns a handle to the component's public accessors\n * as well as a `$set` and `$destroy` method to update the props of the component or destroy it.\n *\n * If you don't need to interact with the component after mounting, use `mount` instead to save some bytes.\n *\n * @template {Record} Props\n * @template {Record | undefined} Exports\n * @template {Record} Events\n * @param {import('../../main/public.js').ComponentType>} component\n * @param {{\n * \t\ttarget: Node;\n * \t\tprops?: Props;\n * \t\tevents?: Events;\n * \tcontext?: Map;\n * \t\tintro?: boolean;\n * \t\trecover?: false;\n * \t}} options\n * @returns {Exports & { $destroy: () => void; $set: (props: Partial) => void; }}\n */\nexport function createRoot(component, options) {\n\tconst props = proxy(/** @type {any} */ (options.props) || {}, false);\n\n\tlet [accessors, $destroy] = mount(component, { ...options, props });\n\n\tconst result =\n\t\t/** @type {Exports & { $destroy: () => void; $set: (props: Partial) => void; }} */ ({\n\t\t\t$set: (next) => {\n\t\t\t\tobject_assign(props, next);\n\t\t\t},\n\t\t\t$destroy\n\t\t});\n\n\tfor (const key of object_keys(accessors || {})) {\n\t\tdefine_property(result, key, {\n\t\t\tget() {\n\t\t\t\t// @ts-expect-error TS doesn't know key exists on accessor\n\t\t\t\treturn accessors[key];\n\t\t\t},\n\t\t\t/** @param {any} value */\n\t\t\tset(value) {\n\t\t\t\t// @ts-expect-error TS doesn't know key exists on accessor\n\t\t\t\tflushSync(() => (accessors[key] = value));\n\t\t\t},\n\t\t\tenumerable: true\n\t\t});\n\t}\n\n\treturn result;\n}\n\n/**\n * Mounts the given component to the given target and returns the accessors of the component and a function to destroy it.\n *\n * If you need to interact with the component after mounting, use `createRoot` instead.\n *\n * @template {Record} Props\n * @template {Record | undefined} Exports\n * @template {Record} Events\n * @param {import('../../main/public.js').ComponentType>} component\n * @param {{\n * \t\ttarget: Node;\n * \t\tprops?: Props;\n * \t\tevents?: Events;\n * \tcontext?: Map;\n * \t\tintro?: boolean;\n * \t\trecover?: false;\n * \t}} options\n * @returns {[Exports, () => void]}\n */\nexport function mount(component, options) {\n\tinit_operations();\n\tconst registered_events = new Set();\n\tconst container = options.target;\n\tconst block = create_root_block(options.intro || false);\n\tconst first_child = /** @type {ChildNode} */ (container.firstChild);\n\tconst hydration_fragment = get_hydration_fragment(first_child);\n\tconst previous_hydration_fragment = current_hydration_fragment;\n\n\t/** @type {Exports} */\n\t// @ts-expect-error will be defined because the render effect runs synchronously\n\tlet accessors = undefined;\n\n\ttry {\n\t\t/** @type {null | Text} */\n\t\tlet anchor = null;\n\t\tif (hydration_fragment === null) {\n\t\t\tanchor = empty();\n\t\t\tcontainer.appendChild(anchor);\n\t\t}\n\t\tset_current_hydration_fragment(hydration_fragment);\n\t\tconst effect = render_effect(\n\t\t\t() => {\n\t\t\t\tif (options.context) {\n\t\t\t\t\tpush({});\n\t\t\t\t\t/** @type {import('../client/types.js').ComponentContext} */ (\n\t\t\t\t\t\tcurrent_component_context\n\t\t\t\t\t).c = options.context;\n\t\t\t\t}\n\t\t\t\t// @ts-expect-error the public typings are not what the actual function looks like\n\t\t\t\taccessors = component(anchor, options.props || {});\n\t\t\t\tif (options.context) {\n\t\t\t\t\tpop();\n\t\t\t\t}\n\t\t\t},\n\t\t\tblock,\n\t\t\ttrue\n\t\t);\n\t\tblock.e = effect;\n\t} catch (error) {\n\t\tif (options.recover !== false && hydration_fragment !== null) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t'ERR_SVELTE_HYDRATION_MISMATCH' +\n\t\t\t\t\t(DEV\n\t\t\t\t\t\t? ': Hydration failed because the initial UI does not match what was rendered on the server.'\n\t\t\t\t\t\t: ''),\n\t\t\t\terror\n\t\t\t);\n\t\t\tremove(hydration_fragment);\n\t\t\tfirst_child.remove();\n\t\t\thydration_fragment.at(-1)?.nextSibling?.remove();\n\t\t\treturn mount(component, options);\n\t\t} else {\n\t\t\tthrow error;\n\t\t}\n\t} finally {\n\t\tset_current_hydration_fragment(previous_hydration_fragment);\n\t}\n\tconst bound_event_listener = handle_event_propagation.bind(null, container);\n\tconst bound_document_event_listener = handle_event_propagation.bind(null, document);\n\n\t/** @param {Array} events */\n\tconst event_handle = (events) => {\n\t\tfor (let i = 0; i < events.length; i++) {\n\t\t\tconst event_name = events[i];\n\t\t\tif (!registered_events.has(event_name)) {\n\t\t\t\tregistered_events.add(event_name);\n\t\t\t\t// Add the event listener to both the container and the document.\n\t\t\t\t// The container listener ensures we catch events from within in case\n\t\t\t\t// the outer content stops propagation of the event.\n\t\t\t\tcontainer.addEventListener(\n\t\t\t\t\tevent_name,\n\t\t\t\t\tbound_event_listener,\n\t\t\t\t\tPassiveDelegatedEvents.includes(event_name)\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpassive: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined\n\t\t\t\t);\n\t\t\t\t// The document listener ensures we catch events that originate from elements that were\n\t\t\t\t// manually moved outside of the container (e.g. via manual portals).\n\t\t\t\tdocument.addEventListener(\n\t\t\t\t\tevent_name,\n\t\t\t\t\tbound_document_event_listener,\n\t\t\t\t\tPassiveDelegatedEvents.includes(event_name)\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpassive: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\tevent_handle(array_from(all_registerd_events));\n\troot_event_handles.add(event_handle);\n\n\treturn [\n\t\taccessors,\n\t\t() => {\n\t\t\tfor (const event_name of registered_events) {\n\t\t\t\tcontainer.removeEventListener(event_name, bound_event_listener);\n\t\t\t}\n\t\t\troot_event_handles.delete(event_handle);\n\t\t\tconst dom = block.d;\n\t\t\tif (dom !== null) {\n\t\t\t\tremove(dom);\n\t\t\t}\n\t\t\tif (hydration_fragment !== null) {\n\t\t\t\tremove(hydration_fragment);\n\t\t\t}\n\t\t\tdestroy_signal(/** @type {import('./types.js').EffectSignal} */ (block.e));\n\t\t}\n\t];\n}\n\n/**\n * @param {Record} props\n * @returns {void}\n */\nexport function access_props(props) {\n\tfor (const prop in props) {\n\t\t// eslint-disable-next-line no-unused-expressions\n\t\tprops[prop];\n\t}\n}\n\n/**\n * @param {Record} props\n * @returns {Record}\n */\nexport function sanitize_slots(props) {\n\tconst sanitized = { ...props.$$slots };\n\tif (props.children) sanitized.default = props.children;\n\treturn sanitized;\n}\n\n/**\n * @param {() => Function} get_snippet\n * @param {Node} node\n * @param {(() => any)[]} args\n * @returns {void}\n */\nexport function snippet_effect(get_snippet, node, ...args) {\n\tconst block = create_snippet_block();\n\trender_effect(() => {\n\t\t// Only rerender when the snippet function itself changes,\n\t\t// not when an eagerly-read prop inside the snippet function changes\n\t\tconst snippet = get_snippet();\n\t\tuntrack(() => snippet(node, ...args));\n\t\treturn () => {\n\t\t\tif (block.d !== null) {\n\t\t\t\tremove(block.d);\n\t\t\t}\n\t\t};\n\t}, block);\n}\n\n/**\n * @param {Node} target\n * @param {string} style_sheet_id\n * @param {string} styles\n */\nexport async function append_styles(target, style_sheet_id, styles) {\n\t// Wait a tick so that the template is added to the dom, else getRootNode() will yield wrong results\n\t// If it turns out that this results in noticeable flickering, we need to do something like doing the\n\t// append outside and adding code in mount that appends all stylesheets (similar to how we do it with event delegation)\n\tawait Promise.resolve();\n\tconst append_styles_to = get_root_for_style(target);\n\tif (!append_styles_to.getElementById(style_sheet_id)) {\n\t\tconst style = create_element('style');\n\t\tstyle.id = style_sheet_id;\n\t\tstyle.textContent = styles;\n\t\tappend_child(/** @type {Document} */ (append_styles_to).head || append_styles_to, style);\n\t}\n}\n\n/**\n * @param {Node} node\n */\nfunction get_root_for_style(node) {\n\tif (!node) return document;\n\tconst root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n\tif (root && /** @type {ShadowRoot} */ (root).host) {\n\t\treturn /** @type {ShadowRoot} */ (root);\n\t}\n\treturn /** @type {Document} */ (node.ownerDocument);\n}\n","import {\n\tEACH_INDEX_REACTIVE,\n\tEACH_IS_ANIMATED,\n\tEACH_IS_CONTROLLED,\n\tEACH_IS_IMMUTABLE,\n\tEACH_ITEM_REACTIVE,\n\tEACH_KEYED\n} from '../../constants.js';\nimport { create_each_block, create_each_item_block } from './block.js';\nimport {\n\tcurrent_hydration_fragment,\n\tget_hydration_fragment,\n\thydrate_block_anchor,\n\tset_current_hydration_fragment\n} from './hydration.js';\nimport { clear_text_content, map_get, map_set } from './operations.js';\nimport { STATE_SYMBOL } from './proxy.js';\nimport { insert, remove } from './reconciler.js';\nimport { empty } from './render.js';\nimport {\n\tdestroy_signal,\n\texecute_effect,\n\tis_lazy_property,\n\tlazy_property,\n\tmutable_source,\n\tpush_destroy_fn,\n\trender_effect,\n\tset_signal_value,\n\tsource\n} from './runtime.js';\nimport { trigger_transitions } from './transitions.js';\nimport { is_array } from './utils.js';\n\nconst NEW_BLOCK = -1;\nconst MOVED_BLOCK = 99999999;\nconst LIS_BLOCK = -2;\n\nfunction no_op() {}\n\n/**\n * @template V\n * @param {Element | Comment} anchor_node\n * @param {() => V[]} collection\n * @param {number} flags\n * @param {null | ((item: V) => string)} key_fn\n * @param {(anchor: null, item: V, index: import('./types.js').MaybeSignal) => void} render_fn\n * @param {null | ((anchor: Node) => void)} fallback_fn\n * @param {typeof reconcile_indexed_array | reconcile_tracked_array} reconcile_fn\n * @returns {void}\n */\nfunction each(anchor_node, collection, flags, key_fn, render_fn, fallback_fn, reconcile_fn) {\n\tconst is_controlled = (flags & EACH_IS_CONTROLLED) !== 0;\n\tconst block = create_each_block(flags, anchor_node);\n\n\t/** @type {null | import('./types.js').Render} */\n\tlet current_fallback = null;\n\thydrate_block_anchor(anchor_node, is_controlled);\n\n\t/** @type {V[]} */\n\tlet array;\n\n\t/** @type {Array | null} */\n\tlet keys = null;\n\n\t/** @type {null | import('./types.js').EffectSignal} */\n\tlet render = null;\n\tblock.r =\n\t\t/** @param {import('./types.js').Transition} transition */\n\t\t(transition) => {\n\t\t\tconst fallback = /** @type {import('./types.js').Render} */ (current_fallback);\n\t\t\tconst transitions = fallback.s;\n\t\t\ttransitions.add(transition);\n\t\t\ttransition.f(() => {\n\t\t\t\ttransitions.delete(transition);\n\t\t\t\tif (transitions.size === 0) {\n\t\t\t\t\tif (fallback.e !== null) {\n\t\t\t\t\t\tif (fallback.d !== null) {\n\t\t\t\t\t\t\tremove(fallback.d);\n\t\t\t\t\t\t\tfallback.d = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdestroy_signal(fallback.e);\n\t\t\t\t\t\tfallback.e = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\tconst create_fallback_effect = () => {\n\t\t/** @type {import('./types.js').Render} */\n\t\tconst fallback = {\n\t\t\td: null,\n\t\t\te: null,\n\t\t\ts: new Set(),\n\t\t\tp: current_fallback\n\t\t};\n\t\t// Managed effect\n\t\tconst effect = render_effect(\n\t\t\t() => {\n\t\t\t\tconst dom = block.d;\n\t\t\t\tif (dom !== null) {\n\t\t\t\t\tremove(dom);\n\t\t\t\t\tblock.d = null;\n\t\t\t\t}\n\t\t\t\tlet anchor = block.a;\n\t\t\t\tconst is_controlled = (block.f & EACH_IS_CONTROLLED) !== 0;\n\t\t\t\tif (is_controlled) {\n\t\t\t\t\t// If the each block is controlled, then the anchor node will be the surrounding\n\t\t\t\t\t// element in which the each block is rendered, which requires certain handling\n\t\t\t\t\t// depending on whether we're in hydration mode or not\n\t\t\t\t\tif (current_hydration_fragment === null) {\n\t\t\t\t\t\t// Create a new anchor on the fly because there's none due to the optimization\n\t\t\t\t\t\tanchor = empty();\n\t\t\t\t\t\tblock.a.appendChild(anchor);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// In case of hydration the anchor will be the first child of the surrounding element\n\t\t\t\t\t\tanchor = /** @type {Comment} */ (anchor.firstChild);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/** @type {(anchor: Node) => void} */ (fallback_fn)(anchor);\n\t\t\t\tfallback.d = block.d;\n\t\t\t\tblock.d = null;\n\t\t\t},\n\t\t\tblock,\n\t\t\ttrue\n\t\t);\n\t\tfallback.e = effect;\n\t\tcurrent_fallback = fallback;\n\t};\n\n\t/** @param {import('./types.js').EachBlock} block */\n\tconst clear_each = (block) => {\n\t\tconst flags = block.f;\n\t\tconst is_controlled = (flags & EACH_IS_CONTROLLED) !== 0;\n\t\tconst anchor_node = block.a;\n\t\treconcile_fn(array, block, anchor_node, is_controlled, render_fn, flags, true, keys);\n\t};\n\n\tconst each = render_effect(\n\t\t() => {\n\t\t\t/** @type {V[]} */\n\t\t\tconst maybe_array = collection();\n\t\t\tarray = is_array(maybe_array)\n\t\t\t\t? maybe_array\n\t\t\t\t: maybe_array == null\n\t\t\t\t\t? []\n\t\t\t\t\t: Array.from(maybe_array);\n\t\t\tif (key_fn !== null) {\n\t\t\t\tkeys = array.map(key_fn);\n\t\t\t} else if ((flags & EACH_KEYED) === 0) {\n\t\t\t\tarray.map(no_op);\n\t\t\t}\n\t\t\tconst length = array.length;\n\t\t\tif (fallback_fn !== null) {\n\t\t\t\tif (length === 0) {\n\t\t\t\t\tif (block.v.length !== 0 || render === null) {\n\t\t\t\t\t\tclear_each(block);\n\t\t\t\t\t\tcreate_fallback_effect();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else if (block.v.length === 0 && current_fallback !== null) {\n\t\t\t\t\tconst fallback = current_fallback;\n\t\t\t\t\tconst transitions = fallback.s;\n\t\t\t\t\tif (transitions.size === 0) {\n\t\t\t\t\t\tif (fallback.d !== null) {\n\t\t\t\t\t\t\tremove(fallback.d);\n\t\t\t\t\t\t\tfallback.d = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttrigger_transitions(transitions, 'out');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (render !== null) {\n\t\t\t\texecute_effect(render);\n\t\t\t}\n\t\t},\n\t\tblock,\n\t\tfalse\n\t);\n\n\trender = render_effect(clear_each, block, true);\n\n\tpush_destroy_fn(each, () => {\n\t\tconst flags = block.f;\n\t\tconst anchor_node = block.a;\n\t\tconst is_controlled = (flags & EACH_IS_CONTROLLED) !== 0;\n\t\tlet fallback = current_fallback;\n\t\twhile (fallback !== null) {\n\t\t\tconst dom = fallback.d;\n\t\t\tif (dom !== null) {\n\t\t\t\tremove(dom);\n\t\t\t}\n\t\t\tconst effect = fallback.e;\n\t\t\tif (effect !== null) {\n\t\t\t\tdestroy_signal(effect);\n\t\t\t}\n\t\t\tfallback = fallback.p;\n\t\t}\n\t\t// Clear the array\n\t\treconcile_fn([], block, anchor_node, is_controlled, render_fn, flags, false, keys);\n\t\tdestroy_signal(/** @type {import('./types.js').EffectSignal} */ (render));\n\t});\n\n\tblock.e = each;\n}\n\n/**\n * @template V\n * @param {Element | Comment} anchor_node\n * @param {() => V[]} collection\n * @param {number} flags\n * @param {null | ((item: V) => string)} key_fn\n * @param {(anchor: null, item: V, index: import('./types.js').MaybeSignal) => void} render_fn\n * @param {null | ((anchor: Node) => void)} fallback_fn\n * @returns {void}\n */\nexport function each_keyed(anchor_node, collection, flags, key_fn, render_fn, fallback_fn) {\n\teach(anchor_node, collection, flags, key_fn, render_fn, fallback_fn, reconcile_tracked_array);\n}\n\n/**\n * @template V\n * @param {Element | Comment} anchor_node\n * @param {() => V[]} collection\n * @param {number} flags\n * @param {(anchor: null, item: V, index: import('./types.js').MaybeSignal) => void} render_fn\n * @param {null | ((anchor: Node) => void)} fallback_fn\n * @returns {void}\n */\nexport function each_indexed(anchor_node, collection, flags, render_fn, fallback_fn) {\n\teach(anchor_node, collection, flags, null, render_fn, fallback_fn, reconcile_indexed_array);\n}\n\n/**\n * @template V\n * @param {Array} array\n * @param {import('./types.js').EachBlock} each_block\n * @param {Element | Comment | Text} dom\n * @param {boolean} is_controlled\n * @param {(anchor: null, item: V, index: number | import('./types.js').Signal) => void} render_fn\n * @param {number} flags\n * @param {boolean} apply_transitions\n * @returns {void}\n */\nfunction reconcile_indexed_array(\n\tarray,\n\teach_block,\n\tdom,\n\tis_controlled,\n\trender_fn,\n\tflags,\n\tapply_transitions\n) {\n\tvar is_proxied_array = STATE_SYMBOL in array && /** @type {any} */ (array[STATE_SYMBOL]).i;\n\tvar a_blocks = each_block.v;\n\tvar active_transitions = each_block.s;\n\n\tif (is_proxied_array) {\n\t\tflags &= ~EACH_ITEM_REACTIVE;\n\t}\n\n\t/** @type {number | void} */\n\tvar a = a_blocks.length;\n\n\t/** @type {number} */\n\tvar b = array.length;\n\tvar length = Math.max(a, b);\n\tvar index = 0;\n\n\t/** @type {Array} */\n\tvar b_blocks;\n\tvar block;\n\n\tif (active_transitions.length !== 0) {\n\t\tdestroy_active_transition_blocks(active_transitions);\n\t}\n\n\tif (b === 0) {\n\t\tb_blocks = [];\n\t\t// Remove old blocks\n\t\tif (is_controlled && a !== 0) {\n\t\t\tclear_text_content(dom);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tblock = a_blocks[index++];\n\t\t\tdestroy_each_item_block(block, active_transitions, apply_transitions, is_controlled);\n\t\t}\n\t} else {\n\t\tvar item;\n\t\tb_blocks = Array(b);\n\t\tif (current_hydration_fragment !== null) {\n\t\t\t/** @type {Node} */\n\t\t\tvar hydrating_node = current_hydration_fragment[0];\n\t\t\tfor (; index < length; index++) {\n\t\t\t\t// Hydrate block\n\t\t\t\titem = is_proxied_array ? lazy_property(array, index) : array[index];\n\t\t\t\tvar fragment = /** @type {Array} */ (\n\t\t\t\t\tget_hydration_fragment(hydrating_node)\n\t\t\t\t);\n\t\t\t\tset_current_hydration_fragment(fragment);\n\t\t\t\thydrating_node = /** @type {Node} */ (\n\t\t\t\t\t/** @type {Node} */ (/** @type {Node} */ (fragment.at(-1)).nextSibling).nextSibling\n\t\t\t\t);\n\t\t\t\tblock = each_item_block(item, null, index, render_fn, flags);\n\t\t\t\tb_blocks[index] = block;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (; index < length; index++) {\n\t\t\t\tif (index >= a) {\n\t\t\t\t\t// Add block\n\t\t\t\t\titem = is_proxied_array ? lazy_property(array, index) : array[index];\n\t\t\t\t\tblock = each_item_block(item, null, index, render_fn, flags);\n\t\t\t\t\tb_blocks[index] = block;\n\t\t\t\t\tinsert_each_item_block(block, dom, is_controlled, null);\n\t\t\t\t} else if (index >= b) {\n\t\t\t\t\t// Remove block\n\t\t\t\t\tblock = a_blocks[index];\n\t\t\t\t\tdestroy_each_item_block(block, active_transitions, apply_transitions);\n\t\t\t\t} else {\n\t\t\t\t\t// Update block\n\t\t\t\t\titem = array[index];\n\t\t\t\t\tblock = a_blocks[index];\n\t\t\t\t\tb_blocks[index] = block;\n\t\t\t\t\tupdate_each_item_block(block, item, index, flags);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teach_block.v = b_blocks;\n}\n// Reconcile arrays by the equality of the elements in the array. This algorithm\n// is based on Ivi's reconcilation logic:\n//\n// https://github.com/localvoid/ivi/blob/9f1bd0918f487da5b131941228604763c5d8ef56/packages/ivi/src/client/core.ts#L968\n//\n\n/**\n * @template V\n * @param {Array} array\n * @param {import('./types.js').EachBlock} each_block\n * @param {Element | Comment | Text} dom\n * @param {boolean} is_controlled\n * @param {(anchor: null, item: V, index: number | import('./types.js').Signal) => void} render_fn\n * @param {number} flags\n * @param {boolean} apply_transitions\n * @param {Array | null} keys\n * @returns {void}\n */\nfunction reconcile_tracked_array(\n\tarray,\n\teach_block,\n\tdom,\n\tis_controlled,\n\trender_fn,\n\tflags,\n\tapply_transitions,\n\tkeys\n) {\n\tvar a_blocks = each_block.v;\n\tconst is_computed_key = keys !== null;\n\tvar active_transitions = each_block.s;\n\n\t/** @type {number | void} */\n\tvar a = a_blocks.length;\n\n\t/** @type {number} */\n\tvar b = array.length;\n\n\t/** @type {Array} */\n\tvar b_blocks;\n\tvar block;\n\n\tif (active_transitions.length !== 0) {\n\t\tdestroy_active_transition_blocks(active_transitions);\n\t}\n\n\tif (b === 0) {\n\t\tb_blocks = [];\n\t\t// Remove old blocks\n\t\tif (is_controlled && a !== 0) {\n\t\t\tclear_text_content(dom);\n\t\t}\n\t\twhile (a > 0) {\n\t\t\tblock = a_blocks[--a];\n\t\t\tdestroy_each_item_block(block, active_transitions, apply_transitions, is_controlled);\n\t\t}\n\t} else {\n\t\tvar a_end = a - 1;\n\t\tvar b_end = b - 1;\n\t\tvar key;\n\t\tvar item;\n\t\tvar idx;\n\t\tb_blocks = Array(b);\n\t\tif (current_hydration_fragment !== null) {\n\t\t\tvar fragment;\n\n\t\t\t/** @type {Node} */\n\t\t\tvar hydrating_node = current_hydration_fragment[0];\n\t\t\twhile (b > 0) {\n\t\t\t\t// Hydrate block\n\t\t\t\tidx = b_end - --b;\n\t\t\t\titem = array[idx];\n\t\t\t\tkey = is_computed_key ? keys[idx] : item;\n\t\t\t\tfragment = /** @type {Array} */ (\n\t\t\t\t\tget_hydration_fragment(hydrating_node)\n\t\t\t\t);\n\t\t\t\tset_current_hydration_fragment(fragment);\n\t\t\t\t// Get the tag of the next item in the list\n\t\t\t\t// The fragment array can be empty if each block has no content\n\t\t\t\thydrating_node = /** @type {Node} */ (\n\t\t\t\t\t/** @type {Node} */ ((fragment.at(-1) || hydrating_node).nextSibling).nextSibling\n\t\t\t\t);\n\t\t\t\tblock = each_item_block(item, key, idx, render_fn, flags);\n\t\t\t\tb_blocks[idx] = block;\n\t\t\t}\n\t\t} else if (a === 0) {\n\t\t\t// Create new blocks\n\t\t\twhile (b > 0) {\n\t\t\t\tidx = b_end - --b;\n\t\t\t\titem = array[idx];\n\t\t\t\tkey = is_computed_key ? keys[idx] : item;\n\t\t\t\tblock = each_item_block(item, key, idx, render_fn, flags);\n\t\t\t\tb_blocks[idx] = block;\n\t\t\t\tinsert_each_item_block(block, dom, is_controlled, null);\n\t\t\t}\n\t\t} else {\n\t\t\tvar is_animated = (flags & EACH_IS_ANIMATED) !== 0;\n\t\t\tvar should_update_block =\n\t\t\t\t(flags & (EACH_ITEM_REACTIVE | EACH_INDEX_REACTIVE)) !== 0 || is_animated;\n\t\t\tvar start = 0;\n\n\t\t\t/** @type {null | Text | Element | Comment} */\n\t\t\tvar sibling = null;\n\t\t\titem = array[b_end];\n\t\t\tkey = is_computed_key ? keys[b_end] : item;\n\t\t\t// Step 1\n\t\t\touter: while (true) {\n\t\t\t\t// From the end\n\t\t\t\twhile (a_blocks[a_end].k === key) {\n\t\t\t\t\tblock = a_blocks[a_end--];\n\t\t\t\t\titem = array[b_end];\n\t\t\t\t\tif (should_update_block) {\n\t\t\t\t\t\tupdate_each_item_block(block, item, b_end, flags);\n\t\t\t\t\t}\n\t\t\t\t\tsibling = get_first_child(block);\n\t\t\t\t\tb_blocks[b_end] = block;\n\t\t\t\t\tif (start > --b_end || start > a_end) {\n\t\t\t\t\t\tbreak outer;\n\t\t\t\t\t}\n\t\t\t\t\tkey = is_computed_key ? keys[b_end] : item;\n\t\t\t\t}\n\t\t\t\titem = array[start];\n\t\t\t\tkey = is_computed_key ? keys[start] : item;\n\t\t\t\t// At the start\n\t\t\t\twhile (start <= a_end && start <= b_end && a_blocks[start].k === key) {\n\t\t\t\t\titem = array[start];\n\t\t\t\t\tblock = a_blocks[start];\n\t\t\t\t\tif (should_update_block) {\n\t\t\t\t\t\tupdate_each_item_block(block, item, start, flags);\n\t\t\t\t\t}\n\t\t\t\t\tb_blocks[start] = block;\n\t\t\t\t\t++start;\n\t\t\t\t\tkey = is_computed_key ? keys[start] : array[start];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Step 2\n\t\t\tif (start > a_end) {\n\t\t\t\twhile (b_end >= start) {\n\t\t\t\t\titem = array[b_end];\n\t\t\t\t\tkey = is_computed_key ? keys[b_end] : item;\n\t\t\t\t\tblock = each_item_block(item, key, b_end, render_fn, flags);\n\t\t\t\t\tb_blocks[b_end--] = block;\n\t\t\t\t\tsibling = insert_each_item_block(block, dom, is_controlled, sibling);\n\t\t\t\t}\n\t\t\t} else if (start > b_end) {\n\t\t\t\tb = start;\n\t\t\t\tdo {\n\t\t\t\t\tif ((block = a_blocks[b++]) !== null) {\n\t\t\t\t\t\tdestroy_each_item_block(block, active_transitions, apply_transitions);\n\t\t\t\t\t}\n\t\t\t\t} while (b <= a_end);\n\t\t\t} else {\n\t\t\t\t// Step 3\n\t\t\t\tvar pos = 0;\n\t\t\t\tvar b_length = b_end - start + 1;\n\t\t\t\tvar sources = new Int32Array(b_length);\n\t\t\t\tvar item_index = new Map();\n\t\t\t\tfor (b = 0; b < b_length; ++b) {\n\t\t\t\t\ta = b + start;\n\t\t\t\t\tsources[b] = NEW_BLOCK;\n\t\t\t\t\titem = array[a];\n\t\t\t\t\tkey = is_computed_key ? keys[a] : item;\n\t\t\t\t\tmap_set(item_index, key, a);\n\t\t\t\t}\n\t\t\t\t// If keys are animated, we need to do updates before actual moves\n\t\t\t\tif (is_animated) {\n\t\t\t\t\tfor (b = start; b <= a_end; ++b) {\n\t\t\t\t\t\ta = map_get(item_index, /** @type {V} */ (a_blocks[b].k));\n\t\t\t\t\t\tif (a !== undefined) {\n\t\t\t\t\t\t\titem = array[a];\n\t\t\t\t\t\t\tblock = a_blocks[b];\n\t\t\t\t\t\t\tupdate_each_item_block(block, item, a, flags);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (b = start; b <= a_end; ++b) {\n\t\t\t\t\ta = map_get(item_index, /** @type {V} */ (a_blocks[b].k));\n\t\t\t\t\tblock = a_blocks[b];\n\t\t\t\t\tif (a !== undefined) {\n\t\t\t\t\t\tpos = pos < a ? a : MOVED_BLOCK;\n\t\t\t\t\t\tsources[a - start] = b;\n\t\t\t\t\t\tb_blocks[a] = block;\n\t\t\t\t\t} else if (block !== null) {\n\t\t\t\t\t\tdestroy_each_item_block(block, active_transitions, apply_transitions);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Step 4\n\t\t\t\tif (pos === MOVED_BLOCK) {\n\t\t\t\t\tmark_lis(sources);\n\t\t\t\t}\n\t\t\t\tvar last_block;\n\t\t\t\tvar last_sibling;\n\t\t\t\tvar should_create;\n\t\t\t\twhile (b_length-- > 0) {\n\t\t\t\t\tb_end = b_length + start;\n\t\t\t\t\ta = sources[b_length];\n\t\t\t\t\tshould_create = a === -1;\n\t\t\t\t\titem = array[b_end];\n\t\t\t\t\tif (should_create) {\n\t\t\t\t\t\tkey = is_computed_key ? keys[b_end] : item;\n\t\t\t\t\t\tblock = each_item_block(item, key, b_end, render_fn, flags);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tblock = b_blocks[b_end];\n\t\t\t\t\t\tif (!is_animated && should_update_block) {\n\t\t\t\t\t\t\tupdate_each_item_block(block, item, b_end, flags);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (should_create || (pos === MOVED_BLOCK && a !== LIS_BLOCK)) {\n\t\t\t\t\t\tlast_sibling = last_block === undefined ? sibling : get_first_child(last_block);\n\t\t\t\t\t\tsibling = insert_each_item_block(block, dom, is_controlled, last_sibling);\n\t\t\t\t\t}\n\t\t\t\t\tb_blocks[b_end] = block;\n\t\t\t\t\tlast_block = block;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teach_block.v = b_blocks;\n}\n\n/**\n * Longest Increased Subsequence algorithm\n * @param {Int32Array} a\n * @returns {void}\n */\nfunction mark_lis(a) {\n\tvar length = a.length;\n\tvar parent = new Int32Array(length);\n\tvar index = new Int32Array(length);\n\tvar index_length = 0;\n\tvar i = 0;\n\n\t/** @type {number} */\n\tvar j;\n\n\t/** @type {number} */\n\tvar k;\n\n\t/** @type {number} */\n\tvar lo;\n\n\t/** @type {number} */\n\tvar hi;\n\n\t// Skip -1 values at the start of the input array `a`.\n\tfor (; a[i] === NEW_BLOCK; ++i) {\n\t\t/**/\n\t}\n\n\tindex[0] = i++;\n\n\tfor (; i < length; ++i) {\n\t\tk = a[i];\n\n\t\tif (k !== NEW_BLOCK) {\n\t\t\t// Ignore -1 values.\n\t\t\tj = index[index_length];\n\n\t\t\tif (a[j] < k) {\n\t\t\t\tparent[i] = j;\n\t\t\t\tindex[++index_length] = i;\n\t\t\t} else {\n\t\t\t\tlo = 0;\n\t\t\t\thi = index_length;\n\n\t\t\t\twhile (lo < hi) {\n\t\t\t\t\tj = (lo + hi) >> 1;\n\t\t\t\t\tif (a[index[j]] < k) {\n\t\t\t\t\t\tlo = j + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\thi = j;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (k < a[index[lo]]) {\n\t\t\t\t\tif (lo > 0) {\n\t\t\t\t\t\tparent[i] = index[lo - 1];\n\t\t\t\t\t}\n\t\t\t\t\tindex[lo] = i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Mutate input array `a` and assign -2 value to all nodes that are part of LIS.\n\tj = index[index_length];\n\n\twhile (index_length-- >= 0) {\n\t\ta[j] = LIS_BLOCK;\n\t\tj = parent[j];\n\t}\n}\n\n/**\n * @param {import('./types.js').Block} block\n * @param {Element | Comment | Text} dom\n * @param {boolean} is_controlled\n * @param {null | Text | Element | Comment} sibling\n * @returns {Text | Element | Comment}\n */\nfunction insert_each_item_block(block, dom, is_controlled, sibling) {\n\tvar current = /** @type {import('./types.js').TemplateNode} */ (block.d);\n\n\tif (sibling === null) {\n\t\tif (is_controlled) {\n\t\t\treturn insert(current, /** @type {Element} */ (dom), null);\n\t\t} else {\n\t\t\treturn insert(current, /** @type {Element} */ (dom.parentNode), dom);\n\t\t}\n\t}\n\n\treturn insert(current, null, sibling);\n}\n\n/**\n * @param {import('./types.js').Block} block\n * @returns {Text | Element | Comment}\n */\nfunction get_first_child(block) {\n\tvar current = block.d;\n\n\tif (is_array(current)) {\n\t\treturn /** @type {Text | Element | Comment} */ (current[0]);\n\t}\n\n\treturn /** @type {Text | Element | Comment} */ (current);\n}\n\n/**\n * @param {Array} active_transitions\n * @returns {void}\n */\nfunction destroy_active_transition_blocks(active_transitions) {\n\tvar length = active_transitions.length;\n\n\tif (length > 0) {\n\t\tvar i = 0;\n\t\tvar block;\n\t\tvar transition;\n\n\t\tfor (; i < length; i++) {\n\t\t\tblock = active_transitions[i];\n\t\t\ttransition = block.r;\n\t\t\tif (transition !== null) {\n\t\t\t\tblock.r = null;\n\t\t\t\tdestroy_each_item_block(block, null, false);\n\t\t\t}\n\t\t}\n\n\t\tactive_transitions.length = 0;\n\t}\n}\n\n/**\n * @param {import('./types.js').Block} block\n * @returns {Text | Element | Comment}\n */\nexport function get_first_element(block) {\n\tconst current = block.d;\n\n\tif (is_array(current)) {\n\t\tfor (let i = 0; i < current.length; i++) {\n\t\t\tconst node = current[i];\n\t\t\tif (node.nodeType !== 8) {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn /** @type {Text | Element | Comment} */ (current);\n}\n\n/**\n * @param {import('./types.js').EachItemBlock} block\n * @param {any} item\n * @param {number} index\n * @param {number} type\n * @returns {void}\n */\nfunction update_each_item_block(block, item, index, type) {\n\tif ((type & EACH_ITEM_REACTIVE) !== 0) {\n\t\tset_signal_value(block.v, item);\n\t} else if (is_lazy_property(block.v)) {\n\t\tblock.v.o[block.v.p] = item;\n\t}\n\tconst transitions = block.s;\n\tconst index_is_reactive = (type & EACH_INDEX_REACTIVE) !== 0;\n\t// Handle each item animations\n\tconst each_animation = block.a;\n\tif (transitions !== null && (type & EACH_KEYED) !== 0 && each_animation !== null) {\n\t\teach_animation(block, transitions);\n\t}\n\tif (index_is_reactive) {\n\t\tset_signal_value(/** @type {import('./types.js').Signal} */ (block.i), index);\n\t} else {\n\t\tblock.i = index;\n\t}\n}\n\n/**\n * @param {import('./types.js').EachItemBlock} block\n * @param {null | Array} transition_block\n * @param {boolean} apply_transitions\n * @param {any} controlled\n * @returns {void}\n */\nexport function destroy_each_item_block(\n\tblock,\n\ttransition_block,\n\tapply_transitions,\n\tcontrolled = false\n) {\n\tconst transitions = block.s;\n\n\tif (apply_transitions && transitions !== null) {\n\t\t// We might have pending key transitions, if so remove them first\n\t\tfor (let other of transitions) {\n\t\t\tif (other.r === 'key') {\n\t\t\t\ttransitions.delete(other);\n\t\t\t}\n\t\t}\n\t\tif (transitions.size === 0) {\n\t\t\tblock.s = null;\n\t\t} else {\n\t\t\ttrigger_transitions(transitions, 'out');\n\t\t\tif (transition_block !== null) {\n\t\t\t\ttransition_block.push(block);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\tconst dom = block.d;\n\tif (!controlled && dom !== null) {\n\t\tremove(dom);\n\t}\n\tdestroy_signal(/** @type {import('./types.js').EffectSignal} */ (block.e));\n}\n\n/**\n * @template V\n * @template O\n * @template P\n * @param {V | import('./types.js').LazyProperty} item\n * @param {unknown} key\n * @param {number} index\n * @param {(anchor: null, item: V, index: number | import('./types.js').Signal) => void} render_fn\n * @param {number} flags\n * @returns {import('./types.js').EachItemBlock}\n */\nfunction each_item_block(item, key, index, render_fn, flags) {\n\tconst each_item_not_reactive = (flags & EACH_ITEM_REACTIVE) === 0;\n\n\tconst item_value = each_item_not_reactive\n\t\t? item\n\t\t: (flags & EACH_IS_IMMUTABLE) === 0\n\t\t\t? mutable_source(item)\n\t\t\t: source(item);\n\n\tconst index_value = (flags & EACH_INDEX_REACTIVE) === 0 ? index : source(index);\n\tconst block = create_each_item_block(item_value, index_value, key);\n\n\tconst effect = render_effect(\n\t\t/** @param {import('./types.js').EachItemBlock} block */\n\t\t(block) => {\n\t\t\trender_fn(null, block.v, block.i);\n\t\t},\n\t\tblock,\n\t\ttrue\n\t);\n\n\tblock.e = effect;\n\treturn block;\n}\n","import {\n\tcurrent_component_context,\n\tdestroy_signal,\n\tget_or_init_context_map,\n\tis_ssr,\n\tmanaged_effect,\n\tuntrack,\n\tuser_effect,\n\tflush_local_render_effects\n} from '../internal/client/runtime.js';\nimport { is_array } from '../internal/client/utils.js';\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs/svelte#onmount\n * @template T\n * @param {() => import('./private.js').NotFunction | Promise> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tif (!is_ssr) {\n\t\tuser_effect(() => {\n\t\t\tconst result = untrack(fn);\n\t\t\tif (typeof result === 'function') {\n\t\t\t\treturn /** @type {() => any} */ (result);\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#getcontext\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\tconst context_map = get_or_init_context_map();\n\treturn /** @type {T} */ (context_map.get(key));\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#setcontext\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tconst context_map = get_or_init_context_map();\n\tcontext_map.set(key, context);\n\treturn context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#hascontext\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\tconst context_map = get_or_init_context_map();\n\treturn context_map.has(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs/svelte#getallcontexts\n * @template {Map} [T=Map]\n * @returns {T}\n */\nexport function getAllContexts() {\n\tconst context_map = get_or_init_context_map();\n\treturn /** @type {T} */ (context_map);\n}\n\n/**\n * @template [T=any]\n * @param {string} type\n * @param {T} [detail]\n * @param {any}params_0\n * @returns {CustomEvent}\n */\nfunction create_custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: never; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * https://svelte.dev/docs/svelte#createeventdispatcher\n * @template {Record} [EventMap = any]\n * @returns {import('./public.js').EventDispatcher}\n */\nexport function createEventDispatcher() {\n\tconst component_context = current_component_context;\n\tif (component_context === null) {\n\t\tthrow new Error('createEventDispatcher can only be used during component initialisation.');\n\t}\n\n\treturn (type, detail, options) => {\n\t\tconst events = /** @type {Record} */ (\n\t\t\tcomponent_context.s.$$events\n\t\t)?.[/** @type {any} */ (type)];\n\n\t\tif (events) {\n\t\t\tconst callbacks = is_array(events) ? events.slice() : [events];\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = create_custom_event(/** @type {string} */ (type), detail, options);\n\t\t\tfor (const fn of callbacks) {\n\t\t\t\tfn.call(component_context.a, event);\n\t\t\t}\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\nfunction init_update_callbacks() {\n\tlet called_before = false;\n\tlet called_after = false;\n\n\t/** @type {NonNullable} */\n\tconst update_callbacks = {\n\t\tb: [],\n\t\ta: [],\n\t\te() {\n\t\t\tif (!called_before) {\n\t\t\t\tcalled_before = true;\n\t\t\t\t// TODO somehow beforeUpdate ran twice on mount in Svelte 4 if it causes a render\n\t\t\t\t// possibly strategy to get this back if needed: analyse beforeUpdate function for assignements to state,\n\t\t\t\t// if yes, add a call to the component to force-run beforeUpdate once.\n\t\t\t\tuntrack(() => update_callbacks.b.forEach(/** @param {any} c */ (c) => c()));\n\t\t\t\tflush_local_render_effects();\n\t\t\t\t// beforeUpdate can run again once if afterUpdate causes another update,\n\t\t\t\t// but afterUpdate shouldn't be called again in that case to prevent infinite loops\n\t\t\t\tif (!called_after) {\n\t\t\t\t\tuser_effect(() => {\n\t\t\t\t\t\tcalled_before = false;\n\t\t\t\t\t\tcalled_after = true;\n\t\t\t\t\t\tuntrack(() => update_callbacks.a.forEach(/** @param {any} c */ (c) => c()));\n\t\t\t\t\t\t// managed_effect so that it's not cleaned up when the parent effect is cleaned up\n\t\t\t\t\t\tconst managed = managed_effect(() => {\n\t\t\t\t\t\t\tdestroy_signal(managed);\n\t\t\t\t\t\t\tcalled_after = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tuser_effect(() => {\n\t\t\t\t\t\tcalled_before = false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\treturn update_callbacks;\n}\n\n// TODO mark beforeUpdate and afterUpdate as deprecated in Svelte 6\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`.\n *\n * In runes mode use `$effect.pre` instead.\n *\n * https://svelte.dev/docs/svelte#beforeupdate\n * @deprecated Use `$effect.pre` instead — see https://svelte-5-preview.vercel.app/docs/deprecations#beforeupdate-and-afterupdate\n * @param {() => void} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tconst component_context = current_component_context;\n\tif (component_context === null) {\n\t\tthrow new Error('beforeUpdate can only be used during component initialisation.');\n\t}\n\n\t(component_context.u ??= init_update_callbacks()).b.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`.\n *\n * In runes mode use `$effect` instead.\n *\n * https://svelte.dev/docs/svelte#afterupdate\n * @deprecated Use `$effect` instead — see https://svelte-5-preview.vercel.app/docs/deprecations#beforeupdate-and-afterupdate\n * @param {() => void} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tconst component_context = current_component_context;\n\tif (component_context === null) {\n\t\tthrow new Error('afterUpdate can only be used during component initialisation.');\n\t}\n\n\t(component_context.u ??= init_update_callbacks()).a.push(fn);\n}\n\n// TODO bring implementations in here\n// (except probably untrack — do we want to expose that, if there's also a rune?)\nexport {\n\tflushSync,\n\tcreateRoot,\n\tmount,\n\ttick,\n\tuntrack,\n\tunstate,\n\tonDestroy\n} from '../internal/index.js';\n","import { noop } from '../internal/common.js';\nimport { subscribe_to_store } from './utils.js';\n\n/**\n * @type {Array | any>}\n */\nconst subscriber_queue = [];\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n *\n * https://svelte.dev/docs/svelte-store#readable\n * @template T\n * @param {T} [value] initial value\n * @param {import('./public').StartStopNotifier} [start]\n * @returns {import('./public').Readable}\n */\nexport function readable(value, start) {\n\treturn {\n\t\tsubscribe: writable(value, start).subscribe\n\t};\n}\n\n/**\n * @param {any} a\n * @param {any} b\n * @returns {boolean}\n */\nexport function safe_not_equal(a, b) {\n\t// eslint-disable-next-line eqeqeq\n\treturn a != a\n\t\t? // eslint-disable-next-line eqeqeq\n\t\t\tb == b\n\t\t: a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n *\n * https://svelte.dev/docs/svelte-store#writable\n * @template T\n * @param {T} [value] initial value\n * @param {import('./public').StartStopNotifier} [start]\n * @returns {import('./public').Writable}\n */\nexport function writable(value, start = noop) {\n\t/** @type {import('./public').Unsubscriber | null} */\n\tlet stop = null;\n\n\t/** @type {Set>} */\n\tconst subscribers = new Set();\n\n\t/**\n\t * @param {T} new_value\n\t * @returns {void}\n\t */\n\tfunction set(new_value) {\n\t\tif (safe_not_equal(value, new_value)) {\n\t\t\tvalue = new_value;\n\t\t\tif (stop) {\n\t\t\t\t// store is ready\n\t\t\t\tconst run_queue = !subscriber_queue.length;\n\t\t\t\tfor (const subscriber of subscribers) {\n\t\t\t\t\tsubscriber[1]();\n\t\t\t\t\tsubscriber_queue.push(subscriber, value);\n\t\t\t\t}\n\t\t\t\tif (run_queue) {\n\t\t\t\t\tfor (let i = 0; i < subscriber_queue.length; i += 2) {\n\t\t\t\t\t\tsubscriber_queue[i][0](subscriber_queue[i + 1]);\n\t\t\t\t\t}\n\t\t\t\t\tsubscriber_queue.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {import('./public').Updater} fn\n\t * @returns {void}\n\t */\n\tfunction update(fn) {\n\t\tset(fn(/** @type {T} */ (value)));\n\t}\n\n\t/**\n\t * @param {import('./public').Subscriber} run\n\t * @param {import('./private').Invalidator} [invalidate]\n\t * @returns {import('./public').Unsubscriber}\n\t */\n\tfunction subscribe(run, invalidate = noop) {\n\t\t/** @type {import('./private').SubscribeInvalidateTuple} */\n\t\tconst subscriber = [run, invalidate];\n\t\tsubscribers.add(subscriber);\n\t\tif (subscribers.size === 1) {\n\t\t\tstop = start(set, update) || noop;\n\t\t}\n\t\trun(/** @type {T} */ (value));\n\t\treturn () => {\n\t\t\tsubscribers.delete(subscriber);\n\t\t\tif (subscribers.size === 0 && stop) {\n\t\t\t\tstop();\n\t\t\t\tstop = null;\n\t\t\t}\n\t\t};\n\t}\n\treturn { set, update, subscribe };\n}\n\n/** @param {Function} fn */\nfunction run(fn) {\n\treturn fn();\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nfunction run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * https://svelte.dev/docs/svelte-store#derived\n * @template {import('./private.js').Stores} S\n * @template T\n * @overload\n * @param {S} stores\n * @param {(values: import('./private.js').StoresValues) => T} fn\n * @param {T} [initial_value]\n * @returns {import('./public.js').Readable}\n */\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * https://svelte.dev/docs/svelte-store#derived\n * @template {import('./private.js').Stores} S\n * @template T\n * @overload\n * @param {S} stores\n * @param {(values: import('./private.js').StoresValues, set: (value: T) => void, update: (fn: import('./public.js').Updater) => void) => import('./public.js').Unsubscriber | void} fn\n * @param {T} [initial_value]\n * @returns {import('./public.js').Readable}\n */\n/**\n * @template {import('./private.js').Stores} S\n * @template T\n * @param {S} stores\n * @param {Function} fn\n * @param {T} [initial_value]\n * @returns {import('./public.js').Readable}\n */\nexport function derived(stores, fn, initial_value) {\n\tconst single = !Array.isArray(stores);\n\t/** @type {Array>} */\n\tconst stores_array = single ? [stores] : stores;\n\tif (!stores_array.every(Boolean)) {\n\t\tthrow new Error('derived() expects stores as input, got a falsy value');\n\t}\n\tconst auto = fn.length < 2;\n\treturn readable(initial_value, (set, update) => {\n\t\tlet started = false;\n\t\t/** @type {T[]} */\n\t\tconst values = [];\n\t\tlet pending = 0;\n\t\tlet cleanup = noop;\n\t\tconst sync = () => {\n\t\t\tif (pending) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcleanup();\n\t\t\tconst result = fn(single ? values[0] : values, set, update);\n\t\t\tif (auto) {\n\t\t\t\tset(result);\n\t\t\t} else {\n\t\t\t\tcleanup = typeof result === 'function' ? result : noop;\n\t\t\t}\n\t\t};\n\t\tconst unsubscribers = stores_array.map((store, i) =>\n\t\t\tsubscribe_to_store(\n\t\t\t\tstore,\n\t\t\t\t(value) => {\n\t\t\t\t\tvalues[i] = value;\n\t\t\t\t\tpending &= ~(1 << i);\n\t\t\t\t\tif (started) {\n\t\t\t\t\t\tsync();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tpending |= 1 << i;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tstarted = true;\n\t\tsync();\n\t\treturn function stop() {\n\t\t\trun_all(unsubscribers);\n\t\t\tcleanup();\n\t\t\t// We need to set this to false because callbacks can still happen despite having unsubscribed:\n\t\t\t// Callbacks might already be placed in the queue which doesn't know it should no longer\n\t\t\t// invoke this derived store.\n\t\t\tstarted = false;\n\t\t};\n\t});\n}\n\n/**\n * Takes a store and returns a new one derived from the old one that is readable.\n *\n * https://svelte.dev/docs/svelte-store#readonly\n * @template T\n * @param {import('./public').Readable} store - store to make readonly\n * @returns {import('./public').Readable}\n */\nexport function readonly(store) {\n\treturn {\n\t\t// @ts-expect-error TODO i suspect the bind is unnecessary\n\t\tsubscribe: store.subscribe.bind(store)\n\t};\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public').Readable} store\n * @returns {T}\n */\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe_to_store(store, (_) => (value = _))();\n\t// @ts-expect-error\n\treturn value;\n}\n\nexport { get_store_value as get };\n","export class Callback {\n #last_execution = 0\n\n /**\n * @param {function(...any):any} func\n * @param {number} interval_in_secs\n * @param {{ condition?: function(...any):boolean }} options\n */\n constructor(\n func,\n interval_in_secs = 0 /* 0 = run every frame */,\n options = {}\n ) {\n this.function = func\n this.interval_in_secs = interval_in_secs\n this.condition = options.condition || null\n }\n /** @param {any} args */\n call(...args) {\n if (this.condition && !this.condition.call(null, ...args)) return\n\n if (this.interval_in_secs) {\n let elapsed = Date.now() - this.#last_execution\n\n if (elapsed > this.interval_in_secs * 1000) {\n this.#last_execution = Date.now()\n\n return this.function.call(null, ...args)\n }\n } else {\n return this.function.call(null, ...args)\n }\n }\n}\n","const KEYMAP = {\n ArrowLeft: 'left',\n ArrowRight: 'right',\n ArrowUp: 'up',\n ArrowDown: 'down',\n ' ': 'space'\n}\n\nexport class RuntimeEvent {\n /** @param {MouseEvent | KeyboardEvent} evt */\n constructor(evt) {\n this.type = evt.type\n\n let properties = [],\n options = {}\n\n if (evt instanceof KeyboardEvent) {\n options = { key: KEYMAP[evt.key] || evt.key }\n properties = [\n 'code',\n 'keyCode',\n 'shiftKey',\n 'metaKey',\n 'ctrlKey',\n 'altKey'\n ]\n } else if (evt instanceof MouseEvent) {\n options = { x: evt.offsetX, y: evt.offsetY }\n properties = ['shiftKey', 'metaKey', 'ctrlKey', 'altKey', 'buttons']\n }\n\n for (let prop of properties) {\n this[prop] = evt[prop]\n }\n\n Object.assign(this, options)\n }\n}\n\nexport default RuntimeEvent\n","/** @param {import('@pogzul/engine').Scene} scene */\nexport const create_layers_proxy = (scene) => {\n return new Proxy(scene.entities, {\n get(obj, key, receiver) {\n switch (key) {\n case 'length':\n return Object.keys(obj).length\n\n // Override for...of\n case Symbol.iterator:\n return () => Object.values(obj)[Symbol.iterator]()\n\n case 'each':\n case 'forEach':\n /** @param {...any} args */\n return (...args) => Object.values(obj).forEach(...args)\n\n // case 'toJSON':\n // return () => {\n // function Layers() {}\n // Object.defineProperty(obj, 'name', {\n // value: function () {\n // return `[myArrayProxy: ]`\n // },\n // enumerable: false\n // })\n\n // return new Layers()\n // }\n }\n\n const layers_array = Object.values(obj)\n\n /** Access layer by array index */\n if (/^-?\\d+$/.test(String(key))) {\n const layer = layers_array[Number(key)]\n if (layer) return layer\n }\n\n /**\n * Access layers by name\n *\n * Could be a conflict with an integer name...\n */\n const layer = layers_array.find((layer) => layer.name === key)\n if (layer) return layer\n\n return Reflect.get(obj, key, receiver)\n },\n\n set(obj, key, value, receiver) {\n return Reflect.set(obj, key, value, receiver)\n },\n\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n writable: true\n }\n },\n\n ownKeys(obj) {\n return Object.values(obj)\n .filter(Boolean)\n .map((layer) => layer.name)\n .filter(Boolean)\n }\n })\n}\n","type ConstructorParameters = T extends new (...args: infer P) => any\n ? P\n : never\n\nexport const class_function_wrapper = (klass: new (...args: any[]) => T) => {\n return (...args: ConstructorParameters) => new klass(...args)\n}\n","import { class_function_wrapper } from '../internal'\nimport { parse_color } from '@pogzul/engine'\n\n/**\n * @param {number} r\n * @param {number} g\n * @param {number} b\n */\n// function Color(r = 0, g = 0, b = 0) {\n// if (!new.target) return new Color(r, g, b)\n\n// return new Uint8Array([r, g, b])\n// }\n\nexport class Color extends Uint8Array {\n /** @param {string | Uint8Array | number[]} color */\n constructor(color) {\n if (typeof color === 'string') {\n super(parse_color(color))\n } else {\n super(color)\n }\n }\n}\n\nexport const color = class_function_wrapper(Color)\n","import { class_function_wrapper } from '../internal'\n\nexport class Point {\n constructor(x = 0, y = 0) {\n this.x = x\n this.y = y\n }\n}\n\nexport const pos = class_function_wrapper(Point)\nexport { pos as point }\n","import { class_function_wrapper } from '../internal'\nimport { Point } from './Point.js'\n\nexport class Vector extends Point {\n get magnitude() {\n return Math.sqrt(this.x ** 2 + this.y ** 2)\n }\n get mag() {\n return this.magnitude\n }\n\n get angle() {\n return Math.atan2(this.y, this.x)\n }\n set angle(angle) {\n this.rotate(angle - this.angle)\n }\n get angleDeg() {\n return (this.angle * 180) / Math.PI\n }\n\n get isZero() {\n return this.x === 0 && this.y === 0\n }\n\n /** @param {number} radians */\n rotate(radians) {\n const sin = Math.sin(radians),\n cos = Math.cos(radians)\n\n const x2 = this.x * cos - this.y * sin,\n y2 = this.x * sin + this.y * cos\n\n this.x = x2\n this.y = y2\n\n return this\n }\n\n normalize() {\n const magnitude = this.magnitude\n\n this.x = this.x / magnitude\n this.y = this.y / magnitude\n\n return this\n }\n norm() {\n this.normalize()\n }\n\n // add, subtract, multiply (dot product)\n}\n\nexport const vec = class_function_wrapper(Vector)\n","import { class_function_wrapper } from '../internal'\nimport { Vector } from './Vector.js'\n\nexport class Velocity extends Vector {}\n\nexport const vel = class_function_wrapper(Velocity)\n","import { Callback } from '../internal'\n\n/**\n * @param {function():any} callback\n * @param {Partial<{ interval: number }>} [options]\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function effect(callback, options) {\n this.effects.unshift(new Callback(callback, options?.interval || 0))\n}\n","import type { Collision, CollisionCallback } from './colliding.ts'\nimport type { Entity, Runtime, RuntimeWindow } from '@pogzul/engine'\n\nexport const collision_entity_window = (\n entity: Entity,\n window: RuntimeWindow,\n callback: CollisionCallback\n) => {\n let collision: Collision = {}\n\n if (entity.x < 0) {\n collision ??= {}\n collision.left = true\n collision.x = entity.x\n collision.y = entity.y\n } else if (entity.x + entity.width > window.width) {\n collision ??= {}\n collision.right = true\n collision.x = entity.x + entity.width\n collision.y = entity.y\n }\n\n if (entity.y < 0) {\n collision ??= {}\n collision.top = true\n collision.x = entity.x\n collision.y = entity.y\n } else if (entity.y + entity.height > window.height) {\n collision ??= {}\n collision.bottom = true\n collision.x = entity.x\n collision.y = entity.y + entity.height\n }\n\n if ('x' in collision)\n callback({ layer: entity, target: window, collision, resolve: () => {} })\n}\n\nexport function collision_window_scene(\n this: Runtime,\n window: RuntimeWindow,\n callback: CollisionCallback\n) {\n const scene = this.active_scene\n\n for (let id in scene.entities) {\n collision_entity_window(scene.entities[id], window, callback)\n }\n}\n\n/* Broadphase AABB collision check */\nexport const is_not_colliding_entity_entity = (\n a: Entity,\n b: Entity\n): boolean => {\n return (\n a.x > b.x + b.width ||\n a.x + a.width < b.x ||\n a.y > b.y + b.height ||\n a.y + a.height < b.y\n )\n}\n","import type { Collision, CollisionCallback } from './colliding'\nimport type { Tag } from '@pogzul/engine'\n\nimport {\n Group,\n Shape,\n config,\n last_entity_positions,\n get_pixel,\n active\n} from '@pogzul/engine'\nimport { is_not_colliding_entity_entity } from './entities'\n\nexport function collision_shape_group(\n shape: Shape,\n group: Group,\n callback: CollisionCallback\n) {\n if (is_not_colliding_entity_entity(shape, group)) return\n\n for (let id of group.layer_ids) {\n const target = active.scene.entities[id]\n\n if (target instanceof Group)\n return collision_shape_group(shape, target, callback)\n\n collision_shape_shape(shape, target, callback)\n }\n}\n\nexport function collision_shape_scene(\n shape: Shape,\n callback: CollisionCallback\n) {\n for (let id in active.scene.entities) {\n const entity = active.scene.entities[id]\n if (!(entity instanceof Shape) || entity.id === shape.id) continue // Don't check same-layer collisions\n\n collision_shape_shape(shape, entity, callback)\n }\n}\n\nexport function collision_shape_tag(\n shape: Shape,\n tag: Tag,\n callback: CollisionCallback\n) {\n const entity_ids = active.scene.components.tags[tag] || []\n\n for (let id of entity_ids) {\n const entity = active.scene.entities[id]\n\n if (!(entity instanceof Shape)) continue\n\n collision_shape_shape(shape, entity, callback)\n }\n}\n\nexport function collision_shape_shape(\n shape: Shape,\n target: Shape,\n callback: CollisionCallback\n) {\n if (is_not_colliding_entity_entity(shape, target)) return\n\n const last_positions = last_entity_positions.get(active.scene.id)\n\n const { pixel_size } = config\n\n const { x: old_x, y: old_y } = last_positions?.get(shape.id) || shape\n const { x: old_target_x, y: old_target_y } =\n last_positions?.get(target.id) || target\n\n const dx_shape = shape.x - old_x,\n dy_shape = shape.y - old_y\n\n const dx_target = target.x - old_target_x,\n dy_target = target.y - old_target_y\n\n const dx = dx_shape - dx_target,\n dy = dy_shape - dy_target\n\n let collision: Collision = {}\n\n const left_collision = (x: number, y: number) => {\n const x_pos = shape.x + x * pixel_size\n\n let y_pos = old_y + y * pixel_size\n\n const top_left = get_pixel(target, x_pos, y_pos)\n if (top_left) {\n return {\n x: x_pos,\n y: y_pos\n }\n }\n\n y_pos = old_y + (y + 0.9) * pixel_size\n\n const top_right = get_pixel(target, x_pos, y_pos)\n if (top_right)\n return {\n x: x_pos,\n y: y_pos\n }\n }\n\n const right_collision = (x: number, y: number) => {\n const x_pos = shape.x + (x + 0.9) * pixel_size\n\n let y_pos = old_y + y * pixel_size\n\n const top_right = get_pixel(target, x_pos, y_pos)\n if (top_right)\n return {\n x: x_pos,\n y: y_pos\n }\n\n y_pos = old_y + (y + 0.9) * pixel_size\n\n const bottom_right = get_pixel(target, x_pos, y_pos)\n if (bottom_right)\n return {\n x: x_pos,\n y: y_pos\n }\n }\n\n const top_collision = (x: number, y: number) => {\n const y_pos = shape.y + y * pixel_size\n\n let x_pos = shape.x - dx_shape + x * pixel_size\n\n const top_left = get_pixel(target, x_pos, y_pos)\n if (top_left)\n return {\n x: x_pos,\n y: y_pos\n }\n\n x_pos = shape.x - dx_shape + (x + 0.9) * pixel_size\n\n const top_right = get_pixel(target, x_pos, y_pos)\n if (top_right)\n return {\n x: x_pos,\n y: y_pos\n }\n }\n\n const bottom_collision = (x: number, y: number) => {\n const y_pos = shape.y + (y + 0.9) * pixel_size\n\n let x_pos = shape.x - dx_shape + x * pixel_size\n\n const bottom_left = get_pixel(target, x_pos, y_pos)\n if (bottom_left)\n return {\n x: x_pos,\n y: y_pos\n }\n\n x_pos = shape.x - dx_shape + (x + 0.9) * pixel_size\n\n const bottom_right = get_pixel(target, x_pos, y_pos)\n if (bottom_right)\n return {\n x: x_pos,\n y: y_pos\n }\n }\n\n if (dx === 0 && dy === 0) return\n\n /* Narrowphase by the pixels */\n for (let [x, row] of shape.pixels) {\n for (let [y] of row) {\n if (dx < 0) {\n const left = left_collision(x, y)\n if (left) {\n collision.left = true\n collision.x = left.x\n collision.y = left.y\n }\n } else if (dx > 0) {\n const right = right_collision(x, y)\n if (right) {\n collision.right = true\n collision.x = right.x\n collision.y = right.y\n }\n }\n\n if (dy < 0) {\n const top = top_collision(x, y)\n if (top) {\n collision.top = true\n collision.x ??= top.x\n collision.y ??= top.y\n }\n } else if (dy > 0) {\n const bottom = bottom_collision(x, y)\n if (bottom) {\n collision.bottom = true\n collision.x ??= bottom.x\n collision.y ??= bottom.y\n }\n }\n }\n }\n\n if ('x' in collision) {\n callback({ layer: shape, target, collision, resolve: () => {} })\n }\n}\n","import type { CollisionCallback } from './colliding'\n\nimport { Group, active, Shape } from '@pogzul/engine'\nimport { is_not_colliding_entity_entity } from './entities'\nimport { collision_shape_shape, collision_shape_group } from './shapes'\n\nexport function collision_group_shape(\n group: Group,\n shape: Shape,\n callback: CollisionCallback\n) {\n if (is_not_colliding_entity_entity(shape, group)) return\n\n for (let id of group.layer_ids) {\n const entity = active.scene.entities[id]\n\n if (entity instanceof Group)\n return collision_group_shape(entity, shape, callback)\n\n collision_shape_shape(entity, shape, callback)\n }\n}\n\nexport function collision_group_group(\n group: Group,\n target: Group,\n callback: CollisionCallback\n) {\n if (is_not_colliding_entity_entity(group, target)) return\n\n for (let shape_id of group.layer_ids) {\n const shape = active.scene.entities[shape_id]\n\n if (shape instanceof Group)\n return collision_group_group(group, shape, callback)\n\n for (let target_id of target.layer_ids) {\n const target_shape = active.scene.entities[target_id]\n if (target_id === shape_id || target_shape instanceof Group) continue\n\n collision_shape_shape(shape, target_shape, callback)\n }\n }\n}\n\nexport function collision_group_tag(\n group: Group,\n tag: string,\n callback: CollisionCallback\n) {\n const entity_ids = active.scene.components.tags[tag] || []\n\n for (let id of entity_ids) {\n const entity = active.scene.entities[id]\n\n if (!(entity instanceof Shape)) continue\n\n collision_group_shape(group, entity, callback)\n }\n}\n\nexport function collision_group_scene(\n group: Group,\n callback: CollisionCallback\n) {\n for (let shape_id of group.layer_ids) {\n const shape = active.scene.entities[shape_id]\n\n if (shape instanceof Group)\n return collision_group_group(group, shape, callback)\n\n for (let id in active.scene.entities) {\n const entity = active.scene.entities[id]\n if (\n entity.id === group.id ||\n entity.id === shape.id ||\n entity instanceof Group\n )\n continue // Don't check same-layer collisions\n\n collision_shape_shape(shape, entity, callback)\n }\n }\n}\n","import type { CollisionCallback } from './colliding.ts'\nimport type { Runtime, RuntimeWindow } from '@pogzul/engine'\n\nimport { Group, Shape, active } from '@pogzul/engine'\nimport { collision_shape_shape, collision_shape_group } from './shapes.js'\nimport { collision_entity_window } from './entities.js'\n\nexport function collision_tag_shape(\n tag: Tag,\n shape: Shape,\n callback: CollisionCallback\n) {\n const entity_ids = active.scene.components.tags[tag] || []\n\n for (let id of entity_ids) {\n const entity = active.scene.entities[id]\n\n if (!(entity instanceof Shape)) continue\n\n collision_shape_shape(entity, shape, callback)\n }\n}\n\nexport function collision_tag_group(\n tag: string,\n group: Group,\n callback: CollisionCallback\n) {\n const entity_ids = active.scene.components.tags[tag] || []\n\n for (let id of entity_ids) {\n const entity = active.scene.entities[id]\n\n if (!(entity instanceof Shape)) continue\n\n collision_shape_group(entity, group, callback)\n }\n}\n\nexport function collision_tag_tag(\n this: Runtime,\n tag: Tag,\n target: Tag,\n callback: CollisionCallback\n) {\n const entity_ids = active.scene.components.tags[tag] || []\n\n for (let id of entity_ids) {\n const entity = active.scene.entities[id]\n\n if (!(entity instanceof Shape)) continue\n\n const target_entity_ids = active.scene.components.tags[target] || []\n\n for (let target_id of target_entity_ids) {\n const target_entity = active.scene.entities[target_id]\n\n if (!(target_entity instanceof Shape) || target_entity.id === entity.id)\n continue\n\n collision_shape_shape(entity, target_entity, callback)\n }\n }\n}\n\nexport function collision_tag_window(\n this: Runtime,\n tag: Tag,\n window: RuntimeWindow,\n callback: CollisionCallback\n) {\n const entity_ids = active.scene.components.tags[tag] || []\n\n for (let id of entity_ids) {\n const entity = active.scene.entities[id]\n\n if (!(entity instanceof Shape)) continue\n\n collision_entity_window(entity, window, callback)\n }\n}\n\nexport function collision_tag_scene(\n this: Runtime,\n tag: Tag,\n callback: CollisionCallback\n) {\n const entity_ids = active.scene.components.tags[tag] || []\n\n for (let id of entity_ids) {\n const entity = active.scene.entities[id]\n\n if (!(entity instanceof Shape)) continue\n\n for (let id in active.scene.entities) {\n const target_entity = active.scene.entities[id]\n\n if (!(target_entity instanceof Shape) || target_entity.id === entity.id)\n continue\n\n collision_shape_shape(entity, target_entity, callback)\n }\n }\n}\n","import { Callback } from '../../internal'\n\nimport {\n Group,\n Shape,\n Text,\n Entity,\n config,\n RuntimeWindow,\n active\n} from '@pogzul/engine'\n\nimport type { Tag, Runtime } from '@pogzul/engine'\n\nimport { collision_entity_window, collision_window_scene } from './entities'\nimport {\n collision_shape_shape,\n collision_shape_group,\n collision_shape_tag,\n collision_shape_scene\n} from './shapes'\n\nimport {\n collision_group_shape,\n collision_group_group,\n collision_group_tag,\n collision_group_scene\n} from './groups'\n\nimport {\n collision_tag_shape,\n collision_tag_group,\n collision_tag_tag,\n collision_tag_window,\n collision_tag_scene\n} from './tags'\n\nexport type Collision = Partial<{\n top: boolean\n right: boolean\n bottom: boolean\n left: boolean\n x: number\n y: number\n}>\n\nexport type Collidable = Shape | Group | Tag | RuntimeWindow\n\nexport type CollisionCallback = ({}: {\n layer: Entity\n target: Shape | RuntimeWindow\n resolve: () => void\n collision: Collision\n}) => void\n\ntype CollisionOptions = Partial<{ interval: number }>\n\nexport function colliding(\n this: import('@pogzul/engine').Runtime,\n layer: Collidable | Array | CollisionCallback | undefined,\n target: Collidable | Array | CollisionCallback | undefined,\n callback?: CollisionCallback | CollisionOptions | undefined,\n opts: CollisionOptions = {}\n): void {\n if (!layer) throw new Error('`colliding` requires at least 1 argument.')\n\n if (Array.isArray(layer)) {\n layer.map((new_layer) =>\n colliding.call(this, new_layer, target, callback, opts)\n )\n return\n }\n\n if (Array.isArray(target)) {\n target.map((new_target) =>\n colliding.call(this, layer, new_target, callback, opts)\n )\n return\n }\n\n let collision_fn: (\n layer: Collidable,\n target: Collidable | CollisionCallback,\n callback: CollisionCallback\n ) => void\n\n let cb: CollisionCallback\n\n if (typeof layer === 'function') {\n cb = layer\n if (typeof target === 'object') opts = callback\n\n collision_fn = colliding_all.bind(this)\n } else if (layer instanceof Shape) {\n collision_fn = colliding_shape.bind(this)\n } else if (layer instanceof Text) {\n throw new Error(\"Text doesn't yet work with collisions.\")\n } else if (layer instanceof Group) {\n collision_fn = colliding_group.bind(this)\n } else if (layer instanceof RuntimeWindow) {\n collision_fn = colliding_window.bind(this)\n } else if (typeof layer === 'string') {\n collision_fn = colliding_tag.bind(this)\n }\n\n if (typeof target === 'function') {\n cb = target\n if (typeof callback === 'object') opts = callback\n } else if (typeof callback === 'function') {\n cb = callback\n }\n\n const effect = new Callback(() => {\n collision_fn(layer, target, ({ layer, target, collision }) =>\n cb({\n layer,\n target,\n collision,\n resolve: () => resolve_collision(layer, target, collision)\n })\n )\n }, opts?.interval || 0)\n\n this.effects.push(effect)\n}\n\nfunction colliding_all(\n this: Runtime,\n layer: undefined,\n target: undefined,\n callback: CollisionCallback\n) {\n const entities = Object.values(active.scene.entities)\n\n for (let i = 0; i < entities.length - 1; i++) {\n if (entities[i] instanceof Group) continue\n for (let j = i + 1; j < entities.length; j++) {\n if (entities[j] instanceof Group) continue\n\n // this.console.log('checking!', entities[i].id == entities[j].id)\n\n collision_shape_shape(entities[i], entities[j], callback)\n }\n }\n}\n\nfunction colliding_shape(\n shape: Shape,\n target: Collidable | Function,\n callback: CollisionCallback\n): void {\n switch (true) {\n case typeof target === 'object' && 'pixels' in target:\n if (shape.id === target.id)\n throw new Error(`A shape is always colliding with itself!`)\n\n return collision_shape_shape(shape, target, callback)\n\n case target instanceof Group:\n return collision_shape_group(shape, target, callback)\n\n case target instanceof RuntimeWindow:\n return collision_entity_window(shape, target, callback)\n\n case typeof target === 'string':\n return collision_shape_tag(shape, target, callback)\n\n case typeof target === 'function':\n return collision_shape_scene(shape, callback)\n }\n}\n\nfunction colliding_group(\n group: Group,\n target: Collidable | Function,\n callback: CollisionCallback\n) {\n switch (true) {\n case 'pixels' in target:\n return collision_group_shape(group, target, callback)\n\n case target instanceof Group:\n if (group.id === target.id)\n throw new Error(`A group is always colliding with itself!`)\n\n return collision_group_group(group, target, callback)\n\n case target instanceof RuntimeWindow:\n return collision_entity_window(group, target, callback)\n\n case typeof target === 'string':\n return collision_group_tag(group, target, callback)\n\n case typeof target === 'function':\n return collision_group_scene(group, callback)\n }\n}\n\nfunction colliding_tag(\n this: Runtime,\n tag: Tag,\n target: Collidable | Function,\n callback: CollisionCallback\n) {\n switch (true) {\n case 'pixels' in target:\n return collision_tag_shape(tag, target, callback)\n\n case target instanceof Group:\n return collision_tag_group(tag, target, callback)\n\n case target instanceof RuntimeWindow:\n return collision_tag_window.call(this, tag, target, callback)\n\n case typeof target === 'string':\n return collision_tag_tag.call(this, tag, target, callback)\n\n case typeof target === 'function':\n return collision_tag_scene.call(this, tag, callback)\n }\n}\n\nfunction colliding_window(\n this: Runtime,\n window: RuntimeWindow,\n target: Collidable | Function,\n callback: CollisionCallback\n) {\n switch (true) {\n case 'pixels' in target:\n return collision_entity_window(target, window, callback)\n\n case target instanceof Group:\n return collision_entity_window(target, window, callback)\n\n case target instanceof RuntimeWindow:\n throw new Error(`The window can't collide with itself!`)\n\n case typeof target === 'string':\n return collision_tag_window.call(this, target, window, callback)\n\n case typeof target === 'function':\n return collision_window_scene.call(this, window, callback)\n }\n}\n\nfunction resolve_collision(\n entity: Entity,\n target: Entity | RuntimeWindow,\n collision: Collision\n) {\n const target_x = target instanceof RuntimeWindow ? 0 : target.x,\n target_y = target instanceof RuntimeWindow ? 0 : target.y\n\n // if (collision.left || collision.right) {\n // const target_x = target instanceof RuntimeWindow ? 0 : target.x\n\n // let overlap_x =\n // ((entity.x - target_x) % config.pixel_size) +\n // (collision.right ? 0 : -config.pixel_size)\n // // ((entity.x + target_x) % config.pixel_size) +\n // // (collision.right ? 0 : -config.pixel_size)\n\n // // if (target instanceof RuntimeWindow) {\n // entity.x -= overlap_x\n // // } else {\n // // overlap_x /= 2\n // // entity.x -= overlap_x\n // // target.x += overlap_x\n // // }\n // }\n\n if (collision.left) {\n let overlap_x =\n ((10_000 + entity.x - target_x) % config.pixel_size) - config.pixel_size\n\n /**\n * 10, 20 => -10 20, 10 => -10 22, 12 => -10 38, 4 => -6 -12, 14 => -8 -2, 4\n * => -6 -32, 50 => -2\n */\n\n entity.x -= overlap_x\n } else if (collision.right) {\n let overlap_x = (10_000 + entity.x - target_x) % config.pixel_size\n\n // if (target instanceof RuntimeWindow) {\n entity.x -= overlap_x\n // } else {\n // overlap_x /= 2\n // entity.x -= overlap_x\n // target.x += overlap_x\n // }\n }\n\n if (collision.top) {\n let overlap_y =\n ((10_000 + entity.y - target_y) % config.pixel_size) - config.pixel_size\n\n entity.y -= overlap_y\n } else if (collision.bottom) {\n let overlap_y = (10_000 + entity.y - target_y) % config.pixel_size\n\n // if (target instanceof RuntimeWindow) {\n entity.y -= overlap_y\n // } else {\n // overlap_y /= 2\n // entity.y -= overlap_y\n // target.y += overlap_y\n // }\n }\n}\n","import { colliding } from './colliding'\n\n/**\n * @param {import('@pogzul/engine').Shape} shape\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function contain(shape) {\n colliding.call(this, shape, this.window, ({ resolve }) => resolve())\n}\n","import { Pixels, config, delete_layers, pixel_grid } from '@pogzul/engine'\n\nconst neighbour_positions = [\n [-1, -1],\n [-1, 0],\n [-1, 1],\n [1, -1],\n [1, 0],\n [1, 1],\n [0, -1],\n [0, 1]\n]\n\nconst count_neighbours = (grid, x, y) => {\n let count = 0\n\n for (let [dx, dy] of neighbour_positions) {\n if (grid[x + dx]?.[y + dy]) count++\n }\n\n return count\n}\n\n/**\n * @param {object} params\n * @param {number} [params.interval=0.2] - The interval between updates in\n * seconds. Default is `0.2`\n * @param {boolean} [params.iterate=false] Default is `false`\n * @param {string} [params.color='black'] Default is `'black'`\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function gameOfLife(opts = {}) {\n if (!this.active_scene.layer_ids.length)\n return this.console.error('You need at least 1 layer to play with!')\n\n const next = () => {\n if (!this.is_running) return\n\n const scene = this.active_scene\n\n const grid = pixel_grid(scene)\n let new_grid = {}\n\n const set = (x, y) => ((new_grid[x] ??= {})[y] = opts.color || 'black')\n\n const RESOLUTION = config.canvas_size / config.pixel_size\n\n for (let x = 0; x < RESOLUTION; x++) {\n for (let y = 0; y < RESOLUTION; y++) {\n const neighbours = count_neighbours(grid, x, y)\n\n if (grid[x]?.[y]) {\n if (neighbours === 2 || neighbours === 3) {\n set(x, y)\n }\n } else if (neighbours === 3) {\n set(x, y)\n }\n }\n }\n\n const layer = scene.entities[scene.layer_ids[0]]\n\n if (JSON.stringify(new_grid) === '{}') {\n return delete_layers({ scene, layer_ids: [layer.id] })\n }\n\n layer.pixels = new Pixels(new_grid)\n layer.x = 0\n layer.y = 0\n\n scene.layer_ids = [layer.id]\n scene.entities = { [layer.id]: layer }\n\n if (opts.iterate) {\n this.stop()\n } else {\n setTimeout(next, (opts.interval || 0.2) * 1000)\n }\n }\n\n next()\n}\n\nexport { gameOfLife as gol }\n","/** @param {number} interval_seconds */\nexport const sleep = async (interval_seconds) =>\n new Promise((resolve) => setTimeout(resolve, interval_seconds * 1000))\n","/**\n * @param {number} seconds\n * @param {function(number):any} [onTick]\n * @this {import('@pogzul/engine').Runtime}\n */\nexport async function countdown(seconds, onTick) {\n return new Promise((resolve) => {\n const tick = () => {\n if (seconds <= 0) return resolve(undefined)\n\n onTick ? onTick(seconds) : this.console.log(Math.round(seconds) + '...')\n seconds--\n\n setTimeout(tick, 1000)\n }\n\n tick()\n })\n}\n","import { config, add_shapes } from '@pogzul/engine'\nimport { Color, Velocity, Point } from '../types'\n\n/**\n * @param {...(Color | Point | Velocity | string)} traits\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function draw(...traits) {\n const pos = traits.find(is_point) || new Point(0, 0),\n color = traits.find(is_color) || new Color('black')\n\n const [layer] = add_shapes({\n scene: this.active_scene,\n shapes: [\n {\n pixels: {\n [pos.x / config.pixel_size]: { [pos.y / config.pixel_size]: color }\n }\n }\n ]\n })\n\n const vel = traits.find(is_velocity)\n if (vel) layer.velocity = vel\n\n const tags = traits.filter((item) => typeof item === 'string')\n if (tags.length) layer.tag(...tags)\n\n return layer\n}\n\n/**\n * @param {any} item\n * @returns {item is Point}\n */\nconst is_point = (item) => item instanceof Point\n\n/**\n * @param {any} item\n * @returns {item is Velocity}\n */\nconst is_velocity = (item) => item instanceof Velocity\n\n/**\n * @param {any} item\n * @returns {item is Color}\n */\nconst is_color = (item) => item instanceof Color\n","export const SUPPORTED_EVENTS = {\n click: 'artboard',\n dblclick: 'artboard',\n mousedown: 'artboard',\n mouseup: 'artboard',\n mousemove: 'artboard',\n mouseover: 'artboard',\n mouseleave: 'artboard',\n keydown: 'window',\n keyup: 'window',\n keypress: 'window'\n}\n","import { SUPPORTED_EVENTS } from './config'\nimport { RuntimeEvent } from '../internal'\n\n/**\n * @param {keyof typeof SUPPORTED_EVENTS} type\n * @param {function(RuntimeEvent):any} listener\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function addEventListener(type, listener) {\n if (!type || !listener) {\n return this.console.error('TypeError: Not enough arguments')\n } else if (typeof listener !== 'function') {\n return this.console.error('TypeError: The handler must be a function')\n }\n\n const target = SUPPORTED_EVENTS[type]\n\n if (target) {\n this.event_listeners[type] ??= {}\n\n const handler = (evt) => {\n if (!this.is_running) return\n\n return listener(new RuntimeEvent(evt))\n }\n\n if (target === 'artboard') {\n this.artboard_target.addEventListener(type, handler, true)\n } else {\n window.addEventListener(type, handler, true)\n }\n\n this.event_listeners[type][listener.toString()] = handler\n\n return true\n } else {\n this.console.error(\n `'${type}' event is not supported or doesn't exist. Try one of ${Object.keys(\n SUPPORTED_EVENTS\n ).join(', ')}.`\n )\n }\n}\n\n/**\n * @param {keyof typeof SUPPORTED_EVENTS} type\n * @param {function(import('../internal').RuntimeEvent):any} listener\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function removeEventListener(type, listener) {\n if (!type || !listener) {\n return this.console.error('TypeError: Not enough arguments')\n } else if (!['function', 'string'].includes(typeof listener)) {\n return this.console.error('TypeError: The handler must be a function')\n }\n\n const target = SUPPORTED_EVENTS[type]\n\n if (target) {\n const handler = (this.event_listeners[type] || {})[listener.toString()]\n\n if (handler) {\n if (target === 'artboard') {\n this.artboard_target.removeEventListener(type, handler, true)\n } else {\n window.removeEventListener(type, handler, true)\n }\n\n delete this.event_listeners[type]?.[listener.toString()]\n\n return true\n }\n\n return false\n } else {\n this.console.error(\n `'${type}' event is not supported or doesn't exist. Try one of ${Object.keys(\n SUPPORTED_EVENTS\n ).join(', ')}.`\n )\n }\n}\n","import { Callback } from '../internal'\n\n/**\n * @callback KeyboardEventHandler\n * @param {string} key\n * @param {function(import('../internal').RuntimeEvent):any} cb\n * @param {number} [interval] - Interval in seconds\n */\n\n/**\n * @param {keyof typeof this.keyboard_callbacks} name\n * @param {string} key\n * @param {function(import('../internal').RuntimeEvent):any} cb\n * @param {number} [interval] - Interval in seconds\n * @this {import('@pogzul/engine').Runtime}\n */\nfunction create_keyboard_callback(name, key, cb, interval = 0) {\n let func = cb\n\n if (typeof key === 'function') {\n func = key\n }\n\n let callback = new Callback(func, interval, {\n condition: (evt) => (typeof key == 'string' ? evt.key === key : true)\n })\n\n this.keyboard_callbacks[name].push(callback)\n}\n\n/**\n * @type {KeyboardEventHandler}\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function keypress(...args) {\n return create_keyboard_callback.call(this, 'keypress', ...args)\n}\n\n/**\n * @type {KeyboardEventHandler}\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function keydown(...args) {\n return create_keyboard_callback.call(this, 'keydown', ...args)\n}\n\n/**\n * @type {KeyboardEventHandler}\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function keyup(...args) {\n return create_keyboard_callback.call(this, 'keyup', ...args)\n}\n\nconst attachArrowKeys_options = {\n velocity: 200,\n up: true,\n right: true,\n down: true,\n left: true\n}\n/**\n * @param {import('@pogzul/engine').Layer} layer\n * @param {Partial} options\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function attachArrowKeys(layer, options = {}) {\n const opts = { ...attachArrowKeys_options, ...options }\n\n opts.up &&\n keydown.call(this, 'up', () => (layer.y -= opts.velocity * this.dt()))\n opts.down &&\n keydown.call(this, 'down', () => (layer.y += opts.velocity * this.dt()))\n opts.left &&\n keydown.call(this, 'left', () => (layer.x -= opts.velocity * this.dt()))\n opts.right &&\n keydown.call(this, 'right', () => (layer.x += opts.velocity * this.dt()))\n}\n\n/**\n * @param {string} code\n * @param {function(import('../internal').RuntimeEvent):any} cb\n * @param {number} [interval] - Interval in seconds\n * @this {import('@pogzul/engine').Runtime}\n */\nfunction create_wasd_callback(code, cb, interval = 0) {\n let callback = new Callback(cb, interval, {\n condition: (evt) => evt.code === code\n })\n\n this.keyboard_callbacks.keydown.push(callback)\n}\n\nconst attachWasdKeys_options = {\n velocity: 200,\n w: true,\n a: true,\n s: true,\n d: true\n}\n\n/**\n * @param {import('@pogzul/engine').Layer} layer\n * @param {Partial} options\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function attachWasdKeys(layer, options = {}) {\n const opts = { ...attachWasdKeys_options, ...options }\n\n opts.w &&\n create_wasd_callback.call(\n this,\n 'KeyW',\n () => (layer.y -= opts.velocity * this.dt())\n )\n opts.a &&\n create_wasd_callback.call(\n this,\n 'KeyA',\n () => (layer.x -= opts.velocity * this.dt())\n )\n opts.s &&\n create_wasd_callback.call(\n this,\n 'KeyS',\n () => (layer.y += opts.velocity * this.dt())\n )\n opts.d &&\n create_wasd_callback.call(\n this,\n 'KeyD',\n () => (layer.x += opts.velocity * this.dt())\n )\n}\n","import { Group, Entity } from '@pogzul/engine'\n\n/**\n * @param {any[] | Group} array\n * @returns {any | Entity}\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function sample(array) {\n if (array instanceof Group)\n return sample.call(\n this,\n array.layer_ids.map((id) => this.active_scene.entities[id])\n )\n\n return array[Math.floor(Math.random() * array.length)]\n}\n","/**\n * @param {number} scene_index\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function go(scene_index) {\n const scene = this.scenes[scene_index]\n\n if (scene) {\n this.active_scene = scene\n } else {\n this.console.error(`Scene at index ${scene_index} doesn't exist.`)\n }\n}\n","/**\n * @param {Tag} tag\n * @this {import('@pogzul/engine').Runtime}\n */\nexport function get(tag) {\n // const entities = Object.values(this.active_scene.entities).filter(\n // (e) => e.tags[tag]\n // )\n const entities = []\n\n return entities\n}\n","import { parse_color } from '@pogzul/engine'\nimport { Color } from '../../../functions'\n\nexport const PIXEL_DELETE_KEY = null\n\n/**\n * A 2D object of { x: { y: color }} values\n *\n * @typedef {| Partial>>\n * | Map>\n * | Pixels} PixelsObject\n */\n\n/**\n * A 2D object of { x: { y: color }} values\n *\n * @typedef {Map>} PixelMap\n */\n\nexport class Pixels {\n /** @type {PixelMap} */\n #map\n\n /** @param {PixelsObject} pixels */\n constructor(pixels = {}) {\n this.#map = parsePixels(pixels)\n }\n\n /**\n * @param {number} x\n * @param {number} y\n */\n get(x, y) {\n return this.#map.get(x)?.get?.(y)\n }\n\n /**\n * @param {number} x\n * @param {number} y\n * @param {Uint8Array | null} color – an [r, g, b] triple\n * @param {boolean} [ignore_deletion]\n */\n set(x, y, color, ignore_deletion = false) {\n if (!ignore_deletion && color === PIXEL_DELETE_KEY) {\n return this.delete(x, y)\n }\n\n let col = this.#map.get(x)\n\n if (col) {\n col.set(y, color)\n } else {\n this.#map.set(x, new Map([[y, color]]))\n }\n }\n\n /**\n * @param {number} x\n * @param {number} y\n */\n delete(x, y) {\n let col = this.#map.get(x)\n\n if (col) {\n col.delete(y)\n\n if (col.size === 0) this.#map.delete(x)\n }\n }\n\n get size() {\n return this.#map.size\n }\n\n [Symbol.iterator]() {\n return this.#map[Symbol.iterator]()\n }\n\n toJSON() {\n /**\n * @typedef {string} color - A stringified RGB triple: '[12,0,255]'\n *\n * @typedef {number} index\n * @type {Object}\n */\n const colors = {}\n\n let index = 0\n\n const pixels = Array.from(this.#map.entries()).map(([x, row]) => {\n let yColorPair = Array.from(row.entries()).map(([y, color]) => {\n const jsonColor = JSON.stringify(color ? Array.from(color) : color),\n _index = colors[jsonColor] || (colors[jsonColor] = ++index)\n\n return [y, _index]\n })\n\n return [x, yColorPair]\n })\n\n return { colors: invert_object(colors), pixels }\n }\n\n /** @returns {undefined} Array */\n // entries: {\n // value() {\n // return #map.entries()\n // }\n // },\n\n /**\n * @returns {{ left: number; right: number; top: number; bottom: number }} -\n * The boundary of the map\n */\n computeBounds() {\n let minX, minY, maxX, maxY\n\n if (this.#map.size === 0) return { left: 0, right: 0, top: 0, bottom: 0 }\n\n for (let [x, col] of this.#map) {\n if (isNaN(minX) || x < minX) minX = x\n if (isNaN(maxX) || x > maxX) maxX = x\n\n for (let [y] of col) {\n if (isNaN(minY) || y < minY) minY = y\n if (isNaN(maxY) || y > maxY) maxY = y\n }\n }\n\n return {\n left: minX || 0,\n right: (maxX || 0) + 1,\n top: minY || 0,\n bottom: (maxY || 0) + 1\n }\n }\n}\n\n/** @typedef {Record} PixelColors */\n/** @typedef {[string, PixelColors][]} RawPixelsRow */\n/** @typedef {[string, number | string][]} RawPixelsColumn */\n\n/**\n * @param {PixelsObject} obj\n * @returns {PixelMap}\n */\nconst parsePixels = (obj) => {\n let pixels = obj\n\n /** @type {PixelColors | undefined} */\n let colors = undefined\n\n if (obj.colors && obj.pixels) {\n colors = obj.colors\n pixels = obj.pixels\n }\n\n return new Map(\n parse_pixels_column(pixels).map(([x, row]) => [\n Number(x),\n new Map(parse_pixels_row(row, colors))\n ])\n )\n}\n\n/**\n * @param {Map | Pixels | number[] | object} row\n * @param {PixelColors} [colors]\n */\nconst parse_pixels_row = (row, colors = undefined) =>\n parse_pixels_column(row).map(([y, color]) => {\n return [\n Number(y),\n new Uint8Array(colors ? JSON.parse(colors[color]) : parse_color(color))\n ]\n })\n\n/**\n * @param {Map | Pixels | number[] | object} item\n * @returns {RawPixelsColumn}\n */\nconst parse_pixels_column = (item) => {\n if (Array.isArray(item) || item instanceof Map || item instanceof Pixels) {\n return Array.from(item)\n }\n\n return Object.entries(item)\n}\n\n/**\n * @template T\n * @param {{ [key: string]: T }} o\n */\nconst invert_object = (o) =>\n Object.entries(o).reduce((obj, [k, v]) => ((obj[v] = k), obj), {})\n\nexport default Pixels\n","import { random_uint_32, pick, delete_layers, active } from '@pogzul/engine'\nimport { Group, Shape, Text } from './layers'\n\nexport class Entity {\n /** @type {EntityId} */\n id = random_uint_32()\n\n /** @type {number} */\n x = 0\n\n /** @type {number} */\n y = 0\n\n /** @type {number} */\n width = 0\n\n /** @type {number} */\n height = 0\n\n /** @type {number} */\n opacity = 1\n\n /** @type {boolean} */\n is_hidden = false\n\n /** @type {import('./Scene').Scene} */\n #scene\n\n /** @param {Partial} json */\n static parse(json) {\n switch (true) {\n case 'pixels' in json:\n return new Shape(json)\n case 'font' in json:\n return new Text(json)\n case 'layer_ids' in json:\n return new Group(json)\n }\n }\n\n /** @param {Partial} opts */\n constructor(opts = {}) {\n Object.assign(\n this,\n pick(\n opts,\n 'id',\n 'x',\n 'y',\n 'width',\n 'height',\n 'opacity',\n 'is_hidden',\n 'scene',\n 'tags'\n )\n )\n }\n\n // update(delta_s = 1) {\n // if (this.velX) this.x += this.velX * delta_s\n // if (this.velY) this.y += this.velY * delta_s\n // }\n\n get scene() {\n return this.#scene\n }\n\n set scene(scene) {\n this.#scene = scene\n }\n\n /** @returns {Tag[]} */\n get tags() {\n return Object.keys(active.scene.components.tags).filter((key) =>\n (active.scene.components.tags[key] || []).includes(this.id)\n )\n }\n\n /** @param {Tag[]} tags */\n tag(...tags) {\n for (const tag of tags) {\n const entities = (active.scene.components.tags[tag] ||= [])\n\n if (!entities.includes(this.id)) entities.push(this.id)\n }\n }\n\n get position() {\n return { x: this.x, y: this.y }\n }\n get pos() {\n return this.position\n }\n\n set position({ x, y }) {\n this.x = x\n this.y = y\n }\n set pos(pos) {\n this.position = pos\n }\n\n // get velocity() {\n // return { x: this.velX, y: this.velY }\n // }\n // get vel() {\n // return this.velocity\n // }\n\n // set velocity({ x, y }) {\n // this.velX = x\n // this.velY = y\n // }\n\n // set vel(vel) {\n // this.velocity = vel\n // }\n\n destroy() {\n delete_layers({ scene: this.scene, layer_ids: [this.id] })\n }\n}\n\nexport default Entity\n","import { entity_name_for, update_shape } from '@pogzul/engine'\nimport Pixels from './Pixels'\n\nimport { Entity } from '../../Entity.js'\n\nexport class Shape extends Entity {\n /** @type {string} */\n name\n\n /** @type {Pixels} */\n pixels\n /**\n * @param {Partial<\n * Omit & {\n * pixels: import('./Pixels').PixelsObject\n * }\n * >} opts\n */\n constructor(opts = {}) {\n super(opts)\n this.pixels = new Pixels(opts.pixels || {})\n this.name ??= entity_name_for('Shape')\n update_shape(this)\n }\n}\n\n/** @param {Partial} props */\n// export const create_shape = (props) => {\n// const shape = {\n// ...props,\n// pixels: new Pixels(props.pixels || {}),\n// name: props.name || entity_name_for('Shape')\n// }\n\n// update_shape(shape)\n\n// return shape\n// }\n\n// export default Shape\n","import { pick, Entity, Shape, entity_name_for } from '@pogzul/engine'\n\nexport class Group extends Entity {\n /** @type {string} */\n name\n\n /** @type {number[]} */\n layer_ids = []\n\n /** @param {Partial} opts */\n constructor(opts = {}) {\n super(opts)\n\n Object.assign(this, pick(opts, 'name', 'layer_ids'))\n\n this.name ??= entity_name_for('Group')\n\n overide_dimension_accessors.call(this)\n }\n\n /** @returns {Shape[]} */\n get layers() {\n return this.layer_ids.reduce((layers, id) => {\n const entity = this.scene.entities[id]\n\n if (entity instanceof Group) return [...layers, ...entity.layers]\n\n return [...layers, entity]\n }, [])\n }\n}\n\n/** @this {Group} */\nfunction overide_dimension_accessors() {\n Object.defineProperty(this, 'x', {\n get: () => {\n return Math.min(...this.layer_ids.map((id) => this.scene.entities[id].x))\n },\n\n set: (val) => {\n const dx = val - this.x\n\n for (let id of this.layer_ids) {\n this.scene.entities[id].x += dx\n }\n }\n })\n\n Object.defineProperty(this, 'y', {\n get: () => {\n return Math.min(...this.layer_ids.map((id) => this.scene.entities[id].y))\n },\n\n set: (val) => {\n const dy = val - this.y\n\n for (let id of this.layer_ids) {\n this.scene.entities[id].y += dy\n }\n }\n })\n\n Object.defineProperty(this, 'width', {\n get: () => {\n const x2 = Math.max(\n ...this.layer_ids.map(\n (id) => this.scene.entities[id].x + this.scene.entities[id].width\n )\n )\n\n return x2 - this.x\n }\n })\n\n Object.defineProperty(this, 'height', {\n get: () => {\n const y2 = Math.max(\n ...this.layer_ids.map(\n (id) => this.scene.entities[id].y + this.scene.entities[id].height\n )\n )\n\n return y2 - this.y\n }\n })\n}\n","import { Entity } from '../Entity'\nimport { pick, entity_name_for } from '@pogzul/engine'\n\nexport class Text extends Entity {\n /** @type {string} */\n name\n\n /** @type {string} */\n value = ''\n\n /** @type {string} */\n font = 'RetroGaming'\n\n /** @type {number} - In pixels */\n size = 18\n\n /** @type {Uint8Array} */\n color\n\n /** @type {'left' | 'center' | 'right'} */\n justify = 'left'\n\n /** @type {'top' | 'middle' | 'bottom'} */\n align = 'top'\n\n /** @param {Partial} opts */\n constructor(opts = {}) {\n super(opts)\n\n Object.assign(\n this,\n pick(opts, 'name', 'value', 'font', 'size', 'color', 'justify', 'align')\n )\n\n if (opts.color) {\n this.color = new Uint8Array(Object.values(opts.color))\n }\n\n this.height ||= this.size\n this.name ??= entity_name_for('Text')\n }\n}\n\nexport default Text\n","import { Shape, Group, Text } from './layers'\nimport { Entity } from './Entity.js'\n\nimport { random_uint_32, pick } from '@pogzul/engine'\n\nexport class Scene {\n /** @type {number} */\n id = random_uint_32()\n\n /** @type {Record} */\n entities = {}\n\n /** @type {Record} */\n components = {\n names: {},\n tags: {},\n positions: {},\n areas: {}\n }\n\n /** @type {number[]} */\n layer_ids = []\n\n /** @param {Partial} opts */\n constructor(opts = {}) {\n Object.assign(this, pick(opts, 'id', 'entities', 'layer_ids'))\n\n this.components = {\n ...this.components,\n ...(opts.components || {})\n }\n\n const entity_ids = Object.keys(this.entities).map(Number)\n\n this.entities = entity_ids.reduce((entities, id) => {\n if (!this.entities[id]) return entities\n\n return {\n ...entities,\n [id]: Entity.parse({ ...this.entities[id], id, scene: this })\n }\n }, {})\n\n this.layer_ids = this.layer_ids.filter((id) => this.entities[id])\n }\n}\n\nexport default Scene\n","import { pick } from '@pogzul/engine'\nimport { Scene } from './Scene.js'\n\nexport class Project {\n /** @type {string} */\n id\n\n /** @type {string} */\n name\n\n /** @type {Record} */\n scenes\n\n /** @type {number[]} */\n scene_ids\n\n /** @param {Project} opts */\n constructor(opts) {\n Object.assign(this, pick(opts, 'id', 'name', 'scenes', 'scene_ids'))\n }\n\n /**\n * @param {import('yjs').Doc} doc\n * @param {string} id\n */\n static from(doc, id) {\n const map = doc.getMap()\n\n const scenes = parse_scenes(map)\n\n return new Project({\n id,\n name: map.get('name'),\n scene_ids: map.get('scene_ids'),\n scenes\n })\n }\n}\n\n/** @param {import('yjs').Map} map */\nconst parse_scenes = (map) =>\n Object.fromEntries(\n Object.entries(map.get('scenes')).map(([id, scene]) => [\n Number(id),\n new Scene(scene)\n ])\n )\n","import ASCII_CHARS from './ascii_charset.txt'\nimport { random_uint_32 } from '@pogzul/engine'\n\nexport class Font {\n /** @type {number} */\n id = random_uint_32()\n\n /** @type {number} */\n glyph_height\n\n /** @type {import('../webgl/Texture').Texture['src']} */\n atlas\n\n /** @type {Record} */\n characters\n\n /** @type {import('./types').BMFontConfig} */\n config\n\n /** @param {Pick} params */\n constructor({ config, atlas }) {\n if (typeof window === 'undefined') return\n\n this.config = config\n this.atlas = atlas\n\n this.characters = config.chars.reduce(\n (obj, char_config) => ({\n ...obj,\n [char_config.char]: char_config\n }),\n {}\n )\n\n this.glyph_height = config.chars.reduce((max, char) => {\n const glyph_height = char.height + char.yoffset\n\n if (glyph_height > max) return glyph_height\n\n return max\n }, 0)\n }\n\n get name() {\n return this.config.info.face\n }\n\n get size() {\n return this.config.info.size\n }\n}\n\nexport default Font\n","export default \"__VITE_ASSET__0k6jzm5b__\"","import { Font } from './Font.js'\n\nimport * as RetroGaming from './RetroGaming'\n\nexport { default as ASCII_CHARS } from './ascii_charset.txt'\n\n/** @type {Record} */\nconst fonts = {}\n\nif (typeof window !== 'undefined') {\n const image = new Image()\n\n image.onload = () => {\n fonts['RetroGaming'] = new Font({\n atlas: image,\n config: RetroGaming.config\n })\n }\n\n image.src = RetroGaming.msdf\n}\n\nexport { Font, fonts }\n","/**\n * @typedef {object} Config\n * @property {number} pixel_size\n * @property {number} canvas_size\n * @property {Record} default_colors\n */\n\n/** @type {Config} */\nconst INITIAL_STATE = {\n pixel_size: 20,\n canvas_size: 500,\n default_colors: {\n white: '#FFFFFF',\n black: '#000000',\n gray: '#808080',\n brown: '#A0522D',\n sky: '#7FDBFF',\n blue: '#0074D9',\n navy: '#001F3F',\n teal: '#39CCCC',\n green: '#2ECC40',\n lime: '#01FF70',\n yellow: '#FFDC00',\n orange: '#FF851B',\n red: '#FF4136',\n fuchsia: '#F012BE',\n purple: '#B10DC9'\n // maroon: '#85144B'\n }\n}\n\n/** @type {Config} */\nexport let config = { ...INITIAL_STATE }\n","import web_colors from './web_colors.json'\n\n/**\n * @param {Uint8Array | undefined} a\n * @param {Uint8Array | undefined} b\n */\nexport const colors_are_equal = (a, b) => {\n if (a instanceof Uint8Array && b instanceof Uint8Array) {\n return (\n a.length === b.length && a.every((value, index) => value === b[index])\n )\n }\n\n return a === b\n}\n\n/** @param {string} hex */\nexport const hex_to_rgb_i = (hex) => {\n const r = parseInt(hex.slice(1, 3), 16),\n g = parseInt(hex.slice(3, 5), 16),\n b = parseInt(hex.slice(5, 7), 16)\n\n return new Uint8Array([r, g, b])\n}\n\n/**\n * @param {string} hex\n * @param {number} alpha\n */\nexport const hex_to_rgba_i = (hex, alpha = 1) =>\n new Uint8Array([...hex_to_rgb_i(hex), alpha * 255])\n\nexport default hex_to_rgb_i\n\n/**\n * @param {string | Uint8Array | undefined} color – hex, rgb(a) or name string\n * @returns {Uint8Array} – an [r, g, b] array between 0-255.\n */\nexport const parse_color = (color) => {\n if (!color) return new Uint8Array([0, 0, 0])\n if (color instanceof Uint8Array) return color\n\n if (color in web_colors) return hex_to_rgb_i(web_colors[color])\n\n let hex = color.match(/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i)?.[0]?.toString()\n\n return hex ? hex_to_rgb_i(hex) : parse_rgb_string(color)\n}\n\n/** @param {string} string */\nexport const parse_rgb_string = (string) => {\n const [r, g, b] = string.match(/\\d+(\\.\\d+)?/g)?.map(Number) || []\n\n if (!isNaN(parseFloat(b))) return new Uint8Array([r, g, b])\n\n return new Uint8Array([0, 0, 0])\n}\n\n/** @param {Uint8Array | number[] | undefined} array */\nexport const rgb_array_to_hex = (array) => {\n if (!array) return ''\n\n const [r, g, b, alpha = 1] = array\n\n let hex = '#'\n\n for (let v of [r, g, b]) {\n let color = alpha_blend(v, alpha)\n\n hex += color.toString(16).padStart(2, '0')\n }\n\n return hex.toUpperCase()\n}\n\n/**\n * @param {number} color\n * @param {number} alpha\n */\nconst alpha_blend = (color, alpha) => {\n let val = (1 - alpha) * 1 + (alpha * color) / 255\n\n return Math.round(val * 255)\n}\n\n/** @param {Uint8Array | number[]} array */\nexport const rgb_array_to_string = (array) => {\n const [r, g, b, a = 255] = array\n\n return `rgba(${r}, ${g}, ${b}, ${a / 255})`\n}\n","export const random_uint_32 = () => Math.floor(Math.random() * 0xffffffff + 1)\n\nexport const pick = (\n obj: T,\n ...properties: K[]\n): Pick =>\n properties.reduce(\n (result, prop) => ({\n ...result,\n ...(obj[prop] === undefined ? {} : { [prop]: obj[prop] })\n }),\n {} as Pick\n )\n","import { rgb_array_to_string, config } from '@pogzul/engine'\n\n/**\n * @param {object} opts\n * @param {CanvasRenderingContext2D} opts.ctx\n * @param {import('@pogzul/engine/models').Shape} opts.shape\n */\nexport const render_pixels_canvas_2d = ({ ctx, shape }) => {\n for (let [x, row] of shape.pixels) {\n for (let [y, color] of row) {\n ctx.fillStyle = rgb_array_to_string(color)\n\n ctx.fillRect(\n x * config.pixel_size,\n y * config.pixel_size,\n config.pixel_size,\n config.pixel_size\n )\n }\n }\n}\n\n/**\n * @param {object} opts\n * @param {CanvasRenderingContext2D} opts.ctx\n * @param {import('@pogzul/engine/models').Shape} opts.shape\n */\nexport const render_text_canvas_2d = ({ ctx, text }) => {\n ctx.fillStyle = rgb_array_to_string('red')\n\n ctx.font = '24px RetroGaming'\n\n ctx.fillText(text.content, text.x, text.y, text.width)\n}\n","import { config } from '@pogzul/engine'\n\n/**\n * Get the grid coordinate from a position on the canvas.\n *\n * @param {number} value\n */\nexport const grid_coordinate = (value) => Math.floor(value / config.pixel_size)\n\n/**\n * Get the canvas coordinate from a grid position.\n *\n * @param {number} value\n */\nexport const canvas_coordinate = (value) =>\n grid_coordinate(value) * config.pixel_size\n\n/**\n * @param {object} opts\n * @param {number} opts.mouse_x\n * @param {number} opts.mouse_y\n * @param {{ x: number; y: number }} [opts.offsets]\n */\nexport const normalize_mouse_coordinates = ({\n mouse_x,\n mouse_y,\n offsets = { x: 0, y: 0 }\n}) => ({\n x: grid_coordinate(mouse_x - offsets.x),\n y: grid_coordinate(mouse_y - offsets.y)\n})\n","export class Canvas {\n /** @type {HTMLCanvasElement} */\n element =\n typeof window !== 'undefined'\n ? document.createElement('canvas')\n : fake_canvas\n\n /** @type {Pick} */\n image = typeof window === 'undefined' ? { src: '' } : new Image()\n\n ctx = this.element.getContext('2d')\n\n constructor() {\n this.width = 1\n this.height = 1\n\n this.renderImage()\n }\n\n /** @param {number} val */\n set width(val) {\n this.element.width = val\n }\n\n /** @param {number} val */\n set height(val) {\n this.element.height = val\n }\n\n /** @param {function(CanvasRenderingContext2D): void} callback */\n render(callback) {\n if (this.ctx) {\n this.ctx.clearRect(0, 0, this.element.width, this.element.height)\n\n callback(this.ctx)\n\n this.renderImage()\n }\n }\n\n renderImage() {\n return (this.image.src = this.element.toDataURL())\n }\n}\n\nconst TRANSPARENT_PIXEL =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='\n\n/**\n * Canvas wrapper for a nicer API for layers\n *\n * @type {HTMLCanvasElement} - Lol\n */\nconst fake_canvas = {\n // @ts-ignore\n getContext() {\n return {\n clearRect() {},\n setTransform() {},\n fillRect() {},\n measureText() {\n return {}\n },\n fillText() {}\n }\n },\n toDataURL() {\n return TRANSPARENT_PIXEL\n }\n}\n\nexport default Canvas\n","import { writable } from 'svelte/store'\n\nexport const is_running = writable(false)\n","import { Canvas } from '../models/Canvas'\n\n// Make this a Map when: https://github.com/sveltejs/svelte/issues/9761\n\n/** @type {Record} */\nexport const canvases = $state({})\n","/** @type {Map} */\nexport const textures = new Map()\n","/**\n * Used for maintaining the position of entities when they are moved, for\n * collisions.\n *\n * @type {Map>}\n */\nexport const last_entity_positions = new Map()\n","import { Scene } from '../models'\n\nclass Active {\n scene = $state(new Scene())\n}\n\nexport const active = new Active()\n\nif (typeof $inspect !== 'undefined') $inspect(active.scene)\n\n/** @param {Scene} next_scene */\nexport const set_scene = (next_scene) => (active.scene = next_scene)\n","import { Group, Shape, Text, Pixels } from '../models'\nimport { Canvas } from '../models/Canvas'\nimport { grid_coordinate } from './coordinates'\nimport { parse_color } from './colors'\nimport { config } from '../config'\nimport { render_pixels_canvas_2d } from './rendering'\n\nimport { canvases, textures, active } from '../stores'\n\n/**\n * @param {object} opts\n * @param {import('@pogzul/engine').Scene} opts.scene\n * @param {number[]} opts.layer_ids\n * @param {number} opts.delta - How far to move the layers\n */\nexport const sort_layers = ({ scene, layer_ids, delta = 1 }) => {\n if (delta === 0) return false\n\n /** Sort the layers to change by their position in the scene's layer_ids */\n const ids = [...layer_ids].sort(\n (a, b) => delta * (scene.layer_ids.indexOf(b) - scene.layer_ids.indexOf(a))\n )\n\n const layers_at_edge = ids.some(\n (id) =>\n (delta < 0 && id === scene.layer_ids[0]) ||\n (delta > 0 && id === scene.layer_ids[scene.layer_ids.length - 1])\n )\n\n if (layers_at_edge) return false\n\n for (let id of ids) {\n const index = scene.layer_ids.indexOf(id)\n\n const new_layer_ids = [...scene.layer_ids]\n\n const [moved_id] = new_layer_ids.splice(index, 1)\n\n new_layer_ids.splice(Math.max(0, index + delta), 0, moved_id)\n\n scene.layer_ids = new_layer_ids\n }\n}\n\n/**\n * @param {object} opts\n * @param {import('@pogzul/engine').Scene} opts.scene\n * @param {number[]} opts.layer_ids\n * @returns {number} - The group id\n */\nexport const group_layers = ({ scene, layer_ids }) => {\n const group = new Group({\n layer_ids: layer_ids.flat(),\n scene\n })\n\n const index = scene.layer_ids.indexOf(group.layer_ids[0])\n\n scene.layer_ids[index] = group.id\n scene.layer_ids = scene.layer_ids.filter(\n (id) => !group.layer_ids.includes(id)\n )\n\n scene.entities[group.id] = group\n\n return group.id\n}\n\n/**\n * @param {(number | number[])[]} group_ids\n * @returns {number[]} - The layer ids\n */\n\n/**\n * @param {object} opts\n * @param {import('@pogzul/engine').Scene} opts.scene\n * @param {number[]} opts.group_ids\n * @returns {number[]} - The layer ids\n */\nexport const ungroup_layers = ({ scene, group_ids }) => {\n /** @type {number[]} */\n let layer_ids = []\n\n for (let group_id of group_ids.flat()) {\n const group = scene.entities[group_id]\n\n if (!(group instanceof Group)) return group_ids.flat()\n\n const index = scene.layer_ids.indexOf(group_id)\n\n let { [group_id]: _layer, ...rest } = scene.entities\n\n scene.entities = rest\n scene.layer_ids = [\n ...scene.layer_ids.slice(0, index),\n ...group.layer_ids,\n ...scene.layer_ids.slice(index + 1)\n ]\n\n layer_ids = [...layer_ids, ...group.layer_ids]\n }\n\n return layer_ids\n}\n\n/** @param {'Shape' | 'Group' | 'Text'} type */\nexport const entity_name_for = (type) => {\n const entities_of_type = Object.values(active.scene.entities).filter(\n (entity) => entity.type === type\n ).length\n\n return `${type} ${entities_of_type + 1}`\n}\n\n/**\n * @param {Group | Shape | Text} layer\n * @param {number} x - The exact x position in the scene\n * @param {number} y - The exact y position in the scene\n * @returns {ReturnType}\n */\nexport const get_pixel = (layer, x, y) => {\n if (layer instanceof Text) return\n\n if (layer instanceof Group) {\n for (let id of layer.layer_ids) {\n const pixel = get_pixel(active.scene.entities[id], x, y)\n\n if (pixel) return pixel\n }\n } else {\n const scale = 1\n\n return layer.pixels.get(\n grid_coordinate((x - layer.x) / scale),\n grid_coordinate((y - layer.y) / scale)\n )\n }\n}\n\n/**\n * @param {Group | Shape | Text} layer\n * @param {Uint8Array} color\n */\nexport const set_color = (layer, color) => {\n if ('pixels' in layer) {\n const parsed_color = parse_color(color)\n\n for (let [x, row] of layer.pixels) {\n for (let [y] of row) {\n layer.pixels.set(x, y, parsed_color)\n }\n }\n\n update_shape(layer)\n } else if (layer instanceof Group) {\n for (let id of layer.layer_ids) {\n set_color(active.scene.entities[id], color)\n }\n } else if (layer instanceof Text) {\n layer.color = color\n }\n}\n\n/** @param {Shape} shape */\nexport const update_shape = (shape) => {\n const { left, right, top, bottom } = shape.pixels.computeBounds()\n\n shape.x += left * config.pixel_size\n shape.y += top * config.pixel_size\n\n shape.width = (right - left) * config.pixel_size\n shape.height = (bottom - top) * config.pixel_size\n\n if (left !== 0 || top !== 0) {\n let pixels = new Pixels()\n\n for (let [x, row] of shape.pixels) {\n for (let [y, color] of row) {\n pixels.set(x - left, y - top, color)\n }\n }\n\n shape.pixels = pixels\n }\n\n let canvas = new Canvas()\n\n canvas.width = shape.width\n canvas.height = shape.height\n\n canvas.render((ctx) => {\n render_pixels_canvas_2d({ ctx, shape })\n })\n\n canvases[shape.id] = canvas\n\n textures.get(shape.id)?.update(canvas.element)\n}\n","import { config } from '../config'\nimport { grid_coordinate } from './coordinates'\nimport { render_pixels_canvas_2d } from './rendering'\n\nimport { Canvas } from '../models/Canvas'\nimport { Group, Shape } from '../models'\n\n/** @param {import('@pogzul/engine').Scene} scene */\nexport const scene_image = (scene) => {\n const canvas = new Canvas()\n\n canvas.width = config.canvas_size\n canvas.height = config.canvas_size\n\n /** @type {(Text | Shape)[]} */\n // @ts-ignore\n const layers = scene.layer_ids.reduce((acc, id) => {\n const entity = scene.entities[id]\n\n if (entity instanceof Group) return [...acc, ...entity.layers]\n\n return [...acc, entity]\n }, [])\n\n canvas.render((ctx) => {\n for (let layer of layers) {\n if (layer instanceof Text || layer.is_hidden) continue\n\n if ('pixels' in layer) {\n ctx.setTransform(1, 0, 0, 1, layer.x, layer.y)\n render_pixels_canvas_2d({ ctx, shape: layer })\n }\n }\n })\n\n return canvas.image\n}\n\n/** @param {import('@pogzul/engine').Scene} scene */\nexport const pixel_grid = (scene) => {\n /** @type {Record>} */\n let grid = {}\n\n /** @type {(Text | Shape)[]} */\n // @ts-ignore\n const layers = scene.layer_ids.reduce((acc, id) => {\n const entity = scene.entities[id]\n\n if (entity instanceof Group) return [...acc, ...entity.layers]\n\n return [...acc, entity]\n }, [])\n\n for (let layer of layers) {\n if (layer instanceof Text || layer.is_hidden) continue\n\n for (let [x, row] of layer.pixels) {\n for (let [y, pixel_color] of row) {\n const x_pos = x + grid_coordinate(layer.x),\n y_pos = y + grid_coordinate(layer.y)\n\n ;(grid[x_pos] ??= {})[y_pos] = pixel_color\n }\n }\n }\n\n return grid\n}\n","/*\n 3*3 matrices\n*/\nexport const m3 = {\n identity() {\n return [1, 0, 0, 0, 1, 0, 0, 0, 1]\n },\n\n /*\n Matrix to convert x/y position to -1 to 1 GPU coords.\n\n Note: flips the Y axis so 0 is at the top.\n */\n projection(width, height) {\n return [2 / width, 0, 0, 0, -2 / height, 0, -1, 1, 1]\n },\n\n translation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1]\n },\n\n rotation(angleInRadians) {\n let c = Math.cos(angleInRadians),\n s = Math.sin(angleInRadians)\n\n return [c, -s, 0, s, c, 0, 0, 0, 1]\n },\n\n scaling(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1]\n },\n\n project(m, width, height) {\n return m3.multiply(m, m3.projection(width, height))\n },\n\n translate(m, tx, ty) {\n return m3.multiply(m, m3.translation(tx, ty))\n },\n\n rotate(m, angleInRadians) {\n return m3.multiply(m, m3.rotation(angleInRadians))\n },\n\n scale(m, sx, sy) {\n return m3.multiply(m, m3.scaling(sx, sy))\n },\n\n multiply(a, b) {\n let a00 = a[0 * 3 + 0],\n a01 = a[0 * 3 + 1],\n a02 = a[0 * 3 + 2],\n a10 = a[1 * 3 + 0],\n a11 = a[1 * 3 + 1],\n a12 = a[1 * 3 + 2],\n a20 = a[2 * 3 + 0],\n a21 = a[2 * 3 + 1],\n a22 = a[2 * 3 + 2],\n b00 = b[0 * 3 + 0],\n b01 = b[0 * 3 + 1],\n b02 = b[0 * 3 + 2],\n b10 = b[1 * 3 + 0],\n b11 = b[1 * 3 + 1],\n b12 = b[1 * 3 + 2],\n b20 = b[2 * 3 + 0],\n b21 = b[2 * 3 + 1],\n b22 = b[2 * 3 + 2]\n\n return [\n b00 * a00 + b01 * a10 + b02 * a20,\n b00 * a01 + b01 * a11 + b02 * a21,\n b00 * a02 + b01 * a12 + b02 * a22,\n b10 * a00 + b11 * a10 + b12 * a20,\n b10 * a01 + b11 * a11 + b12 * a21,\n b10 * a02 + b11 * a12 + b12 * a22,\n b20 * a00 + b21 * a10 + b22 * a20,\n b20 * a01 + b21 * a11 + b22 * a21,\n b20 * a02 + b21 * a12 + b22 * a22\n ]\n }\n}\n\n/*\n 4*4 matrices\n*/\nexport const m4 = {\n projection(width, height, depth) {\n // Note: This matrix flips the Y axis so 0 is at the top.\n return [\n 2 / width,\n 0,\n 0,\n 0,\n 0,\n -2 / height,\n 0,\n 0,\n 0,\n 0,\n 2 / depth,\n 0,\n -1,\n 1,\n 0,\n 1\n ]\n },\n\n translation(tx, ty, tz) {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1]\n },\n\n xRotation(angleInRadians) {\n let c = Math.cos(angleInRadians),\n s = Math.sin(angleInRadians)\n\n return [1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1]\n },\n\n yRotation: function (angleInRadians) {\n let c = Math.cos(angleInRadians),\n s = Math.sin(angleInRadians)\n\n return [c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1]\n },\n\n zRotation(angleInRadians) {\n let c = Math.cos(angleInRadians),\n s = Math.sin(angleInRadians)\n\n return [c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n },\n\n scaling(sx, sy, sz) {\n return [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1]\n },\n\n translate(m, tx, ty, tz) {\n return m4.multiply(m, m4.translation(tx, ty, tz))\n },\n\n xRotate(m, angleInRadians) {\n return m4.multiply(m, m4.xRotation(angleInRadians))\n },\n\n yRotate(m, angleInRadians) {\n return m4.multiply(m, m4.yRotation(angleInRadians))\n },\n\n zRotate(m, angleInRadians) {\n return m4.multiply(m, m4.zRotation(angleInRadians))\n },\n\n scale(m, sx, sy, sz) {\n return m4.multiply(m, m4.scaling(sx, sy, sz))\n },\n\n multiply(a, b) {\n let b00 = b[0 * 4 + 0],\n b01 = b[0 * 4 + 1],\n b02 = b[0 * 4 + 2],\n b03 = b[0 * 4 + 3],\n b10 = b[1 * 4 + 0],\n b11 = b[1 * 4 + 1],\n b12 = b[1 * 4 + 2],\n b13 = b[1 * 4 + 3],\n b20 = b[2 * 4 + 0],\n b21 = b[2 * 4 + 1],\n b22 = b[2 * 4 + 2],\n b23 = b[2 * 4 + 3],\n b30 = b[3 * 4 + 0],\n b31 = b[3 * 4 + 1],\n b32 = b[3 * 4 + 2],\n b33 = b[3 * 4 + 3],\n a00 = a[0 * 4 + 0],\n a01 = a[0 * 4 + 1],\n a02 = a[0 * 4 + 2],\n a03 = a[0 * 4 + 3],\n a10 = a[1 * 4 + 0],\n a11 = a[1 * 4 + 1],\n a12 = a[1 * 4 + 2],\n a13 = a[1 * 4 + 3],\n a20 = a[2 * 4 + 0],\n a21 = a[2 * 4 + 1],\n a22 = a[2 * 4 + 2],\n a23 = a[2 * 4 + 3],\n a30 = a[3 * 4 + 0],\n a31 = a[3 * 4 + 1],\n a32 = a[3 * 4 + 2],\n a33 = a[3 * 4 + 3]\n\n return [\n b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,\n b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,\n b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,\n b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,\n b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,\n b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,\n b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,\n b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,\n b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,\n b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,\n b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,\n b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,\n b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,\n b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,\n b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,\n b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33\n ]\n }\n}\n","/**\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n */\nexport const quad = (x, y, w, h) => ({ x, y, w, h })\n\n/**\n * @param {number} x\n * @param {number} y\n */\nexport const vec2 = (x, y) => ({ x, y })\n\n/**\n * Taken from... lodash? Underscore? I can't remember, but I didn't write this.\n *\n * @param {any} a\n * @param {any} b\n */\nexport const deep_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; ) if (!deep_equal(a[i], b[i])) return false\n return true\n }\n\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false\n for (i of a.entries()) if (!b.has(i[0])) return false\n for (i of a.entries()) if (!deep_equal(i[1], b.get(i[0]))) return false\n return true\n }\n\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false\n for (i of a.entries()) if (!b.has(i[0])) return false\n return true\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length\n if (length != b.length) return false\n for (i = length; i-- !== 0; ) if (a[i] !== b[i]) return false\n return true\n }\n\n if (a.constructor === RegExp)\n return a.source === b.source && a.flags === b.flags\n if (a.valueOf !== Object.prototype.valueOf)\n return a.valueOf() === b.valueOf()\n if (a.toString !== Object.prototype.toString)\n 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 (!deep_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","export class Texture {\n /** @type {WebGLRenderingContext} */\n gl\n\n /** @type {WebGLTexture | null} */\n gl_texture\n\n /** @type {Exclude} */\n src\n\n /** @type {number} */\n width\n\n /** @type {number} */\n height\n\n /**\n * @param {object} params\n * @param {WebGLRenderingContext} params.gl\n * @param {Texture['src']} [params.src]\n * @param {'linear' | 'nearest'} [params.filter]\n */\n constructor({ gl, src, filter = 'nearest' }) {\n this.gl = gl\n\n this.src = src ?? white_pixel()\n\n this.width = this.src.width\n this.height = this.src.height\n\n this.gl_texture = gl.createTexture()\n\n this.bind()\n\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n this.src\n )\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)\n\n const texture_filter = {\n linear: gl.LINEAR,\n nearest: gl.NEAREST\n }[filter]\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, texture_filter)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, texture_filter)\n }\n\n /** @param {Texture['src']} src */\n update(src) {\n this.bind()\n\n this.width = src.width\n this.height = src.height\n\n this.gl.texImage2D(\n this.gl.TEXTURE_2D,\n 0,\n this.gl.RGBA,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n src\n )\n }\n\n bind() {\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.gl_texture)\n }\n}\n\nconst white_pixel = () =>\n new ImageData(new Uint8ClampedArray([255, 255, 255, 255]), 1, 1)\n\nexport default Texture\n","export const VERTEX_FORMAT = [\n { name: 'a_pos', size: 2 },\n { name: 'a_uv', size: 2 },\n { name: 'a_color', size: 4 }\n]\n\nexport const STRIDE = VERTEX_FORMAT.reduce(\n (sum, format) => sum + format.size,\n 0\n)\n","import { VERTEX_FORMAT } from './config'\n\nexport class Shader {\n /** @type {WebGLRenderingContext} */\n gl\n\n /** @type {WebGLProgram} */\n program\n\n /**\n * @param {object} params\n * @param {WebGLRenderingContext} params.gl\n * @param {string} [params.vertex_source]\n * @param {string} [params.fragment_source]\n */\n constructor({\n gl,\n vertex_source = DEFAULT_VERTEX,\n fragment_source = DEFAULT_FRAGMENT\n }) {\n this.gl = gl\n\n const vertex_shader_source = VERTEX_TEMPLATE.replace(\n '{{position_function}}',\n vertex_source\n ).trim()\n\n const fragment_shader_source = FRAGMENT_TEMPLATE.replace(\n '{{color_function}}',\n fragment_source\n ).trim()\n\n // Compile the shaders\n const vertex_shader = gl.createShader(gl.VERTEX_SHADER)\n if (!vertex_shader) throw new Error('gl.createShader returned null')\n\n const fragment_shader = gl.createShader(gl.FRAGMENT_SHADER)\n if (!fragment_shader) throw new Error('gl.createShader returned null')\n\n gl.shaderSource(vertex_shader, vertex_shader_source)\n gl.shaderSource(fragment_shader, fragment_shader_source)\n gl.compileShader(vertex_shader)\n gl.compileShader(fragment_shader)\n\n // Create the program\n const program = gl.createProgram()\n if (!program) throw new Error('gl.createProgram returned null')\n\n this.program = program\n\n gl.attachShader(program, vertex_shader)\n gl.attachShader(program, fragment_shader)\n\n // Bind the vertex attributes\n VERTEX_FORMAT.forEach((vertex, index) =>\n gl.bindAttribLocation(program, index, vertex.name)\n )\n\n gl.linkProgram(program)\n\n const linked = gl.getProgramParameter(program, gl.LINK_STATUS)\n\n if (!linked) {\n const vert_error = gl.getShaderInfoLog(vertex_shader)\n if (vert_error) throw new Error('VERTEX SHADER: ' + vert_error)\n const frag_error = gl.getShaderInfoLog(fragment_shader)\n if (frag_error) throw new Error('FRAGMENT SHADER: ' + frag_error)\n }\n\n gl.deleteShader(vertex_shader)\n gl.deleteShader(fragment_shader)\n }\n\n bind() {\n this.gl.useProgram(this.program)\n }\n\n /** @param {import('./types').Uniform} uniform */\n send(uniform) {\n for (let name in uniform) {\n const location = this.gl.getUniformLocation(this.program, name)\n\n this.gl.uniform1f(location, uniform[name])\n }\n }\n}\n\nconst VERTEX_TEMPLATE = `\n#version 300 es\n\nin vec2 a_pos;\nin vec2 a_uv;\nin vec4 a_color;\n\nout vec2 v_pos;\nout vec2 v_uv;\nout vec4 v_color;\n\n{{position_function}}\n\nvoid main() {\n v_pos = a_pos;\n v_uv = a_uv;\n v_color = a_color;\n\n gl_Position = position(a_pos, a_uv, a_color);\n}\n`\n\nconst FRAGMENT_TEMPLATE = `\n#version 300 es\n\nprecision mediump float;\n\nin vec2 v_pos;\nin vec2 v_uv;\nin vec4 v_color;\n\nuniform sampler2D u_tex;\n\nout vec4 output_color;\n\n{{color_function}}\n\nvoid main() {\n output_color = color(v_pos, v_uv, v_color, u_tex);\n\n if (output_color.a == 0.0) {\n discard;\n }\n}\n`\n\nconst DEFAULT_VERTEX = `\nvec4 position(vec2 pos, vec2 uv, vec4 color) {\n return vec4(pos, 1, 1);\n}\n`\n\nconst DEFAULT_FRAGMENT = `\nvec4 color(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {\n return color * texture(tex, uv);\n}\n`\n\nexport default Shader\n","import { deep_equal } from './utils.js'\nimport { Texture } from './Texture.js'\nimport { Shader } from './Shader.js'\n\nimport { STRIDE } from './config'\n\nconst MAX_BATCHED_QUAD = 2048\n\nconst MAX_BATCHED_VERTICES = MAX_BATCHED_QUAD * 4 * STRIDE,\n MAX_BATCHED_INDICES = MAX_BATCHED_QUAD * 6\n\nexport class BatchRenderer {\n /** @type {WebGLRenderingContext} */\n gl\n\n /** @type {number[]} */\n vertex_queue = []\n\n /** @type {number[]} */\n index_queue = []\n\n /** @type {Texture | null} */\n current_texture\n\n /** @type {Shader | null} */\n current_shader\n\n /** @type {import('./types').Uniform} */\n current_uniform\n\n /**\n * @param {object} params\n * @param {WebGLRenderingContext} params.gl\n */\n constructor({ gl }) {\n this.gl = gl\n\n /** Create index buffer */\n const index_buffer = gl.createBuffer()\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index_buffer)\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n MAX_BATCHED_INDICES * 4,\n gl.DYNAMIC_DRAW\n )\n\n /** Create vertex buffer */\n const vertex_buffer = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer)\n gl.bufferData(gl.ARRAY_BUFFER, MAX_BATCHED_VERTICES * 4, gl.DYNAMIC_DRAW)\n }\n\n /**\n * @param {object} params\n * @param {number[]} params.vertices\n * @param {number[]} params.indices\n * @param {Texture} params.texture\n * @param {Shader} params.shader\n * @param {import('./types').Uniform} params.uniform\n */\n push({ vertices, indices, texture, shader, uniform }) {\n if (\n texture !== this.current_texture ||\n shader !== this.current_shader ||\n !deep_equal(uniform, this.current_uniform)\n )\n this.flush()\n\n const index_offset = this.vertex_queue.length / STRIDE\n\n this.vertex_queue = [...this.vertex_queue, ...vertices]\n\n for (let index of indices) {\n this.index_queue.push(index + index_offset)\n }\n\n this.current_texture = texture\n this.current_shader = shader\n this.current_uniform = uniform\n }\n\n flush() {\n if (\n !this.current_shader ||\n this.index_queue.length === 0 ||\n this.vertex_queue.length === 0\n )\n return\n\n this.current_shader.bind()\n this.current_shader.send(this.current_uniform)\n\n /* Bind the current texture */\n this.current_texture?.bind()\n\n /* Buffer ('send') data to the GPU */\n this.gl.bufferSubData(\n this.gl.ARRAY_BUFFER,\n 0,\n new Float32Array(this.vertex_queue)\n )\n this.gl.bufferSubData(\n this.gl.ELEMENT_ARRAY_BUFFER,\n 0,\n new Uint16Array(this.index_queue)\n )\n\n /* And draw! */\n this.gl.drawElements(\n this.gl.TRIANGLES,\n this.index_queue.length,\n this.gl.UNSIGNED_SHORT,\n 0\n )\n\n this.vertex_queue = []\n this.index_queue = []\n }\n}\n","import { BatchRenderer } from './BatchRenderer'\nimport { Shader } from './Shader'\nimport { Texture } from './Texture'\nimport { quad as rect, vec2 } from './utils'\n\nimport { STRIDE, VERTEX_FORMAT } from './config'\n\nexport class Graphics {\n /** @type {WebGLRenderingContext} */\n gl\n\n /** @type {import('./MatrixStack').MatrixStack} */\n transform_stack\n\n /** @type {BatchRenderer} */\n renderer\n\n /** @type {Texture} */\n default_texture\n\n /** @type {Shader} */\n default_shader\n\n /** @param {Partial} opts */\n constructor(opts) {\n Object.assign(this, opts)\n\n this.renderer = new BatchRenderer({ gl: this.gl })\n\n this.default_texture = new Texture({ gl: this.gl })\n this.default_shader = new Shader({ gl: this.gl })\n\n enable_attribute_pointers(this.gl)\n }\n\n flush() {\n this.renderer.flush()\n }\n\n /**\n * @param {object} params\n * @param {import('./types').Vertex[]} params.vertices\n * @param {number[]} params.indices\n * @param {Texture} params.texture\n * @param {Shader} params.shader\n * @param {import('./types').Uniform} params.uniform\n */\n drawRaw({\n vertices: verts,\n indices,\n texture,\n shader = this.default_shader,\n uniform = {}\n }) {\n const vertices = []\n\n for (let v of verts) {\n vertices.push(\n v.pos[0],\n v.pos[1],\n v.uv[0],\n v.uv[1],\n v.color[0] / 255,\n v.color[1] / 255,\n v.color[2] / 255,\n v.color[3] / 255\n )\n }\n\n this.renderer.push({ vertices, indices, texture, shader, uniform })\n }\n\n drawQuad({\n pos = vec2(0, 0),\n width = 1,\n height = 1,\n quad = rect(\n 0,\n 0,\n 1,\n 1\n ) /* Texture coords go from 0.0 to 1.0 — i.e., this is the whole texture */,\n texture = this.default_texture,\n color = new Uint8Array([255, 255, 255, 255]),\n matrix = this.transform_stack.current,\n shader = this.default_shader,\n uniform = {}\n }) {\n let x2 = pos.x + width,\n y2 = pos.y + height\n\n const vertices = [\n {\n pos: position_matrix(pos.x, pos.y, matrix),\n uv: [quad.x, quad.y],\n color: color\n },\n {\n pos: position_matrix(x2, pos.y, matrix),\n uv: [quad.x + quad.w, quad.y],\n color: color\n },\n {\n pos: position_matrix(x2, y2, matrix),\n uv: [quad.x + quad.w, quad.y + quad.h],\n color: color\n },\n {\n pos: position_matrix(pos.x, y2, matrix),\n uv: [quad.x, quad.y + quad.h],\n color: color\n }\n ]\n\n const indices = [0, 1, 2, 0, 2, 3]\n\n this.drawRaw({ vertices, indices, texture, shader, uniform })\n }\n}\n\n/** @param {WebGLRenderingContext} gl */\nconst enable_attribute_pointers = (gl) => {\n VERTEX_FORMAT.reduce((offset, format, index) => {\n gl.vertexAttribPointer(\n index,\n format.size,\n gl.FLOAT,\n false,\n STRIDE * 4,\n offset\n )\n\n gl.enableVertexAttribArray(index)\n\n return offset + format.size * 4\n }, 0)\n}\n\n/**\n * @param {number} x\n * @param {number} y\n * @param {number[]} matrix\n */\nconst position_matrix = (x, y, matrix /* 3x3 */) => {\n const nx = x * matrix[0] + y * matrix[3] + matrix[6],\n ny = x * matrix[1] + y * matrix[4] + matrix[7]\n\n return [nx, ny]\n}\n\nexport default Graphics\n","import { m3 } from './matrices'\n\nexport function MatrixStack() {\n /** @type {number[][]} */\n this.stack = []\n\n let current = m3.identity()\n\n Object.defineProperty(this, 'current', {\n get() {\n return current\n },\n set(matrix) {\n return (current = matrix)\n }\n })\n\n this.reset = () => {\n this.current = m3.identity()\n }\n\n this.save = () => {\n this.stack.push(this.current)\n }\n\n this.restore = () => {\n this.stack.pop()\n\n if (this.stack.length < 1) {\n this.stack[0] = m3.identity()\n // this.current = m3.identity()\n }\n }\n\n this.project = (width, height) => {\n this.current = m3.project(this.current, width, height)\n }\n\n this.translate = (x, y) => {\n this.current = m3.translate(this.current, x, y)\n }\n\n this.scale = (x, y) => {\n this.current = m3.scale(this.current, x, y)\n }\n\n this.rotate = (angleInRadians) => {\n this.current = m3.rotate(this.current, angleInRadians)\n }\n\n return this\n}\n\nexport default MatrixStack\n","import { m3 } from './matrices'\nimport { quad, vec2 } from './utils'\n\nimport { Graphics } from './Graphics.js'\nimport { MatrixStack } from './MatrixStack.js'\nimport { Shader } from './Shader.js'\nimport { Texture } from './Texture.js'\n\nimport { fonts } from '@pogzul/engine'\n\nimport { textures, canvases } from '../stores'\n\nexport class Context {\n transform_stack = new MatrixStack()\n\n /** @type {Graphics} */\n graphics\n\n /** @param {WebGLRenderingContext} gl */\n constructor(gl) {\n this.gl = gl\n\n this.graphics = new Graphics({\n gl,\n transform_stack: this.transform_stack\n })\n\n this.text_shader = new Shader({\n gl,\n fragment_source: msdf_fragment_shader\n })\n }\n\n /**\n * @param {number} sx - Scale x\n * @param {number} vSkew - Vertical skew\n * @param {number} hSkew - Horizontal skew\n * @param {number} sy - Scaly y\n * @param {number} tx - Translate x\n * @param {number} ty - Translate y\n */\n setTransform(sx = 1, vSkew, hSkew, sy = 1, tx = 0, ty = 0) {\n this.gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height)\n\n this.transform_stack.reset()\n\n this.transform_stack.project(this.gl.canvas.width, this.gl.canvas.height)\n\n this.transform_stack.translate(tx, ty)\n this.transform_stack.scale(sx, sy)\n }\n\n /*\n Rendering\n */\n\n frameStart() {\n this.gl.clear(this.gl.COLOR_BUFFER_BIT)\n }\n\n frameEnd() {\n this.graphics.flush()\n }\n\n /*\n Geometry\n */\n\n /**\n * @param {Object} opts\n * @param {number} opts.x\n * @param {number} opts.y\n * @param {number} opts.width\n * @param {number} opts.height\n * @param {Uint8Array} opts.color - An [r,g,b,a] array (values between 0-255)\n * @returns {void}\n */\n fillRect({ x, y, width, height, color }) {\n this.graphics.drawQuad({ pos: vec2(x, y), width, height, color })\n }\n\n /**\n * @param {Object} opts\n * @param {number} opts.x\n * @param {number} opts.y\n * @param {number} opts.width\n * @param {number} opts.height\n * @param {number} opts.lineWidth\n * @param {Uint8Array} opts.color - An [r,g,b,a] array (values between 0-255)\n * @returns {void}\n */\n strokeRect({ x, y, width, height, lineWidth, color }) {\n let x2 = x + width,\n y2 = y + height\n\n const w = lineWidth / 2\n\n // Top\n this.graphics.drawQuad({\n pos: vec2(x - w, y - w),\n width: lineWidth + x2 - x,\n height: lineWidth,\n color\n })\n\n // Right\n this.graphics.drawQuad({\n pos: vec2(x2 - w, y - w),\n width: lineWidth,\n height: lineWidth + y2 - y,\n color\n })\n\n // Bottom\n this.graphics.drawQuad({\n pos: vec2(x - w, y2 - w),\n width: lineWidth + x2 - x,\n height: lineWidth,\n color\n })\n\n // Left\n this.graphics.drawQuad({\n pos: vec2(x - w, y - w),\n width: lineWidth,\n height: lineWidth + y2 - y,\n color\n })\n }\n\n /**\n * @param {Object} opts\n * @param {import('@pogzul/engine').Shape} opts.shape\n * @param {number} opts.alpha - Opacity of the text\n * @returns {void}\n */\n drawShape({ shape, alpha }) {\n if (!textures.get(shape.id)) {\n textures.set(\n shape.id,\n new Texture({ gl: this.gl, src: canvases[shape.id]?.element })\n )\n }\n\n /*\n Scale and translate the 1 unit quad to dx, dy, dWidth and dHeight\n */\n let matrix = m3.translate(this.transform_stack.current, shape.x, shape.y)\n matrix = m3.scale(matrix, shape.width, shape.height)\n\n this.graphics.drawQuad({\n texture: textures.get(shape.id),\n matrix,\n color: new Uint8Array([255, 255, 255, alpha * 255])\n })\n }\n\n /*\n Text\n */\n\n /**\n * @param {Object} opts\n * @param {import('@pogzul/engine').Text} opts.text - The text layer to draw\n * @param {number} opts.alpha - Opacity of the text\n * @param {Uint8Array} [opts.color]\n * @param {number} [opts.weight]\n * @returns {void}\n */\n drawText({ text, alpha, color, weight }) {\n const font = fonts[text.font]\n\n if (!font) return\n\n if (!textures.get(font.id)) {\n textures.set(\n font.id,\n new Texture({\n gl: this.gl,\n src: font.atlas,\n filter: 'linear'\n })\n )\n }\n\n const { width, height } = textures.get(font.id)\n\n const scale = text.size / font.size\n\n const line_height = font.glyph_height\n\n let lines = []\n\n // Split on newlines and spaces\n // const words = text.value.split(/(?:\\r\\n|\\r|\\n|\\s)/)\n\n /** @param {string} text */\n const measure_text = (text) =>\n text\n .split('')\n .reduce((sum, char) => sum + font.characters[char].xadvance, 0)\n\n let line = {\n text: '',\n width: 0\n }\n\n const words = text.value.split(/(\\r\\n|\\r|\\n|\\s)/)\n\n for (let word of words) {\n if (!word) continue\n\n if (/(\\r\\n|\\r|\\n)/.test(word)) {\n lines.push(line)\n line = { text: '', width: 0 }\n\n continue\n }\n\n const width = measure_text(word)\n\n if ((line.width + width) * scale > text.width) {\n lines.push(line)\n\n line = { text: word, width }\n } else {\n line.text += word\n line.width += width\n }\n }\n\n lines.push(line)\n\n let y = 0\n\n if (text.align === 'middle') {\n y = (text.height / scale - line_height * lines.length) / 2\n } else if (text.align === 'bottom') {\n y = text.height / scale - line_height * lines.length\n }\n\n for (let i = 0; i < lines.length; i++) {\n let x = 0\n\n if (text.justify === 'center') {\n x = (text.width / scale - lines[i].width) / 2\n } else if (text.justify === 'right') {\n x = text.width / scale - lines[i].width\n }\n\n for (let char of lines[i].text) {\n const config = font.characters[char]\n\n this.graphics.drawQuad({\n pos: vec2(\n text.x + (x + config.xoffset) * scale,\n text.y + (y + config.yoffset) * scale\n ),\n width: config.width * scale,\n height: config.height * scale,\n quad: quad(\n config.x / width,\n config.y / height,\n config.width / width,\n config.height / height\n ),\n color:\n color || new Uint8Array([...text.color.slice(0, 3), alpha * 255]),\n texture: textures.get(font.id),\n shader: this.text_shader,\n uniform: {\n u_dist: weight || 0.5\n }\n })\n\n x += config.xadvance\n }\n\n y += line_height\n }\n }\n\n /**\n * @param {Object} opts\n * @param {import('@pogzul/engine').Text} opts.text - The text layer to draw\n * @param {number} opts.alpha - Opacity of the text\n * @param {Uint8Array} opts.color - Opacity of the text\n * @returns {void}\n */\n strokeText({ text, alpha, color }) {\n this.drawText({ text, alpha, color, weight: 0.3 })\n }\n}\n\nconst sdf_fragment_shader = `\nuniform float u_dist;\n\nvec4 color(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {\n vec4 tex_color = texture(tex, uv);\n\n float alpha = step(u_dist, tex_color.a);\n\n return vec4(color.rgb, alpha * color.a);\n}\n`\n\n// const msdf_fragment_shader = `\n// precision highp float;\n\n// uniform float u_dist;\n\n// // configure per font\n// float px_range = 8.0;\n\n// float median(float r, float g, float b) {\n// return max(min(r, g), min(max(r, g), b));\n// }\n\n// float screen_px_range() {\n// vec2 msdf_unit_range = px_range / vec2(textureSize(u_tex, 0));\n\n// vec2 screen_tex_size = vec2(1.0) / fwidth(v_uv);\n\n// return dot(msdf_unit_range, screen_tex_size);\n// }\n\n// vec4 color(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {\n// vec3 tex_color = texture(tex, uv).rgb;\n\n// float signed_dist = median(tex_color.r, tex_color.g, tex_color.b);\n\n// float screen_px_distance = screen_px_range() * (signed_dist - u_dist);\n\n// float alpha = clamp(screen_px_distance + u_dist, 0.0, 1.0);\n\n// return vec4(color.rgb, alpha * color.a);\n// }\n// `\n\nconst msdf_fragment_shader = `\nprecision highp float;\n\nuniform float u_dist;\n\n// configure per font\nfloat px_range = 8.0;\n\nfloat median(float r, float g, float b) {\n return max(min(r, g), min(max(r, g), b));\n}\n\nvec4 color(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {\n // Bilinear sampling of the distance field\n vec3 tex_color = texture(tex, uv).rgb;\n\n // Acquire the signed distance\n float signed_dist = median(tex_color.r, tex_color.g, tex_color.b) - u_dist;\n\n // Weight between inside and outside (anti-aliasing)\n float alpha = clamp(signed_dist / fwidth(signed_dist) + u_dist, 0.0, 1.0);\n\n // Combining the background and foreground color\n return vec4(color.rgb, alpha * color.a);\n}\n`\n\nexport default Context\n","import { Context } from './Context'\n\n/**\n * @param {WebGLRenderingContext} gl\n * @returns {Context}\n */\nexport const initializeWebGL = (gl) => {\n gl.enable(gl.BLEND)\n gl.blendFuncSeparate(\n gl.SRC_ALPHA,\n gl.ONE_MINUS_SRC_ALPHA,\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA\n )\n\n return new Context(gl)\n}\n","import { Pixels, Scene, Shape, Group, config } from '@pogzul/engine'\nimport { update_shape } from '../utilities'\n\n/**\n * @param {{\n * scene: Scene\n * pixels: Pixels\n * layer_ids: number[]\n * }} params\n * @returns {Shape | number | false}\n */\nexport const draw = ({ scene, layer_ids, pixels }) => {\n let [layer_id, ...ids] = layer_ids\n\n // Don't draw on multiple layers at once\n if (ids.length > 0) return false\n\n const layer = layer_id ? scene.entities[layer_id] : null\n\n if (layer && 'pixels' in layer) {\n const normal_pixels = normalize_pixels({ layer, pixels })\n\n if (layer.pixels.size === 0) {\n delete_layers({ scene, layer_ids: [layer_id] })\n\n return layer_id\n } else {\n for (let [x, row] of normal_pixels) {\n for (let [y, color] of row) {\n layer.pixels.set(x, y, color)\n }\n }\n\n if (layer.pixels.size === 0) {\n delete_layers({ scene, layer_ids: [layer_id] })\n return layer_id\n }\n\n update_shape(layer)\n\n return layer\n }\n } else {\n const [shape] = add_shapes({ scene, shapes: [{ pixels }] })\n\n return shape\n }\n}\n\n/**\n * @param {{\n * scene: Scene\n * shapes: ConstructorParameters\n * }} params\n * @returns {Shape[]}\n */\nexport const add_shapes = ({ scene, shapes }) => {\n return [...shapes].flat().map((shape_data) => {\n const shape = new Shape({ ...shape_data, scene })\n\n scene.entities[shape.id] = shape\n\n scene.layer_ids = [...scene.layer_ids, shape.id]\n\n return shape\n })\n}\n\n/**\n * @param {{\n * scene: Scene\n * layer_ids: number[]\n * }} params\n * @returns {number[]}\n */\nexport const delete_layers = ({ scene, layer_ids }) => {\n /** @type {number[]} [description] */\n let deleted_ids = []\n\n for (let id of layer_ids.flat()) {\n delete scene.entities[id]\n\n deleted_ids.push(id)\n }\n\n scene.layer_ids = scene.layer_ids.filter((id) => !deleted_ids.includes(id))\n\n const groups = Object.values(scene.entities).filter(is_group)\n\n for (let group of groups) {\n group.layer_ids = group.layer_ids.filter((id) => !deleted_ids.includes(id))\n }\n\n return deleted_ids\n}\n\n/**\n * @param {any} item\n * @returns {item is Group}\n */\nconst is_group = (item) => item instanceof Group\n\n/**\n * Takes an object of grid-normalized pixels and returns the layer-normalized\n * pixels.\n *\n * @param {Object} opts\n * @param {Shape} opts.layer\n * @param {Pixels} opts.pixels\n */\nconst normalize_pixels = ({ layer, pixels }) => {\n let normal_pixels = new Pixels()\n\n for (let [x, row] of pixels) {\n for (let [y, color] of row) {\n let nX = Number(x) - layer.x / config.pixel_size,\n nY = Number(y) - layer.y / config.pixel_size\n\n normal_pixels.set(nX, nY, pixels.get(x, y) || null, true)\n }\n }\n\n return normal_pixels\n}\n","/**\n * @param {import('./Console.js').Console} console - The console to use for\n * logging\n * @param {String} script - The script to evaluate\n * @param {Object} scope - An object of params to include in the evaluation\n * scope\n * @param {Object} context - The context (i.e., 'this') to evaluate with\n */\n\nexport async function evaluate(console) {\n try {\n const AsyncFunction = Object.getPrototypeOf(\n async function () {}\n ).constructor\n\n const fn = new AsyncFunction(\n 'console',\n ...Object.keys(arguments[2]),\n `'use strict'; ${arguments[1]};`\n )\n\n return await fn.call(arguments[3], console, ...Object.values(arguments[2]))\n } catch (exception) {\n if (exception.name === 'StopExecutionError') return\n\n return console.error(\n `${exception.name} (line ${exception.line - 1}): ${exception.message}`\n )\n }\n}\n","/** @param {import('./Runtime').Runtime} runtime */\nexport function Console(runtime) {\n const createMessage = (values) => {\n let message = []\n\n for (let value of [values].flat()) {\n if (typeof value === 'function') {\n const { name } = (value.prototype || value).constructor\n\n if (name) {\n message.push(`${name} {}`)\n } else {\n message.push(String(value))\n }\n } else if (typeof value === 'undefined') {\n message.push(String(value))\n } else if (typeof value === 'string') {\n message.push(value)\n } else {\n message.push(JSON.stringify(value, null, 2))\n }\n }\n\n return message.join(' ')\n }\n\n const log =\n (fn) =>\n (...values) => {\n const message = createMessage(values)\n\n runtime.terminal?.append(fn.call(this, message))\n\n return true\n }\n\n /*\n Logging functions\n */\n\n this.log = log((message) => {\n try {\n if (typeof JSON.parse(message) === 'string') {\n return `

${message}
`\n } else {\n return `
${message}
` // highlightJson\n }\n } catch {\n return `
${message}
`\n }\n })\n\n this.success = log(\n (message) =>\n `
${message}
`\n )\n\n this.info = log(\n (message) =>\n `
${message}
`\n )\n this.debug = this.info\n\n this.warn = log(\n (warning) =>\n `
${warning}
`\n )\n\n this.error = log(\n (error) =>\n `
${error}
`\n )\n\n this.clear = () => runtime.terminal?.clear()\n\n // this.type = (value, { speed = 11 /* ms */ } = {}) => {\n // const message = createMessage(value)\n\n // let index = 0\n\n // const type = () => {\n // if (message[index]) {\n // runtime.terminal.append(message[index++])\n\n // if (runtime.running) setTimeout(() => type(), speed)\n // }\n // }\n\n // type(0)\n // }\n\n return this\n}\n","export class StopExecutionError extends Error {\n /** @param {string} message */\n constructor(message = '') {\n super(message)\n this.name = 'StopExecutionError'\n }\n}\n","import * as engine from '../functions'\nimport { create_layers_proxy } from '../functions/internal'\nimport { StopExecutionError } from './errors'\n\n/**\n * @param {Object} opts\n * @param {import('./Runtime').Runtime} opts.runtime\n * @this {Record}\n */\nexport function Scope({ runtime }) {\n /* Remove global keys */\n for (let key in window) {\n if (key.startsWith('__')) continue // dev keys...\n\n this[key] = undefined\n }\n\n /* Assign the game engine */\n for (let key in engine) {\n this[key] = engine[key].bind(runtime)\n }\n\n this.scenes = runtime.scenes\n this.scene = runtime.active_scene\n this.layers = create_layers_proxy(this.scene)\n\n this.exit = () => {\n runtime.stop()\n throw new StopExecutionError()\n }\n\n Object.assign(this, runtime.console)\n\n this.dt = runtime.dt\n\n this.window = runtime.window\n this.global = this.window\n this.globalThis = undefined\n\n this.fetch = window.fetch\n}\n","import { get } from 'svelte/store'\nimport { evaluate } from './evaluate.js'\nimport { Console } from './Console.js'\nimport { Scope } from './Scope.js'\nimport { addEventListener, removeEventListener } from '../functions'\nimport { SUPPORTED_EVENTS } from '../functions/events/config'\nimport { config, pick, is_running, last_entity_positions } from '@pogzul/engine'\nimport { StopExecutionError } from './errors'\n\nexport class Runtime {\n /** @type {import('../functions/internal').Callback[]} */\n effects = []\n\n /** @type {Record<'keypress' | 'keydown' | 'keyup', any[]>} */\n keyboard_callbacks = create_keyboard_callbacks()\n\n /** @type {Record} */\n keydown_events = {}\n\n /**\n * @type {Partial<\n * Record>\n * >}\n */\n event_listeners = {}\n\n is_running = false\n\n /** @type {number} */\n previous_frame_s = 0\n\n /** @type {Function} */\n render = () => {}\n\n /** @type {Terminal | undefined} */\n terminal\n\n /**\n * @type {import('svelte/store').Writable<\n * import('@pogzul/engine').Project\n * >}\n */\n document\n\n /** @type {import('yjs').Text} */\n ytext\n\n /** @type {any} */\n state\n\n /** @type {HTMLElement} */\n artboard_target\n\n /**\n * @param {Pick<\n * Runtime,\n * 'render' | 'terminal' | 'document' | 'state' | 'artboard_target'\n * >} config\n */\n constructor(config) {\n Object.assign(\n this,\n pick(\n config,\n 'render',\n 'terminal',\n 'document',\n 'ytext',\n 'state',\n 'artboard_target'\n )\n )\n\n this.console = new Console(this)\n\n this.frame = handle_errors.call(this, this.frame.bind(this))\n this.execute = handle_errors.call(this, this.execute.bind(this))\n this.dt = this.dt.bind(this)\n\n let is_running_initialized = false\n is_running.subscribe((new_is_running) => {\n if (!is_running_initialized) return (is_running_initialized = true)\n\n if (new_is_running) {\n this.start()\n this.execute(this.active_file)\n } else {\n this.stop()\n }\n })\n }\n\n dt() {\n return Date.now() / 1000 - this.previous_frame_s\n }\n\n start() {\n this.terminal?.clear()\n is_running.set((this.is_running = true))\n this.previous_frame_s = 0\n requestAnimationFrame(this.frame)\n }\n\n stop() {\n is_running.set((this.is_running = false))\n\n for (let event in this.event_listeners) {\n for (let listener in this.event_listeners[event]) {\n removeEventListener.call(this, event, listener)\n }\n }\n }\n\n get scenes() {\n const { scenes, scene_ids } = get(this.document)\n\n return scene_ids.map((id) => scenes[id])\n }\n\n /** @returns {import('@pogzul/engine').Scene} */\n get active_scene() {\n const { scenes } = get(this.document)\n\n const [active_scene_id] = get(this.state).active_scene_ids\n\n return scenes[active_scene_id]\n }\n\n update_entity_positions() {\n const scene = this.active_scene\n\n const positions = new Map()\n\n for (const id in scene.entities) {\n positions.set(Number(id), scene.entities[id].position)\n }\n\n last_entity_positions.set(scene.id, positions)\n }\n\n set active_scene(scene) {\n this.state.update((old_state) => ({\n ...old_state,\n active_scene_ids: [scene.id]\n }))\n }\n\n get active_file() {\n return this.ytext.toString()\n }\n\n get window() {\n return new RuntimeWindow(this)\n }\n\n /** @param {string} script */\n async execute(script) {\n this.reset()\n\n addEventListener.call(this, 'keydown', (evt) => {\n // Don't run if the key is currently pressed\n if (!this.keydown_events[evt.key]) {\n for (let cb of this.keyboard_callbacks['keypress']) {\n cb.call(evt)\n }\n }\n\n this.keydown_events[evt.key] = evt\n })\n\n addEventListener.call(this, 'keyup', (evt) => {\n // Don't run unless the key is currently pressed\n if (this.keydown_events[evt.key]) {\n for (let cb of this.keyboard_callbacks['keyup']) {\n cb.call(evt)\n }\n }\n\n delete this.keydown_events[evt.key]\n })\n\n const result = await evaluate(\n this.console,\n script,\n new Scope({ runtime: this }),\n {}\n )\n\n if (typeof result !== 'undefined') this.stop()\n }\n\n reset() {\n this.keyboard_callbacks = create_keyboard_callbacks()\n this.keydown_events = {}\n this.event_listeners = {}\n this.update_entity_positions()\n this.effects = []\n }\n\n /** @param {number} _elapsed_ms */\n frame(_elapsed_ms) {\n if (!this.is_running) return\n\n const now = Date.now() / 1000\n\n for (let key in this.keydown_events) {\n for (let cb of this.keyboard_callbacks['keydown']) {\n cb.call(this.keydown_events[key])\n }\n }\n\n // this.inputCallbacks.flush();\n // Input\n // Updates\n // Effects\n\n const delta_s = now - (this.previous_frame_s || now)\n for (let entity of Object.values(this.active_scene.entities)) {\n // entity.update(delta_s)\n }\n\n for (let i = 0, length = this.effects.length; i < length; i++) {\n this.effects[i].call(this)\n }\n\n this.update_entity_positions()\n\n this.render()\n\n this.previous_frame_s = now\n\n requestAnimationFrame(this.frame)\n }\n}\n\n/**\n * @param {function} func\n * @this {Runtime}\n */\nfunction handle_errors(func) {\n return (...args) => {\n try {\n return func(...args)\n } catch (exception) {\n if (\n exception instanceof Error &&\n !(exception instanceof StopExecutionError)\n )\n this.console.error(`${exception.name}: ${exception.message}`)\n }\n }\n}\n\nconst create_keyboard_callbacks = () => ({\n keypress: [],\n keydown: [],\n keyup: []\n})\n\nexport class RuntimeWindow {\n /** @param {Runtime} runtime */\n constructor(runtime) {\n this.name = 'Pogzul'\n this.width = config.canvas_size\n this.height = config.canvas_size\n this.pixel_size = config.pixel_size\n this.console = runtime.console\n }\n}\n\nexport default Runtime\n","import { config, Group, Shape, Text } from '@pogzul/engine'\n\n/**\n * @param {object} opts\n * @param {Shape | Group | Text} opts.layer\n * @param {import('../../webgl').Context} opts.ctx - Our WebGL rendering context\n * @param {ArtboardState} opts.state\n * @param {boolean} opts.is_hovering\n * @param {boolean} opts.is_active\n * @param {number} opts.alpha\n */\nexport const renderLayer = ({ layer, ...params }) => {\n if ('pixels' in layer) return renderShape({ shape: layer, ...params })\n if ('font' in layer) return renderText({ text: layer, ...params })\n\n // return renderShape({ layer, ...params })\n}\n\nexport const OUTLINE_COLOR = new Uint8Array([56, 189, 248, 255]),\n HOVER_PADDING = 2\n\n/* Shape layers */\n\n/**\n * @param {object} opts\n * @param {import('@pogzul/engine').Shape} opts.shape\n * @param {import('../../webgl').Context} opts.ctx - Our WebGL rendering context\n * @param {ArtboardState} opts.state\n * @param {boolean} opts.is_hovering\n * @param {boolean} opts.is_active\n * @param {number} opts.alpha\n */\nconst renderShape = ({\n shape,\n ctx,\n state,\n is_hovering,\n is_active,\n alpha = shape.opacity\n}) => {\n /** Or hovering over a different layer? */\n const is_hovering_other = !is_hovering && state.hovering_layer_ids.length > 0\n\n /*\n De-emphasize layer for clarity\n */\n // Hovering over another layer\n if (is_hovering_other) {\n alpha = 0.7\n }\n\n if (shape.is_hidden) {\n if (!is_active) return\n\n alpha = 0.7\n }\n\n if (is_hovering && !is_active) {\n renderShapeOutline({ shape, ctx })\n }\n\n ctx.drawShape({ shape, alpha })\n}\n\nconst renderShapeOutline = ({ shape, ctx }) => {\n const scale = 1\n for (let [x, row] of shape.pixels) {\n for (let [y, color] of row) {\n if (!color) continue\n\n ctx.fillRect({\n x: shape.x + x * config.pixel_size * scale - HOVER_PADDING,\n y: shape.y + y * config.pixel_size * scale - HOVER_PADDING,\n width: config.pixel_size * scale + 2 * HOVER_PADDING,\n height: config.pixel_size * scale + 2 * HOVER_PADDING,\n color: OUTLINE_COLOR\n })\n }\n }\n}\n\n/* Text layers */\n\nconst renderText = ({\n text,\n ctx,\n state,\n is_hovering,\n is_active,\n alpha = text.opacity\n}) => {\n /** Or hovering over a different layer? */\n const is_hovering_other = !is_hovering && state.hovering_layer_ids.length > 0\n\n /*\n De-emphasize layer for clarity\n */\n // Hovering over another layer\n if (is_hovering_other) {\n alpha = 0.7\n }\n\n if (text.is_hidden) {\n if (!is_active) return\n\n alpha = 0.7\n }\n\n if (is_hovering && !is_active) {\n ctx.strokeText({ text, color: OUTLINE_COLOR })\n }\n\n ctx.drawText({ text, alpha })\n}\n\n// const renderTextOutline = ({ layer, ctx }) => {\n// const font = fonts[layer.fontFamily]\n\n// if (!font) return\n\n// return ctx.strokeText({\n// layer,\n// font,\n// color: OUTLINE_COLOR,\n// lineWidth: BOUNDARY_WIDTH\n// })\n// }\n","import { renderLayer, OUTLINE_COLOR } from './renderLayer.js'\n\n/**\n * Render a scene and all of its layers.\n *\n * @param {Object} opts\n * @param {import('../../webgl').Context} opts.ctx - Our WebGL rendering context\n * @param {import('@pogzul/engine').Scene} opts.scene\n * @param {ArtboardState} opts.state\n */\nexport const renderScene = ({ ctx, scene, state }) => {\n for (let id of scene.layer_ids) {\n const layer = scene.entities[id]\n\n const is_hovering = state.hovering_layer_ids.includes(layer.id),\n is_active = state.active_layer_ids.includes(layer.id)\n\n let alpha = 1\n\n if ('layer_ids' in layer) {\n if (layer.is_hidden) {\n if (!is_active) return\n\n alpha = 0.7\n }\n\n for (let id of layer.layer_ids) {\n renderLayer({\n layer: scene.entities[id],\n ctx,\n state,\n is_active,\n is_hovering,\n alpha\n })\n }\n\n continue\n }\n\n renderLayer({ layer, ctx, state, is_active, is_hovering, alpha })\n }\n\n if (state.active_layer_ids.length)\n renderGroupedLayerBoundary({ ctx, scene, state })\n}\n\nconst BOUNDARY_WIDTH = 2,\n BOUNDARY_PADDING = 2\n/**\n * @param {Object} opts\n * @param {import('../../webgl').Context} opts.ctx - Our WebGL rendering context\n * @param {import('@pogzul/engine').Scene} opts.scene\n * @param {State} opts.state\n */\nconst renderGroupedLayerBoundary = ({ ctx, scene, state }) => {\n const layers = state.active_layer_ids\n .map((id) => scene.entities[id])\n .filter(Boolean)\n\n if (!layers.length) return\n\n const temp_layer = compute_layers_boundary(layers)\n\n ctx.strokeRect({\n x: temp_layer.x - BOUNDARY_PADDING,\n y: temp_layer.y - BOUNDARY_PADDING,\n width: temp_layer.width + 2 * BOUNDARY_PADDING,\n height: temp_layer.height + 2 * BOUNDARY_PADDING,\n color: OUTLINE_COLOR,\n lineWidth: BOUNDARY_WIDTH\n })\n}\n\n/** @param {import('@pogzul/engine').Entity[]} layers */\nexport const compute_layers_boundary = ([first_layer, ...layers]) => {\n let { x, y, width, height } = first_layer\n\n const scale = 1\n\n let x2 = x + width * scale,\n y2 = y + height * scale\n\n for (let layer of layers) {\n if (layer.x < x) x = layer.x\n if (layer.y < y) y = layer.y\n\n let _x2 = layer.x + layer.width * scale,\n _y2 = layer.y + layer.height * scale\n\n if (_x2 > x2) x2 = _x2\n if (_y2 > y2) y2 = _y2\n }\n\n return { x, y, width: x2 - x, height: y2 - y }\n}\n\n/*\n Rendering functions for CanvasRenderingContext2D\n*/\n\n// export const renderTextCanvas2D = ({ ctx, layer }) => {\n// ctx.textBaseline = 'hanging'\n// ctx.font = `${layer.fontSize}px ${layer.fontFamily}`\n// ctx.fillStyle = rgbaArrayToString(layer.color)\n\n// ctx.fillText(layer.value, 0, 0)\n// }\n","import { config, rgb_array_to_string } from '@pogzul/engine'\n/*\n renderPixels\n\n Renders a Pixels object to the canvas\n*/\n\nconst ERASE_COLOR = new Uint8Array([0, 0, 0, 128 /* 50% opaque */])\n\n/**\n * @param {object} params\n * @param {import('@pogzul/engine').Pixels} params.pixels\n * @param {import('../../webgl').Context} params.ctx\n * @param {boolean} [params.is_tool]\n * @param {number} [params.alpha]\n */\nexport const renderPixels = ({ pixels, ctx, is_tool = false, alpha = 1 }) => {\n for (let [x, row] of pixels) {\n for (let [y, pixel_color] of row) {\n let color = pixel_color\n ? new Uint8Array([...pixel_color, alpha * 255 /* Add alpha channel */])\n : is_tool\n ? ERASE_COLOR\n : new Uint8Array([0, 0, 0, 0])\n\n ctx.fillRect({\n x: x * config.pixel_size,\n y: y * config.pixel_size,\n width: config.pixel_size,\n height: config.pixel_size,\n color\n })\n }\n }\n}\n\nexport const renderPixelsCanvas2D = ({ ctx, pixels }) => {\n for (let [x, row] of pixels) {\n for (let [y, color] of row) {\n ctx.fillStyle = rgb_array_to_string(color)\n\n ctx.fillRect(\n x * config.pixel_size,\n y * config.pixel_size,\n config.pixel_size,\n config.pixel_size\n )\n }\n }\n}\n","/*!!\n * Canvas 2 Svg v1.0.15\n * A low level canvas to SVG converter. Uses a mock canvas context to build an SVG document.\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n * Author:\n * Kerry Liu\n *\n * Copyright (c) 2014 Gliffy Inc.\n */\n\n;(function() {\n \"use strict\";\n\n var STYLES, ctx, CanvasGradient, CanvasPattern, namedEntities;\n\n //helper function to format a string\n function format(str, args) {\n var keys = Object.keys(args), i;\n for (i=0; i 1) {\n options = defaultOptions;\n options.width = arguments[0];\n options.height = arguments[1];\n } else if( !o ) {\n options = defaultOptions;\n } else {\n options = o;\n }\n\n if(!(this instanceof ctx)) {\n //did someone call this without new?\n return new ctx(options);\n }\n\n //setup options\n this.width = options.width || defaultOptions.width;\n this.height = options.height || defaultOptions.height;\n this.enableMirroring = options.enableMirroring !== undefined ? options.enableMirroring : defaultOptions.enableMirroring;\n\n this.canvas = this; ///point back to this instance!\n this.__document = options.document || document;\n this.__canvas = this.__document.createElement(\"canvas\");\n this.__ctx = this.__canvas.getContext(\"2d\");\n\n this.__setDefaultStyles();\n this.__stack = [this.__getStyleState()];\n this.__groupStack = [];\n\n //the root svg element\n this.__root = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this.__root.setAttribute(\"version\", 1.1);\n this.__root.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n this.__root.setAttributeNS(\"http://www.w3.org/2000/xmlns/\", \"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n this.__root.setAttribute(\"width\", this.width);\n this.__root.setAttribute(\"height\", this.height);\n\n //make sure we don't generate the same ids in defs\n this.__ids = {};\n\n //defs tag\n this.__defs = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this.__root.appendChild(this.__defs);\n\n //also add a group child. the svg element can't use the transform attribute\n this.__currentElement = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n this.__root.appendChild(this.__currentElement);\n };\n\n\n /**\n * Creates the specified svg element\n * @private\n */\n ctx.prototype.__createElement = function (elementName, properties, resetFill) {\n if (typeof properties === \"undefined\") {\n properties = {};\n }\n\n var element = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", elementName),\n keys = Object.keys(properties), i, key;\n if(resetFill) {\n //if fill or stroke is not specified, the svg element should not display. By default SVG's fill is black.\n element.setAttribute(\"fill\", \"none\");\n element.setAttribute(\"stroke\", \"none\");\n }\n for(i=0; i 0) {\n var group = this.__createElement(\"g\");\n parent.appendChild(group);\n this.__currentElement = group;\n }\n\n var transform = this.__currentElement.getAttribute(\"transform\");\n if(transform) {\n transform += \" \";\n } else {\n transform = \"\";\n }\n transform += t;\n this.__currentElement.setAttribute(\"transform\", transform);\n };\n\n /**\n * scales the current element\n */\n ctx.prototype.scale = function(x, y) {\n if(y === undefined) {\n y = x;\n }\n this.__addTransform(format(\"scale({x},{y})\", {x:x, y:y}));\n };\n\n /**\n * rotates the current element\n */\n ctx.prototype.rotate = function(angle){\n var degrees = (angle * 180 / Math.PI);\n this.__addTransform(format(\"rotate({angle},{cx},{cy})\", {angle:degrees, cx:0, cy:0}));\n };\n\n /**\n * translates the current element\n */\n ctx.prototype.translate = function(x, y){\n this.__addTransform(format(\"translate({x},{y})\", {x:x,y:y}));\n };\n\n /**\n * applies a transform to the current element\n */\n ctx.prototype.transform = function(a, b, c, d, e, f){\n this.__addTransform(format(\"matrix({a},{b},{c},{d},{e},{f})\", {a:a, b:b, c:c, d:d, e:e, f:f}));\n };\n\n /**\n * Create a new Path Element\n */\n ctx.prototype.beginPath = function(){\n var path, parent;\n\n // Note that there is only one current default path, it is not part of the drawing state.\n // See also: https://html.spec.whatwg.org/multipage/scripting.html#current-default-path\n this.__currentDefaultPath = \"\";\n this.__currentPosition = {};\n\n path = this.__createElement(\"path\", {}, true);\n parent = this.__closestGroupOrSvg();\n parent.appendChild(path);\n this.__currentElement = path;\n };\n\n /**\n * Helper function to apply currentDefaultPath to current path element\n * @private\n */\n ctx.prototype.__applyCurrentDefaultPath = function() {\n if(this.__currentElement.nodeName === \"path\") {\n var d = this.__currentDefaultPath;\n this.__currentElement.setAttribute(\"d\", d);\n } else {\n throw new Error(\"Attempted to apply path command to node \" + this.__currentElement.nodeName);\n }\n };\n\n /**\n * Helper function to add path command\n * @private\n */\n ctx.prototype.__addPathCommand = function(command){\n this.__currentDefaultPath += \" \";\n this.__currentDefaultPath += command;\n };\n\n /**\n * Adds the move command to the current path element,\n * if the currentPathElement is not empty create a new path element\n */\n ctx.prototype.moveTo = function(x,y){\n if(this.__currentElement.nodeName !== \"path\") {\n this.beginPath();\n }\n\n // creates a new subpath with the given point\n this.__currentPosition = {x: x, y: y};\n this.__addPathCommand(format(\"M {x} {y}\", {x:x, y:y}));\n };\n\n /**\n * Closes the current path\n */\n ctx.prototype.closePath = function(){\n this.__addPathCommand(\"Z\");\n };\n\n /**\n * Adds a line to command\n */\n ctx.prototype.lineTo = function(x, y){\n this.__currentPosition = {x: x, y: y};\n if (this.__currentDefaultPath.indexOf('M') > -1) {\n this.__addPathCommand(format(\"L {x} {y}\", {x:x, y:y}));\n } else {\n this.__addPathCommand(format(\"M {x} {y}\", {x:x, y:y}));\n }\n };\n\n /**\n * Add a bezier command\n */\n ctx.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.__currentPosition = {x: x, y: y};\n this.__addPathCommand(format(\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\",\n {cp1x:cp1x, cp1y:cp1y, cp2x:cp2x, cp2y:cp2y, x:x, y:y}));\n };\n\n /**\n * Adds a quadratic curve to command\n */\n ctx.prototype.quadraticCurveTo = function(cpx, cpy, x, y){\n this.__currentPosition = {x: x, y: y};\n this.__addPathCommand(format(\"Q {cpx} {cpy} {x} {y}\", {cpx:cpx, cpy:cpy, x:x, y:y}));\n };\n\n\n /**\n * Return a new normalized vector of given vector\n */\n var normalize = function(vector) {\n var len = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);\n return [vector[0] / len, vector[1] / len];\n };\n\n /**\n * Adds the arcTo to the current path\n *\n * @see http://www.w3.org/TR/2015/WD-2dcontext-20150514/#dom-context-2d-arcto\n */\n ctx.prototype.arcTo = function(x1, y1, x2, y2, radius) {\n // Let the point (x0, y0) be the last point in the subpath.\n var x0 = this.__currentPosition && this.__currentPosition.x;\n var y0 = this.__currentPosition && this.__currentPosition.y;\n\n // First ensure there is a subpath for (x1, y1).\n if (typeof x0 == \"undefined\" || typeof y0 == \"undefined\") {\n return;\n }\n\n // Negative values for radius must cause the implementation to throw an IndexSizeError exception.\n if (radius < 0) {\n throw new Error(\"IndexSizeError: The radius provided (\" + radius + \") is negative.\");\n }\n\n // If the point (x0, y0) is equal to the point (x1, y1),\n // or if the point (x1, y1) is equal to the point (x2, y2),\n // or if the radius radius is zero,\n // then the method must add the point (x1, y1) to the subpath,\n // and connect that point to the previous point (x0, y0) by a straight line.\n if (((x0 === x1) && (y0 === y1))\n || ((x1 === x2) && (y1 === y2))\n || (radius === 0)) {\n this.lineTo(x1, y1);\n return;\n }\n\n // Otherwise, if the points (x0, y0), (x1, y1), and (x2, y2) all lie on a single straight line,\n // then the method must add the point (x1, y1) to the subpath,\n // and connect that point to the previous point (x0, y0) by a straight line.\n var unit_vec_p1_p0 = normalize([x0 - x1, y0 - y1]);\n var unit_vec_p1_p2 = normalize([x2 - x1, y2 - y1]);\n if (unit_vec_p1_p0[0] * unit_vec_p1_p2[1] === unit_vec_p1_p0[1] * unit_vec_p1_p2[0]) {\n this.lineTo(x1, y1);\n return;\n }\n\n // Otherwise, let The Arc be the shortest arc given by circumference of the circle that has radius radius,\n // and that has one point tangent to the half-infinite line that crosses the point (x0, y0) and ends at the point (x1, y1),\n // and that has a different point tangent to the half-infinite line that ends at the point (x1, y1), and crosses the point (x2, y2).\n // The points at which this circle touches these two lines are called the start and end tangent points respectively.\n\n // note that both vectors are unit vectors, so the length is 1\n var cos = (unit_vec_p1_p0[0] * unit_vec_p1_p2[0] + unit_vec_p1_p0[1] * unit_vec_p1_p2[1]);\n var theta = Math.acos(Math.abs(cos));\n\n // Calculate origin\n var unit_vec_p1_origin = normalize([\n unit_vec_p1_p0[0] + unit_vec_p1_p2[0],\n unit_vec_p1_p0[1] + unit_vec_p1_p2[1]\n ]);\n var len_p1_origin = radius / Math.sin(theta / 2);\n var x = x1 + len_p1_origin * unit_vec_p1_origin[0];\n var y = y1 + len_p1_origin * unit_vec_p1_origin[1];\n\n // Calculate start angle and end angle\n // rotate 90deg clockwise (note that y axis points to its down)\n var unit_vec_origin_start_tangent = [\n -unit_vec_p1_p0[1],\n unit_vec_p1_p0[0]\n ];\n // rotate 90deg counter clockwise (note that y axis points to its down)\n var unit_vec_origin_end_tangent = [\n unit_vec_p1_p2[1],\n -unit_vec_p1_p2[0]\n ];\n var getAngle = function(vector) {\n // get angle (clockwise) between vector and (1, 0)\n var x = vector[0];\n var y = vector[1];\n if (y >= 0) { // note that y axis points to its down\n return Math.acos(x);\n } else {\n return -Math.acos(x);\n }\n };\n var startAngle = getAngle(unit_vec_origin_start_tangent);\n var endAngle = getAngle(unit_vec_origin_end_tangent);\n\n // Connect the point (x0, y0) to the start tangent point by a straight line\n this.lineTo(x + unit_vec_origin_start_tangent[0] * radius,\n y + unit_vec_origin_start_tangent[1] * radius);\n\n // Connect the start tangent point to the end tangent point by arc\n // and adding the end tangent point to the subpath.\n this.arc(x, y, radius, startAngle, endAngle);\n };\n\n /**\n * Sets the stroke property on the current element\n */\n ctx.prototype.stroke = function(){\n if(this.__currentElement.nodeName === \"path\") {\n this.__currentElement.setAttribute(\"paint-order\", \"fill stroke markers\");\n }\n this.__applyCurrentDefaultPath();\n this.__applyStyleToCurrentElement(\"stroke\");\n };\n\n /**\n * Sets fill properties on the current element\n */\n ctx.prototype.fill = function(){\n if(this.__currentElement.nodeName === \"path\") {\n this.__currentElement.setAttribute(\"paint-order\", \"stroke fill markers\");\n }\n this.__applyCurrentDefaultPath();\n this.__applyStyleToCurrentElement(\"fill\");\n };\n\n /**\n * Adds a rectangle to the path.\n */\n ctx.prototype.rect = function(x, y, width, height){\n if(this.__currentElement.nodeName !== \"path\") {\n this.beginPath();\n }\n this.moveTo(x, y);\n this.lineTo(x+width, y);\n this.lineTo(x+width, y+height);\n this.lineTo(x, y+height);\n this.lineTo(x, y);\n this.closePath();\n };\n\n\n /**\n * adds a rectangle element\n */\n ctx.prototype.fillRect = function(x, y, width, height){\n var rect, parent;\n rect = this.__createElement(\"rect\", {\n x : x,\n y : y,\n width : width,\n height : height\n }, true);\n parent = this.__closestGroupOrSvg();\n parent.appendChild(rect);\n this.__currentElement = rect;\n this.__applyStyleToCurrentElement(\"fill\");\n };\n\n /**\n * Draws a rectangle with no fill\n * @param x\n * @param y\n * @param width\n * @param height\n */\n ctx.prototype.strokeRect = function(x, y, width, height){\n var rect, parent;\n rect = this.__createElement(\"rect\", {\n x : x,\n y : y,\n width : width,\n height : height\n }, true);\n parent = this.__closestGroupOrSvg();\n parent.appendChild(rect);\n this.__currentElement = rect;\n this.__applyStyleToCurrentElement(\"stroke\");\n };\n\n\n /**\n * \"Clears\" a canvas by just drawing a white rectangle in the current group.\n */\n ctx.prototype.clearRect = function(x, y, width, height) {\n var rect, parent = this.__closestGroupOrSvg();\n rect = this.__createElement(\"rect\", {\n x : x,\n y : y,\n width : width,\n height : height,\n fill : \"#FFFFFF\"\n }, true);\n parent.appendChild(rect);\n };\n\n /**\n * Adds a linear gradient to a defs tag.\n * Returns a canvas gradient object that has a reference to it's parent def\n */\n ctx.prototype.createLinearGradient = function(x1, y1, x2, y2){\n var grad = this.__createElement(\"linearGradient\", {\n id : randomString(this.__ids),\n x1 : x1+\"px\",\n x2 : x2+\"px\",\n y1 : y1+\"px\",\n y2 : y2+\"px\",\n \"gradientUnits\" : \"userSpaceOnUse\"\n }, false);\n this.__defs.appendChild(grad);\n return new CanvasGradient(grad, this);\n };\n\n /**\n * Adds a radial gradient to a defs tag.\n * Returns a canvas gradient object that has a reference to it's parent def\n */\n ctx.prototype.createRadialGradient = function(x0, y0, r0, x1, y1, r1){\n var grad = this.__createElement(\"radialGradient\", {\n id : randomString(this.__ids),\n cx : x1+\"px\",\n cy : y1+\"px\",\n r : r1+\"px\",\n fx : x0+\"px\",\n fy : y0+\"px\",\n \"gradientUnits\" : \"userSpaceOnUse\"\n }, false);\n this.__defs.appendChild(grad);\n return new CanvasGradient(grad, this);\n\n };\n\n /**\n * Parses the font string and returns svg mapping\n * @private\n */\n ctx.prototype.__parseFont = function() {\n var regex = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\\"\\sa-z]+?)\\s*$/i;\n var fontPart = regex.exec( this.font );\n var data = {\n style : fontPart[1] || 'normal',\n size : fontPart[4] || '10px',\n family : fontPart[6] || 'sans-serif',\n weight: fontPart[3] || 'normal',\n decoration : fontPart[2] || 'normal',\n href : null\n };\n\n //canvas doesn't support underline natively, but we can pass this attribute\n if(this.__fontUnderline === \"underline\") {\n data.decoration = \"underline\";\n }\n\n //canvas also doesn't support linking, but we can pass this as well\n if(this.__fontHref) {\n data.href = this.__fontHref;\n }\n\n return data;\n };\n\n /**\n * Helper to link text fragments\n * @param font\n * @param element\n * @return {*}\n * @private\n */\n ctx.prototype.__wrapTextLink = function(font, element) {\n if(font.href) {\n var a = this.__createElement(\"a\");\n a.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", font.href);\n a.appendChild(element);\n return a;\n }\n return element;\n };\n\n /**\n * Fills or strokes text\n * @param text\n * @param x\n * @param y\n * @param action - stroke or fill\n * @private\n */\n ctx.prototype.__applyText = function(text, x, y, action) {\n var font = this.__parseFont(),\n parent = this.__closestGroupOrSvg(),\n textElement = this.__createElement(\"text\", {\n \"font-family\" : font.family,\n \"font-size\" : font.size,\n \"font-style\" : font.style,\n \"font-weight\" : font.weight,\n \"text-decoration\" : font.decoration,\n \"x\" : x,\n \"y\" : y,\n \"text-anchor\": getTextAnchor(this.textAlign),\n \"dominant-baseline\": getDominantBaseline(this.textBaseline)\n }, true);\n\n textElement.appendChild(this.__document.createTextNode(text));\n this.__currentElement = textElement;\n this.__applyStyleToCurrentElement(action);\n parent.appendChild(this.__wrapTextLink(font,textElement));\n };\n\n /**\n * Creates a text element\n * @param text\n * @param x\n * @param y\n */\n ctx.prototype.fillText = function(text, x, y){\n this.__applyText(text, x, y, \"fill\");\n };\n\n /**\n * Strokes text\n * @param text\n * @param x\n * @param y\n */\n ctx.prototype.strokeText = function(text, x, y){\n this.__applyText(text, x, y, \"stroke\");\n };\n\n /**\n * No need to implement this for svg.\n * @param text\n * @return {TextMetrics}\n */\n ctx.prototype.measureText = function(text){\n this.__ctx.font = this.font;\n return this.__ctx.measureText(text);\n };\n\n /**\n * Arc command!\n */\n ctx.prototype.arc = function(x, y, radius, startAngle, endAngle, counterClockwise) {\n // in canvas no circle is drawn if no angle is provided.\n if (startAngle === endAngle) {\n return;\n }\n startAngle = startAngle % (2*Math.PI);\n endAngle = endAngle % (2*Math.PI);\n if(startAngle === endAngle) {\n //circle time! subtract some of the angle so svg is happy (svg elliptical arc can't draw a full circle)\n endAngle = ((endAngle + (2*Math.PI)) - 0.001 * (counterClockwise ? -1 : 1)) % (2*Math.PI);\n }\n var endX = x+radius*Math.cos(endAngle),\n endY = y+radius*Math.sin(endAngle),\n startX = x+radius*Math.cos(startAngle),\n startY = y+radius*Math.sin(startAngle),\n sweepFlag = counterClockwise ? 0 : 1,\n largeArcFlag = 0,\n diff = endAngle - startAngle;\n\n // https://github.com/gliffy/canvas2svg/issues/4\n if(diff < 0) {\n diff += 2*Math.PI;\n }\n\n if(counterClockwise) {\n largeArcFlag = diff > Math.PI ? 0 : 1;\n } else {\n largeArcFlag = diff > Math.PI ? 1 : 0;\n }\n\n this.lineTo(startX, startY);\n this.__addPathCommand(format(\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\",\n {rx:radius, ry:radius, xAxisRotation:0, largeArcFlag:largeArcFlag, sweepFlag:sweepFlag, endX:endX, endY:endY}));\n\n this.__currentPosition = {x: endX, y: endY};\n };\n\n /**\n * Generates a ClipPath from the clip command.\n */\n ctx.prototype.clip = function(){\n var group = this.__closestGroupOrSvg(),\n clipPath = this.__createElement(\"clipPath\"),\n id = randomString(this.__ids),\n newGroup = this.__createElement(\"g\");\n\n group.removeChild(this.__currentElement);\n clipPath.setAttribute(\"id\", id);\n clipPath.appendChild(this.__currentElement);\n\n this.__defs.appendChild(clipPath);\n\n //set the clip path to this group\n group.setAttribute(\"clip-path\", format(\"url(#{id})\", {id:id}));\n\n //clip paths can be scaled and transformed, we need to add another wrapper group to avoid later transformations\n // to this path\n group.appendChild(newGroup);\n\n this.__currentElement = newGroup;\n\n };\n\n /**\n * Draws a canvas, image or mock context to this canvas.\n * Note that all svg dom manipulation uses node.childNodes rather than node.children for IE support.\n * http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage\n */\n ctx.prototype.drawImage = function(){\n //convert arguments to a real array\n var args = Array.prototype.slice.call(arguments),\n image=args[0],\n dx, dy, dw, dh, sx=0, sy=0, sw, sh, parent, svg, defs, group,\n currentElement, svgImage, canvas, context, id;\n\n if(args.length === 3) {\n dx = args[1];\n dy = args[2];\n sw = image.width;\n sh = image.height;\n dw = sw;\n dh = sh;\n } else if(args.length === 5) {\n dx = args[1];\n dy = args[2];\n dw = args[3];\n dh = args[4];\n sw = image.width;\n sh = image.height;\n } else if(args.length === 9) {\n sx = args[1];\n sy = args[2];\n sw = args[3];\n sh = args[4];\n dx = args[5];\n dy = args[6];\n dw = args[7];\n dh = args[8];\n } else {\n throw new Error(\"Inavlid number of arguments passed to drawImage: \" + arguments.length);\n }\n\n parent = this.__closestGroupOrSvg();\n currentElement = this.__currentElement;\n\n if(image instanceof ctx) {\n //canvas2svg mock canvas context. In the future we may want to clone nodes instead.\n //also I'm currently ignoring dw, dh, sw, sh, sx, sy for a mock context.\n svg = image.getSvg();\n defs = svg.childNodes[0];\n while(defs.childNodes.length) {\n id = defs.childNodes[0].getAttribute(\"id\");\n this.__ids[id] = id;\n this.__defs.appendChild(defs.childNodes[0]);\n }\n group = svg.childNodes[1];\n parent.appendChild(group);\n this.__currentElement = group;\n this.translate(dx, dy);\n this.__currentElement = currentElement;\n } else if(image.nodeName === \"CANVAS\" || image.nodeName === \"IMG\") {\n //canvas or image\n svgImage = this.__createElement(\"image\");\n svgImage.setAttribute(\"width\", dw);\n svgImage.setAttribute(\"height\", dh);\n svgImage.setAttribute(\"preserveAspectRatio\", \"none\");\n\n if(sx || sy || sw !== image.width || sh !== image.height) {\n //crop the image using a temporary canvas\n canvas = this.__document.createElement(\"canvas\");\n canvas.width = dw;\n canvas.height = dh;\n context = canvas.getContext(\"2d\");\n context.drawImage(image, sx, sy, sw, sh, 0, 0, dw, dh);\n image = canvas;\n }\n\n svgImage.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\",\n image.nodeName === \"CANVAS\" ? image.toDataURL() : image.getAttribute(\"src\"));\n parent.appendChild(svgImage);\n this.__currentElement = svgImage;\n this.translate(dx, dy);\n this.__currentElement = currentElement;\n }\n };\n\n /**\n * Generates a pattern tag\n */\n ctx.prototype.createPattern = function(image, repetition){\n var pattern = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"pattern\"), id = randomString(this.__ids),\n img;\n pattern.setAttribute(\"id\", id);\n pattern.setAttribute(\"width\", image.width);\n pattern.setAttribute(\"height\", image.height);\n if(image.nodeName === \"CANVAS\" || image.nodeName === \"IMG\") {\n img = this.__document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n img.setAttribute(\"width\", image.width);\n img.setAttribute(\"height\", image.height);\n img.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\",\n image.nodeName === \"CANVAS\" ? image.toDataURL() : image.getAttribute(\"src\"));\n pattern.appendChild(img);\n this.__defs.appendChild(pattern);\n } else if(image instanceof ctx) {\n pattern.appendChild(image.__root.childNodes[1]);\n this.__defs.appendChild(pattern);\n }\n return new CanvasPattern(pattern, this);\n };\n\n /**\n * Not yet implemented\n */\n ctx.prototype.drawFocusRing = function(){};\n ctx.prototype.createImageData = function(){};\n ctx.prototype.getImageData = function(){};\n ctx.prototype.putImageData = function(){};\n ctx.prototype.globalCompositeOperation = function(){};\n ctx.prototype.setTransform = function(){};\n\n //add options for alternative namespace\n if (typeof window === \"object\") {\n window.C2S = ctx;\n }\n\n // CommonJS/Browserify\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n module.exports = ctx;\n }\n\n}());\n","import {\n config,\n rgb_array_to_hex,\n colors_are_equal,\n Group,\n Text,\n Shape\n} from '@pogzul/engine'\n\nimport SvgCanvas from 'canvas2svg'\n\n/** @param {{ scene: import('@pogzul/engine').Scene }} params */\nexport const create_svg = ({ scene }) => {\n const ctx = new SvgCanvas(config.canvas_size, config.canvas_size)\n\n /** @type {(Text | Shape)[]} */\n // @ts-ignore\n const layers = scene.layer_ids.reduce((acc, id) => {\n const entity = scene.entities[id]\n\n if (entity instanceof Group) return [...acc, ...entity.layers]\n\n return [...acc, entity]\n }, [])\n\n for (let layer of layers) {\n if (layer instanceof Text || layer.is_hidden) continue\n\n const polygons = create_polygons({ layer })\n\n for (let polygon of polygons) {\n render({ ctx, polygon, layer })\n }\n }\n\n return ctx.getSerializedSvg()\n}\n\n/** @param {{ layer: import('@pogzul/engine').Shape }} params */\nconst create_polygons = ({ layer }) => {\n const groups = create_pixel_groups({ layer })\n\n return groups.map(create_pixel_group_polygon)\n}\n\n/** @param {{ layer: import('@pogzul/engine').Shape }} params */\nconst create_pixel_groups = ({ layer }) => {\n let groups = []\n\n /** @type {string[]} */\n let filled = []\n\n for (let [x, row] of layer.pixels) {\n for (let [y, _] of row) {\n if (filled.includes(coords(x, y))) continue\n\n const onScreen =\n layer.x + x * config.pixel_size >= 0 &&\n layer.x + x * config.pixel_size < config.canvas_size &&\n layer.y + y * config.pixel_size >= 0 &&\n layer.y + y * config.pixel_size < config.canvas_size\n\n if (!onScreen) continue\n\n const { filled_coords, color } = pixelFill({ layer, x, y })\n\n groups.push({ pixel_coords: filled_coords, color })\n filled.push(...filled_coords)\n }\n }\n\n return groups\n}\n\n/**\n * Recursively fills adjacent pixels starting at x, y\n *\n * @param {Object} params\n * @param {import('@pogzul/engine').Shape} params.layer\n * @param {number} params.x\n * @param {number} params.y\n */\nconst pixelFill = ({ layer, x, y }) => {\n /** @type {string[]} */\n let filled_coords = []\n\n let target_color = layer.pixels.get(x, y)\n\n /**\n * @param {number} x\n * @param {number} y\n */\n const _fill = (x, y) => {\n if (filled_coords.includes(coords(x, y))) return\n\n filled_coords.push(coords(x, y))\n\n const left =\n colors_are_equal(layer.pixels.get(x - 1, y), target_color) &&\n layer.x + x * config.pixel_size > 0\n\n const right =\n colors_are_equal(layer.pixels.get(x + 1, y), target_color) &&\n layer.x + x * config.pixel_size < config.canvas_size - 1\n\n const top =\n colors_are_equal(layer.pixels.get(x, y - 1), target_color) &&\n layer.y + y * config.pixel_size > 0\n\n const bottom =\n colors_are_equal(layer.pixels.get(x, y + 1), target_color) &&\n layer.y + y * config.pixel_size < config.canvas_size - 1\n\n if (left) _fill(x - 1, y)\n if (right) _fill(x + 1, y)\n if (top) _fill(x, y - 1)\n if (bottom) _fill(x, y + 1)\n }\n\n _fill(x, y)\n\n return { filled_coords, color: rgb_array_to_hex(target_color) }\n}\n\n/**\n * Transforms a group of pixels into an array of paths around its perimeter (or\n * inside)\n *\n * @param {Object} params\n * @param {string[]} params.pixel_coords\n * @param {string} params.color\n */\nconst create_pixel_group_polygon = ({ pixel_coords, color }) => {\n let edges = get_edges({ pixel_coords })\n\n /** @type {number[][]} */\n let paths = []\n\n const createPath = () => {\n let path_vertices = new Set([edges[0].start, edges[0].finish])\n\n while (edges.length > 0) {\n const last_vertex = Array.from(path_vertices).pop()\n\n const next_edge_index = edges.findIndex((edge) => {\n const overlapping =\n (last_vertex.x === edge.start.x && last_vertex.y === edge.start.y) ||\n (last_vertex.x === edge.finish.x && last_vertex.y === edge.finish.y)\n\n return overlapping\n })\n\n // Edges don't connect (e.g. a hollow polygon, like a doughnut)\n if (next_edge_index == -1) break\n\n path_vertices.add(edges[next_edge_index].start)\n path_vertices.add(edges[next_edge_index].finish)\n\n edges.splice(next_edge_index, 1)\n }\n\n let path = Array.from(path_vertices)\n\n // Add starting point again to complete path\n paths.push([...path, path[0]])\n\n if (edges.length > 0) createPath()\n }\n\n createPath()\n\n return { paths, color }\n}\n\n/** @param {{ pixel_coords: string[] }} params */\nconst get_edges = ({ pixel_coords }) => {\n const horizontal_edges = get_horizontal_edges({ pixel_coords })\n\n const vertical_edges = get_vertical_edges({ horizontal_edges })\n\n return [...horizontal_edges, ...vertical_edges]\n}\n\n/** @param {{ pixel_coords: string[] }} params */\nconst get_horizontal_edges = ({ pixel_coords }) => {\n /**\n * @param {number} x\n * @param {number} y\n */\n const includes = (x, y) => pixel_coords.includes(coords(x, y))\n\n const vertices = getPixelVertices({ pixel_coords }).sort(vertexSort('y', 'x'))\n\n let edges = []\n\n for (let vertex of vertices) {\n const { x, y } = vertex\n\n let bottomleftPixel = includes(x - 1, y),\n topLeftPixel = includes(x - 1, y - 1),\n bottomPixel = includes(x, y),\n topPixel = includes(x, y - 1)\n\n // Vertex is contained or on a vertical edge with the left side exposed to the fearful elements of Moria\n if (\n topPixel &&\n bottomPixel &&\n ((topLeftPixel && bottomleftPixel) || (!topLeftPixel && !bottomleftPixel))\n ) {\n continue\n }\n\n const lastEdge = edges[edges.length - 1]\n\n // Is the previous edge to the left of this one?\n const onCurrentPlane =\n lastEdge && lastEdge.finish.x === x - 1 && lastEdge.finish.y === y\n\n // One of the top/bottom pixels to the left exists, but not both\n const onePixelExists =\n (bottomleftPixel || topLeftPixel) && !(bottomleftPixel && topLeftPixel)\n\n if (onCurrentPlane && onePixelExists) {\n lastEdge.finish = new Vertex(x, y)\n }\n // Otherwise start fresh if there's a pixel above or below\n else if (topPixel || bottomPixel) {\n edges.push(new Edge(new Vertex(x, y), new Vertex(x, y)))\n }\n }\n\n return edges\n}\n\n/**\n * Transforms an array of coords (['x_y'], ...) to an array of vertices\n * ([Vertex(x, y), ...])\n *\n * @param {{ pixel_coords: string[] }} params\n */\nconst getPixelVertices = ({ pixel_coords }) => {\n /** @type {Set} */\n let vertex_coords = new Set([])\n\n for (let [x, y] of pixel_coords.map(split_coord)) {\n // The 4 vertices of a pixel\n vertex_coords.add(coords(x, y))\n vertex_coords.add(coords(x, y + 1))\n vertex_coords.add(coords(x + 1, y))\n vertex_coords.add(coords(x + 1, y + 1))\n }\n\n return Array.from(vertex_coords).map(\n (coord) => new Vertex(...split_coord(coord))\n )\n}\n\n/**\n * Sorts the above array of vertices by their axes (x or y)\n *\n * @param {'x' | 'y'} first_axis\n * @param {'x' | 'y'} second_axis\n * @returns {function(Vertex, Vertex): number}\n */\nconst vertexSort = (first_axis, second_axis) => (vertex_a, vertex_b) => {\n let first_sort = vertex_a[first_axis] - vertex_b[first_axis]\n\n if (first_sort !== 0) return first_sort\n\n return vertex_a[second_axis] - vertex_b[second_axis]\n}\n\n/** @param {{ horizontal_edges: Edge[] }} params */\nconst get_vertical_edges = ({ horizontal_edges }) => {\n const vertices = horizontal_edges\n .map((edge) => [edge.start, edge.finish])\n .flat()\n .sort(vertexSort('x', 'y'))\n\n let edges = []\n\n // Scan across the sorted pixels (left to right), joining 2 horizontal edges at a time\n for (let i = 0; i < vertices.length; i += 2) {\n edges.push(new Edge(vertices[i], vertices[i + 1]))\n }\n\n return edges\n}\n\n/* Helper models */\n\nclass Edge {\n /**\n * @param {Vertex} start\n * @param {Vertex} finish\n */\n constructor(start, finish) {\n this.start = start\n this.finish = finish\n\n return this\n }\n}\n\nclass Vertex {\n /**\n * @param {number} x\n * @param {number} y\n */\n constructor(x, y) {\n this.x = x\n this.y = y\n\n return this\n }\n}\n\n/**\n * @param {number} x\n * @param {number} y Used for unique array items\n */\nconst coords = (x, y) => `${x}_${y}`\n\n/**\n * @param {string} coord\n * @returns {[number, number]}\n */\nconst split_coord = (coord) => coord.split('_').map(Number)\n\n/* Rendering */\n\n/**\n * [description]\n *\n * @param {Object} params\n * @param {SvgCanvas} params.ctx [description]\n * @param {{ paths: number[][]; color: string }} params.polygon [description]\n * @param {import('@pogzul/engine').Shape} params.layer [description]\n */\nconst render = ({ ctx, polygon, layer }) => {\n ctx.beginPath()\n\n for (let [index, path] of polygon.paths.entries()) {\n // Anti-clockwise for inner paths\n if (index === 1) path.reverse()\n\n const first_vertex = path.shift()\n\n ctx.moveTo(\n layer.x + first_vertex.x * config.pixel_size,\n layer.y + first_vertex.y * config.pixel_size\n )\n\n for (let vertex of path) {\n ctx.lineTo(\n layer.x + vertex.x * config.pixel_size,\n layer.y + vertex.y * config.pixel_size\n )\n }\n\n ctx.closePath()\n }\n\n ctx.fillStyle = polygon.color\n ctx.fill()\n}\n","import { config, rgb_array_to_hex } from '@pogzul/engine'\n\nconst { pixel_size, canvas_size } = config\n\nexport const import_image = async (src) =>\n new Promise((resolve) => {\n let canvas = document.createElement('canvas')\n\n canvas.width = canvas_size\n canvas.height = canvas_size\n\n let ctx = canvas.getContext('2d')\n\n let image = new Image()\n\n image.onload = function () {\n const { width, height } = image\n\n const scaling_factor = Math.max(width, height) / canvas_size\n\n ctx.drawImage(\n image,\n 0,\n 0,\n width / scaling_factor,\n height / scaling_factor\n )\n\n const image_data = ctx.getImageData(0, 0, canvas_size, canvas_size).data\n\n resolve(pixelize_image_data(image_data))\n }\n\n image.src = src\n })\n\nconst pixelize_image_data = (image_data) => {\n let pixels = {}\n\n for (let x = 0; x < canvas_size / pixel_size; x++) {\n for (let y = 0; y < canvas_size / pixel_size; y++) {\n let pixel = get_pixel(image_data, x, y)\n\n if (pixel) (pixels[x] = pixels[x] || {})[y] = pixel\n }\n }\n\n return pixels\n}\n\nconst get_pixel = (image_data, x, y) => {\n let [r, g, b, a] = [[], [], [], []]\n\n let firstIndex = y * pixel_size * canvas_size * 4 + x * pixel_size * 4\n\n for (let j = 0; j < pixel_size; j++) {\n let posY = firstIndex + j * canvas_size * 4\n\n for (let i = 0; i < pixel_size; i++) {\n let index = posY + i * 4\n\n r.push(image_data[index])\n g.push(image_data[index + 1])\n b.push(image_data[index + 2])\n a.push(image_data[index + 3])\n }\n }\n\n let alpha = mean(a) / 255\n\n if (alpha < 0.1) {\n return null\n } else {\n return rgb_array_to_hex([mean(r), mean(g), mean(b), alpha])\n }\n}\n\nconst mean = (arr) => arr.reduce((sum, val) => sum + val, 0) / arr.length\n","/**!\n * Sortable 1.15.3\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\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 return target;\n}\nfunction _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 return _typeof(obj);\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 return obj;\n}\nfunction _extends() {\n _extends = Object.assign || 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}\nfunction _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}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _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}\nfunction _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}\nfunction _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\nvar version = \"1.15.3\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode;\n\n // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect();\n\n // Set relative to edges of padding box of container\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n\n /* jshint boss:true */\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n\n /* jshint boss:true */\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n var rect = {};\n Array.from(container.children).forEach(function (child) {\n var _rect$left, _rect$top, _rect$right, _rect$bottom;\n if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n var childRect = getRect(child);\n rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n });\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n // If animating: compensate for current animation\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n }\n\n // if fromRect != toRect: animate\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return;\n // Fire global events if it exists in this sortable\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n\n // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized;\n\n // Add default options from plugin\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return;\n\n // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n\n _silent = false,\n savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return;\n // false when <= IE11\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n this.options = options = _extends({}, options);\n\n // Export instance\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults);\n\n // Set default options\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options);\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n // Setup drag mode\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n }\n\n // Bind events\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el);\n\n // Restore sorting\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n // Add animation state manager\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el);\n\n // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n }\n\n // cancel dnd if original target is content editable\n if (originalTarget.isContentEditable) {\n return;\n }\n\n // Safari ignores further event handling after mousedown\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n }\n\n // Get the index of the dragged element within its parent\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable);\n\n // Check filter\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n }\n\n // Prepare `dragstart`\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n }\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n }\n\n // Bind the events: dragstart/dragend\n _this._triggerDragStart(evt, touch);\n\n // Drag start event\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n });\n\n // Chosen item\n toggleClass(dragEl, options.chosenClass, true);\n };\n\n // Disable \"draggable\"\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n\n // Make dragEl draggable (must be before delay for FireFox)\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n });\n\n // Delay is impossible for native DnD in Edge or IE\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options;\n\n // Apply effect\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost();\n\n // Drag start event\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = getParentOrHost(parent));\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n // only set the status to dragging, when we are actually dragging\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options;\n\n // Position absolutely\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl);\n\n // Set transform-origin\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n }\n\n // #1143: IFrame support workaround\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true);\n\n // Set proper drop events\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this);\n\n // #1276 fix:\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n }\n\n // Capture animation state\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n }\n\n // Return invocation when dragEl is inserted (or completed)\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n }\n\n // Animation\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n }\n\n // Null lastTarget if it is not inside a previously swapped element\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n }\n\n // no bubbling and not fallback\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n // Do not detect for empty insert if already inserted\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n }\n\n // Call when dragEl has been inserted\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n }\n\n // if there is a last element, it is the target\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n }\n // If dragEl is already beside target: Do not insert\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n\n // Undo chrome's scroll adjustment (has no effect on other browsers)\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n\n // must be done before animation\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/evt) {\n var el = this.el,\n options = this.options;\n\n // Get the index of the dragged element within its parent\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode;\n\n // Get again after plugin event\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId);\n\n // Unbind events\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = '';\n\n // Remove classes\n // ghostClass is added in dragStarted\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false);\n\n // Drag stop event\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n // Remove event\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // drag from one list and drop into another\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // Save sorting\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n }\n // Remove draggable attributes\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return;\n\n // show clone at dragEl or original position\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal;\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n}\n\n// Export utils\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild,\n expando: expando\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\nSortable.get = function (element) {\n return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n };\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt;\n\n // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback);\n\n // Listener for pointer element change\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval();\n // Detect for pointer elem change, emulating native DnD behaviour\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn;\n\n // New scroll root, set scrollEl\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n });\n\n // Sort multi-drag elements\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n }\n\n // Remove all auxiliary multidrag items from el, if sorting enabled\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false;\n // If leaving sort:false root, or already folding - Fold to new location\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute);\n\n // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n }\n\n // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable);\n\n // Unfold animation for clones if showing from hidden\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children;\n\n // Multi-drag selection\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n\n // Modifier activated, select from last to dragEl\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n }\n\n // Multi-drag drop\n if (dragStarted && this.isMultiDrag) {\n folding = false;\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect;\n\n // Prepare unfold animation\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n }\n\n // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n });\n\n // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n dispatchSortableEvent('sort');\n }\n }\n }\n\n // Must be done after capturing individual rects (scroll bar)\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n }\n\n // Remove clones if necessary\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n // Only deselect if selection is in this sortable\n if (multiDragSortable !== this.sortable) return;\n\n // Only deselect if target is not item in this sortable\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n // Only deselect if left click\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n });\n\n // multiDragElements will already be sorted if folding\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","\n\n
    \n {#each list as item, index (get_key(item))}\n \n \n \n

    { get_key(item) }

    \n
    \n \n {/each}\n
","export const icons = {\n move: (klass) => `\n \n \n \n `,\n\n brush: (klass) => `\n \n \n \n \n \n \n \n \n \n `,\n\n line: (klass) => `\n \n \n \n \n \n \n \n \n \n `,\n\n rectangle: (klass) => `\n \n \n \n `,\n\n fill: (klass) => `\n \n \n \n \n\n `,\n\n text: (klass) => `\n \n \n \n `,\n\n undo: (klass) => `\n \n \n \n `,\n\n redo: (klass) => `\n \n \n \n `,\n\n folder: (klass) => `\n \n \n \n \n \n \n \n `,\n\n save: (klass) => `\n \n \n \n \n \n \n `,\n\n eraser: (klass) => `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n\n download: (klass) => `\n \n \n \n \n \n \n \n \n `,\n\n terminal: (klass) => `\n \n \n \n \n \n \n \n \n \n \n `,\n\n sun: (klass) => `\n \n \n \n \n \n \n \n \n \n \n \n `,\n\n moon: (klass) => `\n \n \n \n `,\n\n 'chevron-up': (klass) => `\n \n \n \n \n \n \n \n `,\n\n 'chevron-right': (klass) => `\n \n \n \n \n \n \n \n `,\n\n plus: (klass) => `\n \n \n \n \n `,\n\n 'eye-slash': (klass) => `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n\n eyedropper: (klass) => `\n \n \n \n \n \n \n \n `,\n\n 'question-mark': (klass) => `\n \n \n \n \n \n \n `,\n\n share: (klass) => `\n \n \n \n `,\n\n home: (klass) => `\n \n \n \n `,\n\n people: (klass) => `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n\n command: (klass) => `\n \n \n \n \n \n \n \n \n \n \n `,\n\n fork: (klass) => `\n \n \n \n \n \n `,\n\n 'horizontal-align-left': (klass) => `\n \n \n \n \n \n \n `,\n\n 'horizontal-align-center': (klass) => `\n \n \n \n \n \n \n `,\n\n 'horizontal-align-right': (klass) => `\n \n \n \n \n \n \n `,\n\n 'vertical-align-top': (klass) => `\n \n \n \n \n \n \n `,\n\n 'vertical-align-middle': (klass) => `\n \n \n \n \n \n \n \n \n \n `,\n\n 'vertical-align-bottom': (klass) => `\n \n \n \n \n \n \n `\n}\n","\n\n{@html icons[name](class_name)}","import { writable } from 'svelte/store'\n\n/** @returns {ArtboardStateStore} */\nexport const state = writable({\n active_scene_ids: [],\n active_layer_ids: [],\n hovering_layer_ids: [],\n active_color: new Uint8Array([0, 0, 0]),\n cursor: null,\n editor_offsets: { x: 0, y: 0 },\n mouse_x: 0,\n mouse_y: 0,\n\n /** @type {keyof typeof import('../tools').tools} */\n active_tool: 'brush'\n})\n\nexport { state as artboard_state }\n\n// Should this be one object, or a class with individual state fields?\n","class Clipboard {\n value = $state()\n}\n\nexport const clipboard = new Clipboard()\n\n$inspect(clipboard.value)\n","import { Pixels } from '@pogzul/engine'\nimport { renderPixels } from '../utilities'\n\nconst defaultProps = {\n get pixels() {\n return new Pixels()\n },\n\n /*\n Coordinates for the event(s) — start and current/end\n */\n x1: null,\n y1: null,\n x2: null,\n y2: null\n}\n\n/**\n * @class Tool\n * @type {Pixels} pixels\n */\nclass Tool {\n /** @type {Pixels} */\n pixels = new Pixels()\n\n /** @type {number} */\n x1\n\n /** @type {number} */\n y1\n\n /** @type {number} */\n x2\n\n /** @type {number} */\n y2\n\n constructor(opts = {}) {\n Object.assign(this, defaultProps, opts)\n }\n\n /** @param {ReturnType} ctx */\n render(ctx) {\n if (this.pixels.size === 0) return\n\n renderPixels({ ctx, pixels: this.pixels, is_tool: true })\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseDown({ mouse_x, mouse_y, x, y }) {\n this.x1 = x\n this.y1 = y\n this.x2 = x\n this.y2 = y\n\n this.screen_x1 = mouse_x\n this.screen_y1 = mouse_y\n this.screen_x2 = mouse_x\n this.screen_y2 = mouse_y\n }\n\n /** @param {import('./ToolEvent').default} _evt */\n onMouseUp(_evt) {\n this.#reset()\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseMove({ is_mouse_down, mouse_x, mouse_y, x, y }) {\n if (is_mouse_down) {\n this.screen_x2 = mouse_x\n this.screen_y2 = mouse_y\n\n this.x2 = x\n this.y2 = y\n }\n }\n\n /** @param {import('./ToolEvent').default} _evt */\n onInput(_evt) {}\n\n #reset() {\n Object.assign(this, defaultProps)\n }\n}\n\nexport default Tool\n","import Tool from './Tool.js'\nimport { config, Shape, Pixels, Group, Text, get_pixel } from '@pogzul/engine'\nimport { state } from '../stores'\nimport { get } from 'svelte/store'\n\nconst RESIZE_OUTER_BOUNDARY = 10,\n RESIZE_INNER_BOUNDARY = 5\n\nclass MoveTool extends Tool {\n /** @type {'Move'} */\n name = 'Move'\n\n shortcut = 'm'\n\n #is_selecting_box = false\n\n /**\n * @type {Record<\n * number,\n * { x: number; y: number; width?: number; height?: number }\n * >}\n */\n #starting_layer_positions = {}\n\n #were_layers_moved = false\n\n /** @type {Partial>} */\n #resizing = {}\n\n /** @param {import('../webgl').Context} ctx */\n render(ctx) {\n super.render(ctx)\n\n if (this.#is_selecting_box) {\n ctx.strokeRect({\n x: Math.min(this.screen_x1, this.screen_x2),\n y: Math.min(this.screen_y1, this.screen_y2),\n width: Math.abs(this.screen_x2 - this.screen_x1),\n height: Math.abs(this.screen_y2 - this.screen_y1),\n color: new Uint8Array([56, 189, 248, 255]),\n lineWidth: 2\n })\n }\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseDown(evt) {\n super.onMouseDown(evt)\n\n if (evt.is_targeting_editor) {\n if (this.#resize_cursor) {\n for (let id of evt.active_layer_ids) {\n const layer = evt.scene.entities[id]\n\n this.#starting_layer_positions[id] = {\n ...layer.position,\n width: layer.width,\n height: layer.height\n }\n }\n\n return\n }\n\n state.update((old_state) => {\n let active_layer_ids\n\n // Bug: hovering_layer_ids is wrong _if the mouse doesn't move_\n if (!old_state.hovering_layer_ids.length) this.#is_selecting_box = true\n\n const is_hovering_active_layer = old_state.active_layer_ids.includes(\n old_state.hovering_layer_ids[0]\n )\n\n /* If hovering an active layer, don't change anything */\n if (is_hovering_active_layer) {\n active_layer_ids = old_state.active_layer_ids\n } else if (evt.shift_key) {\n /* If holding shift, add hovering_layer_ids to active_layer_ids */\n active_layer_ids = Array.from(\n new Set([\n ...old_state.active_layer_ids,\n ...old_state.hovering_layer_ids\n ])\n )\n } else {\n active_layer_ids = old_state.hovering_layer_ids\n }\n\n for (const id of active_layer_ids) {\n this.#starting_layer_positions[id] = evt.scene.entities[id].position\n }\n\n return { ...old_state, active_layer_ids }\n })\n }\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseUp(evt) {\n if (\n (evt.is_targeting_canvas && !this.#were_layers_moved && !evt.shift_key) ||\n this.#is_selecting_box\n ) {\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: old_state.hovering_layer_ids\n }))\n }\n\n this.#is_selecting_box = false\n this.#starting_layer_positions = {}\n this.#were_layers_moved = false\n\n return super.onMouseUp(evt)\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseMove(evt) {\n super.onMouseMove(evt)\n\n if (evt.is_mouse_down) {\n if (this.#is_selecting_box) return this.#update_selection_box(evt)\n if (this.#resize_cursor) return this.#resize_layers(evt)\n\n this.#drag_layers(evt)\n } else if (evt.is_targeting_editor) {\n this.#handle_pointer(evt)\n } else if (evt.is_targeting_canvas) {\n state.update((old_state) => ({\n ...old_state,\n hovering_layer_ids: []\n }))\n }\n }\n\n /** @param {import('./ToolEvent').default} evt */\n #update_selection_box({ scene }) {\n const contained_layer_ids = scene.layer_ids.filter((id) => {\n const layer = scene.entities[id]\n\n const [x1, x2] = min_max(this.screen_x1, this.screen_x2),\n [y1, y2] = min_max(this.screen_y1, this.screen_y2)\n\n return (\n x1 <= layer.x + layer.width &&\n x2 >= layer.x &&\n y1 <= layer.y + layer.height &&\n y2 >= layer.y\n )\n })\n\n return state.update((old_state) => ({\n ...old_state,\n hovering_layer_ids: contained_layer_ids\n }))\n }\n\n /** @param {import('./ToolEvent').default} evt */\n #resize_layers({ scene, mouse_x, mouse_y, active_layer_ids }) {\n for (let id of active_layer_ids) {\n if (!this.#starting_layer_positions[id]) continue\n\n const { x, y, width, height } = this.#starting_layer_positions[id]\n\n const layer = scene.entities[id]\n\n if (layer instanceof Text) {\n if (this.#resizing.north) {\n const new_y = screen_position(mouse_y)\n\n layer.y = new_y\n layer.height = y + height - new_y\n } else if (this.#resizing.south) {\n layer.height = screen_position(mouse_y) - layer.y\n }\n\n if (this.#resizing.west) {\n const new_x = screen_position(mouse_x)\n\n layer.x = new_x\n layer.width = x + width - new_x\n } else if (this.#resizing.east) {\n layer.width = screen_position(mouse_x) - layer.x\n }\n }\n\n // let pixels = new Pixels()\n\n // // TODO: fix origin bug when scaling in negative directions...\n\n // let scale_x = 1,\n // scale_y = 1,\n // scale_x_sign = 1,\n // scale_y_sign = 1\n\n // if (this.#resize_cursor !== 'ns-resize') {\n // scale_x = Math.abs(mouse_x - x) / layer.width\n // scale_x_sign = Math.sign(mouse_x - layer.x)\n // }\n\n // if (this.#resize_cursor !== 'ew-resize') {\n // scale_y = Math.abs(mouse_y - layer.y) / layer.height\n // scale_y_sign = Math.sign(mouse_y - layer.y)\n // }\n\n // const scaled_width = scale_x * (layer.width / config.pixel_size),\n // scaled_height = scale_y * (layer.height / config.pixel_size)\n\n // for (let x = 0; x < scaled_width; x++) {\n // for (let y = 0; y < scaled_height; y++) {\n // const color =\n // layer.pixels.get(\n // Math.floor(x / scale_x),\n // Math.floor(y / scale_y)\n // ) || null\n\n // // console.log(\n // // 'setting x',\n // // x * scale_x_sign + Math.sign(scale_x_sign - 1)\n // // )\n\n // /* `+ Math.sign(scale_x_sign - 1)` is for reflection of negative values */\n // pixels.set(\n // x * scale_x_sign + Math.sign(scale_x_sign - 1),\n // y * scale_y_sign + Math.sign(scale_y_sign - 1),\n // color\n // )\n // }\n // }\n\n // scene.entities[id].pixels = pixels\n // scene.entities[id].update()\n }\n }\n\n /** @param {import('./ToolEvent').default} evt */\n #drag_layers({ scene, mouse_x, mouse_y }) {\n const { active_layer_ids, hovering_layer_ids } = get(state)\n\n const is_hovering_active_layer =\n active_layer_ids.filter((id) => hovering_layer_ids.includes(id)).length >\n 0\n\n if (is_hovering_active_layer) {\n for (let id of active_layer_ids) {\n let layer = scene.entities[id]\n\n const { x, y } = this.#starting_layer_positions[id]\n\n layer.x = screen_position(x + mouse_x - this.screen_x1)\n layer.y = screen_position(y + mouse_y - this.screen_y1)\n }\n\n this.#were_layers_moved = true\n }\n }\n\n /** @param {import('./ToolEvent').default} evt */\n #handle_pointer({ scene, mouse_x, mouse_y }) {\n this.#resizing = {}\n\n const { active_layer_ids, hovering_layer_ids } = get(state)\n\n for (let id of [...scene.layer_ids].reverse()) {\n let layer = scene.entities[id]\n\n if (layer.is_hidden && !active_layer_ids.includes(id)) continue\n\n if ('pixels' in layer || layer instanceof Group) {\n /*\n * This should be the grouped layer boundary if there are multiple\n * active layers...\n */\n // if (active_layer_ids.includes(id)) {\n // if (\n // mouse_x > layer.x - RESIZE_OUTER_BOUNDARY &&\n // mouse_x < layer.x + layer.width + RESIZE_OUTER_BOUNDARY &&\n // mouse_y > layer.y - RESIZE_OUTER_BOUNDARY &&\n // mouse_y < layer.y + layer.height + RESIZE_OUTER_BOUNDARY\n // ) {\n // let north, south, east, west\n // if (mouse_x < layer.x + RESIZE_INNER_BOUNDARY) {\n // west = true\n // } else if (\n // mouse_x >\n // layer.x + layer.width - RESIZE_INNER_BOUNDARY\n // ) {\n // east = true\n // }\n\n // if (mouse_y < layer.y + RESIZE_INNER_BOUNDARY) {\n // north = true\n // } else if (\n // mouse_y >\n // layer.y + layer.height - RESIZE_INNER_BOUNDARY\n // ) {\n // south = true\n // }\n\n // if (east || west) {\n // if (north) {\n // this.#resize_cursor = east ? 'nesw-resize' : 'nwse-resize'\n // } else if (south) {\n // this.#resize_cursor = east ? 'nwse-resize' : 'nesw-resize'\n // } else {\n // this.#resize_cursor = 'ew-resize'\n // }\n // } else if (north || south) {\n // this.#resize_cursor = 'ns-resize'\n // }\n // }\n // }\n\n if (get_pixel(layer, mouse_x, mouse_y)) {\n state.update((old_state) => ({\n ...old_state,\n cursor: this.#resize_cursor,\n hovering_layer_ids: [layer.id]\n }))\n\n return\n }\n } else if (layer instanceof Text) {\n if (active_layer_ids.includes(id)) {\n if (\n mouse_x > layer.x - RESIZE_OUTER_BOUNDARY &&\n mouse_x < layer.x + layer.width + RESIZE_OUTER_BOUNDARY &&\n mouse_y > layer.y - RESIZE_OUTER_BOUNDARY &&\n mouse_y < layer.y + layer.height + RESIZE_OUTER_BOUNDARY\n ) {\n if (mouse_x < layer.x + RESIZE_INNER_BOUNDARY) {\n this.#resizing.west = true\n } else if (\n mouse_x >\n layer.x + layer.width - RESIZE_INNER_BOUNDARY\n ) {\n this.#resizing.east = true\n }\n\n if (mouse_y < layer.y + RESIZE_INNER_BOUNDARY) {\n this.#resizing.north = true\n } else if (\n mouse_y >\n layer.y + layer.height - RESIZE_INNER_BOUNDARY\n ) {\n this.#resizing.south = true\n }\n }\n }\n\n if (\n mouse_x >= layer.x &&\n mouse_x <= layer.x + layer.width &&\n mouse_y >= layer.y &&\n mouse_y <= layer.y + layer.height\n ) {\n state.update((old_state) => ({\n ...old_state,\n cursor: this.#resize_cursor,\n hovering_layer_ids: [layer.id]\n }))\n\n return\n }\n }\n }\n\n if (hovering_layer_ids.length) {\n state.update((old_state) => ({\n ...old_state,\n cursor: this.#resize_cursor,\n hovering_layer_ids: []\n }))\n } else {\n state.update((old_state) => ({\n ...old_state,\n cursor: this.#resize_cursor\n }))\n }\n }\n\n get #resize_cursor() {\n const { north, east, south, west } = this.#resizing\n\n if (east || west) {\n if (north) {\n return east ? 'nesw-resize' : 'nwse-resize'\n } else if (south) {\n return east ? 'nwse-resize' : 'nesw-resize'\n } else {\n return 'ew-resize'\n }\n } else if (north || south) {\n return 'ns-resize'\n }\n\n return null\n }\n}\n\nconst create_gradient_image = () => {\n const size = 10\n\n let canvas = document.createElement('canvas')\n let ctx = canvas.getContext('2d')\n\n canvas.width = size\n canvas.height = size\n\n // Draw border\n let gradient = ctx.createLinearGradient(0, 0, size, size)\n\n gradient.addColorStop(0, '#34d399')\n gradient.addColorStop(1, '#38bdf8')\n\n ctx.fillStyle = gradient\n ctx.fillRect(0, 0, size, size)\n\n return ctx.getImageData(0, 0, canvas.width, canvas.width)\n}\n\n/** @param {...number} args */\nexport const min_max = (...args) => {\n let arr = args.flat()\n\n return arr.reduce(\n (minMaxArr, item) => {\n let [min, max] = minMaxArr\n\n if (item < min) min = item\n if (item > max) max = item\n\n return [min, max]\n },\n [arr[0], arr[0]]\n )\n}\n\n/** @param {number} coordinate */\nconst screen_position = (coordinate) =>\n Math.round(coordinate / config.pixel_size) * config.pixel_size\n\nexport default MoveTool\n","import Tool from './Tool.js'\n\nimport { grid_coordinate, colors_are_equal, draw } from '@pogzul/engine'\nimport { state } from '../stores'\n\nclass BrushTool extends Tool {\n /** @type {'Brush'} */\n name = 'Brush'\n\n shortcut = 'b'\n\n /** @type {boolean} */\n #is_dragging = false\n\n /** @type {Uint8Array | undefined} */\n #dragging_color = undefined\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseDown(evt) {\n super.onMouseDown(evt)\n\n this.#draw(evt)\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseUp(evt) {\n const result = draw({\n scene: evt.scene,\n pixels: this.pixels,\n layer_ids: evt.active_layer_ids\n })\n\n if (result) {\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: typeof result === 'number' ? [] : [result.id]\n }))\n }\n\n this.#is_dragging = false\n this.#dragging_color = undefined\n\n return super.onMouseUp(evt)\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseMove(evt) {\n if (!evt.is_mouse_down) return\n\n this.#draw(evt)\n\n super.onMouseMove(evt)\n }\n\n /* Private */\n\n /** @param {import('./ToolEvent').default} evt */\n #draw({ x, y, active_color, scene, active_layer_ids }) {\n const active_layer = active_layer_ids.length\n ? scene.entities[active_layer_ids[0]]\n : null\n\n /* Erase pixels if the selected one is the same as the top layer */\n let initial_color = active_color\n\n if (active_layer && 'pixels' in active_layer) {\n const layer_pixel_color = active_layer.pixels.get(\n x - grid_coordinate(active_layer.x),\n y - grid_coordinate(active_layer.y)\n )\n\n if (colors_are_equal(active_color, layer_pixel_color)) {\n initial_color = null\n }\n }\n\n this.pixels.set(\n x,\n y,\n this.#is_dragging ? this.#dragging_color : initial_color,\n true\n )\n\n // Persist the previous color for long drags\n if (!this.#is_dragging) {\n this.#is_dragging = true\n this.#dragging_color = initial_color\n }\n }\n}\n\nexport default BrushTool\n","import Tool from './Tool.js'\n\nimport { Pixels, Shape, draw } from '@pogzul/engine'\nimport { state } from '../stores'\n\nclass RectangleTool extends Tool {\n /** @type {'Rectangle'} */\n name = 'Rectangle'\n\n shortcut = 'r'\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseDown(evt) {\n super.onMouseDown(evt)\n\n this.#draw(evt)\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseUp(evt) {\n const result = draw({\n scene: evt.scene,\n pixels: this.pixels,\n layer_ids: evt.active_layer_ids\n })\n\n if (result) {\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: typeof result === 'number' ? [] : [result.id]\n }))\n }\n\n return super.onMouseUp(evt)\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseMove(evt) {\n if (!evt.is_mouse_down) {\n return false\n }\n\n this.#draw(evt)\n\n super.onMouseMove(evt)\n }\n\n /* Private */\n\n /** @param {import('./ToolEvent').default} evt */\n #draw({ active_color }) {\n let pixels = {}\n\n const x1 = Math.min(this.x1, this.x2),\n y1 = Math.min(this.y1, this.y2),\n x2 = Math.max(this.x1, this.x2),\n y2 = Math.max(this.y1, this.y2)\n\n for (let x = x1; x <= x2; x++) {\n pixels[x] = {\n [y1]: active_color,\n [y2]: active_color\n }\n }\n\n for (let y = y1; y <= y2; y++) {\n for (let x of [x1, x2]) {\n pixels[x][y] = active_color\n }\n }\n\n this.pixels = new Pixels(pixels)\n }\n}\n\nexport default RectangleTool\n","import Tool from './Tool.js'\n\nimport { Pixels, Shape, draw } from '@pogzul/engine'\nimport { state } from '../stores'\n\nclass LineTool extends Tool {\n /** @type {'Line'} */\n name = 'Line'\n\n shortcut = 'l'\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseDown(evt) {\n super.onMouseDown(evt)\n\n this.#draw(evt)\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseUp(evt) {\n const result = draw({\n scene: evt.scene,\n pixels: this.pixels,\n layer_ids: evt.active_layer_ids\n })\n\n if (result) {\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: typeof result === 'number' ? [] : [result.id]\n }))\n }\n\n return super.onMouseUp(evt)\n }\n\n /** @param {import('./ToolEvent').default} evt */\n onMouseMove(evt) {\n if (!evt.is_mouse_down) {\n return false\n }\n\n this.#draw(evt)\n\n super.onMouseMove(evt)\n }\n\n /* Private */\n\n /**\n * Bresenham line algorithm\n *\n * @param {import('./ToolEvent').default} evt\n */\n #draw({ active_color }) {\n let pixels = new Pixels()\n\n let delta_x = Math.abs(this.x2 - this.x1),\n delta_y = Math.abs(this.y2 - this.y1)\n\n let sx = this.x1 < this.x2 ? 1 : -1,\n sy = this.y1 < this.y2 ? 1 : -1\n\n let error = delta_x - delta_y\n\n let x = this.x1,\n y = this.y1\n\n while (true) {\n pixels.set(x, y, active_color)\n\n if (x === this.x2 && y === this.y2) break\n\n let err2 = 2 * error\n\n if (err2 > -delta_y) {\n error -= delta_y\n x += sx\n }\n\n if (err2 < delta_x) {\n error += delta_x\n y += sy\n }\n }\n\n this.pixels = pixels\n }\n}\n\nexport default LineTool\n","import Tool from './Tool.js'\n\nimport {\n Shape,\n config,\n colors_are_equal,\n draw,\n pixel_grid\n} from '@pogzul/engine'\nimport { state } from '../stores'\n\nconst RESOLUTION = config.canvas_size / config.pixel_size\n\nconst FILL_DELAY_MS = 7\n\nclass FillTool extends Tool {\n /** @type {'Fill'} */\n name = 'Fill'\n\n shortcut = 'f'\n\n /** @param {import('./ToolEvent').default} evt */\n async onMouseUp(evt) {\n await this.#draw(evt)\n\n super.onMouseUp(evt)\n }\n\n /** @param {import('./ToolEvent').default} evt */\n async #draw({ active_color, scene, x, y, active_layer_ids }) {\n const grid = pixel_grid(scene)\n\n const target_color = grid[x]?.[y]\n\n const fill = async (x, y) => {\n if (this.pixels.get(x, y) !== undefined) return\n\n this.pixels.set(x, y, active_color)\n\n let promises = []\n\n if (\n y < RESOLUTION - 1 &&\n colors_are_equal(grid[x]?.[y + 1], target_color)\n ) {\n await new Promise((resolve) => setTimeout(resolve, FILL_DELAY_MS))\n promises.push(fill(x, y + 1))\n }\n\n if (y > 0 && colors_are_equal(grid[x]?.[y - 1], target_color)) {\n await new Promise((resolve) => setTimeout(resolve, FILL_DELAY_MS))\n promises.push(fill(x, y - 1))\n }\n\n if (\n x < RESOLUTION - 1 &&\n colors_are_equal(grid[x + 1]?.[y], target_color)\n ) {\n await new Promise((resolve) => setTimeout(resolve, FILL_DELAY_MS))\n promises.push(fill(x + 1, y))\n }\n\n if (x > 0 && colors_are_equal(grid[x - 1]?.[y], target_color)) {\n await new Promise((resolve) => setTimeout(resolve, FILL_DELAY_MS))\n promises.push(fill(x - 1, y))\n }\n\n await Promise.all(promises)\n }\n\n await fill(x, y)\n\n const result = draw({\n scene,\n pixels: this.pixels,\n layer_ids: active_layer_ids\n })\n\n if (result) {\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: typeof result === 'number' ? [] : [result.id]\n }))\n }\n }\n}\n\nexport default FillTool\n","import { normalize_mouse_coordinates, active } from '@pogzul/engine'\nimport { state } from '../stores'\nimport { get } from 'svelte/store'\n\nexport class ToolEvent {\n /**\n * @param {object} params\n * @param {MouseEvent | KeyboardEvent} params.evt\n * @param {boolean} params.is_targeting_editor\n * @param {boolean} params.is_targeting_canvas\n */\n constructor({ evt, is_targeting_editor, is_targeting_canvas }) {\n const {\n editor_offsets,\n active_color,\n active_layer_ids,\n hovering_layer_ids\n } = get(state)\n\n if (evt instanceof MouseEvent) {\n const { x, y } = normalize_mouse_coordinates({\n mouse_x: evt.pageX,\n mouse_y: evt.pageY,\n offsets: editor_offsets\n })\n\n this.x = x\n this.y = y\n this.mouse_x = evt.pageX - editor_offsets.x\n this.mouse_y = evt.pageY - editor_offsets.y\n\n this.is_mouse_down = evt.buttons === 1\n } else {\n this.key = evt.key\n this.code = evt.code\n }\n\n this.scene = active.scene\n\n this.target = evt.target\n this.shift_key = evt.shiftKey\n this.offsets = editor_offsets\n this.active_color = active_color\n this.active_layer_ids = active_layer_ids\n this.hovering_layer_ids = hovering_layer_ids\n this.is_targeting_editor = is_targeting_editor\n this.is_targeting_canvas = is_targeting_canvas\n }\n}\n\nexport default ToolEvent\n","import MoveTool from './MoveTool.js'\nimport BrushTool from './BrushTool.js'\nimport RectangleTool from './RectangleTool.js'\nimport LineTool from './LineTool.js'\nimport FillTool from './FillTool.js'\n// import Eyedropper from './EyedropperTool.js'\nimport TextTool from './TextTool.js'\nexport * from './ToolEvent.js'\n\nexport const tools = {\n move: new MoveTool(),\n // eyedropper: new Eyedropper(),\n brush: new BrushTool(),\n ...(import.meta.env.MODE === 'development' ? { text: new TextTool() } : {}),\n rectangle: new RectangleTool(),\n line: new LineTool(),\n fill: new FillTool()\n}\n\nexport default tools\n","\n\n\n \n {@const layer = scene.entities[id] }\n {@const item = layer instanceof Group ? scene.entities[layer.layer_ids[0]] : scene.entities[id] }\n\n
\n {#if item && 'pixels' in item}\n $artboard_state.hovering_layer_ids = [id]}\n on:mouseleave={() => $artboard_state.hovering_layer_ids = []}\n on:click={select_layer(id)}\n on:focus\n class=\"btn btn-square relative\"\n class:!border-success={$artboard_state.active_layer_ids.includes(id)}\n class:!border-info={$artboard_state.hovering_layer_ids.includes(id)}\n >\n
\n \n
\n\n {#if item?.is_hidden}\n
\n \n
\n {/if}\n \n {:else if item instanceof Text}\n $artboard_state.hovering_layer_ids = [id]}\n on:mouseleave={() => $artboard_state.hovering_layer_ids = []}\n on:click={select_layer(id)}\n on:focus\n class=\"btn btn-square relative\"\n class:!border-success={$artboard_state.active_layer_ids.includes(id)}\n class:!border-info={$artboard_state.hovering_layer_ids.includes(id)}\n >\n
\n

{item.value}

\n
\n\n {#if item?.is_hidden}\n
\n \n
\n {/if}\n \n {/if}\n\n {#if layer instanceof Group}\n {#each layer.layer_ids.slice(0, 2) as _layer_id, index }\n \n
\n
\n
\n {/each}\n {/if}\n \n \n","\n\n
\n
\n {#if layer}\n
\n \n \n
\n\n
\n \n \n
\n {:else}\n

\n Select a layer.\n

\n {/if}\n\n {#if layer instanceof Text}\n
\n

Text

\n\n
\n \n
\n\n
\n {#each HORIZONTAL_ALIGNMENTS as align}\n {\n layer.justify = align\n\n render()\n }}\n >\n \n \n {/each}\n
\n\n
\n {#each VERTICAL_ALIGNMENTS as align}\n {\n layer.align = align\n\n render()\n }}\n >\n \n \n {/each}\n
\n
\n {/if}\n\n\n\n
\n\n
\n
\n

Fill

\n\n
\n $artboard_state.active_color = parse_color(target.value)\n }\n on:click={ (evt) => {\n if (evt.shiftKey && $artboard_state.active_layer_ids.length) {\n evt.preventDefault()\n\n for (let id of $artboard_state.active_layer_ids) {\n set_color(scene.entities[id], $artboard_state.active_color)\n }\n\n scene = scene\n }\n }}\n />\n
\n
\n\n
    \n {#each Object.values(config.default_colors) as color }\n
  • \n {\n $artboard_state.active_color = parse_color(color)\n\n if (evt.shiftKey) {\n for (let id of $artboard_state.active_layer_ids) {\n set_color(scene.entities[id], $artboard_state.active_color)\n }\n\n scene = scene\n }\n }}\n class=\"h-[22px] w-[22px] flex-shrink-0 flex items-center justify-center\"\n style=\"background-color: { color };\"\n />\n
  • \n {/each}\n
\n
\n
\n\n\n","\n\n{#if tool.name === 'Text' && layer}\n {@const font = fonts[layer.font]}\n\n {#key layer.id}\n {\n $artboard_state.active_layer_ids = [layer.id]\n }}\n >\n {/key}\n{/if}\n\n\n","\n\n\n\n\n\n \n\n \n
\n {#if is_dragging }\n

Maximum effort.

\n {/if}\n
\n \n\n {#if editable && tool.name === 'Text'}\n \n {/if}\n\n\n\n\n
\n {#each $present_users as user}\n {#if user.active_tool}\n \n \n
\n {/if}\n {/each}\n\n\n","import {\n Shape,\n add_shapes,\n config,\n canvas_coordinate,\n is_running,\n delete_layers,\n sort_layers,\n group_layers,\n ungroup_layers\n} from '@pogzul/engine'\nimport { get } from 'svelte/store'\nimport { state, clipboard } from '../stores'\nimport { tools } from '../tools'\nimport { compute_layers_boundary } from '../utilities'\n// import { undo_manager } from '../realtime'\n\n/**\n * @callback ShortcutHandler\n * @param {KeyboardEvent} event\n * @param {import('@pogzul/engine').Scene} scene\n * @returns {void | boolean} - Return truthy if the document state changed\n */\n\n/** @type {ShortcutHandler} */\nconst select_visible_layers = (_event, scene) =>\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: scene.layer_ids.filter(\n (id) => !scene.entities[id].is_hidden\n ),\n active_tool: scene.layer_ids.length > 1 ? 'move' : old_state.active_tool\n }))\n\n/** @type {ShortcutHandler} */\nconst select_layer = (event, scene) => {\n const { active_layer_ids } = get(state)\n\n // Same order as Layers.svelte: closest at the top\n const layer_ids = [...scene.layer_ids].reverse()\n\n let current_index = layer_ids.indexOf(active_layer_ids[0])\n if (event.shiftKey && current_index === -1) current_index += 2\n\n const next_index =\n (layer_ids.length + current_index + (event.shiftKey ? -1 : 1)) %\n layer_ids.length\n\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: [layer_ids[next_index]]\n }))\n}\n\n/**\n * @param {number} x\n * @param {number} y\n * @returns {ShortcutHandler}\n */\nconst move_layer = (x, y) => (event, scene) => {\n const { active_layer_ids } = get(state)\n\n if (!active_layer_ids.length) return\n\n const multiplier = event.shiftKey ? 5 : 1\n\n const dx = x * multiplier * config.pixel_size,\n dy = y * multiplier * config.pixel_size\n\n for (let id of active_layer_ids) {\n const layer = scene.entities[id]\n\n layer.x += dx\n layer.y += dy\n }\n\n return true\n}\n/** @type {ShortcutHandler} */\nconst handle_group_layers = (_evt, scene) => {\n const { active_layer_ids } = get(state)\n\n if (active_layer_ids.length < 2) return\n\n const group_id = group_layers({ scene, layer_ids: active_layer_ids })\n\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: [group_id],\n hovering_layer_ids: []\n }))\n\n return true\n}\n\n/** @type {ShortcutHandler} */\nconst handle_ungroup_layers = (_evt, scene) => {\n const { active_layer_ids } = get(state)\n\n if (!active_layer_ids.length) return\n\n const layer_ids = ungroup_layers({ scene, group_ids: active_layer_ids })\n\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: layer_ids,\n hovering_layer_ids: []\n }))\n\n return true\n}\n\n/** @type {ShortcutHandler} */\nconst delete_active_layers = (_event, scene) => {\n const { active_layer_ids } = get(state)\n\n if (!active_layer_ids.length) return\n\n delete_layers({ scene, layer_ids: active_layer_ids })\n\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: []\n }))\n\n return true\n}\n\n/**\n * @param {number} delta\n * @returns {ShortcutHandler}\n */\nconst change_layers_z_index = (delta) => (_event, scene) => {\n sort_layers({ scene, layer_ids: get(state).active_layer_ids, delta })\n\n return true\n}\n\n/**\n * @param {keyof typeof import('../tools').tools} new_tool\n * @returns {ShortcutHandler}\n */\nconst set_tool = (new_tool) => (_event) => {\n state.update((old_state) => ({\n ...old_state,\n hovering_layer_ids: [],\n active_tool: new_tool\n }))\n}\n\n/** @type {ShortcutHandler} */\nconst copy = (_event, scene) => {\n const { active_layer_ids } = get(state)\n\n if (!active_layer_ids.length) return\n\n const layers = active_layer_ids.map((id) => scene.entities[id])\n\n clipboard.value = JSON.parse(JSON.stringify(layers))\n}\n\n/** @type {ShortcutHandler} */\nconst paste = (_evt, scene) => {\n const copied_layers = clipboard.value\n\n if (!Array.isArray(copied_layers) || copied_layers.length === 0) return false\n\n const { mouse_x, mouse_y, editor_offsets } = get(state)\n\n const group_boundary = compute_layers_boundary(copied_layers)\n\n const shapes = copied_layers.map((layer) => {\n const { id: _old_id, ...new_layer } = layer\n\n const same_name_count = Object.values(scene.entities).filter(({ name }) =>\n name.includes(new_layer.name.replace(/ \\(copy.+/, ''))\n ).length\n\n new_layer.name =\n same_name_count > 1\n ? new_layer.name.replace(/ \\(copy.+/, '') + ` (copy ${same_name_count})`\n : new_layer.name + ' (copy)'\n\n new_layer.x += canvas_coordinate(\n mouse_x - editor_offsets.x - group_boundary.x - group_boundary.width / 2\n )\n new_layer.y += canvas_coordinate(\n mouse_y - editor_offsets.y - group_boundary.y - group_boundary.height / 2\n )\n\n return new_layer\n })\n\n const new_shapes = add_shapes({ scene, shapes })\n\n state.update((old_state) => ({\n ...old_state,\n hovering_layer_ids: [],\n active_layer_ids: new_shapes.map(({ id }) => id)\n }))\n\n return true\n}\n\nconst undo = () => {\n return true\n}\n\nconst redo = () => {\n return true\n}\n\n/** @type {ShortcutHandler} */\nconst flatten_layers = (_evt, scene) => {\n const { active_layer_ids } = get(state)\n\n if (active_layer_ids.length < 2) return\n\n const [first_id, ...layer_ids] = scene.layer_ids.filter((id) =>\n active_layer_ids.includes(id)\n )\n\n const first_layer = scene.entities[first_id]\n\n for (let id of layer_ids) {\n const layer = scene.entities[id]\n\n const dx = (layer.x - first_layer.x) / config.pixel_size,\n dy = (layer.y - first_layer.y) / config.pixel_size\n\n for (let [x, row] of layer.pixels) {\n for (let [y, color] of row) {\n first_layer.pixels.set(x + dx, y + dy, color)\n }\n }\n }\n\n delete_layers({ scene, layer_ids })\n\n first_layer.update()\n\n state.update((old_state) => ({\n ...old_state,\n active_layer_ids: [first_layer.id]\n }))\n\n return true\n}\n\n/** @type {ShortcutHandler} */\nconst escape_key = (_event) => {\n const { active_layer_ids } = get(state)\n\n if (active_layer_ids.length) {\n state.update((old_state) => ({ ...old_state, active_layer_ids: [] }))\n } else {\n state.update((old_state) => ({ ...old_state, active_tool: 'move' }))\n }\n}\n\nconst select_scene = () => {\n alert('selecting!')\n}\n\n/** @type {Object} */\nexport const shortcuts = {\n /* Layers */\n mod_a: select_visible_layers,\n n: select_layer,\n\n left: move_layer(-1, 0),\n right: move_layer(+1, 0),\n up: move_layer(0, -1),\n down: move_layer(0, +1),\n\n mod_g: handle_group_layers,\n mod_u: handle_ungroup_layers,\n\n backspace: delete_active_layers,\n\n // ctrl_1: select_scene,\n\n mod_left_square_bracket: change_layers_z_index(-1),\n mod_right_square_bracket: change_layers_z_index(1),\n\n mod_e: flatten_layers,\n\n /* Tools */\n ...Object.keys(tools).reduce(\n (obj, key) => ({\n ...obj,\n [tools[key].shortcut]: set_tool(key)\n }),\n {}\n ),\n\n /* Clipboard */\n mod_c: copy,\n mod_v: paste,\n\n /* Undo/Redo */\n mod_z: undo,\n mod_y: redo,\n\n mod_b: () => is_running.set(!get(is_running)),\n\n /* Project */\n // mod_b: run,\n\n /* Misc */\n escape: escape_key\n}\n\n/** @type {Object} */\nconst CUSTOM_KEY_NAMES = {\n Backspace: 'backspace',\n\n Escape: 'escape',\n\n ArrowLeft: 'left',\n ArrowUp: 'up',\n ArrowRight: 'right',\n ArrowDown: 'down',\n\n '[': 'left_square_bracket',\n ']': 'right_square_bracket',\n\n ' ': 'spacebar',\n\n Control: ' ',\n Meta: ' '\n}\n\n/** @param {KeyboardEvent} evt */\nexport const find_shortcut = (evt) => {\n let key = (CUSTOM_KEY_NAMES[evt.key] || evt.key).trim().toLowerCase()\n\n if (evt.metaKey || evt.getModifierState('OS') /* Windows Key */) {\n key = 'mod_' + key\n }\n\n if (evt.ctrlKey) {\n key = 'ctrl_' + key\n }\n\n return shortcuts[key]\n}\n","\n\n","\n\n\n
\n {#each available_tools as tool_key}\n {@const tool = tools[tool_key]}\n\n
\n $state.active_tool = tool_key }\n >\n \n \n\n
\n

{ tool.name } {tool.shortcut}

\n
\n
\n {/each}\n
\n\n\n","\n\n
\n
\n \n
\n {\n if (evt.shiftKey && $project.scene_ids.length > 1) {\n delete_scene(id)\n } else {\n $state.active_scene_ids = [id]\n active.scene = $project.scenes[id]\n }\n\n $state.active_layer_ids = []\n $project.scene_ids = $project.scene_ids\n }}\n on:focus\n class=\"flex-shrink-0 flex items-center justify-center\"\n >\n
\n \n
\n\n {#if editable && $project.scene_ids.length > 1}\n
\n

\n Shift + Click to delete\n

\n
\n {/if}\n \n
\n \n
\n\n {#if editable}\n
\n \n
\n {/if}\n
","\n\n\n
\n \n\n {#if editable}\n \n {/if}\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n {#if editable}\n
\n \n
\n {/if}\n\n\n{#if editable}\n \n{/if}\n\n\n","\n\n\n
\n \n
\n\n
\n \n
\n\n\n\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 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","import localforage from 'localforage'\n\nconst browser = typeof window !== 'undefined'\n\nexport const storage = localforage.createInstance({\n name: '@pogzul'\n})\n\n/**\n * @template T\n * @param {string} key\n * @param {{ value: T }} store\n * @param {{ sync?: boolean, default: any|function(T):void }} [opts]\n */\nexport const persist_store = (\n key,\n store,\n opts = { default: undefined, sync: false }\n) => {\n if (browser) {\n /** @type {BroadcastChannel} */\n let channel\n\n /** @type {boolean} */\n let is_remote_change = false\n\n storage.getItem(key).then((val) => {\n store.value =\n typeof opts.default === 'function'\n ? opts.default(val)\n : val || opts.default\n })\n\n if (opts.sync) {\n channel = new BroadcastChannel(key)\n\n channel.onmessage = async (evt) => {\n is_remote_change = true\n store.value = evt.data\n await storage.setItem(key, evt.data)\n is_remote_change = false\n }\n }\n\n let initialized = false\n $effect(() => {\n const new_val = JSON.parse(JSON.stringify(store.value || ''))\n\n if (!initialized) {\n initialized = true\n return\n }\n\n if (opts.sync && !is_remote_change) channel.postMessage(new_val)\n\n storage.setItem(key, new_val)\n })\n }\n}\n","import { writable } from 'svelte/store'\n\n/** @type {ProjectStore} */\nexport const project = writable()\n","import { writable } from 'svelte/store'\n\n/** @type {PresentUsersStore} */\nexport const present_users = writable([])\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;\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) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\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 // 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 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} = 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 {\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} 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[Symbol.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}\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\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\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[Symbol.toStringTag] === 'FormData' && thing[Symbol.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 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\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\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 ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\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 AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\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} 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} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} 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 (!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} 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} params - The parameters to be converted to a FormData object.\n * @param {Object} 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 replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\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} 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 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(), Object.assign({\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","'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} 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 | 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);\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.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\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 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.apply(null, 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","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\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 \"://\" 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) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\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, 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, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, 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) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, 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), 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 let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\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() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\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 isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = 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\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst 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\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (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 responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\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 = \"credentials\" in Request.prototype;\n request = new Request(url, {\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 let response = await fetch(request);\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' && /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\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\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) => {\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) {\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);\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.7.7\";","'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\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.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.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, 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 i = 0;\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);\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","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\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\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'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","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap} */ var $wm;\n\t/** @type {Map} */ var $m;\n\t/** @type {import('.').RootNode} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var j = 0; j < string.length; j += limit) {\n var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n var arr = [];\n\n for (var i = 0; i < segment.length; ++i) {\n var c = segment.charCodeAt(i);\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n arr[arr.length] = hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n out += arr.join('');\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictDepth: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(obj[key], val);\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n ? []\n : [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, check strictDepth option for throw, else just add whatever is left\n\n if (segment) {\n if (options.strictDepth === true) {\n throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n }\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '
'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","import{default as _}from\"axios\";function L(t,e){let i;return function(...n){clearTimeout(i),i=setTimeout(()=>t.apply(this,n),e)}}function m(t,e){return document.dispatchEvent(new CustomEvent(`inertia:${t}`,e))}var M=t=>m(\"before\",{cancelable:!0,detail:{visit:t}}),H=t=>m(\"error\",{detail:{errors:t}}),$=t=>m(\"exception\",{cancelable:!0,detail:{exception:t}}),N=t=>m(\"finish\",{detail:{visit:t}}),q=t=>m(\"invalid\",{cancelable:!0,detail:{response:t}}),x=t=>m(\"navigate\",{detail:{page:t}}),W=t=>m(\"progress\",{detail:{progress:t}}),X=t=>m(\"start\",{detail:{visit:t}}),K=t=>m(\"success\",{detail:{page:t}});function I(t){return t instanceof File||t instanceof Blob||t instanceof FileList&&t.length>0||t instanceof FormData&&Array.from(t.values()).some(e=>I(e))||typeof t==\"object\"&&t!==null&&Object.values(t).some(e=>I(e))}function A(t,e=new FormData,i=null){t=t||{};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&z(e,J(i,n),t[n]);return e}function J(t,e){return t?t+\"[\"+e+\"]\":e}function z(t,e,i){if(Array.isArray(i))return Array.from(i.keys()).forEach(n=>z(t,J(e,n.toString()),i[n]));if(i instanceof Date)return t.append(e,i.toISOString());if(i instanceof File)return t.append(e,i,i.name);if(i instanceof Blob)return t.append(e,i);if(typeof i==\"boolean\")return t.append(e,i?\"1\":\"0\");if(typeof i==\"string\")return t.append(e,i);if(typeof i==\"number\")return t.append(e,`${i}`);if(i==null)return t.append(e,\"\");A(i,t,e)}var B={modal:null,listener:null,show(t){typeof t==\"object\"&&(t=`All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.
${JSON.stringify(t)}`);let e=document.createElement(\"html\");e.innerHTML=t,e.querySelectorAll(\"a\").forEach(n=>n.setAttribute(\"target\",\"_top\")),this.modal=document.createElement(\"div\"),this.modal.style.position=\"fixed\",this.modal.style.width=\"100vw\",this.modal.style.height=\"100vh\",this.modal.style.padding=\"50px\",this.modal.style.boxSizing=\"border-box\",this.modal.style.backgroundColor=\"rgba(0, 0, 0, .6)\",this.modal.style.zIndex=2e5,this.modal.addEventListener(\"click\",()=>this.hide());let i=document.createElement(\"iframe\");if(i.style.backgroundColor=\"white\",i.style.borderRadius=\"5px\",i.style.width=\"100%\",i.style.height=\"100%\",this.modal.appendChild(i),document.body.prepend(this.modal),document.body.style.overflow=\"hidden\",!i.contentWindow)throw new Error(\"iframe not yet ready.\");i.contentWindow.document.open(),i.contentWindow.document.write(e.outerHTML),i.contentWindow.document.close(),this.listener=this.hideOnEscape.bind(this),document.addEventListener(\"keydown\",this.listener)},hide(){this.modal.outerHTML=\"\",this.modal=null,document.body.style.overflow=\"visible\",document.removeEventListener(\"keydown\",this.listener)},hideOnEscape(t){t.keyCode===27&&this.hide()}};import ne from\"deepmerge\";import*as O from\"qs\";function b(t){return new URL(t.toString(),window.location.toString())}function k(t,e,i,n=\"brackets\"){let s=/^https?:\\/\\//.test(e.toString()),l=s||e.toString().startsWith(\"/\"),h=!l&&!e.toString().startsWith(\"#\")&&!e.toString().startsWith(\"?\"),g=e.toString().includes(\"?\")||t===\"get\"&&Object.keys(i).length,f=e.toString().includes(\"#\"),c=new URL(e.toString(),\"http://localhost\");return t===\"get\"&&Object.keys(i).length&&(c.search=O.stringify(ne(O.parse(c.search,{ignoreQueryPrefix:!0}),i),{encodeValuesOnly:!0,arrayFormat:n}),i={}),[[s?`${c.protocol}//${c.host}`:\"\",l?c.pathname:\"\",h?c.pathname.substring(1):\"\",g?c.search:\"\",f?c.hash:\"\"].join(\"\"),i]}function w(t){return t=new URL(t.href),t.hash=\"\",t}var Q=typeof window>\"u\",C=class{constructor(){this.visitId=null}init({initialPage:e,resolveComponent:i,swapComponent:n}){this.page=e,this.resolveComponent=i,this.swapComponent=n,this.setNavigationType(),this.clearRememberedStateOnReload(),this.isBackForwardVisit()?this.handleBackForwardVisit(this.page):this.isLocationVisit()?this.handleLocationVisit(this.page):this.handleInitialPageVisit(this.page),this.setupEventListeners()}setNavigationType(){this.navigationType=window.performance&&window.performance.getEntriesByType(\"navigation\").length>0?window.performance.getEntriesByType(\"navigation\")[0].type:\"navigate\"}clearRememberedStateOnReload(){this.navigationType===\"reload\"&&window.history.state?.rememberedState&&delete window.history.state.rememberedState}handleInitialPageVisit(e){this.page.url+=window.location.hash,this.setPage(e,{preserveState:!0}).then(()=>x(e))}setupEventListeners(){window.addEventListener(\"popstate\",this.handlePopstateEvent.bind(this)),document.addEventListener(\"scroll\",L(this.handleScrollEvent.bind(this),100),!0)}scrollRegions(){return document.querySelectorAll(\"[scroll-region]\")}handleScrollEvent(e){typeof e.target.hasAttribute==\"function\"&&e.target.hasAttribute(\"scroll-region\")&&this.saveScrollPositions()}saveScrollPositions(){this.replaceState({...this.page,scrollRegions:Array.from(this.scrollRegions()).map(e=>({top:e.scrollTop,left:e.scrollLeft}))})}resetScrollPositions(){window.scrollTo(0,0),this.scrollRegions().forEach(e=>{typeof e.scrollTo==\"function\"?e.scrollTo(0,0):(e.scrollTop=0,e.scrollLeft=0)}),this.saveScrollPositions(),window.location.hash&&setTimeout(()=>document.getElementById(window.location.hash.slice(1))?.scrollIntoView())}restoreScrollPositions(){this.page.scrollRegions&&this.scrollRegions().forEach((e,i)=>{let n=this.page.scrollRegions[i];if(n)typeof e.scrollTo==\"function\"?e.scrollTo(n.left,n.top):(e.scrollTop=n.top,e.scrollLeft=n.left);else return})}isBackForwardVisit(){return window.history.state&&this.navigationType===\"back_forward\"}handleBackForwardVisit(e){window.history.state.version=e.version,this.setPage(window.history.state,{preserveScroll:!0,preserveState:!0}).then(()=>{this.restoreScrollPositions(),x(e)})}locationVisit(e,i){try{let n={preserveScroll:i};window.sessionStorage.setItem(\"inertiaLocationVisit\",JSON.stringify(n)),window.location.href=e.href,w(window.location).href===w(e).href&&window.location.reload()}catch{return!1}}isLocationVisit(){try{return window.sessionStorage.getItem(\"inertiaLocationVisit\")!==null}catch{return!1}}handleLocationVisit(e){let i=JSON.parse(window.sessionStorage.getItem(\"inertiaLocationVisit\")||\"\");window.sessionStorage.removeItem(\"inertiaLocationVisit\"),e.url+=window.location.hash,e.rememberedState=window.history.state?.rememberedState??{},e.scrollRegions=window.history.state?.scrollRegions??[],this.setPage(e,{preserveScroll:i.preserveScroll,preserveState:!0}).then(()=>{i.preserveScroll&&this.restoreScrollPositions(),x(e)})}isLocationVisitResponse(e){return!!(e&&e.status===409&&e.headers[\"x-inertia-location\"])}isInertiaResponse(e){return!!e?.headers[\"x-inertia\"]}createVisitId(){return this.visitId={},this.visitId}cancelVisit(e,{cancelled:i=!1,interrupted:n=!1}){e&&!e.completed&&!e.cancelled&&!e.interrupted&&(e.cancelToken.abort(),e.onCancel(),e.completed=!1,e.cancelled=i,e.interrupted=n,N(e),e.onFinish(e))}finishVisit(e){!e.cancelled&&!e.interrupted&&(e.completed=!0,e.cancelled=!1,e.interrupted=!1,N(e),e.onFinish(e))}resolvePreserveOption(e,i){return typeof e==\"function\"?e(i):e===\"errors\"?Object.keys(i.props.errors||{}).length>0:e}cancel(){this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}visit(e,{method:i=\"get\",data:n={},replace:s=!1,preserveScroll:l=!1,preserveState:h=!1,only:g=[],except:f=[],headers:c={},errorBag:o=\"\",forceFormData:v=!1,onCancelToken:T=()=>{},onBefore:d=()=>{},onStart:p=()=>{},onProgress:P=()=>{},onFinish:y=()=>{},onCancel:ie=()=>{},onSuccess:D=()=>{},onError:U=()=>{},queryStringArrayFormat:F=\"brackets\"}={}){let S=typeof e==\"string\"?b(e):e;if((I(n)||v)&&!(n instanceof FormData)&&(n=A(n)),!(n instanceof FormData)){let[r,a]=k(i,S,n,F);S=b(r),n=a}let R={url:S,method:i,data:n,replace:s,preserveScroll:l,preserveState:h,only:g,except:f,headers:c,errorBag:o,forceFormData:v,queryStringArrayFormat:F,cancelled:!1,completed:!1,interrupted:!1};if(d(R)===!1||!M(R))return;this.activeVisit&&this.cancelVisit(this.activeVisit,{interrupted:!0}),this.saveScrollPositions();let G=this.createVisitId();this.activeVisit={...R,onCancelToken:T,onBefore:d,onStart:p,onProgress:P,onFinish:y,onCancel:ie,onSuccess:D,onError:U,queryStringArrayFormat:F,cancelToken:new AbortController},T({cancel:()=>{this.activeVisit&&this.cancelVisit(this.activeVisit,{cancelled:!0})}}),X(R),p(R);let j=!!(g.length||f.length);_({method:i,url:w(S).href,data:i===\"get\"?{}:n,params:i===\"get\"?n:{},signal:this.activeVisit.cancelToken.signal,headers:{...c,Accept:\"text/html, application/xhtml+xml\",\"X-Requested-With\":\"XMLHttpRequest\",\"X-Inertia\":!0,...j?{\"X-Inertia-Partial-Component\":this.page.component}:{},...g.length?{\"X-Inertia-Partial-Data\":g.join(\",\")}:{},...f.length?{\"X-Inertia-Partial-Except\":f.join(\",\")}:{},...o&&o.length?{\"X-Inertia-Error-Bag\":o}:{},...this.page.version?{\"X-Inertia-Version\":this.page.version}:{}},onUploadProgress:r=>{n instanceof FormData&&(r.percentage=r.progress?Math.round(r.progress*100):0,W(r),P(r))}}).then(r=>{if(!this.isInertiaResponse(r))return Promise.reject({response:r});let a=r.data;j&&a.component===this.page.component&&(a.props={...this.page.props,...a.props}),l=this.resolvePreserveOption(l,a),h=this.resolvePreserveOption(h,a),h&&window.history.state?.rememberedState&&a.component===this.page.component&&(a.rememberedState=window.history.state.rememberedState);let E=S,V=b(a.url);return E.hash&&!V.hash&&w(E).href===V.href&&(V.hash=E.hash,a.url=V.href),this.setPage(a,{visitId:G,replace:s,preserveScroll:l,preserveState:h})}).then(()=>{let r=this.page.props.errors||{};if(Object.keys(r).length>0){let a=o?r[o]?r[o]:{}:r;return H(a),U(a)}return K(this.page),D(this.page)}).catch(r=>{if(this.isInertiaResponse(r.response))return this.setPage(r.response.data,{visitId:G});if(this.isLocationVisitResponse(r.response)){let a=b(r.response.headers[\"x-inertia-location\"]),E=S;E.hash&&!a.hash&&w(E).href===a.href&&(a.hash=E.hash),this.locationVisit(a,l===!0)}else if(r.response)q(r.response)&&B.show(r.response.data);else return Promise.reject(r)}).then(()=>{this.activeVisit&&this.finishVisit(this.activeVisit)}).catch(r=>{if(!_.isCancel(r)){let a=$(r);if(this.activeVisit&&this.finishVisit(this.activeVisit),a)return Promise.reject(r)}})}setPage(e,{visitId:i=this.createVisitId(),replace:n=!1,preserveScroll:s=!1,preserveState:l=!1}={}){return Promise.resolve(this.resolveComponent(e.component)).then(h=>{i===this.visitId&&(e.scrollRegions=e.scrollRegions||[],e.rememberedState=e.rememberedState||{},n=n||b(e.url).href===window.location.href,n?this.replaceState(e):this.pushState(e),this.swapComponent({component:h,page:e,preserveState:l}).then(()=>{s||this.resetScrollPositions(),n||x(e)}))})}pushState(e){this.page=e,window.history.pushState(e,\"\",e.url)}replaceState(e){this.page=e,window.history.replaceState(e,\"\",e.url)}handlePopstateEvent(e){if(e.state!==null){let i=e.state,n=this.createVisitId();Promise.resolve(this.resolveComponent(i.component)).then(s=>{n===this.visitId&&(this.page=i,this.swapComponent({component:s,page:i,preserveState:!1}).then(()=>{this.restoreScrollPositions(),x(i)}))})}else{let i=b(this.page.url);i.hash=window.location.hash,this.replaceState({...this.page,url:i.href}),this.resetScrollPositions()}}get(e,i={},n={}){return this.visit(e,{...n,method:\"get\",data:i})}reload(e={}){return this.visit(window.location.href,{...e,preserveScroll:!0,preserveState:!0})}replace(e,i={}){return console.warn(`Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia.${i.method??\"get\"}() instead.`),this.visit(e,{preserveState:!0,...i,replace:!0})}post(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:\"post\",data:i})}put(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:\"put\",data:i})}patch(e,i={},n={}){return this.visit(e,{preserveState:!0,...n,method:\"patch\",data:i})}delete(e,i={}){return this.visit(e,{preserveState:!0,...i,method:\"delete\"})}remember(e,i=\"default\"){Q||this.replaceState({...this.page,rememberedState:{...this.page?.rememberedState,[i]:e}})}restore(e=\"default\"){if(!Q)return window.history.state?.rememberedState?.[e]}on(e,i){let n=s=>{let l=i(s);s.cancelable&&!s.defaultPrevented&&l===!1&&s.preventDefault()};return document.addEventListener(`inertia:${e}`,n),()=>document.removeEventListener(`inertia:${e}`,n)}};var re={buildDOMElement(t){let e=document.createElement(\"template\");e.innerHTML=t;let i=e.content.firstChild;if(!t.startsWith(\"\n\n\n\n \n\n","import { writable } from 'svelte/store'\n\nconst store = writable({\n component: null,\n layout: [],\n page: {},\n key: null,\n})\n\nexport default store\n","\n\n\n\n{#if $store.component}\n {#key key}\n \n {#each children as child, index (component && component.length === index ? $store.key : null)}\n \n {/each}\n \n {/key}\n{/if}\n","\n\n\n","\n\n
\n \n
\n","import { router, setupProgress } from '@inertiajs/core'\nimport App from './App.svelte'\nimport SSR from './SSR.svelte'\nimport store from './store'\n\nexport default async function createInertiaApp({ id = 'app', resolve, setup, progress = {}, page }) {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n const resolveComponent = (name) => Promise.resolve(resolve(name))\n\n await resolveComponent(initialPage.component).then((initialComponent) => {\n store.set({\n component: initialComponent,\n page: initialPage,\n })\n })\n\n if (!isServer) {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async ({ component, page, preserveState }) => {\n store.update((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n },\n })\n\n if (progress) {\n setupProgress(progress)\n }\n\n return setup({\n el,\n App,\n props: {\n initialPage,\n resolveComponent,\n },\n })\n }\n\n if (isServer) {\n const { html, head } = SSR.render({ id, initialPage })\n\n return {\n body: html,\n head: [head],\n }\n }\n}\n","import { derived } from 'svelte/store'\nimport store from './store'\n\nconst page = derived(store, ($store) => $store.page)\n\nexport default page\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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 promiseTag = '[object Promise]',\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/**\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 match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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/** 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/** 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/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\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 ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\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\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 ? array.length : 0;\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\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\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\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\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\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\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\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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/** 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/**\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/** 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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\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/** 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 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 ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\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}\n\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 return this.has(key) && delete this.__data__[key];\n}\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\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\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 data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\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\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 ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\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}\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 return true;\n}\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\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\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 data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\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\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 ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\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.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\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 return getMapData(this, key)['delete'](key);\n}\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\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\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 getMapData(this, key).set(key, value);\n return this;\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\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 this.__data__ = new ListCache(entries);\n}\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}\n\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 return this.__data__['delete'](key);\n}\n\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\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\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 cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\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\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 // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\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 object[key] = value;\n }\n}\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\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\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} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including 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, isDeep, isFull, customizer, key, object, stack) {\n var result;\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 if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, 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 (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\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, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\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\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\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) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\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\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 result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\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\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\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\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\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\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\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\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\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 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 assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties 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\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\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\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\n/**\n * Creates an array of the own enumerable symbol properties 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 ? overArg(nativeGetSymbols, Object) : stubArray;\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,\n// for data views in Edge < 14, and promises in Node.js.\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 = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\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\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 = 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\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\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`, `Number`, `RegExp`, 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 {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, 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 cloneMap(object, isDeep, cloneFunc);\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 cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\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 length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\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\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\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\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\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\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\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\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 */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\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\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\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\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\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 // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\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\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 * 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\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\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 = cloneDeep;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\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 nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\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/**\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 to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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/** 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/** 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 return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\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\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\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\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\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\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\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\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\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\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\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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 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 * 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/** 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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\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/** 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 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/**\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\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\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\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\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\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\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/**\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\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\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\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\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\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\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/**\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\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\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\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\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\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\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/**\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\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 {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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/**\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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 // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\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\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\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 // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\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\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\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\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\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\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\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\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 length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\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\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\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\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\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\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\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\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\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\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\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\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\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\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\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\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\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\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\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 = isEqual;\n","import { router } from '@inertiajs/core'\nimport cloneDeep from 'lodash.clonedeep'\nimport isEqual from 'lodash.isequal'\nimport { writable } from 'svelte/store'\n\nfunction useForm(...args) {\n const rememberKey = typeof args[0] === 'string' ? args[0] : null\n const data = (typeof args[0] === 'string' ? args[1] : args[0]) || {}\n const restored = rememberKey ? router.restore(rememberKey) : null\n let defaults = cloneDeep(data)\n let cancelToken = null\n let recentlySuccessfulTimeoutId = null\n let transform = (data) => data\n\n const store = writable({\n ...(restored ? restored.data : data),\n isDirty: false,\n errors: restored ? restored.errors : {},\n hasErrors: false,\n progress: null,\n wasSuccessful: false,\n recentlySuccessful: false,\n processing: false,\n setStore(key, value) {\n store.update((store) => {\n return Object.assign(store, typeof key === 'string' ? { [key]: value } : key)\n })\n },\n data() {\n return Object.keys(data).reduce((carry, key) => {\n carry[key] = this[key]\n return carry\n }, {})\n },\n transform(callback) {\n transform = callback\n\n return this\n },\n defaults(key, value) {\n if (typeof key === 'undefined') {\n defaults = Object.assign(defaults, cloneDeep(this.data()))\n\n return this\n }\n\n defaults = Object.assign(defaults, cloneDeep(value ? { [key]: value } : key))\n\n return this\n },\n reset(...fields) {\n let clonedDefaults = cloneDeep(defaults)\n if (fields.length === 0) {\n this.setStore(clonedDefaults)\n } else {\n this.setStore(\n Object.keys(clonedDefaults)\n .filter((key) => fields.includes(key))\n .reduce((carry, key) => {\n carry[key] = clonedDefaults[key]\n return carry\n }, {}),\n )\n }\n\n return this\n },\n setError(key, value) {\n this.setStore('errors', {\n ...this.errors,\n ...(value ? { [key]: value } : key),\n })\n\n return this\n },\n clearErrors(...fields) {\n this.setStore(\n 'errors',\n Object.keys(this.errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: this.errors[field] } : {}),\n }),\n {},\n ),\n )\n\n return this\n },\n submit(method, url, options = {}) {\n const data = transform(this.data())\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n this.setStore('wasSuccessful', false)\n this.setStore('recentlySuccessful', false)\n clearTimeout(recentlySuccessfulTimeoutId)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n this.setStore('processing', true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n this.setStore('progress', event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n this.setStore('processing', false)\n this.setStore('progress', null)\n this.clearErrors()\n this.setStore('wasSuccessful', true)\n this.setStore('recentlySuccessful', true)\n recentlySuccessfulTimeoutId = setTimeout(() => this.setStore('recentlySuccessful', false), 2000)\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n this.setStore('processing', false)\n this.setStore('progress', null)\n this.clearErrors().setError(errors)\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n this.setStore('processing', false)\n this.setStore('progress', null)\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: () => {\n this.setStore('processing', false)\n this.setStore('progress', null)\n cancelToken = null\n\n if (options.onFinish) {\n return options.onFinish()\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data })\n } else {\n router[method](url, data, _options)\n }\n },\n get(url, options) {\n this.submit('get', url, options)\n },\n post(url, options) {\n this.submit('post', url, options)\n },\n put(url, options) {\n this.submit('put', url, options)\n },\n patch(url, options) {\n this.submit('patch', url, options)\n },\n delete(url, options) {\n this.submit('delete', url, options)\n },\n cancel() {\n if (cancelToken) {\n cancelToken.cancel()\n }\n },\n })\n\n store.subscribe((form) => {\n if (form.isDirty === isEqual(form.data(), defaults)) {\n form.setStore('isDirty', !form.isDirty)\n }\n\n const hasErrors = Object.keys(form.errors).length > 0\n if (form.hasErrors !== hasErrors) {\n form.setStore('hasErrors', !form.hasErrors)\n }\n\n if (rememberKey) {\n router.remember({ data: form.data(), errors: form.errors }, rememberKey)\n }\n })\n\n return store\n}\n\nexport default useForm\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\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/* eslint-enable no-var */\n\n/* eslint-disable no-var */\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 jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n 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/* eslint-enable no-var */\n\nexport { api as default };\n","import { get } from 'svelte/store'\nimport { artboard_state } from '@pogzul/artboard'\nimport { pick } from '@pogzul/engine'\nimport { page } from '@inertiajs/svelte'\nimport Cookie from 'js-cookie'\n\nconst browser = typeof window !== 'undefined'\n\nconst cookies = Cookie.withConverter({\n write: function (value, name) {\n return value\n }\n})\n\nexport const default_preferences = {\n theme: 'light',\n ide_visible: true,\n\n /**\n * @type {Partial<\n * Pick<\n * import('@pogzul/artboard').ArtboardState,\n * 'active_tool' | 'active_scene_ids'\n * > & { active_color: number[] }\n * >}\n */\n artboard_state: {}\n}\n\nconst PERMANENT_COOKIE_EXPIRES = 10 * 365\n\nclass Preferences {\n value = $state(default_preferences)\n}\n\n// * @type {import('svelte/store').Writable}\nexport const preferences = new Preferences() // writable(default_preferences)\n\n/** @param {Partial} json */\nexport const set_preferences = (json) => {\n const data = { ...default_preferences, ...json }\n\n preferences.value = { ...default_preferences, ...data }\n\n /** @type {Partial} */\n let state = pick(data.artboard_state, 'active_tool', 'active_scene_ids')\n\n if (data.artboard_state.active_color) {\n state.active_color = new Uint8Array(data.artboard_state.active_color)\n }\n artboard_state.update((old_state) => ({ ...old_state, ...state }))\n\n if (browser) {\n let preferences_initialized = false\n $effect(() => {\n const new_val = preferences.value\n\n if (!preferences_initialized) {\n preferences_initialized = true\n return\n }\n\n const { preferences_cookie_key } = get(page).props.config\n\n const { artboard_state, ...prefs } = new_val\n\n cookies.set(preferences_cookie_key, JSON.stringify(prefs), {\n expires: PERMANENT_COOKIE_EXPIRES\n })\n })\n }\n}\n\n/** @type {string} */\nlet old_state\n\nif (browser) {\n let artboard_state_initialized = false\n artboard_state.subscribe((new_state) => {\n if (!artboard_state_initialized) return (artboard_state_initialized = true)\n\n const get_state = (state) => ({\n ...pick(state, 'active_tool', 'active_scene_ids'),\n active_color: Array.from(state.active_color)\n })\n\n const state = get_state(new_state)\n\n if (JSON.stringify(state) !== JSON.stringify(old_state)) {\n const { artboard_state_cookie_key } = get(page).props.config\n\n cookies.set(artboard_state_cookie_key, JSON.stringify(state), {\n expires: PERMANENT_COOKIE_EXPIRES,\n path: get(page).url\n })\n\n old_state = JSON.stringify(state)\n }\n })\n}\n","import { writable } from 'svelte/store'\n\nexport const has_run = writable(false)\n","/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template K,V\n * @param {Map} m\n * @return {Map}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template {Map} MAP\n * @template {MAP extends Map ? function():V : unknown} CF\n * @param {MAP} map\n * @param {MAP extends Map ? K : unknown} key\n * @param {CF} createT\n * @return {ReturnType}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map} m\n * @param {function(V,K):R} f\n * @return {Array}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set} set\n * @return {Array}\n */\nexport const toArray = set => Array.from(set)\n\n/**\n * @template T\n * @param {Set} set\n * @return {T}\n */\nexport const first = set =>\n set.values().next().value ?? undefined\n\n/**\n * @template T\n * @param {Iterable} entries\n * @return {Set}\n */\nexport const from = entries => new Set(entries)\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\nimport * as set from './set.js'\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {ArrayLike} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array}\n */\nexport const create = () => /** @type {Array} */ ([])\n\n/**\n * @template D\n * @param {Array} a\n * @return {Array}\n */\nexport const copy = a => /** @type {Array} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array} dest\n * @param {Array} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike|Iterable} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n * @template {ArrayLike} ARR\n *\n * @param {ARR} arr\n * @param {function(ITEM, number, ARR):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (!f(arr[i], i, arr)) {\n return false\n }\n }\n return true\n}\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @template {ArrayLike} ARR\n * @param {ARR} arr\n * @param {function(S, number, ARR):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (f(arr[i], i, arr)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @template ELEM\n *\n * @param {ArrayLike} a\n * @param {ArrayLike} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n\n/**\n * @template ELEM\n * @param {Array>} arr\n * @return {Array}\n */\nexport const flatten = arr => fold(arr, /** @type {Array} */ ([]), (acc, val) => acc.concat(val))\n\n/**\n * @template T\n * @param {number} len\n * @param {function(number, Array):T} f\n * @return {Array}\n */\nexport const unfold = (len, f) => {\n const array = new Array(len)\n for (let i = 0; i < len; i++) {\n array[i] = f(i, array)\n }\n return array\n}\n\n/**\n * @template T\n * @template RESULT\n * @param {Array} arr\n * @param {RESULT} seed\n * @param {function(RESULT, T, number):RESULT} folder\n */\nexport const fold = (arr, seed, folder) => arr.reduce(folder, seed)\n\nexport const isArray = Array.isArray\n\n/**\n * @template T\n * @param {Array} arr\n * @return {Array}\n */\nexport const unique = arr => from(set.from(arr))\n\n/**\n * @template T\n * @template M\n * @param {ArrayLike} arr\n * @param {function(T):M} mapper\n * @return {Array}\n */\nexport const uniqueBy = (arr, mapper) => {\n /**\n * @type {Set}\n */\n const happened = set.create()\n /**\n * @type {Array}\n */\n const result = []\n for (let i = 0; i < arr.length; i++) {\n const el = arr[i]\n const mapped = mapper(el)\n if (!happened.has(mapped)) {\n happened.add(mapped)\n result.push(el)\n }\n }\n return result\n}\n\n/**\n * @template {ArrayLike} ARR\n * @template {function(ARR extends ArrayLike ? T : never, number, ARR):any} MAPPER\n * @param {ARR} arr\n * @param {MAPPER} mapper\n * @return {Array}\n */\nexport const map = (arr, mapper) => {\n /**\n * @type {Array}\n */\n const res = Array(arr.length)\n for (let i = 0; i < arr.length; i++) {\n res[i] = mapper(/** @type {any} */ (arr[i]), i, /** @type {any} */ (arr))\n }\n return /** @type {any} */ (res)\n}\n","/**\n * Observable class prototype.\n *\n * @module observable\n */\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as array from './array.js'\n\n/**\n * Handles named events.\n * @experimental\n *\n * This is basically a (better typed) duplicate of Observable, which will replace Observable in the\n * next release.\n *\n * @template {{[key in keyof EVENTS]: function(...any):void}} EVENTS\n */\nexport class ObservableV2 {\n constructor () {\n /**\n * Some desc.\n * @type {Map>}\n */\n this._observers = map.create()\n }\n\n /**\n * @template {keyof EVENTS & string} NAME\n * @param {NAME} name\n * @param {EVENTS[NAME]} f\n */\n on (name, f) {\n map.setIfUndefined(this._observers, /** @type {string} */ (name), set.create).add(f)\n return f\n }\n\n /**\n * @template {keyof EVENTS & string} NAME\n * @param {NAME} name\n * @param {EVENTS[NAME]} f\n */\n once (name, f) {\n /**\n * @param {...any} args\n */\n const _f = (...args) => {\n this.off(name, /** @type {any} */ (_f))\n f(...args)\n }\n this.on(name, /** @type {any} */ (_f))\n }\n\n /**\n * @template {keyof EVENTS & string} NAME\n * @param {NAME} name\n * @param {EVENTS[NAME]} f\n */\n off (name, f) {\n const observers = this._observers.get(name)\n if (observers !== undefined) {\n observers.delete(f)\n if (observers.size === 0) {\n this._observers.delete(name)\n }\n }\n }\n\n /**\n * Emit a named event. All registered event listeners that listen to the\n * specified name will receive the event.\n *\n * @todo This should catch exceptions\n *\n * @template {keyof EVENTS & string} NAME\n * @param {NAME} name The event name.\n * @param {Parameters} args The arguments that are applied to the event listener.\n */\n emit (name, args) {\n // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n }\n\n destroy () {\n this._observers = map.create()\n }\n}\n\n/* c8 ignore start */\n/**\n * Handles named events.\n *\n * @deprecated\n * @template N\n */\nexport class Observable {\n constructor () {\n /**\n * Some desc.\n * @type {Map}\n */\n this._observers = map.create()\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n on (name, f) {\n map.setIfUndefined(this._observers, name, set.create).add(f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n once (name, f) {\n /**\n * @param {...any} args\n */\n const _f = (...args) => {\n this.off(name, _f)\n f(...args)\n }\n this.on(name, _f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n off (name, f) {\n const observers = this._observers.get(name)\n if (observers !== undefined) {\n observers.delete(f)\n if (observers.size === 0) {\n this._observers.delete(name)\n }\n }\n }\n\n /**\n * Emit a named event. All registered event listeners that listen to the\n * specified name will receive the event.\n *\n * @todo This should catch exceptions\n *\n * @param {N} name The event name.\n * @param {Array} args The arguments that are applied to the event listener.\n */\n emit (name, args) {\n // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n }\n\n destroy () {\n this._observers = map.create()\n }\n}\n/* c8 ignore end */\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\nexport const HIGHEST_INT32 = binary.BITS31\nexport const HIGHEST_UINT32 = binary.BITS32\n\n/* c8 ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\nexport const parseInt = Number.parseInt\n\n/**\n * Count the number of \"1\" bits in an unsigned 32bit number.\n *\n * Super fun bitcount algorithm by Brian Kernighan.\n *\n * @param {number} n\n */\nexport const countBits = n => {\n n &= binary.BITS32\n let count = 0\n while (n) {\n n &= (n - 1)\n count++\n }\n return count\n}\n","import * as array from './array.js'\n\n/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * The largest utf16 character.\n * Corresponds to Uint8Array([255, 255]) or charcodeof(2x2^8)\n */\nexport const MAX_UTF16_CHARACTER = fromCharCode(65535)\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* c8 ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* c8 ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* c8 ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* c8 ignore start */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* c8 ignore next */\n utf8TextDecoder = null\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* c8 ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n\n/**\n * @param {string} str The initial string\n * @param {number} index Starting position\n * @param {number} remove Number of characters to remove\n * @param {string} insert New content to insert\n */\nexport const splice = (str, index, remove, insert = '') => str.slice(0, index) + insert + str.slice(index + remove)\n\n/**\n * @param {string} source\n * @param {number} n\n */\nexport const repeat = (source, n) => array.unfold(n, () => source).join('')\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\nimport * as string from './string.js'\nimport * as array from './array.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * @param {function(Encoder):void} f\n */\nexport const encode = (f) => {\n const encoder = createEncoder()\n f(encoder)\n return toUint8Array(encoder)\n}\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Check whether encoder is empty.\n *\n * @function\n * @param {Encoder} encoder\n * @return {boolean}\n */\nexport const hasContent = encoder => encoder.cpos > 0 || encoder.bufs.length > 0\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nexport const verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num = math.floor(num / 128) // shift >>> 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num = math.floor(num / 64) // shift >>> 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num = math.floor(num / 128) // shift >>> 7\n }\n}\n\n/**\n * A cache to store strings temporarily\n */\nconst _strBuffer = new Uint8Array(30000)\nconst _maxStrBSize = _strBuffer.length / 3\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringNative = (encoder, str) => {\n if (str.length < _maxStrBSize) {\n // We can encode the string into the existing buffer\n /* c8 ignore next */\n const written = string.utf8TextEncoder.encodeInto(str, _strBuffer).written || 0\n writeVarUint(encoder, written)\n for (let i = 0; i < written; i++) {\n write(encoder, _strBuffer[i])\n }\n } else {\n writeVarUint8Array(encoder, string.encodeUtf8(str))\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringPolyfill = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\n/* c8 ignore next */\nexport const writeVarString = (string.utf8TextEncoder && /** @type {any} */ (string.utf8TextEncoder).encodeInto) ? _writeVarStringNative : _writeVarStringPolyfill\n\n/**\n * Write a string terminated by a special byte sequence. This is not very performant and is\n * generally discouraged. However, the resulting byte arrays are lexiographically ordered which\n * makes this a nice feature for databases.\n *\n * The string will be encoded using utf8 and then terminated and escaped using writeTerminatingUint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeTerminatedString = (encoder, str) =>\n writeTerminatedUint8Array(encoder, string.encodeUtf8(str))\n\n/**\n * Write a terminating Uint8Array. Note that this is not performant and is generally\n * discouraged. There are few situations when this is needed.\n *\n * We use 0x0 as a terminating character. 0x1 serves as an escape character for 0x0 and 0x1.\n *\n * Example: [0,1,2] is encoded to [1,0,1,1,2,0]. 0x0, and 0x1 needed to be escaped using 0x1. Then\n * the result is terminated using the 0x0 character.\n *\n * This is basically how many systems implement null terminated strings. However, we use an escape\n * character 0x1 to avoid issues and potenial attacks on our database (if this is used as a key\n * encoder for NoSql databases).\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} buf The string that is to be encoded.\n */\nexport const writeTerminatedUint8Array = (encoder, buf) => {\n for (let i = 0; i < buf.length; i++) {\n const b = buf[i]\n if (b === 0 || b === 1) {\n write(encoder, 1)\n }\n write(encoder, buf[i])\n }\n write(encoder, 0)\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n * Encoders start with a rather big initial buffer.\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num, false)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {undefined|null|number|bigint|boolean|string|Object|Array|Uint8Array} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && math.abs(data) <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (array.isArray(data)) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n // const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n const encodedDiff = encoder.diff * 2 + (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* c8 ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n","/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as binary from './binary.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as string from './string.js'\nimport * as error from './error.js'\nimport * as encoding from './encoding.js'\n\nconst errorUnexpectedEndOfArray = error.create('Unexpected end of array')\nconst errorIntegerOutOfRange = error.create('Integer out of Range')\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nexport class Decoder {\n /**\n * @param {Uint8Array} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array}\n */\n this.arr = uint8Array\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0\n }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n const _decoder = createDecoder(decoder.arr)\n _decoder.pos = newPos\n return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nexport const readUint8Array = (decoder, len) => {\n const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n decoder.pos += len\n return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n const uint =\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n decoder.pos += 2\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n const uint =\n (decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n const uint =\n (decoder.arr[decoder.pos + 3] +\n (decoder.arr[decoder.pos + 2] << 8) +\n (decoder.arr[decoder.pos + 1] << 16) +\n (decoder.arr[decoder.pos] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n let num = 0\n let mult = 1\n const len = decoder.arr.length\n while (decoder.pos < len) {\n const r = decoder.arr[decoder.pos++]\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & binary.BITS7) * mult // shift $r << (7*#iterations) and add it to num\n mult *= 128 // next iteration, shift 7 \"more\" to the left\n if (r < binary.BIT8) {\n return num\n }\n /* c8 ignore start */\n if (num > number.MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if number is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++]\n let num = r & binary.BITS6\n let mult = 64\n const sign = (r & binary.BIT7) > 0 ? -1 : 1\n if ((r & binary.BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n const len = decoder.arr.length\n while (decoder.pos < len) {\n r = decoder.arr[decoder.pos++]\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & binary.BITS7) * mult\n mult *= 128\n if (r < binary.BIT8) {\n return sign * num\n }\n /* c8 ignore start */\n if (num > number.MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n const pos = decoder.pos\n const s = readVarUint(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n const pos = decoder.pos\n const s = readVarInt(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * We don't test this function anymore as we use native decoding/encoding by default now.\n * Better not modify this anymore..\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\n/* c8 ignore start */\nexport const _readVarStringPolyfill = decoder => {\n let remainingLen = readVarUint(decoder)\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder))\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n decoder.pos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n}\n/* c8 ignore stop */\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n */\nexport const _readVarStringNative = decoder =>\n /** @type any */ (string.utf8TextDecoder).decode(readVarUint8Array(decoder))\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n *\n */\n/* c8 ignore next */\nexport const readVarString = string.utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill\n\n/**\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTerminatedUint8Array = decoder => {\n const encoder = encoding.createEncoder()\n let b\n while (true) {\n b = readUint8(decoder)\n if (b === 0) {\n return encoding.toUint8Array(encoder)\n }\n if (b === 1) {\n b = readUint8(decoder)\n }\n encoding.write(encoder, b)\n }\n}\n\n/**\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const readTerminatedString = decoder => string.decodeUtf8(readTerminatedUint8Array(decoder))\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n const pos = decoder.pos\n const s = readVarString(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n decoder.pos += len\n return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0, false)\n\n/**\n * @type {Array}\n */\nconst readAnyLookupTable = [\n decoder => undefined, // CASE 127: undefined\n decoder => null, // CASE 126: null\n readVarInt, // CASE 125: integer\n readFloat32, // CASE 124: float32\n readFloat64, // CASE 123: float64\n readBigInt64, // CASE 122: bigint\n decoder => false, // CASE 121: boolean (false)\n decoder => true, // CASE 120: boolean (true)\n readVarString, // CASE 119: string\n decoder => { // CASE 118: object\n const len = readVarUint(decoder)\n /**\n * @type {Object}\n */\n const obj = {}\n for (let i = 0; i < len; i++) {\n const key = readVarString(decoder)\n obj[key] = readAny(decoder)\n }\n return obj\n },\n decoder => { // CASE 117: array\n const len = readVarUint(decoder)\n const arr = []\n for (let i = 0; i < len; i++) {\n arr.push(readAny(decoder))\n }\n return arr\n },\n readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {function(Decoder):T} reader\n */\n constructor (uint8Array, reader) {\n super(uint8Array)\n /**\n * The reader\n */\n this.reader = reader\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = this.reader(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {T} */ (this.s)\n }\n}\n\nexport class IntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @return {number}\n */\n read () {\n this.s += readVarInt(this)\n return this.s\n }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n this.s += readVarInt(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s++)\n }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n const diff = readVarInt(this)\n // if the first bit is set, we read more data\n const hasCount = diff & 1\n this.diff = math.floor(diff / 2) // shift >> 1\n this.count = 1\n if (hasCount) {\n this.count = readVarUint(this) + 2\n }\n }\n this.s += this.diff\n this.count--\n return this.s\n }\n}\n\nexport class StringDecoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n this.decoder = new UintOptRleDecoder(uint8Array)\n this.str = readVarString(this.decoder)\n /**\n * @type {number}\n */\n this.spos = 0\n }\n\n /**\n * @return {string}\n */\n read () {\n const end = this.spos + this.decoder.read()\n const res = this.str.slice(this.spos, end)\n this.spos = end\n return res\n }\n}\n","/* eslint-env browser */\n\nexport const subtle = crypto.subtle\nexport const getRandomValues = crypto.getRandomValues.bind(crypto)\n","/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\nimport { getRandomValues } from 'lib0/webcrypto'\n\nexport const rand = Math.random\n\nexport const uint32 = () => getRandomValues(new Uint32Array(1))[0]\n\nexport const uint53 = () => {\n const arr = getRandomValues(new Uint32Array(8))\n return (arr[0] & binary.BITS21) * (binary.BITS32 + 1) + (arr[1] >>> 0)\n}\n\n/**\n * @template T\n * @param {Array} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\n\n/**\n * @return {string}\n */\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/**\n * Utility module to work with time.\n *\n * @module time\n */\n\nimport * as metric from './metric.js'\nimport * as math from './math.js'\n\n/**\n * Return current time.\n *\n * @return {Date}\n */\nexport const getDate = () => new Date()\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nexport const getUnixTime = Date.now\n\n/**\n * Transform time (in ms) to a human readable format. E.g. 1100 => 1.1s. 60s => 1min. .001 => 10μs.\n *\n * @param {number} d duration in milliseconds\n * @return {string} humanized approximation of time\n */\nexport const humanizeDuration = d => {\n if (d < 60000) {\n const p = metric.prefix(d, -1)\n return math.round(p.n * 100) / 100 + p.prefix + 's'\n }\n d = math.floor(d / 1000)\n const seconds = d % 60\n const minutes = math.floor(d / 60) % 60\n const hours = math.floor(d / 3600) % 24\n const days = math.floor(d / 86400)\n if (days > 0) {\n return days + 'd' + ((hours > 0 || minutes > 30) ? ' ' + (minutes > 30 ? hours + 1 : hours) + 'h' : '')\n }\n if (hours > 0) {\n /* c8 ignore next */\n return hours + 'h' + ((minutes > 0 || seconds > 30) ? ' ' + (seconds > 30 ? minutes + 1 : minutes) + 'min' : '')\n }\n return minutes + 'min' + (seconds > 0 ? ' ' + seconds + 's' : '')\n}\n","/**\n * Utility helpers to work with promises.\n *\n * @module promise\n */\n\nimport * as time from './time.js'\n\n/**\n * @template T\n * @callback PromiseResolve\n * @param {T|PromiseLike} [result]\n */\n\n/**\n * @template T\n * @param {function(PromiseResolve,function(Error):void):any} f\n * @return {Promise}\n */\nexport const create = f => /** @type {Promise} */ (new Promise(f))\n\n/**\n * @param {function(function():void,function(Error):void):void} f\n * @return {Promise}\n */\nexport const createEmpty = f => new Promise(f)\n\n/**\n * `Promise.all` wait for all promises in the array to resolve and return the result\n * @template {unknown[] | []} PS\n *\n * @param {PS} ps\n * @return {Promise<{ -readonly [P in keyof PS]: Awaited }>}\n */\nexport const all = Promise.all.bind(Promise)\n\n/**\n * @param {Error} [reason]\n * @return {Promise}\n */\nexport const reject = reason => Promise.reject(reason)\n\n/**\n * @template T\n * @param {T|void} res\n * @return {Promise}\n */\nexport const resolve = res => Promise.resolve(res)\n\n/**\n * @template T\n * @param {T} res\n * @return {Promise}\n */\nexport const resolveWith = res => Promise.resolve(res)\n\n/**\n * @todo Next version, reorder parameters: check, [timeout, [intervalResolution]]\n * @deprecated use untilAsync instead\n *\n * @param {number} timeout\n * @param {function():boolean} check\n * @param {number} [intervalResolution]\n * @return {Promise}\n */\nexport const until = (timeout, check, intervalResolution = 10) => create((resolve, reject) => {\n const startTime = time.getUnixTime()\n const hasTimeout = timeout > 0\n const untilInterval = () => {\n if (check()) {\n clearInterval(intervalHandle)\n resolve()\n } else if (hasTimeout) {\n /* c8 ignore else */\n if (time.getUnixTime() - startTime > timeout) {\n clearInterval(intervalHandle)\n reject(new Error('Timeout'))\n }\n }\n }\n const intervalHandle = setInterval(untilInterval, intervalResolution)\n})\n\n/**\n * @param {()=>Promise|boolean} check\n * @param {number} timeout\n * @param {number} intervalResolution\n * @return {Promise}\n */\nexport const untilAsync = async (check, timeout = 0, intervalResolution = 10) => {\n const startTime = time.getUnixTime()\n const noTimeout = timeout <= 0\n // eslint-disable-next-line no-unmodified-loop-condition\n while (noTimeout || time.getUnixTime() - startTime <= timeout) {\n if (await check()) return\n await wait(intervalResolution)\n }\n throw new Error('Timeout')\n}\n\n/**\n * @param {number} timeout\n * @return {Promise}\n */\nexport const wait = timeout => create((resolve, _reject) => setTimeout(resolve, timeout))\n\n/**\n * Checks if an object is a promise using ducktyping.\n *\n * Promises are often polyfilled, so it makes sense to add some additional guarantees if the user of this\n * library has some insane environment where global Promise objects are overwritten.\n *\n * @param {any} p\n * @return {boolean}\n */\nexport const isPromise = p => p instanceof Promise || (p && p.then && p.catch && p.finally)\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* c8 ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* eslint-env browser */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* c8 ignore start */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} newValue\n */\n setItem (key, newValue) {\n this.map.set(key, newValue)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n/* c8 ignore stop */\n\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\nlet usePolyfill = true\n\n/* c8 ignore start */\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n if (typeof localStorage !== 'undefined' && localStorage) {\n _localStorage = localStorage\n usePolyfill = false\n }\n} catch (e) { }\n/* c8 ignore stop */\n\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\n/* c8 ignore next */\nexport const varStorage = _localStorage\n\n/**\n * A polyfill for `addEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const onChange = eventHandler => usePolyfill || addEventListener('storage', /** @type {any} */ (eventHandler))\n\n/**\n * A polyfill for `removeEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const offChange = eventHandler => usePolyfill || removeEventListener('storage', /** @type {any} */ (eventHandler))\n","/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object} obj\n */\nexport const keys = Object.keys\n\n/**\n * @template V\n * @param {{[k:string]:V}} obj\n * @param {function(V,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @todo implement mapToArray & map\n *\n * @template R\n * @param {Object} obj\n * @param {function(any,string):R} f\n * @return {Array}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @deprecated use object.size instead\n * @param {Object} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object} obj\n * @return {number}\n */\nexport const size = obj => keys(obj).length\n\n/**\n * @param {Object} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object|undefined} obj\n */\nexport const isEmpty = obj => {\n // eslint-disable-next-line\n for (const _k in obj) {\n return false\n }\n return true\n}\n\n/**\n * @param {Object} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object} a\n * @param {Object} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (size(a) === size(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n\n/**\n * Make an object immutable. This hurts performance and is usually not needed if you perform good\n * coding practices.\n */\nexport const freeze = Object.freeze\n\n/**\n * Make an object and all its children immutable.\n * This *really* hurts performance and is usually not needed if you perform good coding practices.\n *\n * @template {any} T\n * @param {T} o\n * @return {Readonly}\n */\nexport const deepFreeze = (o) => {\n for (const key in o) {\n const c = o[key]\n if (typeof c === 'object' || typeof c === 'function') {\n deepFreeze(o[key])\n }\n }\n return freeze(o)\n}\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array} fs\n * @param {Array} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array|object} a\n * @param {Array|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((array.isArray(a) && array.equalFlat(a, /** @type {Array} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/* c8 ignore start */\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n\n/**\n * @template V\n * @template {V} OPTS\n *\n * @param {V} value\n * @param {Array} options\n */\n// @ts-ignore\nexport const isOneOf = (value, options) => options.includes(value)\n/* c8 ignore stop */\n\nexport const isArray = array.isArray\n\n/**\n * @param {any} s\n * @return {s is String}\n */\nexport const isString = (s) => s && s.constructor === String\n\n/**\n * @param {any} n\n * @return {n is Number}\n */\nexport const isNumber = n => n != null && n.constructor === Number\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {any} n\n * @param {TYPE} T\n * @return {n is InstanceType}\n */\nexport const is = (n, T) => n && n.constructor === T\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {TYPE} T\n */\nexport const isTemplate = (T) =>\n /**\n * @param {any} n\n * @return {n is InstanceType}\n **/\n n => n && n.constructor === T\n","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module environment\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\nimport * as f from './function.js'\n\n/* c8 ignore next 2 */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name) && Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n\n/* c8 ignore next */\nexport const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && !isNode\n/* c8 ignore next 3 */\nexport const isMac = typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false\n\n/**\n * @type {Map}\n */\nlet params\nconst args = []\n\n/* c8 ignore start */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create(); // eslint-disable-next-line no-undef\n (location.search || '?').slice(1).split('&').forEach((kv) => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next */\nexport const hasParam = (name) => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* c8 ignore next 2 */\nexport const getParam = (name, defaultVal) =>\n computeParams().get(name) || defaultVal\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 4 */\nexport const getVariable = (name) =>\n isNode\n ? conditions.undefinedToNull(process.env[name.toUpperCase().replaceAll('-', '_')])\n : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 2 */\nexport const getConf = (name) =>\n computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {string}\n */\n/* c8 ignore next 5 */\nexport const ensureConf = (name) => {\n const c = getConf(name)\n if (c == null) throw new Error(`Expected configuration \"${name.toUpperCase().replaceAll('-', '_')}\"`)\n return c\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next 2 */\nexport const hasConf = (name) =>\n hasParam('--' + name) || getVariable(name) !== null\n\n/* c8 ignore next */\nexport const production = hasConf('production')\n\n/* c8 ignore next 2 */\nconst forceColor = isNode &&\n f.isOneOf(process.env.FORCE_COLOR, ['true', '1', '2'])\n\n/* c8 ignore start */\n/**\n * Color is enabled by default if the terminal supports it.\n *\n * Explicitly enable color using `--color` parameter\n * Disable color using `--no-color` parameter or using `NO_COLOR=1` environment variable.\n * `FORCE_COLOR=1` enables color and takes precedence over all.\n */\nexport const supportsColor = forceColor || (\n !hasParam('--no-colors') && // @todo deprecate --no-colors\n !hasConf('no-color') &&\n (!isNode || process.stdout.isTTY) && (\n !isNode ||\n hasParam('--color') ||\n getVariable('COLORTERM') !== null ||\n (getVariable('TERM') || '').includes('color')\n )\n)\n/* c8 ignore stop */\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as array from './array.js'\nimport * as math from './math.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* c8 ignore start */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* c8 ignore start */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return createUint8ArrayViewFromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* c8 ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* c8 ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Implements base64url - see https://datatracker.ietf.org/doc/html/rfc4648#section-5\n * @param {Uint8Array} buf\n */\nexport const toBase64UrlEncoded = buf => toBase64(buf).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')\n\n/**\n * @param {string} base64\n */\nexport const fromBase64UrlEncoded = base64 => fromBase64(base64.replaceAll('-', '+').replaceAll('_', '/'))\n\n/**\n * Base64 is always a more efficient choice. This exists for utility purposes only.\n *\n * @param {Uint8Array} buf\n */\nexport const toHexString = buf => array.map(buf, b => b.toString(16).padStart(2, '0')).join('')\n\n/**\n * Note: This function expects that the hex doesn't start with 0x..\n *\n * @param {string} hex\n */\nexport const fromHexString = hex => {\n const hlen = hex.length\n const buf = new Uint8Array(math.ceil(hlen / 2))\n for (let i = 0; i < hlen; i += 2) {\n buf[buf.length - i / 2 - 1] = Number.parseInt(hex.slice(hlen - i - 2, hlen - i), 16)\n }\n return buf\n}\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data =>\n encoding.encode(encoder => encoding.writeAny(encoder, data))\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n\n/**\n * Shift Byte Array {N} bits to the left. Does not expand byte array.\n *\n * @param {Uint8Array} bs\n * @param {number} N should be in the range of [0-7]\n */\nexport const shiftNBitsLeft = (bs, N) => {\n if (N === 0) return bs\n bs = new Uint8Array(bs)\n bs[0] <<= N\n for (let i = 1; i < bs.length; i++) {\n bs[i - 1] |= bs[i] >>> (8 - N)\n bs[i] <<= N\n }\n return bs\n}\n","/**\n * Working with value pairs.\n *\n * @module pair\n */\n\n/**\n * @template L,R\n */\nexport class Pair {\n /**\n * @param {L} left\n * @param {R} right\n */\n constructor (left, right) {\n this.left = left\n this.right = right\n }\n}\n\n/**\n * @template L,R\n * @param {L} left\n * @param {R} right\n * @return {Pair}\n */\nexport const create = (left, right) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {R} right\n * @param {L} left\n * @return {Pair}\n */\nexport const createReversed = (right, left) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {Array>} arr\n * @param {function(L, R):any} f\n */\nexport const forEach = (arr, f) => arr.forEach(p => f(p.left, p.right))\n\n/**\n * @template L,R,X\n * @param {Array>} arr\n * @param {function(L, R):X} f\n * @return {Array}\n */\nexport const map = (arr, f) => arr.map(p => f(p.left, p.right))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\n\n/* c8 ignore start */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @param {string} text\n * @return {Text}\n */\nexport const createTextNode = text => doc.createTextNode(text)\n\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array|HTMLCollection} children\n * @return {DocumentFragment}\n */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array} nodes\n * @return {Element}\n */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array>} listeners\n * @return {Node}\n */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array>} listeners\n * @return {Node}\n */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array|pair.Pair>} attrs Array of key-value pairs\n * @param {Array} children\n * @return {Element}\n */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @param {number} width\n * @param {number} height\n */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\nexport const text = createTextNode\n\n/**\n * @param {pair.Pair} pair\n */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array>} pairs\n * @return {string}\n */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map} m\n * @return {string}\n */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf}\n */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nconst _parse = html => domParser.parseFromString(`${html}`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n/* c8 ignore stop */\n","/**\n * Utility module to work with EcmaScript Symbols.\n *\n * @module symbol\n */\n\n/**\n * Return fresh symbol.\n *\n * @return {Symbol}\n */\nexport const create = Symbol\n\n/**\n * @param {any} s\n * @return {boolean}\n */\nexport const isSymbol = s => typeof s === 'symbol'\n","import * as symbol from './symbol.js'\nimport * as time from './time.js'\nimport * as env from './environment.js'\nimport * as func from './function.js'\nimport * as json from './json.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/* c8 ignore start */\n/**\n * @param {Array} args\n * @return {Array}\n */\nexport const computeNoColorLoggingArgs = args => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = /** @type {Array} */ (/** @type {[function]} */ (args)[0]())\n }\n const strBuilder = []\n const logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n if (arg === undefined) {\n break\n } else if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else if (arg.constructor === Object) {\n break\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/* c8 ignore start */\n/**\n * @param {function(...any):void} _print\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (_print, moduleName) => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null &&\n (debugRegexVar === '*' || debugRegexVar === 'true' ||\n new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n return !doLogging\n ? func.nop\n : (...args) => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = args[0]()\n }\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n _print(\n color,\n moduleName,\n UNCOLOR,\n ...args.map((arg) => {\n if (arg != null && arg.constructor === Uint8Array) {\n arg = Array.from(arg)\n }\n const t = typeof arg\n switch (t) {\n case 'string':\n case 'symbol':\n return arg\n default: {\n return json.stringify(arg)\n }\n }\n }),\n color,\n ' +' + timeDiff + 'ms'\n )\n }\n}\n/* c8 ignore stop */\n","/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as set from './set.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as common from './logging.common.js'\n\nexport { BOLD, UNBOLD, BLUE, GREY, GREEN, RED, PURPLE, ORANGE, UNCOLOR } from './logging.common.js'\n\n/**\n * @type {Object>}\n */\nconst _browserStyleMap = {\n [common.BOLD]: pair.create('font-weight', 'bold'),\n [common.UNBOLD]: pair.create('font-weight', 'normal'),\n [common.BLUE]: pair.create('color', 'blue'),\n [common.GREEN]: pair.create('color', 'green'),\n [common.GREY]: pair.create('color', 'grey'),\n [common.RED]: pair.create('color', 'red'),\n [common.PURPLE]: pair.create('color', 'purple'),\n [common.ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [common.UNCOLOR]: pair.create('color', 'black')\n}\n\n/**\n * @param {Array} args\n * @return {Array}\n */\n/* c8 ignore start */\nconst computeBrowserLoggingArgs = (args) => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = /** @type {Array} */ (/** @type {[function]} */ (args)[0]())\n }\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg === undefined) {\n break\n }\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\n/* c8 ignore start */\nconst computeLoggingArgs = env.supportsColor\n ? computeBrowserLoggingArgs\n : common.computeNoColorLoggingArgs\n/* c8 ignore stop */\n\n/**\n * @param {Array} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.print(args))\n}\n\n/* c8 ignore start */\n/**\n * @param {Array} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(common.ORANGE)\n vconsoles.forEach((vc) => vc.print(args))\n}\n/* c8 ignore stop */\n\n/**\n * @param {Error} err\n */\n/* c8 ignore start */\nexport const printError = (err) => {\n console.error(err)\n vconsoles.forEach((vc) => vc.printError(err))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\n/* c8 ignore start */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log(\n '%c ',\n `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`\n )\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach((vc) => vc.printImg(url, height))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} base64\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printImgBase64 = (base64, height) =>\n printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.group(args))\n}\n\n/**\n * @param {Array} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupEnd())\n}\n\n/**\n * @param {function():Node} createNode\n */\n/* c8 ignore next 2 */\nexport const printDom = (createNode) =>\n vconsoles.forEach((vc) => vc.printDom(createNode()))\n\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printCanvas = (canvas, height) =>\n printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = set.create()\n\n/**\n * @param {Array} args\n * @return {Array}\n */\n/* c8 ignore start */\nconst _computeLineSpans = (args) => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n let arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg === undefined) {\n arg = 'undefined '\n }\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [\n pair.create('style', dom.mapToStyleString(currentStyle))\n ], [dom.text(arg.toString())])\n if (span.innerHTML === '') {\n span.innerHTML = ' '\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(\n dom.element('span', [], [dom.text(/** @type {string} */ (content))])\n )\n }\n }\n return spans\n}\n/* c8 ignore stop */\n\nconst lineStyle =\n 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* c8 ignore start */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [\n pair.create('hidden', collapsed),\n pair.create('style', 'color:grey;font-size:120%;')\n ], [dom.text('▼')])\n const triangleRight = dom.element('span', [\n pair.create('hidden', !collapsed),\n pair.create('style', 'color:grey;font-size:125%;')\n ], [dom.text('▶')])\n const content = dom.element(\n 'div',\n [pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )],\n [triangleDown, triangleRight, dom.text(' ')].concat(\n _computeLineSpans(args)\n )\n )\n const nextContainer = dom.element('div', [\n pair.create('hidden', collapsed)\n ])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', (_event) => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('div', [\n pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )\n ], _computeLineSpans(args))\n ])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([common.RED, common.BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('img', [\n pair.create('src', url),\n pair.create('height', `${math.round(height * 1.5)}px`)\n ])\n ])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n/* c8 ignore stop */\n\n/**\n * @param {Element} dom\n */\n/* c8 ignore next */\nexport const createVConsole = (dom) => new VConsole(dom)\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (moduleName) => common.createModuleLogger(print, moduleName)\n","/**\n * Utility module to create and manipulate Iterators.\n *\n * @module iterator\n */\n\n/**\n * @template T,R\n * @param {Iterator} iterator\n * @param {function(T):R} f\n * @return {IterableIterator}\n */\nexport const mapIterator = (iterator, f) => ({\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next () {\n const r = iterator.next()\n return { value: r.done ? undefined : f(r.value), done: r.done }\n }\n})\n\n/**\n * @template T\n * @param {function():IteratorResult} next\n * @return {IterableIterator}\n */\nexport const createIterator = next => ({\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next\n})\n\n/**\n * @template T\n * @param {Iterator} iterator\n * @param {function(T):boolean} filter\n */\nexport const iteratorFilter = (iterator, filter) => createIterator(() => {\n let res\n do {\n res = iterator.next()\n } while (!res.done && !filter(res.value))\n return res\n})\n\n/**\n * @template T,M\n * @param {Iterator} iterator\n * @param {function(T):M} fmap\n */\nexport const iteratorMap = (iterator, fmap) => createIterator(() => {\n const { done, value } = iterator.next()\n return { done, value: done ? undefined : fmap(value) }\n})\n","import { ObservableV2 } from 'lib0/observable';\nimport * as array from 'lib0/array';\nimport * as math from 'lib0/math';\nimport * as map from 'lib0/map';\nimport * as encoding from 'lib0/encoding';\nimport * as decoding from 'lib0/decoding';\nimport * as random from 'lib0/random';\nimport * as promise from 'lib0/promise';\nimport * as buffer from 'lib0/buffer';\nimport * as error from 'lib0/error';\nimport * as binary from 'lib0/binary';\nimport * as f from 'lib0/function';\nimport { callAll } from 'lib0/function';\nimport * as set from 'lib0/set';\nimport * as logging from 'lib0/logging';\nimport * as time from 'lib0/time';\nimport * as string from 'lib0/string';\nimport * as iterator from 'lib0/iterator';\nimport * as object from 'lib0/object';\n\n/**\n * This is an abstract interface that all Connectors should implement to keep them interchangeable.\n *\n * @note This interface is experimental and it is not advised to actually inherit this class.\n * It just serves as typing information.\n *\n * @extends {ObservableV2}\n */\nclass AbstractConnector extends ObservableV2 {\n /**\n * @param {Doc} ydoc\n * @param {any} awareness\n */\n constructor (ydoc, awareness) {\n super();\n this.doc = ydoc;\n this.awareness = awareness;\n }\n}\n\nclass DeleteItem {\n /**\n * @param {number} clock\n * @param {number} len\n */\n constructor (clock, len) {\n /**\n * @type {number}\n */\n this.clock = clock;\n /**\n * @type {number}\n */\n this.len = len;\n }\n}\n\n/**\n * We no longer maintain a DeleteStore. DeleteSet is a temporary object that is created when needed.\n * - When created in a transaction, it must only be accessed after sorting, and merging\n * - This DeleteSet is send to other clients\n * - We do not create a DeleteSet when we send a sync message. The DeleteSet message is created directly from StructStore\n * - We read a DeleteSet as part of a sync/update message. In this case the DeleteSet is already sorted and merged.\n */\nclass DeleteSet {\n constructor () {\n /**\n * @type {Map>}\n */\n this.clients = new Map();\n }\n}\n\n/**\n * Iterate over all structs that the DeleteSet gc's.\n *\n * @param {Transaction} transaction\n * @param {DeleteSet} ds\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateDeletedStructs = (transaction, ds, f) =>\n ds.clients.forEach((deletes, clientid) => {\n const structs = /** @type {Array} */ (transaction.doc.store.clients.get(clientid));\n for (let i = 0; i < deletes.length; i++) {\n const del = deletes[i];\n iterateStructs(transaction, structs, del.clock, del.len, f);\n }\n });\n\n/**\n * @param {Array} dis\n * @param {number} clock\n * @return {number|null}\n *\n * @private\n * @function\n */\nconst findIndexDS = (dis, clock) => {\n let left = 0;\n let right = dis.length - 1;\n while (left <= right) {\n const midindex = math.floor((left + right) / 2);\n const mid = dis[midindex];\n const midclock = mid.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.len) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n }\n return null\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {ID} id\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst isDeleted = (ds, id) => {\n const dis = ds.clients.get(id.client);\n return dis !== undefined && findIndexDS(dis, id.clock) !== null\n};\n\n/**\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst sortAndMergeDeleteSet = ds => {\n ds.clients.forEach(dels => {\n dels.sort((a, b) => a.clock - b.clock);\n // merge items without filtering or splicing the array\n // i is the current pointer\n // j refers to the current insert position for the pointed item\n // try to merge dels[i] into dels[j-1] or set dels[j]=dels[i]\n let i, j;\n for (i = 1, j = 1; i < dels.length; i++) {\n const left = dels[j - 1];\n const right = dels[i];\n if (left.clock + left.len >= right.clock) {\n left.len = math.max(left.len, right.clock + right.len - left.clock);\n } else {\n if (j < i) {\n dels[j] = right;\n }\n j++;\n }\n }\n dels.length = j;\n });\n};\n\n/**\n * @param {Array} dss\n * @return {DeleteSet} A fresh DeleteSet\n */\nconst mergeDeleteSets = dss => {\n const merged = new DeleteSet();\n for (let dssI = 0; dssI < dss.length; dssI++) {\n dss[dssI].clients.forEach((delsLeft, client) => {\n if (!merged.clients.has(client)) {\n // Write all missing keys from current ds and all following.\n // If merged already contains `client` current ds has already been added.\n /**\n * @type {Array}\n */\n const dels = delsLeft.slice();\n for (let i = dssI + 1; i < dss.length; i++) {\n array.appendTo(dels, dss[i].clients.get(client) || []);\n }\n merged.clients.set(client, dels);\n }\n });\n }\n sortAndMergeDeleteSet(merged);\n return merged\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {number} client\n * @param {number} clock\n * @param {number} length\n *\n * @private\n * @function\n */\nconst addToDeleteSet = (ds, client, clock, length) => {\n map.setIfUndefined(ds.clients, client, () => /** @type {Array} */ ([])).push(new DeleteItem(clock, length));\n};\n\nconst createDeleteSet = () => new DeleteSet();\n\n/**\n * @param {StructStore} ss\n * @return {DeleteSet} Merged and sorted DeleteSet\n *\n * @private\n * @function\n */\nconst createDeleteSetFromStructStore = ss => {\n const ds = createDeleteSet();\n ss.clients.forEach((structs, client) => {\n /**\n * @type {Array}\n */\n const dsitems = [];\n for (let i = 0; i < structs.length; i++) {\n const struct = structs[i];\n if (struct.deleted) {\n const clock = struct.id.clock;\n let len = struct.length;\n if (i + 1 < structs.length) {\n for (let next = structs[i + 1]; i + 1 < structs.length && next.deleted; next = structs[++i + 1]) {\n len += next.length;\n }\n }\n dsitems.push(new DeleteItem(clock, len));\n }\n }\n if (dsitems.length > 0) {\n ds.clients.set(client, dsitems);\n }\n });\n return ds\n};\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst writeDeleteSet = (encoder, ds) => {\n encoding.writeVarUint(encoder.restEncoder, ds.clients.size);\n\n // Ensure that the delete set is written in a deterministic order\n array.from(ds.clients.entries())\n .sort((a, b) => b[0] - a[0])\n .forEach(([client, dsitems]) => {\n encoder.resetDsCurVal();\n encoding.writeVarUint(encoder.restEncoder, client);\n const len = dsitems.length;\n encoding.writeVarUint(encoder.restEncoder, len);\n for (let i = 0; i < len; i++) {\n const item = dsitems[i];\n encoder.writeDsClock(item.clock);\n encoder.writeDsLen(item.len);\n }\n });\n};\n\n/**\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @return {DeleteSet}\n *\n * @private\n * @function\n */\nconst readDeleteSet = decoder => {\n const ds = new DeleteSet();\n const numClients = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = decoding.readVarUint(decoder.restDecoder);\n const numberOfDeletes = decoding.readVarUint(decoder.restDecoder);\n if (numberOfDeletes > 0) {\n const dsField = map.setIfUndefined(ds.clients, client, () => /** @type {Array} */ ([]));\n for (let i = 0; i < numberOfDeletes; i++) {\n dsField.push(new DeleteItem(decoder.readDsClock(), decoder.readDsLen()));\n }\n }\n }\n return ds\n};\n\n/**\n * @todo YDecoder also contains references to String and other Decoders. Would make sense to exchange YDecoder.toUint8Array for YDecoder.DsToUint8Array()..\n */\n\n/**\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {Uint8Array|null} Returns a v2 update containing all deletes that couldn't be applied yet; or null if all deletes were applied successfully.\n *\n * @private\n * @function\n */\nconst readAndApplyDeleteSet = (decoder, transaction, store) => {\n const unappliedDS = new DeleteSet();\n const numClients = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = decoding.readVarUint(decoder.restDecoder);\n const numberOfDeletes = decoding.readVarUint(decoder.restDecoder);\n const structs = store.clients.get(client) || [];\n const state = getState(store, client);\n for (let i = 0; i < numberOfDeletes; i++) {\n const clock = decoder.readDsClock();\n const clockEnd = clock + decoder.readDsLen();\n if (clock < state) {\n if (state < clockEnd) {\n addToDeleteSet(unappliedDS, client, state, clockEnd - state);\n }\n let index = findIndexSS(structs, clock);\n /**\n * We can ignore the case of GC and Delete structs, because we are going to skip them\n * @type {Item}\n */\n // @ts-ignore\n let struct = structs[index];\n // split the first item if necessary\n if (!struct.deleted && struct.id.clock < clock) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n index++; // increase we now want to use the next struct\n }\n while (index < structs.length) {\n // @ts-ignore\n struct = structs[index++];\n if (struct.id.clock < clockEnd) {\n if (!struct.deleted) {\n if (clockEnd < struct.id.clock + struct.length) {\n structs.splice(index, 0, splitItem(transaction, struct, clockEnd - struct.id.clock));\n }\n struct.delete(transaction);\n }\n } else {\n break\n }\n }\n } else {\n addToDeleteSet(unappliedDS, client, clock, clockEnd - clock);\n }\n }\n }\n if (unappliedDS.clients.size > 0) {\n const ds = new UpdateEncoderV2();\n encoding.writeVarUint(ds.restEncoder, 0); // encode 0 structs\n writeDeleteSet(ds, unappliedDS);\n return ds.toUint8Array()\n }\n return null\n};\n\n/**\n * @param {DeleteSet} ds1\n * @param {DeleteSet} ds2\n */\nconst equalDeleteSets = (ds1, ds2) => {\n if (ds1.clients.size !== ds2.clients.size) return false\n for (const [client, deleteItems1] of ds1.clients.entries()) {\n const deleteItems2 = /** @type {Array} */ (ds2.clients.get(client));\n if (deleteItems2 === undefined || deleteItems1.length !== deleteItems2.length) return false\n for (let i = 0; i < deleteItems1.length; i++) {\n const di1 = deleteItems1[i];\n const di2 = deleteItems2[i];\n if (di1.clock !== di2.clock || di1.len !== di2.len) {\n return false\n }\n }\n }\n return true\n};\n\n/**\n * @module Y\n */\n\n\nconst generateNewClientId = random.uint32;\n\n/**\n * @typedef {Object} DocOpts\n * @property {boolean} [DocOpts.gc=true] Disable garbage collection (default: gc=true)\n * @property {function(Item):boolean} [DocOpts.gcFilter] Will be called before an Item is garbage collected. Return false to keep the Item.\n * @property {string} [DocOpts.guid] Define a globally unique identifier for this document\n * @property {string | null} [DocOpts.collectionid] Associate this document with a collection. This only plays a role if your provider has a concept of collection.\n * @property {any} [DocOpts.meta] Any kind of meta information you want to associate with this document. If this is a subdocument, remote peers will store the meta information as well.\n * @property {boolean} [DocOpts.autoLoad] If a subdocument, automatically load document. If this is a subdocument, remote peers will load the document as well automatically.\n * @property {boolean} [DocOpts.shouldLoad] Whether the document should be synced by the provider now. This is toggled to true when you call ydoc.load()\n */\n\n/**\n * @typedef {Object} DocEvents\n * @property {function(Doc):void} DocEvents.destroy\n * @property {function(Doc):void} DocEvents.load\n * @property {function(boolean, Doc):void} DocEvents.sync\n * @property {function(Uint8Array, any, Doc, Transaction):void} DocEvents.update\n * @property {function(Uint8Array, any, Doc, Transaction):void} DocEvents.updateV2\n * @property {function(Doc):void} DocEvents.beforeAllTransactions\n * @property {function(Transaction, Doc):void} DocEvents.beforeTransaction\n * @property {function(Transaction, Doc):void} DocEvents.beforeObserverCalls\n * @property {function(Transaction, Doc):void} DocEvents.afterTransaction\n * @property {function(Transaction, Doc):void} DocEvents.afterTransactionCleanup\n * @property {function(Doc, Array):void} DocEvents.afterAllTransactions\n * @property {function({ loaded: Set, added: Set, removed: Set }, Doc, Transaction):void} DocEvents.subdocs\n */\n\n/**\n * A Yjs instance handles the state of shared data.\n * @extends ObservableV2\n */\nclass Doc extends ObservableV2 {\n /**\n * @param {DocOpts} opts configuration\n */\n constructor ({ guid = random.uuidv4(), collectionid = null, gc = true, gcFilter = () => true, meta = null, autoLoad = false, shouldLoad = true } = {}) {\n super();\n this.gc = gc;\n this.gcFilter = gcFilter;\n this.clientID = generateNewClientId();\n this.guid = guid;\n this.collectionid = collectionid;\n /**\n * @type {Map>>}\n */\n this.share = new Map();\n this.store = new StructStore();\n /**\n * @type {Transaction | null}\n */\n this._transaction = null;\n /**\n * @type {Array}\n */\n this._transactionCleanups = [];\n /**\n * @type {Set}\n */\n this.subdocs = new Set();\n /**\n * If this document is a subdocument - a document integrated into another document - then _item is defined.\n * @type {Item?}\n */\n this._item = null;\n this.shouldLoad = shouldLoad;\n this.autoLoad = autoLoad;\n this.meta = meta;\n /**\n * This is set to true when the persistence provider loaded the document from the database or when the `sync` event fires.\n * Note that not all providers implement this feature. Provider authors are encouraged to fire the `load` event when the doc content is loaded from the database.\n *\n * @type {boolean}\n */\n this.isLoaded = false;\n /**\n * This is set to true when the connection provider has successfully synced with a backend.\n * Note that when using peer-to-peer providers this event may not provide very useful.\n * Also note that not all providers implement this feature. Provider authors are encouraged to fire\n * the `sync` event when the doc has been synced (with `true` as a parameter) or if connection is\n * lost (with false as a parameter).\n */\n this.isSynced = false;\n this.isDestroyed = false;\n /**\n * Promise that resolves once the document has been loaded from a presistence provider.\n */\n this.whenLoaded = promise.create(resolve => {\n this.on('load', () => {\n this.isLoaded = true;\n resolve(this);\n });\n });\n const provideSyncedPromise = () => promise.create(resolve => {\n /**\n * @param {boolean} isSynced\n */\n const eventHandler = (isSynced) => {\n if (isSynced === undefined || isSynced === true) {\n this.off('sync', eventHandler);\n resolve();\n }\n };\n this.on('sync', eventHandler);\n });\n this.on('sync', isSynced => {\n if (isSynced === false && this.isSynced) {\n this.whenSynced = provideSyncedPromise();\n }\n this.isSynced = isSynced === undefined || isSynced === true;\n if (this.isSynced && !this.isLoaded) {\n this.emit('load', [this]);\n }\n });\n /**\n * Promise that resolves once the document has been synced with a backend.\n * This promise is recreated when the connection is lost.\n * Note the documentation about the `isSynced` property.\n */\n this.whenSynced = provideSyncedPromise();\n }\n\n /**\n * Notify the parent document that you request to load data into this subdocument (if it is a subdocument).\n *\n * `load()` might be used in the future to request any provider to load the most current data.\n *\n * It is safe to call `load()` multiple times.\n */\n load () {\n const item = this._item;\n if (item !== null && !this.shouldLoad) {\n transact(/** @type {any} */ (item.parent).doc, transaction => {\n transaction.subdocsLoaded.add(this);\n }, null, true);\n }\n this.shouldLoad = true;\n }\n\n getSubdocs () {\n return this.subdocs\n }\n\n getSubdocGuids () {\n return new Set(array.from(this.subdocs).map(doc => doc.guid))\n }\n\n /**\n * Changes that happen inside of a transaction are bundled. This means that\n * the observer fires _after_ the transaction is finished and that all changes\n * that happened inside of the transaction are sent as one message to the\n * other peers.\n *\n * @template T\n * @param {function(Transaction):T} f The function that should be executed as a transaction\n * @param {any} [origin] Origin of who started the transaction. Will be stored on transaction.origin\n * @return T\n *\n * @public\n */\n transact (f, origin = null) {\n return transact(this, f, origin)\n }\n\n /**\n * Define a shared data type.\n *\n * Multiple calls of `ydoc.get(name, TypeConstructor)` yield the same result\n * and do not overwrite each other. I.e.\n * `ydoc.get(name, Y.Array) === ydoc.get(name, Y.Array)`\n *\n * After this method is called, the type is also available on `ydoc.share.get(name)`.\n *\n * *Best Practices:*\n * Define all types right after the Y.Doc instance is created and store them in a separate object.\n * Also use the typed methods `getText(name)`, `getArray(name)`, ..\n *\n * @template {typeof AbstractType} Type\n * @example\n * const ydoc = new Y.Doc(..)\n * const appState = {\n * document: ydoc.getText('document')\n * comments: ydoc.getArray('comments')\n * }\n *\n * @param {string} name\n * @param {Type} TypeConstructor The constructor of the type definition. E.g. Y.Text, Y.Array, Y.Map, ...\n * @return {InstanceType} The created type. Constructed with TypeConstructor\n *\n * @public\n */\n get (name, TypeConstructor = /** @type {any} */ (AbstractType)) {\n const type = map.setIfUndefined(this.share, name, () => {\n // @ts-ignore\n const t = new TypeConstructor();\n t._integrate(this, null);\n return t\n });\n const Constr = type.constructor;\n if (TypeConstructor !== AbstractType && Constr !== TypeConstructor) {\n if (Constr === AbstractType) {\n // @ts-ignore\n const t = new TypeConstructor();\n t._map = type._map;\n type._map.forEach(/** @param {Item?} n */ n => {\n for (; n !== null; n = n.left) {\n // @ts-ignore\n n.parent = t;\n }\n });\n t._start = type._start;\n for (let n = t._start; n !== null; n = n.right) {\n n.parent = t;\n }\n t._length = type._length;\n this.share.set(name, t);\n t._integrate(this, null);\n return /** @type {InstanceType} */ (t)\n } else {\n throw new Error(`Type with the name ${name} has already been defined with a different constructor`)\n }\n }\n return /** @type {InstanceType} */ (type)\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YArray}\n *\n * @public\n */\n getArray (name = '') {\n return /** @type {YArray} */ (this.get(name, YArray))\n }\n\n /**\n * @param {string} [name]\n * @return {YText}\n *\n * @public\n */\n getText (name = '') {\n return this.get(name, YText)\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YMap}\n *\n * @public\n */\n getMap (name = '') {\n return /** @type {YMap} */ (this.get(name, YMap))\n }\n\n /**\n * @param {string} [name]\n * @return {YXmlElement}\n *\n * @public\n */\n getXmlElement (name = '') {\n return /** @type {YXmlElement<{[key:string]:string}>} */ (this.get(name, YXmlElement))\n }\n\n /**\n * @param {string} [name]\n * @return {YXmlFragment}\n *\n * @public\n */\n getXmlFragment (name = '') {\n return this.get(name, YXmlFragment)\n }\n\n /**\n * Converts the entire document into a js object, recursively traversing each yjs type\n * Doesn't log types that have not been defined (using ydoc.getType(..)).\n *\n * @deprecated Do not use this method and rather call toJSON directly on the shared types.\n *\n * @return {Object}\n */\n toJSON () {\n /**\n * @type {Object}\n */\n const doc = {};\n\n this.share.forEach((value, key) => {\n doc[key] = value.toJSON();\n });\n\n return doc\n }\n\n /**\n * Emit `destroy` event and unregister all event handlers.\n */\n destroy () {\n this.isDestroyed = true;\n array.from(this.subdocs).forEach(subdoc => subdoc.destroy());\n const item = this._item;\n if (item !== null) {\n this._item = null;\n const content = /** @type {ContentDoc} */ (item.content);\n content.doc = new Doc({ guid: this.guid, ...content.opts, shouldLoad: false });\n content.doc._item = item;\n transact(/** @type {any} */ (item).parent.doc, transaction => {\n const doc = content.doc;\n if (!item.deleted) {\n transaction.subdocsAdded.add(doc);\n }\n transaction.subdocsRemoved.add(this);\n }, null, true);\n }\n // @ts-ignore\n this.emit('destroyed', [true]); // DEPRECATED!\n this.emit('destroy', [this]);\n super.destroy();\n }\n}\n\nclass DSDecoderV1 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n return decoding.readVarUint(this.restDecoder)\n }\n}\n\nclass UpdateDecoderV1 extends DSDecoderV1 {\n /**\n * @return {ID}\n */\n readLeftID () {\n return createID(decoding.readVarUint(this.restDecoder), decoding.readVarUint(this.restDecoder))\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return createID(decoding.readVarUint(this.restDecoder), decoding.readVarUint(this.restDecoder))\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return decoding.readUint8(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readString () {\n return decoding.readVarString(this.restDecoder)\n }\n\n /**\n * @return {boolean} isKey\n */\n readParentInfo () {\n return decoding.readVarUint(this.restDecoder) === 1\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readTypeRef () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number} len\n */\n readLen () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return buffer.copyUint8Array(decoding.readVarUint8Array(this.restDecoder))\n }\n\n /**\n * Legacy implementation uses JSON parse. We use any-decoding in v2.\n *\n * @return {any}\n */\n readJSON () {\n return JSON.parse(decoding.readVarString(this.restDecoder))\n }\n\n /**\n * @return {string}\n */\n readKey () {\n return decoding.readVarString(this.restDecoder)\n }\n}\n\nclass DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n /**\n * @private\n */\n this.dsCurrVal = 0;\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n this.dsCurrVal += decoding.readVarUint(this.restDecoder);\n return this.dsCurrVal\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n const diff = decoding.readVarUint(this.restDecoder) + 1;\n this.dsCurrVal += diff;\n return diff\n }\n}\n\nclass UpdateDecoderV2 extends DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n super(decoder);\n /**\n * List of cached keys. If the keys[id] does not exist, we read a new key\n * from stringEncoder and push it to keys.\n *\n * @type {Array}\n */\n this.keys = [];\n decoding.readVarUint(decoder); // read feature flag - currently unused\n this.keyClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.clientDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.leftClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.rightClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.infoDecoder = new decoding.RleDecoder(decoding.readVarUint8Array(decoder), decoding.readUint8);\n this.stringDecoder = new decoding.StringDecoder(decoding.readVarUint8Array(decoder));\n this.parentInfoDecoder = new decoding.RleDecoder(decoding.readVarUint8Array(decoder), decoding.readUint8);\n this.typeRefDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.lenDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder));\n }\n\n /**\n * @return {ID}\n */\n readLeftID () {\n return new ID(this.clientDecoder.read(), this.leftClockDecoder.read())\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return new ID(this.clientDecoder.read(), this.rightClockDecoder.read())\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return this.clientDecoder.read()\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return /** @type {number} */ (this.infoDecoder.read())\n }\n\n /**\n * @return {string}\n */\n readString () {\n return this.stringDecoder.read()\n }\n\n /**\n * @return {boolean}\n */\n readParentInfo () {\n return this.parentInfoDecoder.read() === 1\n }\n\n /**\n * @return {number} An unsigned 8-bit integer\n */\n readTypeRef () {\n return this.typeRefDecoder.read()\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number}\n */\n readLen () {\n return this.lenDecoder.read()\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return decoding.readVarUint8Array(this.restDecoder)\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @return {any}\n */\n readJSON () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readKey () {\n const keyClock = this.keyClockDecoder.read();\n if (keyClock < this.keys.length) {\n return this.keys[keyClock]\n } else {\n const key = this.stringDecoder.read();\n this.keys.push(key);\n return key\n }\n }\n}\n\nclass DSEncoderV1 {\n constructor () {\n this.restEncoder = encoding.createEncoder();\n }\n\n toUint8Array () {\n return encoding.toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n encoding.writeVarUint(this.restEncoder, clock);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n encoding.writeVarUint(this.restEncoder, len);\n }\n}\n\nclass UpdateEncoderV1 extends DSEncoderV1 {\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n encoding.writeVarUint(this.restEncoder, id.client);\n encoding.writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n encoding.writeVarUint(this.restEncoder, id.client);\n encoding.writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * Use writeClient and writeClock instead of writeID if possible.\n * @param {number} client\n */\n writeClient (client) {\n encoding.writeVarUint(this.restEncoder, client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n encoding.writeUint8(this.restEncoder, info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n encoding.writeVarString(this.restEncoder, s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n encoding.writeVarUint(this.restEncoder, isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n encoding.writeVarUint(this.restEncoder, info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n encoding.writeVarUint(this.restEncoder, len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n encoding.writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n encoding.writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * @param {any} embed\n */\n writeJSON (embed) {\n encoding.writeVarString(this.restEncoder, JSON.stringify(embed));\n }\n\n /**\n * @param {string} key\n */\n writeKey (key) {\n encoding.writeVarString(this.restEncoder, key);\n }\n}\n\nclass DSEncoderV2 {\n constructor () {\n this.restEncoder = encoding.createEncoder(); // encodes all the rest / non-optimized\n this.dsCurrVal = 0;\n }\n\n toUint8Array () {\n return encoding.toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n const diff = clock - this.dsCurrVal;\n this.dsCurrVal = clock;\n encoding.writeVarUint(this.restEncoder, diff);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n if (len === 0) {\n error.unexpectedCase();\n }\n encoding.writeVarUint(this.restEncoder, len - 1);\n this.dsCurrVal += len;\n }\n}\n\nclass UpdateEncoderV2 extends DSEncoderV2 {\n constructor () {\n super();\n /**\n * @type {Map}\n */\n this.keyMap = new Map();\n /**\n * Refers to the next uniqe key-identifier to me used.\n * See writeKey method for more information.\n *\n * @type {number}\n */\n this.keyClock = 0;\n this.keyClockEncoder = new encoding.IntDiffOptRleEncoder();\n this.clientEncoder = new encoding.UintOptRleEncoder();\n this.leftClockEncoder = new encoding.IntDiffOptRleEncoder();\n this.rightClockEncoder = new encoding.IntDiffOptRleEncoder();\n this.infoEncoder = new encoding.RleEncoder(encoding.writeUint8);\n this.stringEncoder = new encoding.StringEncoder();\n this.parentInfoEncoder = new encoding.RleEncoder(encoding.writeUint8);\n this.typeRefEncoder = new encoding.UintOptRleEncoder();\n this.lenEncoder = new encoding.UintOptRleEncoder();\n }\n\n toUint8Array () {\n const encoder = encoding.createEncoder();\n encoding.writeVarUint(encoder, 0); // this is a feature flag that we might use in the future\n encoding.writeVarUint8Array(encoder, this.keyClockEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, this.clientEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, this.leftClockEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, this.rightClockEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, encoding.toUint8Array(this.infoEncoder));\n encoding.writeVarUint8Array(encoder, this.stringEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, encoding.toUint8Array(this.parentInfoEncoder));\n encoding.writeVarUint8Array(encoder, this.typeRefEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, this.lenEncoder.toUint8Array());\n // @note The rest encoder is appended! (note the missing var)\n encoding.writeUint8Array(encoder, encoding.toUint8Array(this.restEncoder));\n return encoding.toUint8Array(encoder)\n }\n\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n this.clientEncoder.write(id.client);\n this.leftClockEncoder.write(id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n this.clientEncoder.write(id.client);\n this.rightClockEncoder.write(id.clock);\n }\n\n /**\n * @param {number} client\n */\n writeClient (client) {\n this.clientEncoder.write(client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n this.infoEncoder.write(info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n this.stringEncoder.write(s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n this.parentInfoEncoder.write(isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n this.typeRefEncoder.write(info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n this.lenEncoder.write(len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n encoding.writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n encoding.writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @param {any} embed\n */\n writeJSON (embed) {\n encoding.writeAny(this.restEncoder, embed);\n }\n\n /**\n * Property keys are often reused. For example, in y-prosemirror the key `bold` might\n * occur very often. For a 3d application, the key `position` might occur very often.\n *\n * We cache these keys in a Map and refer to them via a unique number.\n *\n * @param {string} key\n */\n writeKey (key) {\n const clock = this.keyMap.get(key);\n if (clock === undefined) {\n /**\n * @todo uncomment to introduce this feature finally\n *\n * Background. The ContentFormat object was always encoded using writeKey, but the decoder used to use readString.\n * Furthermore, I forgot to set the keyclock. So everything was working fine.\n *\n * However, this feature here is basically useless as it is not being used (it actually only consumes extra memory).\n *\n * I don't know yet how to reintroduce this feature..\n *\n * Older clients won't be able to read updates when we reintroduce this feature. So this should probably be done using a flag.\n *\n */\n // this.keyMap.set(key, this.keyClock)\n this.keyClockEncoder.write(this.keyClock++);\n this.stringEncoder.write(key);\n } else {\n this.keyClockEncoder.write(clock);\n }\n }\n}\n\n/**\n * @module encoding\n */\n/*\n * We use the first five bits in the info flag for determining the type of the struct.\n *\n * 0: GC\n * 1: Item with Deleted content\n * 2: Item with JSON content\n * 3: Item with Binary content\n * 4: Item with String content\n * 5: Item with Embed content (for richtext content)\n * 6: Item with Format content (a formatting marker for richtext content)\n * 7: Item with Type\n */\n\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Array} structs All structs by `client`\n * @param {number} client\n * @param {number} clock write structs starting with `ID(client,clock)`\n *\n * @function\n */\nconst writeStructs = (encoder, structs, client, clock) => {\n // write first id\n clock = math.max(clock, structs[0].id.clock); // make sure the first id exists\n const startNewStructs = findIndexSS(structs, clock);\n // write # encoded structs\n encoding.writeVarUint(encoder.restEncoder, structs.length - startNewStructs);\n encoder.writeClient(client);\n encoding.writeVarUint(encoder.restEncoder, clock);\n const firstStruct = structs[startNewStructs];\n // write first struct with an offset\n firstStruct.write(encoder, clock - firstStruct.id.clock);\n for (let i = startNewStructs + 1; i < structs.length; i++) {\n structs[i].write(encoder, 0);\n }\n};\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {StructStore} store\n * @param {Map} _sm\n *\n * @private\n * @function\n */\nconst writeClientsStructs = (encoder, store, _sm) => {\n // we filter all valid _sm entries into sm\n const sm = new Map();\n _sm.forEach((clock, client) => {\n // only write if new structs are available\n if (getState(store, client) > clock) {\n sm.set(client, clock);\n }\n });\n getStateVector(store).forEach((_clock, client) => {\n if (!_sm.has(client)) {\n sm.set(client, 0);\n }\n });\n // write # states that were updated\n encoding.writeVarUint(encoder.restEncoder, sm.size);\n // Write items with higher client ids first\n // This heavily improves the conflict algorithm.\n array.from(sm.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n writeStructs(encoder, /** @type {Array} */ (store.clients.get(client)), client, clock);\n });\n};\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder The decoder object to read data from.\n * @param {Doc} doc\n * @return {Map }>}\n *\n * @private\n * @function\n */\nconst readClientsStructRefs = (decoder, doc) => {\n /**\n * @type {Map }>}\n */\n const clientRefs = map.create();\n const numOfStateUpdates = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = decoding.readVarUint(decoder.restDecoder);\n /**\n * @type {Array}\n */\n const refs = new Array(numberOfStructs);\n const client = decoder.readClient();\n let clock = decoding.readVarUint(decoder.restDecoder);\n // const start = performance.now()\n clientRefs.set(client, { i: 0, refs });\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo();\n switch (binary.BITS5 & info) {\n case 0: { // GC\n const len = decoder.readLen();\n refs[i] = new GC(createID(client, clock), len);\n clock += len;\n break\n }\n case 10: { // Skip Struct (nothing to apply)\n // @todo we could reduce the amount of checks by adding Skip struct to clientRefs so we know that something is missing.\n const len = decoding.readVarUint(decoder.restDecoder);\n refs[i] = new Skip(createID(client, clock), len);\n clock += len;\n break\n }\n default: { // Item with content\n /**\n * The optimized implementation doesn't use any variables because inlining variables is faster.\n * Below a non-optimized version is shown that implements the basic algorithm with\n * a few comments\n */\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0;\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // left\n (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null, // right origin\n cantCopyParentInfo ? (decoder.readParentInfo() ? doc.get(decoder.readString()) : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n );\n /* A non-optimized implementation of the above algorithm:\n\n // The item that was originally to the left of this item.\n const origin = (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null\n // The item that was originally to the right of this item.\n const rightOrigin = (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0\n const hasParentYKey = cantCopyParentInfo ? decoder.readParentInfo() : false\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const parentYKey = cantCopyParentInfo && hasParentYKey ? decoder.readString() : null\n\n const struct = new Item(\n createID(client, clock),\n null, // left\n origin, // origin\n null, // right\n rightOrigin, // right origin\n cantCopyParentInfo && !hasParentYKey ? decoder.readLeftID() : (parentYKey !== null ? doc.get(parentYKey) : null), // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n )\n */\n refs[i] = struct;\n clock += struct.length;\n }\n }\n }\n // console.log('time to read: ', performance.now() - start) // @todo remove\n }\n return clientRefs\n};\n\n/**\n * Resume computing structs generated by struct readers.\n *\n * While there is something to do, we integrate structs in this order\n * 1. top element on stack, if stack is not empty\n * 2. next element from current struct reader (if empty, use next struct reader)\n *\n * If struct causally depends on another struct (ref.missing), we put next reader of\n * `ref.id.client` on top of stack.\n *\n * At some point we find a struct that has no causal dependencies,\n * then we start emptying the stack.\n *\n * It is not possible to have circles: i.e. struct1 (from client1) depends on struct2 (from client2)\n * depends on struct3 (from client1). Therefore the max stack size is eqaul to `structReaders.length`.\n *\n * This method is implemented in a way so that we can resume computation if this update\n * causally depends on another update.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {Map} clientsStructRefs\n * @return { null | { update: Uint8Array, missing: Map } }\n *\n * @private\n * @function\n */\nconst integrateStructs = (transaction, store, clientsStructRefs) => {\n /**\n * @type {Array}\n */\n const stack = [];\n // sort them so that we take the higher id first, in case of conflicts the lower id will probably not conflict with the id from the higher user.\n let clientsStructRefsIds = array.from(clientsStructRefs.keys()).sort((a, b) => a - b);\n if (clientsStructRefsIds.length === 0) {\n return null\n }\n const getNextStructTarget = () => {\n if (clientsStructRefsIds.length === 0) {\n return null\n }\n let nextStructsTarget = /** @type {{i:number,refs:Array}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n while (nextStructsTarget.refs.length === nextStructsTarget.i) {\n clientsStructRefsIds.pop();\n if (clientsStructRefsIds.length > 0) {\n nextStructsTarget = /** @type {{i:number,refs:Array}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n } else {\n return null\n }\n }\n return nextStructsTarget\n };\n let curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null) {\n return null\n }\n\n /**\n * @type {StructStore}\n */\n const restStructs = new StructStore();\n const missingSV = new Map();\n /**\n * @param {number} client\n * @param {number} clock\n */\n const updateMissingSv = (client, clock) => {\n const mclock = missingSV.get(client);\n if (mclock == null || mclock > clock) {\n missingSV.set(client, clock);\n }\n };\n /**\n * @type {GC|Item}\n */\n let stackHead = /** @type {any} */ (curStructsTarget).refs[/** @type {any} */ (curStructsTarget).i++];\n // caching the state because it is used very often\n const state = new Map();\n\n const addStackToRestSS = () => {\n for (const item of stack) {\n const client = item.id.client;\n const unapplicableItems = clientsStructRefs.get(client);\n if (unapplicableItems) {\n // decrement because we weren't able to apply previous operation\n unapplicableItems.i--;\n restStructs.clients.set(client, unapplicableItems.refs.slice(unapplicableItems.i));\n clientsStructRefs.delete(client);\n unapplicableItems.i = 0;\n unapplicableItems.refs = [];\n } else {\n // item was the last item on clientsStructRefs and the field was already cleared. Add item to restStructs and continue\n restStructs.clients.set(client, [item]);\n }\n // remove client from clientsStructRefsIds to prevent users from applying the same update again\n clientsStructRefsIds = clientsStructRefsIds.filter(c => c !== client);\n }\n stack.length = 0;\n };\n\n // iterate over all struct readers until we are done\n while (true) {\n if (stackHead.constructor !== Skip) {\n const localClock = map.setIfUndefined(state, stackHead.id.client, () => getState(store, stackHead.id.client));\n const offset = localClock - stackHead.id.clock;\n if (offset < 0) {\n // update from the same client is missing\n stack.push(stackHead);\n updateMissingSv(stackHead.id.client, stackHead.id.clock - 1);\n // hid a dead wall, add all items from stack to restSS\n addStackToRestSS();\n } else {\n const missing = stackHead.getMissing(transaction, store);\n if (missing !== null) {\n stack.push(stackHead);\n // get the struct reader that has the missing struct\n /**\n * @type {{ refs: Array, i: number }}\n */\n const structRefs = clientsStructRefs.get(/** @type {number} */ (missing)) || { refs: [], i: 0 };\n if (structRefs.refs.length === structRefs.i) {\n // This update message causally depends on another update message that doesn't exist yet\n updateMissingSv(/** @type {number} */ (missing), getState(store, missing));\n addStackToRestSS();\n } else {\n stackHead = structRefs.refs[structRefs.i++];\n continue\n }\n } else if (offset === 0 || offset < stackHead.length) {\n // all fine, apply the stackhead\n stackHead.integrate(transaction, offset);\n state.set(stackHead.id.client, stackHead.id.clock + stackHead.length);\n }\n }\n }\n // iterate to next stackHead\n if (stack.length > 0) {\n stackHead = /** @type {GC|Item} */ (stack.pop());\n } else if (curStructsTarget !== null && curStructsTarget.i < curStructsTarget.refs.length) {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n } else {\n curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null) {\n // we are done!\n break\n } else {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n }\n }\n }\n if (restStructs.clients.size > 0) {\n const encoder = new UpdateEncoderV2();\n writeClientsStructs(encoder, restStructs, new Map());\n // write empty deleteset\n // writeDeleteSet(encoder, new DeleteSet())\n encoding.writeVarUint(encoder.restEncoder, 0); // => no need for an extra function call, just write 0 deletes\n return { missing: missingSV, update: encoder.toUint8Array() }\n }\n return null\n};\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Transaction} transaction\n *\n * @private\n * @function\n */\nconst writeStructsFromTransaction = (encoder, transaction) => writeClientsStructs(encoder, transaction.doc.store, transaction.beforeState);\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts a decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {UpdateDecoderV1 | UpdateDecoderV2} [structDecoder]\n *\n * @function\n */\nconst readUpdateV2 = (decoder, ydoc, transactionOrigin, structDecoder = new UpdateDecoderV2(decoder)) =>\n transact(ydoc, transaction => {\n // force that transaction.local is set to non-local\n transaction.local = false;\n let retry = false;\n const doc = transaction.doc;\n const store = doc.store;\n // let start = performance.now()\n const ss = readClientsStructRefs(structDecoder, doc);\n // console.log('time to read structs: ', performance.now() - start) // @todo remove\n // start = performance.now()\n // console.log('time to merge: ', performance.now() - start) // @todo remove\n // start = performance.now()\n const restStructs = integrateStructs(transaction, store, ss);\n const pending = store.pendingStructs;\n if (pending) {\n // check if we can apply something\n for (const [client, clock] of pending.missing) {\n if (clock < getState(store, client)) {\n retry = true;\n break\n }\n }\n if (restStructs) {\n // merge restStructs into store.pending\n for (const [client, clock] of restStructs.missing) {\n const mclock = pending.missing.get(client);\n if (mclock == null || mclock > clock) {\n pending.missing.set(client, clock);\n }\n }\n pending.update = mergeUpdatesV2([pending.update, restStructs.update]);\n }\n } else {\n store.pendingStructs = restStructs;\n }\n // console.log('time to integrate: ', performance.now() - start) // @todo remove\n // start = performance.now()\n const dsRest = readAndApplyDeleteSet(structDecoder, transaction, store);\n if (store.pendingDs) {\n // @todo we could make a lower-bound state-vector check as we do above\n const pendingDSUpdate = new UpdateDecoderV2(decoding.createDecoder(store.pendingDs));\n decoding.readVarUint(pendingDSUpdate.restDecoder); // read 0 structs, because we only encode deletes in pendingdsupdate\n const dsRest2 = readAndApplyDeleteSet(pendingDSUpdate, transaction, store);\n if (dsRest && dsRest2) {\n // case 1: ds1 != null && ds2 != null\n store.pendingDs = mergeUpdatesV2([dsRest, dsRest2]);\n } else {\n // case 2: ds1 != null\n // case 3: ds2 != null\n // case 4: ds1 == null && ds2 == null\n store.pendingDs = dsRest || dsRest2;\n }\n } else {\n // Either dsRest == null && pendingDs == null OR dsRest != null\n store.pendingDs = dsRest;\n }\n // console.log('time to cleanup: ', performance.now() - start) // @todo remove\n // start = performance.now()\n\n // console.log('time to resume delete readers: ', performance.now() - start) // @todo remove\n // start = performance.now()\n if (retry) {\n const update = /** @type {{update: Uint8Array}} */ (store.pendingStructs).update;\n store.pendingStructs = null;\n applyUpdateV2(transaction.doc, update);\n }\n }, transactionOrigin, false);\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts a decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst readUpdate = (decoder, ydoc, transactionOrigin) => readUpdateV2(decoder, ydoc, transactionOrigin, new UpdateDecoderV1(decoder));\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n *\n * @function\n */\nconst applyUpdateV2 = (ydoc, update, transactionOrigin, YDecoder = UpdateDecoderV2) => {\n const decoder = decoding.createDecoder(update);\n readUpdateV2(decoder, ydoc, transactionOrigin, new YDecoder(decoder));\n};\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst applyUpdate = (ydoc, update, transactionOrigin) => applyUpdateV2(ydoc, update, transactionOrigin, UpdateDecoderV1);\n\n/**\n * Write all the document as a single update message. If you specify the state of the remote client (`targetStateVector`) it will\n * only write the operations that are missing.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Doc} doc\n * @param {Map} [targetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n *\n * @function\n */\nconst writeStateAsUpdate = (encoder, doc, targetStateVector = new Map()) => {\n writeClientsStructs(encoder, doc.store, targetStateVector);\n writeDeleteSet(encoder, createDeleteSetFromStructStore(doc.store));\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @param {UpdateEncoderV1 | UpdateEncoderV2} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdateV2 = (doc, encodedTargetStateVector = new Uint8Array([0]), encoder = new UpdateEncoderV2()) => {\n const targetStateVector = decodeStateVector(encodedTargetStateVector);\n writeStateAsUpdate(encoder, doc, targetStateVector);\n const updates = [encoder.toUint8Array()];\n // also add the pending updates (if there are any)\n if (doc.store.pendingDs) {\n updates.push(doc.store.pendingDs);\n }\n if (doc.store.pendingStructs) {\n updates.push(diffUpdateV2(doc.store.pendingStructs.update, encodedTargetStateVector));\n }\n if (updates.length > 1) {\n if (encoder.constructor === UpdateEncoderV1) {\n return mergeUpdates(updates.map((update, i) => i === 0 ? update : convertUpdateFormatV2ToV1(update)))\n } else if (encoder.constructor === UpdateEncoderV2) {\n return mergeUpdatesV2(updates)\n }\n }\n return updates[0]\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdate = (doc, encodedTargetStateVector) => encodeStateAsUpdateV2(doc, encodedTargetStateVector, new UpdateEncoderV1());\n\n/**\n * Read state vector from Decoder and return as Map\n *\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst readStateVector = decoder => {\n const ss = new Map();\n const ssLength = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < ssLength; i++) {\n const client = decoding.readVarUint(decoder.restDecoder);\n const clock = decoding.readVarUint(decoder.restDecoder);\n ss.set(client, clock);\n }\n return ss\n};\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\n// export const decodeStateVectorV2 = decodedState => readStateVector(new DSDecoderV2(decoding.createDecoder(decodedState)))\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst decodeStateVector = decodedState => readStateVector(new DSDecoderV1(decoding.createDecoder(decodedState)));\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {Map} sv\n * @function\n */\nconst writeStateVector = (encoder, sv) => {\n encoding.writeVarUint(encoder.restEncoder, sv.size);\n array.from(sv.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n encoding.writeVarUint(encoder.restEncoder, client); // @todo use a special client decoder that is based on mapping\n encoding.writeVarUint(encoder.restEncoder, clock);\n });\n return encoder\n};\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {Doc} doc\n *\n * @function\n */\nconst writeDocumentStateVector = (encoder, doc) => writeStateVector(encoder, getStateVector(doc.store));\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc|Map} doc\n * @param {DSEncoderV1 | DSEncoderV2} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVectorV2 = (doc, encoder = new DSEncoderV2()) => {\n if (doc instanceof Map) {\n writeStateVector(encoder, doc);\n } else {\n writeDocumentStateVector(encoder, doc);\n }\n return encoder.toUint8Array()\n};\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc|Map} doc\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVector = doc => encodeStateVectorV2(doc, new DSEncoderV1());\n\n/**\n * General event handler implementation.\n *\n * @template ARG0, ARG1\n *\n * @private\n */\nclass EventHandler {\n constructor () {\n /**\n * @type {Array}\n */\n this.l = [];\n }\n}\n\n/**\n * @template ARG0,ARG1\n * @returns {EventHandler}\n *\n * @private\n * @function\n */\nconst createEventHandler = () => new EventHandler();\n\n/**\n * Adds an event listener that is called when\n * {@link EventHandler#callEventListeners} is called.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler.\n *\n * @private\n * @function\n */\nconst addEventHandlerListener = (eventHandler, f) =>\n eventHandler.l.push(f);\n\n/**\n * Removes an event listener.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler that was added with\n * {@link EventHandler#addEventListener}\n *\n * @private\n * @function\n */\nconst removeEventHandlerListener = (eventHandler, f) => {\n const l = eventHandler.l;\n const len = l.length;\n eventHandler.l = l.filter(g => f !== g);\n if (len === eventHandler.l.length) {\n console.error('[yjs] Tried to remove event handler that doesn\\'t exist.');\n }\n};\n\n/**\n * Call all event listeners that were added via\n * {@link EventHandler#addEventListener}.\n *\n * @template ARG0,ARG1\n * @param {EventHandler} eventHandler\n * @param {ARG0} arg0\n * @param {ARG1} arg1\n *\n * @private\n * @function\n */\nconst callEventHandlerListeners = (eventHandler, arg0, arg1) =>\n f.callAll(eventHandler.l, [arg0, arg1]);\n\nclass ID {\n /**\n * @param {number} client client id\n * @param {number} clock unique per client id, continuous number\n */\n constructor (client, clock) {\n /**\n * Client id\n * @type {number}\n */\n this.client = client;\n /**\n * unique per client id, continuous number\n * @type {number}\n */\n this.clock = clock;\n }\n}\n\n/**\n * @param {ID | null} a\n * @param {ID | null} b\n * @return {boolean}\n *\n * @function\n */\nconst compareIDs = (a, b) => a === b || (a !== null && b !== null && a.client === b.client && a.clock === b.clock);\n\n/**\n * @param {number} client\n * @param {number} clock\n *\n * @private\n * @function\n */\nconst createID = (client, clock) => new ID(client, clock);\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {ID} id\n *\n * @private\n * @function\n */\nconst writeID = (encoder, id) => {\n encoding.writeVarUint(encoder, id.client);\n encoding.writeVarUint(encoder, id.clock);\n};\n\n/**\n * Read ID.\n * * If first varUint read is 0xFFFFFF a RootID is returned.\n * * Otherwise an ID is returned\n *\n * @param {decoding.Decoder} decoder\n * @return {ID}\n *\n * @private\n * @function\n */\nconst readID = decoder =>\n createID(decoding.readVarUint(decoder), decoding.readVarUint(decoder));\n\n/**\n * The top types are mapped from y.share.get(keyname) => type.\n * `type` does not store any information about the `keyname`.\n * This function finds the correct `keyname` for `type` and throws otherwise.\n *\n * @param {AbstractType} type\n * @return {string}\n *\n * @private\n * @function\n */\nconst findRootTypeKey = type => {\n // @ts-ignore _y must be defined, otherwise unexpected case\n for (const [key, value] of type.doc.share.entries()) {\n if (value === type) {\n return key\n }\n }\n throw error.unexpectedCase()\n};\n\n/**\n * Check if `parent` is a parent of `child`.\n *\n * @param {AbstractType} parent\n * @param {Item|null} child\n * @return {Boolean} Whether `parent` is a parent of `child`.\n *\n * @private\n * @function\n */\nconst isParentOf = (parent, child) => {\n while (child !== null) {\n if (child.parent === parent) {\n return true\n }\n child = /** @type {AbstractType} */ (child.parent)._item;\n }\n return false\n};\n\n/**\n * Convenient helper to log type information.\n *\n * Do not use in productive systems as the output can be immense!\n *\n * @param {AbstractType} type\n */\nconst logType = type => {\n const res = [];\n let n = type._start;\n while (n) {\n res.push(n);\n n = n.right;\n }\n console.log('Children: ', res);\n console.log('Children content: ', res.filter(m => !m.deleted).map(m => m.content));\n};\n\nclass PermanentUserData {\n /**\n * @param {Doc} doc\n * @param {YMap} [storeType]\n */\n constructor (doc, storeType = doc.getMap('users')) {\n /**\n * @type {Map}\n */\n const dss = new Map();\n this.yusers = storeType;\n this.doc = doc;\n /**\n * Maps from clientid to userDescription\n *\n * @type {Map}\n */\n this.clients = new Map();\n this.dss = dss;\n /**\n * @param {YMap} user\n * @param {string} userDescription\n */\n const initUser = (user, userDescription) => {\n /**\n * @type {YArray}\n */\n const ds = user.get('ds');\n const ids = user.get('ids');\n const addClientId = /** @param {number} clientid */ clientid => this.clients.set(clientid, userDescription);\n ds.observe(/** @param {YArrayEvent} event */ event => {\n event.changes.added.forEach(item => {\n item.content.getContent().forEach(encodedDs => {\n if (encodedDs instanceof Uint8Array) {\n this.dss.set(userDescription, mergeDeleteSets([this.dss.get(userDescription) || createDeleteSet(), readDeleteSet(new DSDecoderV1(decoding.createDecoder(encodedDs)))]));\n }\n });\n });\n });\n this.dss.set(userDescription, mergeDeleteSets(ds.map(encodedDs => readDeleteSet(new DSDecoderV1(decoding.createDecoder(encodedDs))))));\n ids.observe(/** @param {YArrayEvent} event */ event =>\n event.changes.added.forEach(item => item.content.getContent().forEach(addClientId))\n );\n ids.forEach(addClientId);\n };\n // observe users\n storeType.observe(event => {\n event.keysChanged.forEach(userDescription =>\n initUser(storeType.get(userDescription), userDescription)\n );\n });\n // add intial data\n storeType.forEach(initUser);\n }\n\n /**\n * @param {Doc} doc\n * @param {number} clientid\n * @param {string} userDescription\n * @param {Object} conf\n * @param {function(Transaction, DeleteSet):boolean} [conf.filter]\n */\n setUserMapping (doc, clientid, userDescription, { filter = () => true } = {}) {\n const users = this.yusers;\n let user = users.get(userDescription);\n if (!user) {\n user = new YMap();\n user.set('ids', new YArray());\n user.set('ds', new YArray());\n users.set(userDescription, user);\n }\n user.get('ids').push([clientid]);\n users.observe(_event => {\n setTimeout(() => {\n const userOverwrite = users.get(userDescription);\n if (userOverwrite !== user) {\n // user was overwritten, port all data over to the next user object\n // @todo Experiment with Y.Sets here\n user = userOverwrite;\n // @todo iterate over old type\n this.clients.forEach((_userDescription, clientid) => {\n if (userDescription === _userDescription) {\n user.get('ids').push([clientid]);\n }\n });\n const encoder = new DSEncoderV1();\n const ds = this.dss.get(userDescription);\n if (ds) {\n writeDeleteSet(encoder, ds);\n user.get('ds').push([encoder.toUint8Array()]);\n }\n }\n }, 0);\n });\n doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n setTimeout(() => {\n const yds = user.get('ds');\n const ds = transaction.deleteSet;\n if (transaction.local && ds.clients.size > 0 && filter(transaction, ds)) {\n const encoder = new DSEncoderV1();\n writeDeleteSet(encoder, ds);\n yds.push([encoder.toUint8Array()]);\n }\n });\n });\n }\n\n /**\n * @param {number} clientid\n * @return {any}\n */\n getUserByClientId (clientid) {\n return this.clients.get(clientid) || null\n }\n\n /**\n * @param {ID} id\n * @return {string | null}\n */\n getUserByDeletedId (id) {\n for (const [userDescription, ds] of this.dss.entries()) {\n if (isDeleted(ds, id)) {\n return userDescription\n }\n }\n return null\n }\n}\n\n/**\n * A relative position is based on the Yjs model and is not affected by document changes.\n * E.g. If you place a relative position before a certain character, it will always point to this character.\n * If you place a relative position at the end of a type, it will always point to the end of the type.\n *\n * A numeric position is often unsuited for user selections, because it does not change when content is inserted\n * before or after.\n *\n * ```Insert(0, 'x')('a|bc') = 'xa|bc'``` Where | is the relative position.\n *\n * One of the properties must be defined.\n *\n * @example\n * // Current cursor position is at position 10\n * const relativePosition = createRelativePositionFromIndex(yText, 10)\n * // modify yText\n * yText.insert(0, 'abc')\n * yText.delete(3, 10)\n * // Compute the cursor position\n * const absolutePosition = createAbsolutePositionFromRelativePosition(y, relativePosition)\n * absolutePosition.type === yText // => true\n * console.log('cursor location is ' + absolutePosition.index) // => cursor location is 3\n *\n */\nclass RelativePosition {\n /**\n * @param {ID|null} type\n * @param {string|null} tname\n * @param {ID|null} item\n * @param {number} assoc\n */\n constructor (type, tname, item, assoc = 0) {\n /**\n * @type {ID|null}\n */\n this.type = type;\n /**\n * @type {string|null}\n */\n this.tname = tname;\n /**\n * @type {ID | null}\n */\n this.item = item;\n /**\n * A relative position is associated to a specific character. By default\n * assoc >= 0, the relative position is associated to the character\n * after the meant position.\n * I.e. position 1 in 'ab' is associated to character 'b'.\n *\n * If assoc < 0, then the relative position is associated to the caharacter\n * before the meant position.\n *\n * @type {number}\n */\n this.assoc = assoc;\n }\n}\n\n/**\n * @param {RelativePosition} rpos\n * @return {any}\n */\nconst relativePositionToJSON = rpos => {\n const json = {};\n if (rpos.type) {\n json.type = rpos.type;\n }\n if (rpos.tname) {\n json.tname = rpos.tname;\n }\n if (rpos.item) {\n json.item = rpos.item;\n }\n if (rpos.assoc != null) {\n json.assoc = rpos.assoc;\n }\n return json\n};\n\n/**\n * @param {any} json\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromJSON = json => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname ?? null, json.item == null ? null : createID(json.item.client, json.item.clock), json.assoc == null ? 0 : json.assoc);\n\nclass AbsolutePosition {\n /**\n * @param {AbstractType} type\n * @param {number} index\n * @param {number} [assoc]\n */\n constructor (type, index, assoc = 0) {\n /**\n * @type {AbstractType}\n */\n this.type = type;\n /**\n * @type {number}\n */\n this.index = index;\n this.assoc = assoc;\n }\n}\n\n/**\n * @param {AbstractType} type\n * @param {number} index\n * @param {number} [assoc]\n *\n * @function\n */\nconst createAbsolutePosition = (type, index, assoc = 0) => new AbsolutePosition(type, index, assoc);\n\n/**\n * @param {AbstractType} type\n * @param {ID|null} item\n * @param {number} [assoc]\n *\n * @function\n */\nconst createRelativePosition = (type, item, assoc) => {\n let typeid = null;\n let tname = null;\n if (type._item === null) {\n tname = findRootTypeKey(type);\n } else {\n typeid = createID(type._item.id.client, type._item.id.clock);\n }\n return new RelativePosition(typeid, tname, item, assoc)\n};\n\n/**\n * Create a relativePosition based on a absolute position.\n *\n * @param {AbstractType} type The base type (e.g. YText or YArray).\n * @param {number} index The absolute position.\n * @param {number} [assoc]\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromTypeIndex = (type, index, assoc = 0) => {\n let t = type._start;\n if (assoc < 0) {\n // associated to the left character or the beginning of a type, increment index if possible.\n if (index === 0) {\n return createRelativePosition(type, null, assoc)\n }\n index--;\n }\n while (t !== null) {\n if (!t.deleted && t.countable) {\n if (t.length > index) {\n // case 1: found position somewhere in the linked list\n return createRelativePosition(type, createID(t.id.client, t.id.clock + index), assoc)\n }\n index -= t.length;\n }\n if (t.right === null && assoc < 0) {\n // left-associated position, return last available id\n return createRelativePosition(type, t.lastId, assoc)\n }\n t = t.right;\n }\n return createRelativePosition(type, null, assoc)\n};\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {RelativePosition} rpos\n *\n * @function\n */\nconst writeRelativePosition = (encoder, rpos) => {\n const { type, tname, item, assoc } = rpos;\n if (item !== null) {\n encoding.writeVarUint(encoder, 0);\n writeID(encoder, item);\n } else if (tname !== null) {\n // case 2: found position at the end of the list and type is stored in y.share\n encoding.writeUint8(encoder, 1);\n encoding.writeVarString(encoder, tname);\n } else if (type !== null) {\n // case 3: found position at the end of the list and type is attached to an item\n encoding.writeUint8(encoder, 2);\n writeID(encoder, type);\n } else {\n throw error.unexpectedCase()\n }\n encoding.writeVarInt(encoder, assoc);\n return encoder\n};\n\n/**\n * @param {RelativePosition} rpos\n * @return {Uint8Array}\n */\nconst encodeRelativePosition = rpos => {\n const encoder = encoding.createEncoder();\n writeRelativePosition(encoder, rpos);\n return encoding.toUint8Array(encoder)\n};\n\n/**\n * @param {decoding.Decoder} decoder\n * @return {RelativePosition}\n *\n * @function\n */\nconst readRelativePosition = decoder => {\n let type = null;\n let tname = null;\n let itemID = null;\n switch (decoding.readVarUint(decoder)) {\n case 0:\n // case 1: found position somewhere in the linked list\n itemID = readID(decoder);\n break\n case 1:\n // case 2: found position at the end of the list and type is stored in y.share\n tname = decoding.readVarString(decoder);\n break\n case 2: {\n // case 3: found position at the end of the list and type is attached to an item\n type = readID(decoder);\n }\n }\n const assoc = decoding.hasContent(decoder) ? decoding.readVarInt(decoder) : 0;\n return new RelativePosition(type, tname, itemID, assoc)\n};\n\n/**\n * @param {Uint8Array} uint8Array\n * @return {RelativePosition}\n */\nconst decodeRelativePosition = uint8Array => readRelativePosition(decoding.createDecoder(uint8Array));\n\n/**\n * Transform a relative position to an absolute position.\n *\n * If you want to share the relative position with other users, you should set\n * `followUndoneDeletions` to false to get consistent results across all clients.\n *\n * When calculating the absolute position, we try to follow the \"undone deletions\". This yields\n * better results for the user who performed undo. However, only the user who performed the undo\n * will get the better results, the other users don't know which operations recreated a deleted\n * range of content. There is more information in this ticket: https://github.com/yjs/yjs/issues/638\n *\n * @param {RelativePosition} rpos\n * @param {Doc} doc\n * @param {boolean} followUndoneDeletions - whether to follow undone deletions - see https://github.com/yjs/yjs/issues/638\n * @return {AbsolutePosition|null}\n *\n * @function\n */\nconst createAbsolutePositionFromRelativePosition = (rpos, doc, followUndoneDeletions = true) => {\n const store = doc.store;\n const rightID = rpos.item;\n const typeID = rpos.type;\n const tname = rpos.tname;\n const assoc = rpos.assoc;\n let type = null;\n let index = 0;\n if (rightID !== null) {\n if (getState(store, rightID.client) <= rightID.clock) {\n return null\n }\n const res = followUndoneDeletions ? followRedone(store, rightID) : { item: getItem(store, rightID), diff: 0 };\n const right = res.item;\n if (!(right instanceof Item)) {\n return null\n }\n type = /** @type {AbstractType} */ (right.parent);\n if (type._item === null || !type._item.deleted) {\n index = (right.deleted || !right.countable) ? 0 : (res.diff + (assoc >= 0 ? 0 : 1)); // adjust position based on left association if necessary\n let n = right.left;\n while (n !== null) {\n if (!n.deleted && n.countable) {\n index += n.length;\n }\n n = n.left;\n }\n }\n } else {\n if (tname !== null) {\n type = doc.get(tname);\n } else if (typeID !== null) {\n if (getState(store, typeID.client) <= typeID.clock) {\n // type does not exist yet\n return null\n }\n const { item } = followUndoneDeletions ? followRedone(store, typeID) : { item: getItem(store, typeID) };\n if (item instanceof Item && item.content instanceof ContentType) {\n type = item.content.type;\n } else {\n // struct is garbage collected\n return null\n }\n } else {\n throw error.unexpectedCase()\n }\n if (assoc >= 0) {\n index = type._length;\n } else {\n index = 0;\n }\n }\n return createAbsolutePosition(type, index, rpos.assoc)\n};\n\n/**\n * @param {RelativePosition|null} a\n * @param {RelativePosition|null} b\n * @return {boolean}\n *\n * @function\n */\nconst compareRelativePositions = (a, b) => a === b || (\n a !== null && b !== null && a.tname === b.tname && compareIDs(a.item, b.item) && compareIDs(a.type, b.type) && a.assoc === b.assoc\n);\n\nclass Snapshot {\n /**\n * @param {DeleteSet} ds\n * @param {Map} sv state map\n */\n constructor (ds, sv) {\n /**\n * @type {DeleteSet}\n */\n this.ds = ds;\n /**\n * State Map\n * @type {Map}\n */\n this.sv = sv;\n }\n}\n\n/**\n * @param {Snapshot} snap1\n * @param {Snapshot} snap2\n * @return {boolean}\n */\nconst equalSnapshots = (snap1, snap2) => {\n const ds1 = snap1.ds.clients;\n const ds2 = snap2.ds.clients;\n const sv1 = snap1.sv;\n const sv2 = snap2.sv;\n if (sv1.size !== sv2.size || ds1.size !== ds2.size) {\n return false\n }\n for (const [key, value] of sv1.entries()) {\n if (sv2.get(key) !== value) {\n return false\n }\n }\n for (const [client, dsitems1] of ds1.entries()) {\n const dsitems2 = ds2.get(client) || [];\n if (dsitems1.length !== dsitems2.length) {\n return false\n }\n for (let i = 0; i < dsitems1.length; i++) {\n const dsitem1 = dsitems1[i];\n const dsitem2 = dsitems2[i];\n if (dsitem1.clock !== dsitem2.clock || dsitem1.len !== dsitem2.len) {\n return false\n }\n }\n }\n return true\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {DSEncoderV1 | DSEncoderV2} [encoder]\n * @return {Uint8Array}\n */\nconst encodeSnapshotV2 = (snapshot, encoder = new DSEncoderV2()) => {\n writeDeleteSet(encoder, snapshot.ds);\n writeStateVector(encoder, snapshot.sv);\n return encoder.toUint8Array()\n};\n\n/**\n * @param {Snapshot} snapshot\n * @return {Uint8Array}\n */\nconst encodeSnapshot = snapshot => encodeSnapshotV2(snapshot, new DSEncoderV1());\n\n/**\n * @param {Uint8Array} buf\n * @param {DSDecoderV1 | DSDecoderV2} [decoder]\n * @return {Snapshot}\n */\nconst decodeSnapshotV2 = (buf, decoder = new DSDecoderV2(decoding.createDecoder(buf))) => {\n return new Snapshot(readDeleteSet(decoder), readStateVector(decoder))\n};\n\n/**\n * @param {Uint8Array} buf\n * @return {Snapshot}\n */\nconst decodeSnapshot = buf => decodeSnapshotV2(buf, new DSDecoderV1(decoding.createDecoder(buf)));\n\n/**\n * @param {DeleteSet} ds\n * @param {Map} sm\n * @return {Snapshot}\n */\nconst createSnapshot = (ds, sm) => new Snapshot(ds, sm);\n\nconst emptySnapshot = createSnapshot(createDeleteSet(), new Map());\n\n/**\n * @param {Doc} doc\n * @return {Snapshot}\n */\nconst snapshot = doc => createSnapshot(createDeleteSetFromStructStore(doc.store), getStateVector(doc.store));\n\n/**\n * @param {Item} item\n * @param {Snapshot|undefined} snapshot\n *\n * @protected\n * @function\n */\nconst isVisible = (item, snapshot) => snapshot === undefined\n ? !item.deleted\n : snapshot.sv.has(item.id.client) && (snapshot.sv.get(item.id.client) || 0) > item.id.clock && !isDeleted(snapshot.ds, item.id);\n\n/**\n * @param {Transaction} transaction\n * @param {Snapshot} snapshot\n */\nconst splitSnapshotAffectedStructs = (transaction, snapshot) => {\n const meta = map.setIfUndefined(transaction.meta, splitSnapshotAffectedStructs, set.create);\n const store = transaction.doc.store;\n // check if we already split for this snapshot\n if (!meta.has(snapshot)) {\n snapshot.sv.forEach((clock, client) => {\n if (clock < getState(store, client)) {\n getItemCleanStart(transaction, createID(client, clock));\n }\n });\n iterateDeletedStructs(transaction, snapshot.ds, _item => {});\n meta.add(snapshot);\n }\n};\n\n/**\n * @example\n * const ydoc = new Y.Doc({ gc: false })\n * ydoc.getText().insert(0, 'world!')\n * const snapshot = Y.snapshot(ydoc)\n * ydoc.getText().insert(0, 'hello ')\n * const restored = Y.createDocFromSnapshot(ydoc, snapshot)\n * assert(restored.getText().toString() === 'world!')\n *\n * @param {Doc} originDoc\n * @param {Snapshot} snapshot\n * @param {Doc} [newDoc] Optionally, you may define the Yjs document that receives the data from originDoc\n * @return {Doc}\n */\nconst createDocFromSnapshot = (originDoc, snapshot, newDoc = new Doc()) => {\n if (originDoc.gc) {\n // we should not try to restore a GC-ed document, because some of the restored items might have their content deleted\n throw new Error('Garbage-collection must be disabled in `originDoc`!')\n }\n const { sv, ds } = snapshot;\n\n const encoder = new UpdateEncoderV2();\n originDoc.transact(transaction => {\n let size = 0;\n sv.forEach(clock => {\n if (clock > 0) {\n size++;\n }\n });\n encoding.writeVarUint(encoder.restEncoder, size);\n // splitting the structs before writing them to the encoder\n for (const [client, clock] of sv) {\n if (clock === 0) {\n continue\n }\n if (clock < getState(originDoc.store, client)) {\n getItemCleanStart(transaction, createID(client, clock));\n }\n const structs = originDoc.store.clients.get(client) || [];\n const lastStructIndex = findIndexSS(structs, clock - 1);\n // write # encoded structs\n encoding.writeVarUint(encoder.restEncoder, lastStructIndex + 1);\n encoder.writeClient(client);\n // first clock written is 0\n encoding.writeVarUint(encoder.restEncoder, 0);\n for (let i = 0; i <= lastStructIndex; i++) {\n structs[i].write(encoder, 0);\n }\n }\n writeDeleteSet(encoder, ds);\n });\n\n applyUpdateV2(newDoc, encoder.toUint8Array(), 'snapshot');\n return newDoc\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]\n */\nconst snapshotContainsUpdateV2 = (snapshot, update, YDecoder = UpdateDecoderV2) => {\n const updateDecoder = new YDecoder(decoding.createDecoder(update));\n const lazyDecoder = new LazyStructReader(updateDecoder, false);\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n if ((snapshot.sv.get(curr.id.client) || 0) < curr.id.clock + curr.length) {\n return false\n }\n }\n const mergedDS = mergeDeleteSets([snapshot.ds, readDeleteSet(updateDecoder)]);\n return equalDeleteSets(snapshot.ds, mergedDS)\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {Uint8Array} update\n */\nconst snapshotContainsUpdate = (snapshot, update) => snapshotContainsUpdateV2(snapshot, update, UpdateDecoderV1);\n\nclass StructStore {\n constructor () {\n /**\n * @type {Map>}\n */\n this.clients = new Map();\n /**\n * @type {null | { missing: Map, update: Uint8Array }}\n */\n this.pendingStructs = null;\n /**\n * @type {null | Uint8Array}\n */\n this.pendingDs = null;\n }\n}\n\n/**\n * Return the states as a Map.\n * Note that clock refers to the next expected clock id.\n *\n * @param {StructStore} store\n * @return {Map}\n *\n * @public\n * @function\n */\nconst getStateVector = store => {\n const sm = new Map();\n store.clients.forEach((structs, client) => {\n const struct = structs[structs.length - 1];\n sm.set(client, struct.id.clock + struct.length);\n });\n return sm\n};\n\n/**\n * @param {StructStore} store\n * @param {number} client\n * @return {number}\n *\n * @public\n * @function\n */\nconst getState = (store, client) => {\n const structs = store.clients.get(client);\n if (structs === undefined) {\n return 0\n }\n const lastStruct = structs[structs.length - 1];\n return lastStruct.id.clock + lastStruct.length\n};\n\n/**\n * @param {StructStore} store\n * @param {GC|Item} struct\n *\n * @private\n * @function\n */\nconst addStruct = (store, struct) => {\n let structs = store.clients.get(struct.id.client);\n if (structs === undefined) {\n structs = [];\n store.clients.set(struct.id.client, structs);\n } else {\n const lastStruct = structs[structs.length - 1];\n if (lastStruct.id.clock + lastStruct.length !== struct.id.clock) {\n throw error.unexpectedCase()\n }\n }\n structs.push(struct);\n};\n\n/**\n * Perform a binary search on a sorted array\n * @param {Array} structs\n * @param {number} clock\n * @return {number}\n *\n * @private\n * @function\n */\nconst findIndexSS = (structs, clock) => {\n let left = 0;\n let right = structs.length - 1;\n let mid = structs[right];\n let midclock = mid.id.clock;\n if (midclock === clock) {\n return right\n }\n // @todo does it even make sense to pivot the search?\n // If a good split misses, it might actually increase the time to find the correct item.\n // Currently, the only advantage is that search with pivoting might find the item on the first try.\n let midindex = math.floor((clock / (midclock + mid.length - 1)) * right); // pivoting the search\n while (left <= right) {\n mid = structs[midindex];\n midclock = mid.id.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.length) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n midindex = math.floor((left + right) / 2);\n }\n // Always check state before looking for a struct in StructStore\n // Therefore the case of not finding a struct is unexpected\n throw error.unexpectedCase()\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {GC|Item}\n *\n * @private\n * @function\n */\nconst find = (store, id) => {\n /**\n * @type {Array}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n return structs[findIndexSS(structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n * @private\n * @function\n */\nconst getItem = /** @type {function(StructStore,ID):Item} */ (find);\n\n/**\n * @param {Transaction} transaction\n * @param {Array} structs\n * @param {number} clock\n */\nconst findIndexCleanStart = (transaction, structs, clock) => {\n const index = findIndexSS(structs, clock);\n const struct = structs[index];\n if (struct.id.clock < clock && struct instanceof Item) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n return index + 1\n }\n return index\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanStart = (transaction, id) => {\n const structs = /** @type {Array} */ (transaction.doc.store.clients.get(id.client));\n return structs[findIndexCleanStart(transaction, structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanEnd = (transaction, store, id) => {\n /**\n * @type {Array}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n const index = findIndexSS(structs, id.clock);\n const struct = structs[index];\n if (id.clock !== struct.id.clock + struct.length - 1 && struct.constructor !== GC) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, id.clock - struct.id.clock + 1));\n }\n return struct\n};\n\n/**\n * Replace `item` with `newitem` in store\n * @param {StructStore} store\n * @param {GC|Item} struct\n * @param {GC|Item} newStruct\n *\n * @private\n * @function\n */\nconst replaceStruct = (store, struct, newStruct) => {\n const structs = /** @type {Array} */ (store.clients.get(struct.id.client));\n structs[findIndexSS(structs, struct.id.clock)] = newStruct;\n};\n\n/**\n * Iterate over a range of structs\n *\n * @param {Transaction} transaction\n * @param {Array} structs\n * @param {number} clockStart Inclusive start\n * @param {number} len\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateStructs = (transaction, structs, clockStart, len, f) => {\n if (len === 0) {\n return\n }\n const clockEnd = clockStart + len;\n let index = findIndexCleanStart(transaction, structs, clockStart);\n let struct;\n do {\n struct = structs[index++];\n if (clockEnd < struct.id.clock + struct.length) {\n findIndexCleanStart(transaction, structs, clockEnd);\n }\n f(struct);\n } while (index < structs.length && structs[index].id.clock < clockEnd)\n};\n\n/**\n * A transaction is created for every change on the Yjs model. It is possible\n * to bundle changes on the Yjs model in a single transaction to\n * minimize the number on messages sent and the number of observer calls.\n * If possible the user of this library should bundle as many changes as\n * possible. Here is an example to illustrate the advantages of bundling:\n *\n * @example\n * const ydoc = new Y.Doc()\n * const map = ydoc.getMap('map')\n * // Log content when change is triggered\n * map.observe(() => {\n * console.log('change triggered')\n * })\n * // Each change on the map type triggers a log message:\n * map.set('a', 0) // => \"change triggered\"\n * map.set('b', 0) // => \"change triggered\"\n * // When put in a transaction, it will trigger the log after the transaction:\n * ydoc.transact(() => {\n * map.set('a', 1)\n * map.set('b', 1)\n * }) // => \"change triggered\"\n *\n * @public\n */\nclass Transaction {\n /**\n * @param {Doc} doc\n * @param {any} origin\n * @param {boolean} local\n */\n constructor (doc, origin, local) {\n /**\n * The Yjs instance.\n * @type {Doc}\n */\n this.doc = doc;\n /**\n * Describes the set of deleted items by ids\n * @type {DeleteSet}\n */\n this.deleteSet = new DeleteSet();\n /**\n * Holds the state before the transaction started.\n * @type {Map}\n */\n this.beforeState = getStateVector(doc.store);\n /**\n * Holds the state after the transaction.\n * @type {Map}\n */\n this.afterState = new Map();\n /**\n * All types that were directly modified (property added or child\n * inserted/deleted). New types are not included in this Set.\n * Maps from type to parentSubs (`item.parentSub = null` for YArray)\n * @type {Map>,Set>}\n */\n this.changed = new Map();\n /**\n * Stores the events for the types that observe also child elements.\n * It is mainly used by `observeDeep`.\n * @type {Map>,Array>>}\n */\n this.changedParentTypes = new Map();\n /**\n * @type {Array}\n */\n this._mergeStructs = [];\n /**\n * @type {any}\n */\n this.origin = origin;\n /**\n * Stores meta information on the transaction\n * @type {Map}\n */\n this.meta = new Map();\n /**\n * Whether this change originates from this doc.\n * @type {boolean}\n */\n this.local = local;\n /**\n * @type {Set}\n */\n this.subdocsAdded = new Set();\n /**\n * @type {Set}\n */\n this.subdocsRemoved = new Set();\n /**\n * @type {Set}\n */\n this.subdocsLoaded = new Set();\n /**\n * @type {boolean}\n */\n this._needFormattingCleanup = false;\n }\n}\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Transaction} transaction\n * @return {boolean} Whether data was written.\n */\nconst writeUpdateMessageFromTransaction = (encoder, transaction) => {\n if (transaction.deleteSet.clients.size === 0 && !map.any(transaction.afterState, (clock, client) => transaction.beforeState.get(client) !== clock)) {\n return false\n }\n sortAndMergeDeleteSet(transaction.deleteSet);\n writeStructsFromTransaction(encoder, transaction);\n writeDeleteSet(encoder, transaction.deleteSet);\n return true\n};\n\n/**\n * If `type.parent` was added in current transaction, `type` technically\n * did not change, it was just added and we should not fire events for `type`.\n *\n * @param {Transaction} transaction\n * @param {AbstractType>} type\n * @param {string|null} parentSub\n */\nconst addChangedTypeToTransaction = (transaction, type, parentSub) => {\n const item = type._item;\n if (item === null || (item.id.clock < (transaction.beforeState.get(item.id.client) || 0) && !item.deleted)) {\n map.setIfUndefined(transaction.changed, type, set.create).add(parentSub);\n }\n};\n\n/**\n * @param {Array} structs\n * @param {number} pos\n * @return {number} # of merged structs\n */\nconst tryToMergeWithLefts = (structs, pos) => {\n let right = structs[pos];\n let left = structs[pos - 1];\n let i = pos;\n for (; i > 0; right = left, left = structs[--i - 1]) {\n if (left.deleted === right.deleted && left.constructor === right.constructor) {\n if (left.mergeWith(right)) {\n if (right instanceof Item && right.parentSub !== null && /** @type {AbstractType} */ (right.parent)._map.get(right.parentSub) === right) {\n /** @type {AbstractType} */ (right.parent)._map.set(right.parentSub, /** @type {Item} */ (left));\n }\n continue\n }\n }\n break\n }\n const merged = pos - i;\n if (merged) {\n // remove all merged structs from the array\n structs.splice(pos + 1 - merged, merged);\n }\n return merged\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGcDeleteSet = (ds, store, gcFilter) => {\n for (const [client, deleteItems] of ds.clients.entries()) {\n const structs = /** @type {Array} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n const endDeleteItemClock = deleteItem.clock + deleteItem.len;\n for (\n let si = findIndexSS(structs, deleteItem.clock), struct = structs[si];\n si < structs.length && struct.id.clock < endDeleteItemClock;\n struct = structs[++si]\n ) {\n const struct = structs[si];\n if (deleteItem.clock + deleteItem.len <= struct.id.clock) {\n break\n }\n if (struct instanceof Item && struct.deleted && !struct.keep && gcFilter(struct)) {\n struct.gc(store, false);\n }\n }\n }\n }\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n */\nconst tryMergeDeleteSet = (ds, store) => {\n // try to merge deleted / gc'd items\n // merge from right to left for better efficiency and so we don't miss any merge targets\n ds.clients.forEach((deleteItems, client) => {\n const structs = /** @type {Array} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n // start with merging the item next to the last deleted item\n const mostRightIndexToCheck = math.min(structs.length - 1, 1 + findIndexSS(structs, deleteItem.clock + deleteItem.len - 1));\n for (\n let si = mostRightIndexToCheck, struct = structs[si];\n si > 0 && struct.id.clock >= deleteItem.clock;\n struct = structs[si]\n ) {\n si -= 1 + tryToMergeWithLefts(structs, si);\n }\n }\n });\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGc = (ds, store, gcFilter) => {\n tryGcDeleteSet(ds, store, gcFilter);\n tryMergeDeleteSet(ds, store);\n};\n\n/**\n * @param {Array} transactionCleanups\n * @param {number} i\n */\nconst cleanupTransactions = (transactionCleanups, i) => {\n if (i < transactionCleanups.length) {\n const transaction = transactionCleanups[i];\n const doc = transaction.doc;\n const store = doc.store;\n const ds = transaction.deleteSet;\n const mergeStructs = transaction._mergeStructs;\n try {\n sortAndMergeDeleteSet(ds);\n transaction.afterState = getStateVector(transaction.doc.store);\n doc.emit('beforeObserverCalls', [transaction, doc]);\n /**\n * An array of event callbacks.\n *\n * Each callback is called even if the other ones throw errors.\n *\n * @type {Array}\n */\n const fs = [];\n // observe events on changed types\n transaction.changed.forEach((subs, itemtype) =>\n fs.push(() => {\n if (itemtype._item === null || !itemtype._item.deleted) {\n itemtype._callObserver(transaction, subs);\n }\n })\n );\n fs.push(() => {\n // deep observe events\n transaction.changedParentTypes.forEach((events, type) => {\n // We need to think about the possibility that the user transforms the\n // Y.Doc in the event.\n if (type._dEH.l.length > 0 && (type._item === null || !type._item.deleted)) {\n events = events\n .filter(event =>\n event.target._item === null || !event.target._item.deleted\n );\n events\n .forEach(event => {\n event.currentTarget = type;\n // path is relative to the current target\n event._path = null;\n });\n // sort events by path length so that top-level events are fired first.\n events\n .sort((event1, event2) => event1.path.length - event2.path.length);\n // We don't need to check for events.length\n // because we know it has at least one element\n callEventHandlerListeners(type._dEH, events, transaction);\n }\n });\n });\n fs.push(() => doc.emit('afterTransaction', [transaction, doc]));\n callAll(fs, []);\n if (transaction._needFormattingCleanup) {\n cleanupYTextAfterTransaction(transaction);\n }\n } finally {\n // Replace deleted items with ItemDeleted / GC.\n // This is where content is actually remove from the Yjs Doc.\n if (doc.gc) {\n tryGcDeleteSet(ds, store, doc.gcFilter);\n }\n tryMergeDeleteSet(ds, store);\n\n // on all affected store.clients props, try to merge\n transaction.afterState.forEach((clock, client) => {\n const beforeClock = transaction.beforeState.get(client) || 0;\n if (beforeClock !== clock) {\n const structs = /** @type {Array} */ (store.clients.get(client));\n // we iterate from right to left so we can safely remove entries\n const firstChangePos = math.max(findIndexSS(structs, beforeClock), 1);\n for (let i = structs.length - 1; i >= firstChangePos;) {\n i -= 1 + tryToMergeWithLefts(structs, i);\n }\n }\n });\n // try to merge mergeStructs\n // @todo: it makes more sense to transform mergeStructs to a DS, sort it, and merge from right to left\n // but at the moment DS does not handle duplicates\n for (let i = mergeStructs.length - 1; i >= 0; i--) {\n const { client, clock } = mergeStructs[i].id;\n const structs = /** @type {Array} */ (store.clients.get(client));\n const replacedStructPos = findIndexSS(structs, clock);\n if (replacedStructPos + 1 < structs.length) {\n if (tryToMergeWithLefts(structs, replacedStructPos + 1) > 1) {\n continue // no need to perform next check, both are already merged\n }\n }\n if (replacedStructPos > 0) {\n tryToMergeWithLefts(structs, replacedStructPos);\n }\n }\n if (!transaction.local && transaction.afterState.get(doc.clientID) !== transaction.beforeState.get(doc.clientID)) {\n logging.print(logging.ORANGE, logging.BOLD, '[yjs] ', logging.UNBOLD, logging.RED, 'Changed the client-id because another client seems to be using it.');\n doc.clientID = generateNewClientId();\n }\n // @todo Merge all the transactions into one and provide send the data as a single update message\n doc.emit('afterTransactionCleanup', [transaction, doc]);\n if (doc._observers.has('update')) {\n const encoder = new UpdateEncoderV1();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('update', [encoder.toUint8Array(), transaction.origin, doc, transaction]);\n }\n }\n if (doc._observers.has('updateV2')) {\n const encoder = new UpdateEncoderV2();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('updateV2', [encoder.toUint8Array(), transaction.origin, doc, transaction]);\n }\n }\n const { subdocsAdded, subdocsLoaded, subdocsRemoved } = transaction;\n if (subdocsAdded.size > 0 || subdocsRemoved.size > 0 || subdocsLoaded.size > 0) {\n subdocsAdded.forEach(subdoc => {\n subdoc.clientID = doc.clientID;\n if (subdoc.collectionid == null) {\n subdoc.collectionid = doc.collectionid;\n }\n doc.subdocs.add(subdoc);\n });\n subdocsRemoved.forEach(subdoc => doc.subdocs.delete(subdoc));\n doc.emit('subdocs', [{ loaded: subdocsLoaded, added: subdocsAdded, removed: subdocsRemoved }, doc, transaction]);\n subdocsRemoved.forEach(subdoc => subdoc.destroy());\n }\n\n if (transactionCleanups.length <= i + 1) {\n doc._transactionCleanups = [];\n doc.emit('afterAllTransactions', [doc, transactionCleanups]);\n } else {\n cleanupTransactions(transactionCleanups, i + 1);\n }\n }\n }\n};\n\n/**\n * Implements the functionality of `y.transact(()=>{..})`\n *\n * @template T\n * @param {Doc} doc\n * @param {function(Transaction):T} f\n * @param {any} [origin=true]\n * @return {T}\n *\n * @function\n */\nconst transact = (doc, f, origin = null, local = true) => {\n const transactionCleanups = doc._transactionCleanups;\n let initialCall = false;\n /**\n * @type {any}\n */\n let result = null;\n if (doc._transaction === null) {\n initialCall = true;\n doc._transaction = new Transaction(doc, origin, local);\n transactionCleanups.push(doc._transaction);\n if (transactionCleanups.length === 1) {\n doc.emit('beforeAllTransactions', [doc]);\n }\n doc.emit('beforeTransaction', [doc._transaction, doc]);\n }\n try {\n result = f(doc._transaction);\n } finally {\n if (initialCall) {\n const finishCleanup = doc._transaction === transactionCleanups[0];\n doc._transaction = null;\n if (finishCleanup) {\n // The first transaction ended, now process observer calls.\n // Observer call may create new transactions for which we need to call the observers and do cleanup.\n // We don't want to nest these calls, so we execute these calls one after\n // another.\n // Also we need to ensure that all cleanups are called, even if the\n // observes throw errors.\n // This file is full of hacky try {} finally {} blocks to ensure that an\n // event can throw errors and also that the cleanup is called.\n cleanupTransactions(transactionCleanups, 0);\n }\n }\n }\n return result\n};\n\nclass StackItem {\n /**\n * @param {DeleteSet} deletions\n * @param {DeleteSet} insertions\n */\n constructor (deletions, insertions) {\n this.insertions = insertions;\n this.deletions = deletions;\n /**\n * Use this to save and restore metadata like selection range\n */\n this.meta = new Map();\n }\n}\n/**\n * @param {Transaction} tr\n * @param {UndoManager} um\n * @param {StackItem} stackItem\n */\nconst clearUndoManagerStackItem = (tr, um, stackItem) => {\n iterateDeletedStructs(tr, stackItem.deletions, item => {\n if (item instanceof Item && um.scope.some(type => isParentOf(type, item))) {\n keepItem(item, false);\n }\n });\n};\n\n/**\n * @param {UndoManager} undoManager\n * @param {Array} stack\n * @param {'undo'|'redo'} eventType\n * @return {StackItem?}\n */\nconst popStackItem = (undoManager, stack, eventType) => {\n /**\n * Keep a reference to the transaction so we can fire the event with the changedParentTypes\n * @type {any}\n */\n let _tr = null;\n const doc = undoManager.doc;\n const scope = undoManager.scope;\n transact(doc, transaction => {\n while (stack.length > 0 && undoManager.currStackItem === null) {\n const store = doc.store;\n const stackItem = /** @type {StackItem} */ (stack.pop());\n /**\n * @type {Set}\n */\n const itemsToRedo = new Set();\n /**\n * @type {Array}\n */\n const itemsToDelete = [];\n let performedChange = false;\n iterateDeletedStructs(transaction, stackItem.insertions, struct => {\n if (struct instanceof Item) {\n if (struct.redone !== null) {\n let { item, diff } = followRedone(store, struct.id);\n if (diff > 0) {\n item = getItemCleanStart(transaction, createID(item.id.client, item.id.clock + diff));\n }\n struct = item;\n }\n if (!struct.deleted && scope.some(type => isParentOf(type, /** @type {Item} */ (struct)))) {\n itemsToDelete.push(struct);\n }\n }\n });\n iterateDeletedStructs(transaction, stackItem.deletions, struct => {\n if (\n struct instanceof Item &&\n scope.some(type => isParentOf(type, struct)) &&\n // Never redo structs in stackItem.insertions because they were created and deleted in the same capture interval.\n !isDeleted(stackItem.insertions, struct.id)\n ) {\n itemsToRedo.add(struct);\n }\n });\n itemsToRedo.forEach(struct => {\n performedChange = redoItem(transaction, struct, itemsToRedo, stackItem.insertions, undoManager.ignoreRemoteMapChanges, undoManager) !== null || performedChange;\n });\n // We want to delete in reverse order so that children are deleted before\n // parents, so we have more information available when items are filtered.\n for (let i = itemsToDelete.length - 1; i >= 0; i--) {\n const item = itemsToDelete[i];\n if (undoManager.deleteFilter(item)) {\n item.delete(transaction);\n performedChange = true;\n }\n }\n undoManager.currStackItem = performedChange ? stackItem : null;\n }\n transaction.changed.forEach((subProps, type) => {\n // destroy search marker if necessary\n if (subProps.has(null) && type._searchMarker) {\n type._searchMarker.length = 0;\n }\n });\n _tr = transaction;\n }, undoManager);\n const res = undoManager.currStackItem;\n if (res != null) {\n const changedParentTypes = _tr.changedParentTypes;\n undoManager.emit('stack-item-popped', [{ stackItem: res, type: eventType, changedParentTypes, origin: undoManager }, undoManager]);\n undoManager.currStackItem = null;\n }\n return res\n};\n\n/**\n * @typedef {Object} UndoManagerOptions\n * @property {number} [UndoManagerOptions.captureTimeout=500]\n * @property {function(Transaction):boolean} [UndoManagerOptions.captureTransaction] Do not capture changes of a Transaction if result false.\n * @property {function(Item):boolean} [UndoManagerOptions.deleteFilter=()=>true] Sometimes\n * it is necessary to filter what an Undo/Redo operation can delete. If this\n * filter returns false, the type/item won't be deleted even it is in the\n * undo/redo scope.\n * @property {Set} [UndoManagerOptions.trackedOrigins=new Set([null])]\n * @property {boolean} [ignoreRemoteMapChanges] Experimental. By default, the UndoManager will never overwrite remote changes. Enable this property to enable overwriting remote changes on key-value changes (Y.Map, properties on Y.Xml, etc..).\n * @property {Doc} [doc] The document that this UndoManager operates on. Only needed if typeScope is empty.\n */\n\n/**\n * @typedef {Object} StackItemEvent\n * @property {StackItem} StackItemEvent.stackItem\n * @property {any} StackItemEvent.origin\n * @property {'undo'|'redo'} StackItemEvent.type\n * @property {Map>,Array>>} StackItemEvent.changedParentTypes\n */\n\n/**\n * Fires 'stack-item-added' event when a stack item was added to either the undo- or\n * the redo-stack. You may store additional stack information via the\n * metadata property on `event.stackItem.meta` (it is a `Map` of metadata properties).\n * Fires 'stack-item-popped' event when a stack item was popped from either the\n * undo- or the redo-stack. You may restore the saved stack information from `event.stackItem.meta`.\n *\n * @extends {ObservableV2<{'stack-item-added':function(StackItemEvent, UndoManager):void, 'stack-item-popped': function(StackItemEvent, UndoManager):void, 'stack-cleared': function({ undoStackCleared: boolean, redoStackCleared: boolean }):void, 'stack-item-updated': function(StackItemEvent, UndoManager):void }>}\n */\nclass UndoManager extends ObservableV2 {\n /**\n * @param {AbstractType|Array>} typeScope Accepts either a single type, or an array of types\n * @param {UndoManagerOptions} options\n */\n constructor (typeScope, {\n captureTimeout = 500,\n captureTransaction = _tr => true,\n deleteFilter = () => true,\n trackedOrigins = new Set([null]),\n ignoreRemoteMapChanges = false,\n doc = /** @type {Doc} */ (array.isArray(typeScope) ? typeScope[0].doc : typeScope.doc)\n } = {}) {\n super();\n /**\n * @type {Array>}\n */\n this.scope = [];\n this.doc = doc;\n this.addToScope(typeScope);\n this.deleteFilter = deleteFilter;\n trackedOrigins.add(this);\n this.trackedOrigins = trackedOrigins;\n this.captureTransaction = captureTransaction;\n /**\n * @type {Array}\n */\n this.undoStack = [];\n /**\n * @type {Array}\n */\n this.redoStack = [];\n /**\n * Whether the client is currently undoing (calling UndoManager.undo)\n *\n * @type {boolean}\n */\n this.undoing = false;\n this.redoing = false;\n /**\n * The currently popped stack item if UndoManager.undoing or UndoManager.redoing\n *\n * @type {StackItem|null}\n */\n this.currStackItem = null;\n this.lastChange = 0;\n this.ignoreRemoteMapChanges = ignoreRemoteMapChanges;\n this.captureTimeout = captureTimeout;\n /**\n * @param {Transaction} transaction\n */\n this.afterTransactionHandler = transaction => {\n // Only track certain transactions\n if (\n !this.captureTransaction(transaction) ||\n !this.scope.some(type => transaction.changedParentTypes.has(type)) ||\n (!this.trackedOrigins.has(transaction.origin) && (!transaction.origin || !this.trackedOrigins.has(transaction.origin.constructor)))\n ) {\n return\n }\n const undoing = this.undoing;\n const redoing = this.redoing;\n const stack = undoing ? this.redoStack : this.undoStack;\n if (undoing) {\n this.stopCapturing(); // next undo should not be appended to last stack item\n } else if (!redoing) {\n // neither undoing nor redoing: delete redoStack\n this.clear(false, true);\n }\n const insertions = new DeleteSet();\n transaction.afterState.forEach((endClock, client) => {\n const startClock = transaction.beforeState.get(client) || 0;\n const len = endClock - startClock;\n if (len > 0) {\n addToDeleteSet(insertions, client, startClock, len);\n }\n });\n const now = time.getUnixTime();\n let didAdd = false;\n if (this.lastChange > 0 && now - this.lastChange < this.captureTimeout && stack.length > 0 && !undoing && !redoing) {\n // append change to last stack op\n const lastOp = stack[stack.length - 1];\n lastOp.deletions = mergeDeleteSets([lastOp.deletions, transaction.deleteSet]);\n lastOp.insertions = mergeDeleteSets([lastOp.insertions, insertions]);\n } else {\n // create a new stack op\n stack.push(new StackItem(transaction.deleteSet, insertions));\n didAdd = true;\n }\n if (!undoing && !redoing) {\n this.lastChange = now;\n }\n // make sure that deleted structs are not gc'd\n iterateDeletedStructs(transaction, transaction.deleteSet, /** @param {Item|GC} item */ item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, true);\n }\n });\n /**\n * @type {[StackItemEvent, UndoManager]}\n */\n const changeEvent = [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? 'redo' : 'undo', changedParentTypes: transaction.changedParentTypes }, this];\n if (didAdd) {\n this.emit('stack-item-added', changeEvent);\n } else {\n this.emit('stack-item-updated', changeEvent);\n }\n };\n this.doc.on('afterTransaction', this.afterTransactionHandler);\n this.doc.on('destroy', () => {\n this.destroy();\n });\n }\n\n /**\n * @param {Array> | AbstractType} ytypes\n */\n addToScope (ytypes) {\n ytypes = array.isArray(ytypes) ? ytypes : [ytypes];\n ytypes.forEach(ytype => {\n if (this.scope.every(yt => yt !== ytype)) {\n if (ytype.doc !== this.doc) logging.warn('[yjs#509] Not same Y.Doc'); // use MultiDocUndoManager instead. also see https://github.com/yjs/yjs/issues/509\n this.scope.push(ytype);\n }\n });\n }\n\n /**\n * @param {any} origin\n */\n addTrackedOrigin (origin) {\n this.trackedOrigins.add(origin);\n }\n\n /**\n * @param {any} origin\n */\n removeTrackedOrigin (origin) {\n this.trackedOrigins.delete(origin);\n }\n\n clear (clearUndoStack = true, clearRedoStack = true) {\n if ((clearUndoStack && this.canUndo()) || (clearRedoStack && this.canRedo())) {\n this.doc.transact(tr => {\n if (clearUndoStack) {\n this.undoStack.forEach(item => clearUndoManagerStackItem(tr, this, item));\n this.undoStack = [];\n }\n if (clearRedoStack) {\n this.redoStack.forEach(item => clearUndoManagerStackItem(tr, this, item));\n this.redoStack = [];\n }\n this.emit('stack-cleared', [{ undoStackCleared: clearUndoStack, redoStackCleared: clearRedoStack }]);\n });\n }\n }\n\n /**\n * UndoManager merges Undo-StackItem if they are created within time-gap\n * smaller than `options.captureTimeout`. Call `um.stopCapturing()` so that the next\n * StackItem won't be merged.\n *\n *\n * @example\n * // without stopCapturing\n * ytext.insert(0, 'a')\n * ytext.insert(1, 'b')\n * um.undo()\n * ytext.toString() // => '' (note that 'ab' was removed)\n * // with stopCapturing\n * ytext.insert(0, 'a')\n * um.stopCapturing()\n * ytext.insert(0, 'b')\n * um.undo()\n * ytext.toString() // => 'a' (note that only 'b' was removed)\n *\n */\n stopCapturing () {\n this.lastChange = 0;\n }\n\n /**\n * Undo last changes on type.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n undo () {\n this.undoing = true;\n let res;\n try {\n res = popStackItem(this, this.undoStack, 'undo');\n } finally {\n this.undoing = false;\n }\n return res\n }\n\n /**\n * Redo last undo operation.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n redo () {\n this.redoing = true;\n let res;\n try {\n res = popStackItem(this, this.redoStack, 'redo');\n } finally {\n this.redoing = false;\n }\n return res\n }\n\n /**\n * Are undo steps available?\n *\n * @return {boolean} `true` if undo is possible\n */\n canUndo () {\n return this.undoStack.length > 0\n }\n\n /**\n * Are redo steps available?\n *\n * @return {boolean} `true` if redo is possible\n */\n canRedo () {\n return this.redoStack.length > 0\n }\n\n destroy () {\n this.trackedOrigins.delete(this);\n this.doc.off('afterTransaction', this.afterTransactionHandler);\n super.destroy();\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n */\nfunction * lazyStructReaderGenerator (decoder) {\n const numOfStateUpdates = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = decoding.readVarUint(decoder.restDecoder);\n const client = decoder.readClient();\n let clock = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo();\n // @todo use switch instead of ifs\n if (info === 10) {\n const len = decoding.readVarUint(decoder.restDecoder);\n yield new Skip(createID(client, clock), len);\n clock += len;\n } else if ((binary.BITS5 & info) !== 0) {\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0;\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // left\n (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null, // right origin\n // @ts-ignore Force writing a string here.\n cantCopyParentInfo ? (decoder.readParentInfo() ? decoder.readString() : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n );\n yield struct;\n clock += struct.length;\n } else {\n const len = decoder.readLen();\n yield new GC(createID(client, clock), len);\n clock += len;\n }\n }\n }\n}\n\nclass LazyStructReader {\n /**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @param {boolean} filterSkips\n */\n constructor (decoder, filterSkips) {\n this.gen = lazyStructReaderGenerator(decoder);\n /**\n * @type {null | Item | Skip | GC}\n */\n this.curr = null;\n this.done = false;\n this.filterSkips = filterSkips;\n this.next();\n }\n\n /**\n * @return {Item | GC | Skip |null}\n */\n next () {\n // ignore \"Skip\" structs\n do {\n this.curr = this.gen.next().value || null;\n } while (this.filterSkips && this.curr !== null && this.curr.constructor === Skip)\n return this.curr\n }\n}\n\n/**\n * @param {Uint8Array} update\n *\n */\nconst logUpdate = update => logUpdateV2(update, UpdateDecoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]\n *\n */\nconst logUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {\n const structs = [];\n const updateDecoder = new YDecoder(decoding.createDecoder(update));\n const lazyDecoder = new LazyStructReader(updateDecoder, false);\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n structs.push(curr);\n }\n logging.print('Structs: ', structs);\n const ds = readDeleteSet(updateDecoder);\n logging.print('DeleteSet: ', ds);\n};\n\n/**\n * @param {Uint8Array} update\n *\n */\nconst decodeUpdate = (update) => decodeUpdateV2(update, UpdateDecoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]\n *\n */\nconst decodeUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {\n const structs = [];\n const updateDecoder = new YDecoder(decoding.createDecoder(update));\n const lazyDecoder = new LazyStructReader(updateDecoder, false);\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n structs.push(curr);\n }\n return {\n structs,\n ds: readDeleteSet(updateDecoder)\n }\n};\n\nclass LazyStructWriter {\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n constructor (encoder) {\n this.currClient = 0;\n this.startClock = 0;\n this.written = 0;\n this.encoder = encoder;\n /**\n * We want to write operations lazily, but also we need to know beforehand how many operations we want to write for each client.\n *\n * This kind of meta-information (#clients, #structs-per-client-written) is written to the restEncoder.\n *\n * We fragment the restEncoder and store a slice of it per-client until we know how many clients there are.\n * When we flush (toUint8Array) we write the restEncoder using the fragments and the meta-information.\n *\n * @type {Array<{ written: number, restEncoder: Uint8Array }>}\n */\n this.clientStructs = [];\n }\n}\n\n/**\n * @param {Array} updates\n * @return {Uint8Array}\n */\nconst mergeUpdates = updates => mergeUpdatesV2(updates, UpdateDecoderV1, UpdateEncoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {typeof DSEncoderV1 | typeof DSEncoderV2} YEncoder\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} YDecoder\n * @return {Uint8Array}\n */\nconst encodeStateVectorFromUpdateV2 = (update, YEncoder = DSEncoderV2, YDecoder = UpdateDecoderV2) => {\n const encoder = new YEncoder();\n const updateDecoder = new LazyStructReader(new YDecoder(decoding.createDecoder(update)), false);\n let curr = updateDecoder.curr;\n if (curr !== null) {\n let size = 0;\n let currClient = curr.id.client;\n let stopCounting = curr.id.clock !== 0; // must start at 0\n let currClock = stopCounting ? 0 : curr.id.clock + curr.length;\n for (; curr !== null; curr = updateDecoder.next()) {\n if (currClient !== curr.id.client) {\n if (currClock !== 0) {\n size++;\n // We found a new client\n // write what we have to the encoder\n encoding.writeVarUint(encoder.restEncoder, currClient);\n encoding.writeVarUint(encoder.restEncoder, currClock);\n }\n currClient = curr.id.client;\n currClock = 0;\n stopCounting = curr.id.clock !== 0;\n }\n // we ignore skips\n if (curr.constructor === Skip) {\n stopCounting = true;\n }\n if (!stopCounting) {\n currClock = curr.id.clock + curr.length;\n }\n }\n // write what we have\n if (currClock !== 0) {\n size++;\n encoding.writeVarUint(encoder.restEncoder, currClient);\n encoding.writeVarUint(encoder.restEncoder, currClock);\n }\n // prepend the size of the state vector\n const enc = encoding.createEncoder();\n encoding.writeVarUint(enc, size);\n encoding.writeBinaryEncoder(enc, encoder.restEncoder);\n encoder.restEncoder = enc;\n return encoder.toUint8Array()\n } else {\n encoding.writeVarUint(encoder.restEncoder, 0);\n return encoder.toUint8Array()\n }\n};\n\n/**\n * @param {Uint8Array} update\n * @return {Uint8Array}\n */\nconst encodeStateVectorFromUpdate = update => encodeStateVectorFromUpdateV2(update, DSEncoderV1, UpdateDecoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} YDecoder\n * @return {{ from: Map, to: Map }}\n */\nconst parseUpdateMetaV2 = (update, YDecoder = UpdateDecoderV2) => {\n /**\n * @type {Map}\n */\n const from = new Map();\n /**\n * @type {Map}\n */\n const to = new Map();\n const updateDecoder = new LazyStructReader(new YDecoder(decoding.createDecoder(update)), false);\n let curr = updateDecoder.curr;\n if (curr !== null) {\n let currClient = curr.id.client;\n let currClock = curr.id.clock;\n // write the beginning to `from`\n from.set(currClient, currClock);\n for (; curr !== null; curr = updateDecoder.next()) {\n if (currClient !== curr.id.client) {\n // We found a new client\n // write the end to `to`\n to.set(currClient, currClock);\n // write the beginning to `from`\n from.set(curr.id.client, curr.id.clock);\n // update currClient\n currClient = curr.id.client;\n }\n currClock = curr.id.clock + curr.length;\n }\n // write the end to `to`\n to.set(currClient, currClock);\n }\n return { from, to }\n};\n\n/**\n * @param {Uint8Array} update\n * @return {{ from: Map, to: Map }}\n */\nconst parseUpdateMeta = update => parseUpdateMetaV2(update, UpdateDecoderV1);\n\n/**\n * This method is intended to slice any kind of struct and retrieve the right part.\n * It does not handle side-effects, so it should only be used by the lazy-encoder.\n *\n * @param {Item | GC | Skip} left\n * @param {number} diff\n * @return {Item | GC}\n */\nconst sliceStruct = (left, diff) => {\n if (left.constructor === GC) {\n const { client, clock } = left.id;\n return new GC(createID(client, clock + diff), left.length - diff)\n } else if (left.constructor === Skip) {\n const { client, clock } = left.id;\n return new Skip(createID(client, clock + diff), left.length - diff)\n } else {\n const leftItem = /** @type {Item} */ (left);\n const { client, clock } = leftItem.id;\n return new Item(\n createID(client, clock + diff),\n null,\n createID(client, clock + diff - 1),\n null,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n )\n }\n};\n\n/**\n *\n * This function works similarly to `readUpdateV2`.\n *\n * @param {Array} updates\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n * @param {typeof UpdateEncoderV1 | typeof UpdateEncoderV2} [YEncoder]\n * @return {Uint8Array}\n */\nconst mergeUpdatesV2 = (updates, YDecoder = UpdateDecoderV2, YEncoder = UpdateEncoderV2) => {\n if (updates.length === 1) {\n return updates[0]\n }\n const updateDecoders = updates.map(update => new YDecoder(decoding.createDecoder(update)));\n let lazyStructDecoders = updateDecoders.map(decoder => new LazyStructReader(decoder, true));\n\n /**\n * @todo we don't need offset because we always slice before\n * @type {null | { struct: Item | GC | Skip, offset: number }}\n */\n let currWrite = null;\n\n const updateEncoder = new YEncoder();\n // write structs lazily\n const lazyStructEncoder = new LazyStructWriter(updateEncoder);\n\n // Note: We need to ensure that all lazyStructDecoders are fully consumed\n // Note: Should merge document updates whenever possible - even from different updates\n // Note: Should handle that some operations cannot be applied yet ()\n\n while (true) {\n // Write higher clients first ⇒ sort by clientID & clock and remove decoders without content\n lazyStructDecoders = lazyStructDecoders.filter(dec => dec.curr !== null);\n lazyStructDecoders.sort(\n /** @type {function(any,any):number} */ (dec1, dec2) => {\n if (dec1.curr.id.client === dec2.curr.id.client) {\n const clockDiff = dec1.curr.id.clock - dec2.curr.id.clock;\n if (clockDiff === 0) {\n // @todo remove references to skip since the structDecoders must filter Skips.\n return dec1.curr.constructor === dec2.curr.constructor\n ? 0\n : dec1.curr.constructor === Skip ? 1 : -1 // we are filtering skips anyway.\n } else {\n return clockDiff\n }\n } else {\n return dec2.curr.id.client - dec1.curr.id.client\n }\n }\n );\n if (lazyStructDecoders.length === 0) {\n break\n }\n const currDecoder = lazyStructDecoders[0];\n // write from currDecoder until the next operation is from another client or if filler-struct\n // then we need to reorder the decoders and find the next operation to write\n const firstClient = /** @type {Item | GC} */ (currDecoder.curr).id.client;\n\n if (currWrite !== null) {\n let curr = /** @type {Item | GC | null} */ (currDecoder.curr);\n let iterated = false;\n\n // iterate until we find something that we haven't written already\n // remember: first the high client-ids are written\n while (curr !== null && curr.id.clock + curr.length <= currWrite.struct.id.clock + currWrite.struct.length && curr.id.client >= currWrite.struct.id.client) {\n curr = currDecoder.next();\n iterated = true;\n }\n if (\n curr === null || // current decoder is empty\n curr.id.client !== firstClient || // check whether there is another decoder that has has updates from `firstClient`\n (iterated && curr.id.clock > currWrite.struct.id.clock + currWrite.struct.length) // the above while loop was used and we are potentially missing updates\n ) {\n continue\n }\n\n if (firstClient !== currWrite.struct.id.client) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n currWrite = { struct: curr, offset: 0 };\n currDecoder.next();\n } else {\n if (currWrite.struct.id.clock + currWrite.struct.length < curr.id.clock) {\n // @todo write currStruct & set currStruct = Skip(clock = currStruct.id.clock + currStruct.length, length = curr.id.clock - self.clock)\n if (currWrite.struct.constructor === Skip) {\n // extend existing skip\n currWrite.struct.length = curr.id.clock + curr.length - currWrite.struct.id.clock;\n } else {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n const diff = curr.id.clock - currWrite.struct.id.clock - currWrite.struct.length;\n /**\n * @type {Skip}\n */\n const struct = new Skip(createID(firstClient, currWrite.struct.id.clock + currWrite.struct.length), diff);\n currWrite = { struct, offset: 0 };\n }\n } else { // if (currWrite.struct.id.clock + currWrite.struct.length >= curr.id.clock) {\n const diff = currWrite.struct.id.clock + currWrite.struct.length - curr.id.clock;\n if (diff > 0) {\n if (currWrite.struct.constructor === Skip) {\n // prefer to slice Skip because the other struct might contain more information\n currWrite.struct.length -= diff;\n } else {\n curr = sliceStruct(curr, diff);\n }\n }\n if (!currWrite.struct.mergeWith(/** @type {any} */ (curr))) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n currWrite = { struct: curr, offset: 0 };\n currDecoder.next();\n }\n }\n }\n } else {\n currWrite = { struct: /** @type {Item | GC} */ (currDecoder.curr), offset: 0 };\n currDecoder.next();\n }\n for (\n let next = currDecoder.curr;\n next !== null && next.id.client === firstClient && next.id.clock === currWrite.struct.id.clock + currWrite.struct.length && next.constructor !== Skip;\n next = currDecoder.next()\n ) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n currWrite = { struct: next, offset: 0 };\n }\n }\n if (currWrite !== null) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n currWrite = null;\n }\n finishLazyStructWriting(lazyStructEncoder);\n\n const dss = updateDecoders.map(decoder => readDeleteSet(decoder));\n const ds = mergeDeleteSets(dss);\n writeDeleteSet(updateEncoder, ds);\n return updateEncoder.toUint8Array()\n};\n\n/**\n * @param {Uint8Array} update\n * @param {Uint8Array} sv\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n * @param {typeof UpdateEncoderV1 | typeof UpdateEncoderV2} [YEncoder]\n */\nconst diffUpdateV2 = (update, sv, YDecoder = UpdateDecoderV2, YEncoder = UpdateEncoderV2) => {\n const state = decodeStateVector(sv);\n const encoder = new YEncoder();\n const lazyStructWriter = new LazyStructWriter(encoder);\n const decoder = new YDecoder(decoding.createDecoder(update));\n const reader = new LazyStructReader(decoder, false);\n while (reader.curr) {\n const curr = reader.curr;\n const currClient = curr.id.client;\n const svClock = state.get(currClient) || 0;\n if (reader.curr.constructor === Skip) {\n // the first written struct shouldn't be a skip\n reader.next();\n continue\n }\n if (curr.id.clock + curr.length > svClock) {\n writeStructToLazyStructWriter(lazyStructWriter, curr, math.max(svClock - curr.id.clock, 0));\n reader.next();\n while (reader.curr && reader.curr.id.client === currClient) {\n writeStructToLazyStructWriter(lazyStructWriter, reader.curr, 0);\n reader.next();\n }\n } else {\n // read until something new comes up\n while (reader.curr && reader.curr.id.client === currClient && reader.curr.id.clock + reader.curr.length <= svClock) {\n reader.next();\n }\n }\n }\n finishLazyStructWriting(lazyStructWriter);\n // write ds\n const ds = readDeleteSet(decoder);\n writeDeleteSet(encoder, ds);\n return encoder.toUint8Array()\n};\n\n/**\n * @param {Uint8Array} update\n * @param {Uint8Array} sv\n */\nconst diffUpdate = (update, sv) => diffUpdateV2(update, sv, UpdateDecoderV1, UpdateEncoderV1);\n\n/**\n * @param {LazyStructWriter} lazyWriter\n */\nconst flushLazyStructWriter = lazyWriter => {\n if (lazyWriter.written > 0) {\n lazyWriter.clientStructs.push({ written: lazyWriter.written, restEncoder: encoding.toUint8Array(lazyWriter.encoder.restEncoder) });\n lazyWriter.encoder.restEncoder = encoding.createEncoder();\n lazyWriter.written = 0;\n }\n};\n\n/**\n * @param {LazyStructWriter} lazyWriter\n * @param {Item | GC} struct\n * @param {number} offset\n */\nconst writeStructToLazyStructWriter = (lazyWriter, struct, offset) => {\n // flush curr if we start another client\n if (lazyWriter.written > 0 && lazyWriter.currClient !== struct.id.client) {\n flushLazyStructWriter(lazyWriter);\n }\n if (lazyWriter.written === 0) {\n lazyWriter.currClient = struct.id.client;\n // write next client\n lazyWriter.encoder.writeClient(struct.id.client);\n // write startClock\n encoding.writeVarUint(lazyWriter.encoder.restEncoder, struct.id.clock + offset);\n }\n struct.write(lazyWriter.encoder, offset);\n lazyWriter.written++;\n};\n/**\n * Call this function when we collected all parts and want to\n * put all the parts together. After calling this method,\n * you can continue using the UpdateEncoder.\n *\n * @param {LazyStructWriter} lazyWriter\n */\nconst finishLazyStructWriting = (lazyWriter) => {\n flushLazyStructWriter(lazyWriter);\n\n // this is a fresh encoder because we called flushCurr\n const restEncoder = lazyWriter.encoder.restEncoder;\n\n /**\n * Now we put all the fragments together.\n * This works similarly to `writeClientsStructs`\n */\n\n // write # states that were updated - i.e. the clients\n encoding.writeVarUint(restEncoder, lazyWriter.clientStructs.length);\n\n for (let i = 0; i < lazyWriter.clientStructs.length; i++) {\n const partStructs = lazyWriter.clientStructs[i];\n /**\n * Works similarly to `writeStructs`\n */\n // write # encoded structs\n encoding.writeVarUint(restEncoder, partStructs.written);\n // write the rest of the fragment\n encoding.writeUint8Array(restEncoder, partStructs.restEncoder);\n }\n};\n\n/**\n * @param {Uint8Array} update\n * @param {function(Item|GC|Skip):Item|GC|Skip} blockTransformer\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} YDecoder\n * @param {typeof UpdateEncoderV2 | typeof UpdateEncoderV1 } YEncoder\n */\nconst convertUpdateFormat = (update, blockTransformer, YDecoder, YEncoder) => {\n const updateDecoder = new YDecoder(decoding.createDecoder(update));\n const lazyDecoder = new LazyStructReader(updateDecoder, false);\n const updateEncoder = new YEncoder();\n const lazyWriter = new LazyStructWriter(updateEncoder);\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n writeStructToLazyStructWriter(lazyWriter, blockTransformer(curr), 0);\n }\n finishLazyStructWriting(lazyWriter);\n const ds = readDeleteSet(updateDecoder);\n writeDeleteSet(updateEncoder, ds);\n return updateEncoder.toUint8Array()\n};\n\n/**\n * @typedef {Object} ObfuscatorOptions\n * @property {boolean} [ObfuscatorOptions.formatting=true]\n * @property {boolean} [ObfuscatorOptions.subdocs=true]\n * @property {boolean} [ObfuscatorOptions.yxml=true] Whether to obfuscate nodeName / hookName\n */\n\n/**\n * @param {ObfuscatorOptions} obfuscator\n */\nconst createObfuscator = ({ formatting = true, subdocs = true, yxml = true } = {}) => {\n let i = 0;\n const mapKeyCache = map.create();\n const nodeNameCache = map.create();\n const formattingKeyCache = map.create();\n const formattingValueCache = map.create();\n formattingValueCache.set(null, null); // end of a formatting range should always be the end of a formatting range\n /**\n * @param {Item|GC|Skip} block\n * @return {Item|GC|Skip}\n */\n return block => {\n switch (block.constructor) {\n case GC:\n case Skip:\n return block\n case Item: {\n const item = /** @type {Item} */ (block);\n const content = item.content;\n switch (content.constructor) {\n case ContentDeleted:\n break\n case ContentType: {\n if (yxml) {\n const type = /** @type {ContentType} */ (content).type;\n if (type instanceof YXmlElement) {\n type.nodeName = map.setIfUndefined(nodeNameCache, type.nodeName, () => 'node-' + i);\n }\n if (type instanceof YXmlHook) {\n type.hookName = map.setIfUndefined(nodeNameCache, type.hookName, () => 'hook-' + i);\n }\n }\n break\n }\n case ContentAny: {\n const c = /** @type {ContentAny} */ (content);\n c.arr = c.arr.map(() => i);\n break\n }\n case ContentBinary: {\n const c = /** @type {ContentBinary} */ (content);\n c.content = new Uint8Array([i]);\n break\n }\n case ContentDoc: {\n const c = /** @type {ContentDoc} */ (content);\n if (subdocs) {\n c.opts = {};\n c.doc.guid = i + '';\n }\n break\n }\n case ContentEmbed: {\n const c = /** @type {ContentEmbed} */ (content);\n c.embed = {};\n break\n }\n case ContentFormat: {\n const c = /** @type {ContentFormat} */ (content);\n if (formatting) {\n c.key = map.setIfUndefined(formattingKeyCache, c.key, () => i + '');\n c.value = map.setIfUndefined(formattingValueCache, c.value, () => ({ i }));\n }\n break\n }\n case ContentJSON: {\n const c = /** @type {ContentJSON} */ (content);\n c.arr = c.arr.map(() => i);\n break\n }\n case ContentString: {\n const c = /** @type {ContentString} */ (content);\n c.str = string.repeat((i % 10) + '', c.str.length);\n break\n }\n default:\n // unknown content type\n error.unexpectedCase();\n }\n if (item.parentSub) {\n item.parentSub = map.setIfUndefined(mapKeyCache, item.parentSub, () => i + '');\n }\n i++;\n return block\n }\n default:\n // unknown block-type\n error.unexpectedCase();\n }\n }\n};\n\n/**\n * This function obfuscates the content of a Yjs update. This is useful to share\n * buggy Yjs documents while significantly limiting the possibility that a\n * developer can on the user. Note that it might still be possible to deduce\n * some information by analyzing the \"structure\" of the document or by analyzing\n * the typing behavior using the CRDT-related metadata that is still kept fully\n * intact.\n *\n * @param {Uint8Array} update\n * @param {ObfuscatorOptions} [opts]\n */\nconst obfuscateUpdate = (update, opts) => convertUpdateFormat(update, createObfuscator(opts), UpdateDecoderV1, UpdateEncoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {ObfuscatorOptions} [opts]\n */\nconst obfuscateUpdateV2 = (update, opts) => convertUpdateFormat(update, createObfuscator(opts), UpdateDecoderV2, UpdateEncoderV2);\n\n/**\n * @param {Uint8Array} update\n */\nconst convertUpdateFormatV1ToV2 = update => convertUpdateFormat(update, f.id, UpdateDecoderV1, UpdateEncoderV2);\n\n/**\n * @param {Uint8Array} update\n */\nconst convertUpdateFormatV2ToV1 = update => convertUpdateFormat(update, f.id, UpdateDecoderV2, UpdateEncoderV1);\n\nconst errorComputeChanges = 'You must not compute changes after the event-handler fired.';\n\n/**\n * @template {AbstractType} T\n * YEvent describes the changes on a YType.\n */\nclass YEvent {\n /**\n * @param {T} target The changed type.\n * @param {Transaction} transaction\n */\n constructor (target, transaction) {\n /**\n * The type on which this event was created on.\n * @type {T}\n */\n this.target = target;\n /**\n * The current target on which the observe callback is called.\n * @type {AbstractType}\n */\n this.currentTarget = target;\n /**\n * The transaction that triggered this event.\n * @type {Transaction}\n */\n this.transaction = transaction;\n /**\n * @type {Object|null}\n */\n this._changes = null;\n /**\n * @type {null | Map}\n */\n this._keys = null;\n /**\n * @type {null | Array<{ insert?: string | Array | object | AbstractType, retain?: number, delete?: number, attributes?: Object }>}\n */\n this._delta = null;\n /**\n * @type {Array|null}\n */\n this._path = null;\n }\n\n /**\n * Computes the path from `y` to the changed type.\n *\n * @todo v14 should standardize on path: Array<{parent, index}> because that is easier to work with.\n *\n * The following property holds:\n * @example\n * let type = y\n * event.path.forEach(dir => {\n * type = type.get(dir)\n * })\n * type === event.target // => true\n */\n get path () {\n return this._path || (this._path = getPathTo(this.currentTarget, this.target))\n }\n\n /**\n * Check if a struct is deleted by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n deletes (struct) {\n return isDeleted(this.transaction.deleteSet, struct.id)\n }\n\n /**\n * @type {Map}\n */\n get keys () {\n if (this._keys === null) {\n if (this.transaction.doc._transactionCleanups.length === 0) {\n throw error.create(errorComputeChanges)\n }\n const keys = new Map();\n const target = this.target;\n const changed = /** @type Set */ (this.transaction.changed.get(target));\n changed.forEach(key => {\n if (key !== null) {\n const item = /** @type {Item} */ (target._map.get(key));\n /**\n * @type {'delete' | 'add' | 'update'}\n */\n let action;\n let oldValue;\n if (this.adds(item)) {\n let prev = item.left;\n while (prev !== null && this.adds(prev)) {\n prev = prev.left;\n }\n if (this.deletes(item)) {\n if (prev !== null && this.deletes(prev)) {\n action = 'delete';\n oldValue = array.last(prev.content.getContent());\n } else {\n return\n }\n } else {\n if (prev !== null && this.deletes(prev)) {\n action = 'update';\n oldValue = array.last(prev.content.getContent());\n } else {\n action = 'add';\n oldValue = undefined;\n }\n }\n } else {\n if (this.deletes(item)) {\n action = 'delete';\n oldValue = array.last(/** @type {Item} */ item.content.getContent());\n } else {\n return // nop\n }\n }\n keys.set(key, { action, oldValue });\n }\n });\n this._keys = keys;\n }\n return this._keys\n }\n\n /**\n * This is a computed property. Note that this can only be safely computed during the\n * event call. Computing this property after other changes happened might result in\n * unexpected behavior (incorrect computation of deltas). A safe way to collect changes\n * is to store the `changes` or the `delta` object. Avoid storing the `transaction` object.\n *\n * @type {Array<{insert?: string | Array | object | AbstractType, retain?: number, delete?: number, attributes?: Object}>}\n */\n get delta () {\n return this.changes.delta\n }\n\n /**\n * Check if a struct is added by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n adds (struct) {\n return struct.id.clock >= (this.transaction.beforeState.get(struct.id.client) || 0)\n }\n\n /**\n * This is a computed property. Note that this can only be safely computed during the\n * event call. Computing this property after other changes happened might result in\n * unexpected behavior (incorrect computation of deltas). A safe way to collect changes\n * is to store the `changes` or the `delta` object. Avoid storing the `transaction` object.\n *\n * @type {{added:Set,deleted:Set,keys:Map,delta:Array<{insert?:Array|string, delete?:number, retain?:number}>}}\n */\n get changes () {\n let changes = this._changes;\n if (changes === null) {\n if (this.transaction.doc._transactionCleanups.length === 0) {\n throw error.create(errorComputeChanges)\n }\n const target = this.target;\n const added = set.create();\n const deleted = set.create();\n /**\n * @type {Array<{insert:Array}|{delete:number}|{retain:number}>}\n */\n const delta = [];\n changes = {\n added,\n deleted,\n delta,\n keys: this.keys\n };\n const changed = /** @type Set */ (this.transaction.changed.get(target));\n if (changed.has(null)) {\n /**\n * @type {any}\n */\n let lastOp = null;\n const packOp = () => {\n if (lastOp) {\n delta.push(lastOp);\n }\n };\n for (let item = target._start; item !== null; item = item.right) {\n if (item.deleted) {\n if (this.deletes(item) && !this.adds(item)) {\n if (lastOp === null || lastOp.delete === undefined) {\n packOp();\n lastOp = { delete: 0 };\n }\n lastOp.delete += item.length;\n deleted.add(item);\n } // else nop\n } else {\n if (this.adds(item)) {\n if (lastOp === null || lastOp.insert === undefined) {\n packOp();\n lastOp = { insert: [] };\n }\n lastOp.insert = lastOp.insert.concat(item.content.getContent());\n added.add(item);\n } else {\n if (lastOp === null || lastOp.retain === undefined) {\n packOp();\n lastOp = { retain: 0 };\n }\n lastOp.retain += item.length;\n }\n }\n }\n if (lastOp !== null && lastOp.retain === undefined) {\n packOp();\n }\n }\n this._changes = changes;\n }\n return /** @type {any} */ (changes)\n }\n}\n\n/**\n * Compute the path from this type to the specified target.\n *\n * @example\n * // `child` should be accessible via `type.get(path[0]).get(path[1])..`\n * const path = type.getPathTo(child)\n * // assuming `type instanceof YArray`\n * console.log(path) // might look like => [2, 'key1']\n * child === type.get(path[0]).get(path[1])\n *\n * @param {AbstractType} parent\n * @param {AbstractType} child target\n * @return {Array} Path to the target\n *\n * @private\n * @function\n */\nconst getPathTo = (parent, child) => {\n const path = [];\n while (child._item !== null && child !== parent) {\n if (child._item.parentSub !== null) {\n // parent is map-ish\n path.unshift(child._item.parentSub);\n } else {\n // parent is array-ish\n let i = 0;\n let c = /** @type {AbstractType} */ (child._item.parent)._start;\n while (c !== child._item && c !== null) {\n if (!c.deleted && c.countable) {\n i += c.length;\n }\n c = c.right;\n }\n path.unshift(i);\n }\n child = /** @type {AbstractType} */ (child._item.parent);\n }\n return path\n};\n\nconst maxSearchMarker = 80;\n\n/**\n * A unique timestamp that identifies each marker.\n *\n * Time is relative,.. this is more like an ever-increasing clock.\n *\n * @type {number}\n */\nlet globalSearchMarkerTimestamp = 0;\n\nclass ArraySearchMarker {\n /**\n * @param {Item} p\n * @param {number} index\n */\n constructor (p, index) {\n p.marker = true;\n this.p = p;\n this.index = index;\n this.timestamp = globalSearchMarkerTimestamp++;\n }\n}\n\n/**\n * @param {ArraySearchMarker} marker\n */\nconst refreshMarkerTimestamp = marker => { marker.timestamp = globalSearchMarkerTimestamp++; };\n\n/**\n * This is rather complex so this function is the only thing that should overwrite a marker\n *\n * @param {ArraySearchMarker} marker\n * @param {Item} p\n * @param {number} index\n */\nconst overwriteMarker = (marker, p, index) => {\n marker.p.marker = false;\n marker.p = p;\n p.marker = true;\n marker.index = index;\n marker.timestamp = globalSearchMarkerTimestamp++;\n};\n\n/**\n * @param {Array} searchMarker\n * @param {Item} p\n * @param {number} index\n */\nconst markPosition = (searchMarker, p, index) => {\n if (searchMarker.length >= maxSearchMarker) {\n // override oldest marker (we don't want to create more objects)\n const marker = searchMarker.reduce((a, b) => a.timestamp < b.timestamp ? a : b);\n overwriteMarker(marker, p, index);\n return marker\n } else {\n // create new marker\n const pm = new ArraySearchMarker(p, index);\n searchMarker.push(pm);\n return pm\n }\n};\n\n/**\n * Search marker help us to find positions in the associative array faster.\n *\n * They speed up the process of finding a position without much bookkeeping.\n *\n * A maximum of `maxSearchMarker` objects are created.\n *\n * This function always returns a refreshed marker (updated timestamp)\n *\n * @param {AbstractType} yarray\n * @param {number} index\n */\nconst findMarker = (yarray, index) => {\n if (yarray._start === null || index === 0 || yarray._searchMarker === null) {\n return null\n }\n const marker = yarray._searchMarker.length === 0 ? null : yarray._searchMarker.reduce((a, b) => math.abs(index - a.index) < math.abs(index - b.index) ? a : b);\n let p = yarray._start;\n let pindex = 0;\n if (marker !== null) {\n p = marker.p;\n pindex = marker.index;\n refreshMarkerTimestamp(marker); // we used it, we might need to use it again\n }\n // iterate to right if possible\n while (p.right !== null && pindex < index) {\n if (!p.deleted && p.countable) {\n if (index < pindex + p.length) {\n break\n }\n pindex += p.length;\n }\n p = p.right;\n }\n // iterate to left if necessary (might be that pindex > index)\n while (p.left !== null && pindex > index) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n // we want to make sure that p can't be merged with left, because that would screw up everything\n // in that cas just return what we have (it is most likely the best marker anyway)\n // iterate to left until p can't be merged with left\n while (p.left !== null && p.left.id.client === p.id.client && p.left.id.clock + p.left.length === p.id.clock) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n\n // @todo remove!\n // assure position\n // {\n // let start = yarray._start\n // let pos = 0\n // while (start !== p) {\n // if (!start.deleted && start.countable) {\n // pos += start.length\n // }\n // start = /** @type {Item} */ (start.right)\n // }\n // if (pos !== pindex) {\n // debugger\n // throw new Error('Gotcha position fail!')\n // }\n // }\n // if (marker) {\n // if (window.lengthes == null) {\n // window.lengthes = []\n // window.getLengthes = () => window.lengthes.sort((a, b) => a - b)\n // }\n // window.lengthes.push(marker.index - pindex)\n // console.log('distance', marker.index - pindex, 'len', p && p.parent.length)\n // }\n if (marker !== null && math.abs(marker.index - pindex) < /** @type {YText|YArray} */ (p.parent).length / maxSearchMarker) {\n // adjust existing marker\n overwriteMarker(marker, p, pindex);\n return marker\n } else {\n // create new marker\n return markPosition(yarray._searchMarker, p, pindex)\n }\n};\n\n/**\n * Update markers when a change happened.\n *\n * This should be called before doing a deletion!\n *\n * @param {Array} searchMarker\n * @param {number} index\n * @param {number} len If insertion, len is positive. If deletion, len is negative.\n */\nconst updateMarkerChanges = (searchMarker, index, len) => {\n for (let i = searchMarker.length - 1; i >= 0; i--) {\n const m = searchMarker[i];\n if (len > 0) {\n /**\n * @type {Item|null}\n */\n let p = m.p;\n p.marker = false;\n // Ideally we just want to do a simple position comparison, but this will only work if\n // search markers don't point to deleted items for formats.\n // Iterate marker to prev undeleted countable position so we know what to do when updating a position\n while (p && (p.deleted || !p.countable)) {\n p = p.left;\n if (p && !p.deleted && p.countable) {\n // adjust position. the loop should break now\n m.index -= p.length;\n }\n }\n if (p === null || p.marker === true) {\n // remove search marker if updated position is null or if position is already marked\n searchMarker.splice(i, 1);\n continue\n }\n m.p = p;\n p.marker = true;\n }\n if (index < m.index || (len > 0 && index === m.index)) { // a simple index <= m.index check would actually suffice\n m.index = math.max(index, m.index + len);\n }\n }\n};\n\n/**\n * Accumulate all (list) children of a type and return them as an Array.\n *\n * @param {AbstractType} t\n * @return {Array}\n */\nconst getTypeChildren = t => {\n let s = t._start;\n const arr = [];\n while (s) {\n arr.push(s);\n s = s.right;\n }\n return arr\n};\n\n/**\n * Call event listeners with an event. This will also add an event to all\n * parents (for `.observeDeep` handlers).\n *\n * @template EventType\n * @param {AbstractType} type\n * @param {Transaction} transaction\n * @param {EventType} event\n */\nconst callTypeObservers = (type, transaction, event) => {\n const changedType = type;\n const changedParentTypes = transaction.changedParentTypes;\n while (true) {\n // @ts-ignore\n map.setIfUndefined(changedParentTypes, type, () => []).push(event);\n if (type._item === null) {\n break\n }\n type = /** @type {AbstractType} */ (type._item.parent);\n }\n callEventHandlerListeners(changedType._eH, event, transaction);\n};\n\n/**\n * @template EventType\n * Abstract Yjs Type class\n */\nclass AbstractType {\n constructor () {\n /**\n * @type {Item|null}\n */\n this._item = null;\n /**\n * @type {Map}\n */\n this._map = new Map();\n /**\n * @type {Item|null}\n */\n this._start = null;\n /**\n * @type {Doc|null}\n */\n this.doc = null;\n this._length = 0;\n /**\n * Event handlers\n * @type {EventHandler}\n */\n this._eH = createEventHandler();\n /**\n * Deep event handlers\n * @type {EventHandler>,Transaction>}\n */\n this._dEH = createEventHandler();\n /**\n * @type {null | Array}\n */\n this._searchMarker = null;\n }\n\n /**\n * @return {AbstractType|null}\n */\n get parent () {\n return this._item ? /** @type {AbstractType} */ (this._item.parent) : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item|null} item\n */\n _integrate (y, item) {\n this.doc = y;\n this._item = item;\n }\n\n /**\n * @return {AbstractType}\n */\n _copy () {\n throw error.methodUnimplemented()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {AbstractType}\n */\n clone () {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} _encoder\n */\n _write (_encoder) { }\n\n /**\n * The first non-deleted item\n */\n get _first () {\n let n = this._start;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Creates YEvent and calls all type observers.\n * Must be implemented by each type.\n *\n * @param {Transaction} transaction\n * @param {Set} _parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, _parentSubs) {\n if (!transaction.local && this._searchMarker) {\n this._searchMarker.length = 0;\n }\n }\n\n /**\n * Observe all events that are created on this type.\n *\n * @param {function(EventType, Transaction):void} f Observer function\n */\n observe (f) {\n addEventHandlerListener(this._eH, f);\n }\n\n /**\n * Observe all events that are created by this type and its children.\n *\n * @param {function(Array>,Transaction):void} f Observer function\n */\n observeDeep (f) {\n addEventHandlerListener(this._dEH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(EventType,Transaction):void} f Observer function\n */\n unobserve (f) {\n removeEventHandlerListener(this._eH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(Array>,Transaction):void} f Observer function\n */\n unobserveDeep (f) {\n removeEventHandlerListener(this._dEH, f);\n }\n\n /**\n * @abstract\n * @return {any}\n */\n toJSON () {}\n}\n\n/**\n * @param {AbstractType} type\n * @param {number} start\n * @param {number} end\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListSlice = (type, start, end) => {\n if (start < 0) {\n start = type._length + start;\n }\n if (end < 0) {\n end = type._length + end;\n }\n let len = end - start;\n const cs = [];\n let n = type._start;\n while (n !== null && len > 0) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n if (c.length <= start) {\n start -= c.length;\n } else {\n for (let i = start; i < c.length && len > 0; i++) {\n cs.push(c[i]);\n len--;\n }\n start = 0;\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * @param {AbstractType} type\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListToArray = type => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * @param {AbstractType} type\n * @param {Snapshot} snapshot\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListToArraySnapshot = (type, snapshot) => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && isVisible(n, snapshot)) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * Executes a provided function on once on every element of this YArray.\n *\n * @param {AbstractType} type\n * @param {function(any,number,any):void} f A function to execute on every element of this YArray.\n *\n * @private\n * @function\n */\nconst typeListForEach = (type, f) => {\n let index = 0;\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n f(c[i], index++, type);\n }\n }\n n = n.right;\n }\n};\n\n/**\n * @template C,R\n * @param {AbstractType} type\n * @param {function(C,number,AbstractType):R} f\n * @return {Array}\n *\n * @private\n * @function\n */\nconst typeListMap = (type, f) => {\n /**\n * @type {Array}\n */\n const result = [];\n typeListForEach(type, (c, i) => {\n result.push(f(c, i, type));\n });\n return result\n};\n\n/**\n * @param {AbstractType} type\n * @return {IterableIterator}\n *\n * @private\n * @function\n */\nconst typeListCreateIterator = type => {\n let n = type._start;\n /**\n * @type {Array|null}\n */\n let currentContent = null;\n let currentContentIndex = 0;\n return {\n [Symbol.iterator] () {\n return this\n },\n next: () => {\n // find some content\n if (currentContent === null) {\n while (n !== null && n.deleted) {\n n = n.right;\n }\n // check if we reached the end, no need to check currentContent, because it does not exist\n if (n === null) {\n return {\n done: true,\n value: undefined\n }\n }\n // we found n, so we can set currentContent\n currentContent = n.content.getContent();\n currentContentIndex = 0;\n n = n.right; // we used the content of n, now iterate to next\n }\n const value = currentContent[currentContentIndex++];\n // check if we need to empty currentContent\n if (currentContent.length <= currentContentIndex) {\n currentContent = null;\n }\n return {\n done: false,\n value\n }\n }\n }\n};\n\n/**\n * @param {AbstractType} type\n * @param {number} index\n * @return {any}\n *\n * @private\n * @function\n */\nconst typeListGet = (type, index) => {\n const marker = findMarker(type, index);\n let n = type._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n return n.content.getContent()[index]\n }\n index -= n.length;\n }\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {Item?} referenceItem\n * @param {Array|Array|boolean|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenericsAfter = (transaction, parent, referenceItem, content) => {\n let left = referenceItem;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const store = doc.store;\n const right = referenceItem === null ? parent._start : referenceItem.right;\n /**\n * @type {Array|number|null>}\n */\n let jsonContent = [];\n const packJsonContent = () => {\n if (jsonContent.length > 0) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentAny(jsonContent));\n left.integrate(transaction, 0);\n jsonContent = [];\n }\n };\n content.forEach(c => {\n if (c === null) {\n jsonContent.push(c);\n } else {\n switch (c.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n jsonContent.push(c);\n break\n default:\n packJsonContent();\n switch (c.constructor) {\n case Uint8Array:\n case ArrayBuffer:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentBinary(new Uint8Array(/** @type {Uint8Array} */ (c))));\n left.integrate(transaction, 0);\n break\n case Doc:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentDoc(/** @type {Doc} */ (c)));\n left.integrate(transaction, 0);\n break\n default:\n if (c instanceof AbstractType) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentType(c));\n left.integrate(transaction, 0);\n } else {\n throw new Error('Unexpected content type in insert operation')\n }\n }\n }\n }\n });\n packJsonContent();\n};\n\nconst lengthExceeded = () => error.create('Length exceeded!');\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {Array|Array|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenerics = (transaction, parent, index, content) => {\n if (index > parent._length) {\n throw lengthExceeded()\n }\n if (index === 0) {\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, index, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, null, content)\n }\n const startIndex = index;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n // we need to iterate one to the left so that the algorithm works\n if (index === 0) {\n // @todo refactor this as it actually doesn't consider formats\n n = n.prev; // important! get the left undeleted item so that we can actually decrease index\n index += (n && n.countable && !n.deleted) ? n.length : 0;\n }\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index <= n.length) {\n if (index < n.length) {\n // insert in-between\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n break\n }\n index -= n.length;\n }\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n};\n\n/**\n * Pushing content is special as we generally want to push after the last item. So we don't have to update\n * the serach marker.\n *\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {Array|Array|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListPushGenerics = (transaction, parent, content) => {\n // Use the marker with the highest index and iterate to the right.\n const marker = (parent._searchMarker || []).reduce((maxMarker, currMarker) => currMarker.index > maxMarker.index ? currMarker : maxMarker, { index: 0, p: parent._start });\n let n = marker.p;\n if (n) {\n while (n.right) {\n n = n.right;\n }\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {number} length\n *\n * @private\n * @function\n */\nconst typeListDelete = (transaction, parent, index, length) => {\n if (length === 0) { return }\n const startIndex = index;\n const startLength = length;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n // compute the first item to be deleted\n for (; n !== null && index > 0; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n index -= n.length;\n }\n }\n // delete all items until done\n while (length > 0 && n !== null) {\n if (!n.deleted) {\n if (length < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + length));\n }\n n.delete(transaction);\n length -= n.length;\n }\n n = n.right;\n }\n if (length > 0) {\n throw lengthExceeded()\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, -startLength + length /* in case we remove the above exception */);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {string} key\n *\n * @private\n * @function\n */\nconst typeMapDelete = (transaction, parent, key) => {\n const c = parent._map.get(key);\n if (c !== undefined) {\n c.delete(transaction);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {string} key\n * @param {Object|number|null|Array|string|Uint8Array|AbstractType} value\n *\n * @private\n * @function\n */\nconst typeMapSet = (transaction, parent, key, value) => {\n const left = parent._map.get(key) || null;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n let content;\n if (value == null) {\n content = new ContentAny([value]);\n } else {\n switch (value.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n content = new ContentAny([value]);\n break\n case Uint8Array:\n content = new ContentBinary(/** @type {Uint8Array} */ (value));\n break\n case Doc:\n content = new ContentDoc(/** @type {Doc} */ (value));\n break\n default:\n if (value instanceof AbstractType) {\n content = new ContentType(value);\n } else {\n throw new Error('Unexpected content type')\n }\n }\n }\n new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, null, null, parent, key, content).integrate(transaction, 0);\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @return {Object|number|null|Array|string|Uint8Array|AbstractType|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGet = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted ? val.content.getContent()[val.length - 1] : undefined\n};\n\n/**\n * @param {AbstractType} parent\n * @return {Object|number|null|Array|string|Uint8Array|AbstractType|undefined>}\n *\n * @private\n * @function\n */\nconst typeMapGetAll = (parent) => {\n /**\n * @type {Object}\n */\n const res = {};\n parent._map.forEach((value, key) => {\n if (!value.deleted) {\n res[key] = value.content.getContent()[value.length - 1];\n }\n });\n return res\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst typeMapHas = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted\n};\n\n/**\n * @param {AbstractType} parent\n * @param {string} key\n * @param {Snapshot} snapshot\n * @return {Object|number|null|Array|string|Uint8Array|AbstractType|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGetSnapshot = (parent, key, snapshot) => {\n let v = parent._map.get(key) || null;\n while (v !== null && (!snapshot.sv.has(v.id.client) || v.id.clock >= (snapshot.sv.get(v.id.client) || 0))) {\n v = v.left;\n }\n return v !== null && isVisible(v, snapshot) ? v.content.getContent()[v.length - 1] : undefined\n};\n\n/**\n * @param {AbstractType} parent\n * @param {Snapshot} snapshot\n * @return {Object|number|null|Array|string|Uint8Array|AbstractType|undefined>}\n *\n * @private\n * @function\n */\nconst typeMapGetAllSnapshot = (parent, snapshot) => {\n /**\n * @type {Object}\n */\n const res = {};\n parent._map.forEach((value, key) => {\n /**\n * @type {Item|null}\n */\n let v = value;\n while (v !== null && (!snapshot.sv.has(v.id.client) || v.id.clock >= (snapshot.sv.get(v.id.client) || 0))) {\n v = v.left;\n }\n if (v !== null && isVisible(v, snapshot)) {\n res[key] = v.content.getContent()[v.length - 1];\n }\n });\n return res\n};\n\n/**\n * @param {Map} map\n * @return {IterableIterator>}\n *\n * @private\n * @function\n */\nconst createMapIterator = map => iterator.iteratorFilter(map.entries(), /** @param {any} entry */ entry => !entry[1].deleted);\n\n/**\n * @module YArray\n */\n\n\n/**\n * Event that describes the changes on a YArray\n * @template T\n * @extends YEvent>\n */\nclass YArrayEvent extends YEvent {}\n\n/**\n * A shared Array implementation.\n * @template T\n * @extends AbstractType>\n * @implements {Iterable}\n */\nclass YArray extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array?}\n * @private\n */\n this._prelimContent = [];\n /**\n * @type {Array}\n */\n this._searchMarker = [];\n }\n\n /**\n * Construct a new YArray containing the specified items.\n * @template {Object|Array|number|null|string|Uint8Array} T\n * @param {Array} items\n * @return {YArray}\n */\n static from (items) {\n /**\n * @type {YArray}\n */\n const a = new YArray();\n a.push(items);\n return a\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n /**\n * @return {YArray}\n */\n _copy () {\n return new YArray()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YArray}\n */\n clone () {\n /**\n * @type {YArray}\n */\n const arr = new YArray();\n arr.insert(0, this.toArray().map(el =>\n el instanceof AbstractType ? /** @type {typeof el} */ (el.clone()) : el\n ));\n return arr\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Creates YArrayEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n callTypeObservers(this, transaction, new YArrayEvent(this, transaction));\n }\n\n /**\n * Inserts new content at an index.\n *\n * Important: This function expects an array of content. Not just a content\n * object. The reason for this \"weirdness\" is that inserting several elements\n * is very efficient when it is done as a single operation.\n *\n * @example\n * // Insert character 'a' at position 0\n * yarray.insert(0, ['a'])\n * // Insert numbers 1, 2 at position 1\n * yarray.insert(1, [1, 2])\n *\n * @param {number} index The index to insert content at.\n * @param {Array} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, /** @type {any} */ (content));\n });\n } else {\n /** @type {Array} */ (this._prelimContent).splice(index, 0, ...content);\n }\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array} content Array of content to append.\n *\n * @todo Use the following implementation in all types.\n */\n push (content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListPushGenerics(transaction, this, /** @type {any} */ (content));\n });\n } else {\n /** @type {Array} */ (this._prelimContent).push(...content);\n }\n }\n\n /**\n * Prepends content to this YArray.\n *\n * @param {Array} content Array of content to prepend.\n */\n unshift (content) {\n this.insert(0, content);\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} length The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n /** @type {Array} */ (this._prelimContent).splice(index, length);\n }\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {T}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Returns a portion of this YArray into a JavaScript Array selected\n * from start to end (end not included).\n *\n * @param {number} [start]\n * @param {number} [end]\n * @return {Array}\n */\n slice (start = 0, end = this.length) {\n return typeListSlice(this, start, end)\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Array}\n */\n toJSON () {\n return this.map(c => c instanceof AbstractType ? c.toJSON() : c)\n }\n\n /**\n * Returns an Array with the result of calling a provided function on every\n * element of this YArray.\n *\n * @template M\n * @param {function(T,number,YArray):M} f Function that produces an element of the new Array\n * @return {Array} A new array with each element being the result of the\n * callback function\n */\n map (f) {\n return typeListMap(this, /** @type {any} */ (f))\n }\n\n /**\n * Executes a provided function once on every element of this YArray.\n *\n * @param {function(T,number,YArray):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f);\n }\n\n /**\n * @return {IterableIterator}\n */\n [Symbol.iterator] () {\n return typeListCreateIterator(this)\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YArrayRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n *\n * @private\n * @function\n */\nconst readYArray = _decoder => new YArray();\n\n/**\n * @module YMap\n */\n\n\n/**\n * @template T\n * @extends YEvent>\n * Event that describes the changes on a YMap.\n */\nclass YMapEvent extends YEvent {\n /**\n * @param {YMap} ymap The YArray that changed.\n * @param {Transaction} transaction\n * @param {Set} subs The keys that changed.\n */\n constructor (ymap, transaction, subs) {\n super(ymap, transaction);\n this.keysChanged = subs;\n }\n}\n\n/**\n * @template MapType\n * A shared Map implementation.\n *\n * @extends AbstractType>\n * @implements {Iterable<[string, MapType]>}\n */\nclass YMap extends AbstractType {\n /**\n *\n * @param {Iterable=} entries - an optional iterable to initialize the YMap\n */\n constructor (entries) {\n super();\n /**\n * @type {Map?}\n * @private\n */\n this._prelimContent = null;\n\n if (entries === undefined) {\n this._prelimContent = new Map();\n } else {\n this._prelimContent = new Map(entries);\n }\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;/** @type {Map} */ (this._prelimContent).forEach((value, key) => {\n this.set(key, value);\n });\n this._prelimContent = null;\n }\n\n /**\n * @return {YMap}\n */\n _copy () {\n return new YMap()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YMap}\n */\n clone () {\n /**\n * @type {YMap}\n */\n const map = new YMap();\n this.forEach((value, key) => {\n map.set(key, value instanceof AbstractType ? /** @type {typeof value} */ (value.clone()) : value);\n });\n return map\n }\n\n /**\n * Creates YMapEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YMapEvent(this, transaction, parentSubs));\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Object}\n */\n toJSON () {\n /**\n * @type {Object}\n */\n const map = {};\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n const v = item.content.getContent()[item.length - 1];\n map[key] = v instanceof AbstractType ? v.toJSON() : v;\n }\n });\n return map\n }\n\n /**\n * Returns the size of the YMap (count of key/value pairs)\n *\n * @return {number}\n */\n get size () {\n return [...createMapIterator(this._map)].length\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator}\n */\n keys () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[0])\n }\n\n /**\n * Returns the values for each element in the YMap Type.\n *\n * @return {IterableIterator}\n */\n values () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[1].content.getContent()[v[1].length - 1])\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator<[string, MapType]>}\n */\n entries () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => /** @type {any} */ ([v[0], v[1].content.getContent()[v[1].length - 1]]))\n }\n\n /**\n * Executes a provided function on once on every key-value pair.\n *\n * @param {function(MapType,string,YMap):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n f(item.content.getContent()[item.length - 1], key, this);\n }\n });\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator<[string, MapType]>}\n */\n [Symbol.iterator] () {\n return this.entries()\n }\n\n /**\n * Remove a specified element from this YMap.\n *\n * @param {string} key The key of the element to remove.\n */\n delete (key) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, key);\n });\n } else {\n /** @type {Map} */ (this._prelimContent).delete(key);\n }\n }\n\n /**\n * Adds or updates an element with a specified key and value.\n * @template {MapType} VAL\n *\n * @param {string} key The key of the element to add to this YMap\n * @param {VAL} value The value of the element to add\n * @return {VAL}\n */\n set (key, value) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, key, /** @type {any} */ (value));\n });\n } else {\n /** @type {Map} */ (this._prelimContent).set(key, value);\n }\n return value\n }\n\n /**\n * Returns a specified element from this YMap.\n *\n * @param {string} key\n * @return {MapType|undefined}\n */\n get (key) {\n return /** @type {any} */ (typeMapGet(this, key))\n }\n\n /**\n * Returns a boolean indicating whether the specified key exists or not.\n *\n * @param {string} key The key to test.\n * @return {boolean}\n */\n has (key) {\n return typeMapHas(this, key)\n }\n\n /**\n * Removes all elements from this YMap.\n */\n clear () {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n this.forEach(function (_value, key, map) {\n typeMapDelete(transaction, map, key);\n });\n });\n } else {\n /** @type {Map} */ (this._prelimContent).clear();\n }\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YMapRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n *\n * @private\n * @function\n */\nconst readYMap = _decoder => new YMap();\n\n/**\n * @module YText\n */\n\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst equalAttrs = (a, b) => a === b || (typeof a === 'object' && typeof b === 'object' && a && b && object.equalFlat(a, b));\n\nclass ItemTextListPosition {\n /**\n * @param {Item|null} left\n * @param {Item|null} right\n * @param {number} index\n * @param {Map} currentAttributes\n */\n constructor (left, right, index, currentAttributes) {\n this.left = left;\n this.right = right;\n this.index = index;\n this.currentAttributes = currentAttributes;\n }\n\n /**\n * Only call this if you know that this.right is defined\n */\n forward () {\n if (this.right === null) {\n error.unexpectedCase();\n }\n switch (this.right.content.constructor) {\n case ContentFormat:\n if (!this.right.deleted) {\n updateCurrentAttributes(this.currentAttributes, /** @type {ContentFormat} */ (this.right.content));\n }\n break\n default:\n if (!this.right.deleted) {\n this.index += this.right.length;\n }\n break\n }\n this.left = this.right;\n this.right = this.right.right;\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} pos\n * @param {number} count steps to move forward\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findNextPosition = (transaction, pos, count) => {\n while (pos.right !== null && count > 0) {\n switch (pos.right.content.constructor) {\n case ContentFormat:\n if (!pos.right.deleted) {\n updateCurrentAttributes(pos.currentAttributes, /** @type {ContentFormat} */ (pos.right.content));\n }\n break\n default:\n if (!pos.right.deleted) {\n if (count < pos.right.length) {\n // split right\n getItemCleanStart(transaction, createID(pos.right.id.client, pos.right.id.clock + count));\n }\n pos.index += pos.right.length;\n count -= pos.right.length;\n }\n break\n }\n pos.left = pos.right;\n pos.right = pos.right.right;\n // pos.forward() - we don't forward because that would halve the performance because we already do the checks above\n }\n return pos\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {number} index\n * @param {boolean} useSearchMarker\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findPosition = (transaction, parent, index, useSearchMarker) => {\n const currentAttributes = new Map();\n const marker = useSearchMarker ? findMarker(parent, index) : null;\n if (marker) {\n const pos = new ItemTextListPosition(marker.p.left, marker.p, marker.index, currentAttributes);\n return findNextPosition(transaction, pos, index - marker.index)\n } else {\n const pos = new ItemTextListPosition(null, parent._start, 0, currentAttributes);\n return findNextPosition(transaction, pos, index)\n }\n};\n\n/**\n * Negate applied formats\n *\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {Map} negatedAttributes\n *\n * @private\n * @function\n */\nconst insertNegatedAttributes = (transaction, parent, currPos, negatedAttributes) => {\n // check if we really need to remove attributes\n while (\n currPos.right !== null && (\n currPos.right.deleted === true || (\n currPos.right.content.constructor === ContentFormat &&\n equalAttrs(negatedAttributes.get(/** @type {ContentFormat} */ (currPos.right.content).key), /** @type {ContentFormat} */ (currPos.right.content).value)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n negatedAttributes.delete(/** @type {ContentFormat} */ (currPos.right.content).key);\n }\n currPos.forward();\n }\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n negatedAttributes.forEach((val, key) => {\n const left = currPos.left;\n const right = currPos.right;\n const nextFormat = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n nextFormat.integrate(transaction, 0);\n currPos.right = nextFormat;\n currPos.forward();\n });\n};\n\n/**\n * @param {Map} currentAttributes\n * @param {ContentFormat} format\n *\n * @private\n * @function\n */\nconst updateCurrentAttributes = (currentAttributes, format) => {\n const { key, value } = format;\n if (value === null) {\n currentAttributes.delete(key);\n } else {\n currentAttributes.set(key, value);\n }\n};\n\n/**\n * @param {ItemTextListPosition} currPos\n * @param {Object} attributes\n *\n * @private\n * @function\n */\nconst minimizeAttributeChanges = (currPos, attributes) => {\n // go right while attributes[right.key] === right.value (or right is deleted)\n while (true) {\n if (currPos.right === null) {\n break\n } else if (currPos.right.deleted || (currPos.right.content.constructor === ContentFormat && equalAttrs(attributes[(/** @type {ContentFormat} */ (currPos.right.content)).key] ?? null, /** @type {ContentFormat} */ (currPos.right.content).value))) ; else {\n break\n }\n currPos.forward();\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {Object} attributes\n * @return {Map}\n *\n * @private\n * @function\n **/\nconst insertAttributes = (transaction, parent, currPos, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const negatedAttributes = new Map();\n // insert format-start items\n for (const key in attributes) {\n const val = attributes[key];\n const currentVal = currPos.currentAttributes.get(key) ?? null;\n if (!equalAttrs(currentVal, val)) {\n // save negated attribute (set null if currentVal undefined)\n negatedAttributes.set(key, currentVal);\n const { left, right } = currPos;\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n }\n return negatedAttributes\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {string|object|AbstractType} text\n * @param {Object} attributes\n *\n * @private\n * @function\n **/\nconst insertText = (transaction, parent, currPos, text, attributes) => {\n currPos.currentAttributes.forEach((_val, key) => {\n if (attributes[key] === undefined) {\n attributes[key] = null;\n }\n });\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // insert content\n const content = text.constructor === String ? new ContentString(/** @type {string} */ (text)) : (text instanceof AbstractType ? new ContentType(text) : new ContentEmbed(text));\n let { left, right, index } = currPos;\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, content.getLength());\n }\n right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, content);\n right.integrate(transaction, 0);\n currPos.right = right;\n currPos.index = index;\n currPos.forward();\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType} parent\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @param {Object} attributes\n *\n * @private\n * @function\n */\nconst formatText = (transaction, parent, currPos, length, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // iterate until first non-format or null is found\n // delete all formats with attributes[format.key] != null\n // also check the attributes after the first non-format as we do not want to insert redundant negated attributes there\n // eslint-disable-next-line no-labels\n iterationLoop: while (\n currPos.right !== null &&\n (length > 0 ||\n (\n negatedAttributes.size > 0 &&\n (currPos.right.deleted || currPos.right.content.constructor === ContentFormat)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n switch (currPos.right.content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (currPos.right.content);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (equalAttrs(attr, value)) {\n negatedAttributes.delete(key);\n } else {\n if (length === 0) {\n // no need to further extend negatedAttributes\n // eslint-disable-next-line no-labels\n break iterationLoop\n }\n negatedAttributes.set(key, value);\n }\n currPos.right.delete(transaction);\n } else {\n currPos.currentAttributes.set(key, value);\n }\n break\n }\n default:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n break\n }\n }\n currPos.forward();\n }\n // Quill just assumes that the editor starts with a newline and that it always\n // ends with a newline. We only insert that newline when a new newline is\n // inserted - i.e when length is bigger than type.length\n if (length > 0) {\n let newlines = '';\n for (; length > 0; length--) {\n newlines += '\\n';\n }\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), currPos.left, currPos.left && currPos.left.lastId, currPos.right, currPos.right && currPos.right.id, parent, null, new ContentString(newlines));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * Call this function after string content has been deleted in order to\n * clean up formatting Items.\n *\n * @param {Transaction} transaction\n * @param {Item} start\n * @param {Item|null} curr exclusive end, automatically iterates to the next Content Item\n * @param {Map} startAttributes\n * @param {Map} currAttributes\n * @return {number} The amount of formatting Items deleted.\n *\n * @function\n */\nconst cleanupFormattingGap = (transaction, start, curr, startAttributes, currAttributes) => {\n /**\n * @type {Item|null}\n */\n let end = start;\n /**\n * @type {Map}\n */\n const endFormats = map.create();\n while (end && (!end.countable || end.deleted)) {\n if (!end.deleted && end.content.constructor === ContentFormat) {\n const cf = /** @type {ContentFormat} */ (end.content);\n endFormats.set(cf.key, cf);\n }\n end = end.right;\n }\n let cleanups = 0;\n let reachedCurr = false;\n while (start !== end) {\n if (curr === start) {\n reachedCurr = true;\n }\n if (!start.deleted) {\n const content = start.content;\n switch (content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (content);\n const startAttrValue = startAttributes.get(key) ?? null;\n if (endFormats.get(key) !== content || startAttrValue === value) {\n // Either this format is overwritten or it is not necessary because the attribute already existed.\n start.delete(transaction);\n cleanups++;\n if (!reachedCurr && (currAttributes.get(key) ?? null) === value && startAttrValue !== value) {\n if (startAttrValue === null) {\n currAttributes.delete(key);\n } else {\n currAttributes.set(key, startAttrValue);\n }\n }\n }\n if (!reachedCurr && !start.deleted) {\n updateCurrentAttributes(currAttributes, /** @type {ContentFormat} */ (content));\n }\n break\n }\n }\n }\n start = /** @type {Item} */ (start.right);\n }\n return cleanups\n};\n\n/**\n * @param {Transaction} transaction\n * @param {Item | null} item\n */\nconst cleanupContextlessFormattingGap = (transaction, item) => {\n // iterate until item.right is null or content\n while (item && item.right && (item.right.deleted || !item.right.countable)) {\n item = item.right;\n }\n const attrs = new Set();\n // iterate back until a content item is found\n while (item && (item.deleted || !item.countable)) {\n if (!item.deleted && item.content.constructor === ContentFormat) {\n const key = /** @type {ContentFormat} */ (item.content).key;\n if (attrs.has(key)) {\n item.delete(transaction);\n } else {\n attrs.add(key);\n }\n }\n item = item.left;\n }\n};\n\n/**\n * This function is experimental and subject to change / be removed.\n *\n * Ideally, we don't need this function at all. Formatting attributes should be cleaned up\n * automatically after each change. This function iterates twice over the complete YText type\n * and removes unnecessary formatting attributes. This is also helpful for testing.\n *\n * This function won't be exported anymore as soon as there is confidence that the YText type works as intended.\n *\n * @param {YText} type\n * @return {number} How many formatting attributes have been cleaned up.\n */\nconst cleanupYTextFormatting = type => {\n let res = 0;\n transact(/** @type {Doc} */ (type.doc), transaction => {\n let start = /** @type {Item} */ (type._start);\n let end = type._start;\n let startAttributes = map.create();\n const currentAttributes = map.copy(startAttributes);\n while (end) {\n if (end.deleted === false) {\n switch (end.content.constructor) {\n case ContentFormat:\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (end.content));\n break\n default:\n res += cleanupFormattingGap(transaction, start, end, startAttributes, currentAttributes);\n startAttributes = map.copy(currentAttributes);\n start = end;\n break\n }\n }\n end = end.right;\n }\n });\n return res\n};\n\n/**\n * This will be called by the transction once the event handlers are called to potentially cleanup\n * formatting attributes.\n *\n * @param {Transaction} transaction\n */\nconst cleanupYTextAfterTransaction = transaction => {\n /**\n * @type {Set}\n */\n const needFullCleanup = new Set();\n // check if another formatting item was inserted\n const doc = transaction.doc;\n for (const [client, afterClock] of transaction.afterState.entries()) {\n const clock = transaction.beforeState.get(client) || 0;\n if (afterClock === clock) {\n continue\n }\n iterateStructs(transaction, /** @type {Array} */ (doc.store.clients.get(client)), clock, afterClock, item => {\n if (\n !item.deleted && /** @type {Item} */ (item).content.constructor === ContentFormat && item.constructor !== GC\n ) {\n needFullCleanup.add(/** @type {any} */ (item).parent);\n }\n });\n }\n // cleanup in a new transaction\n transact(doc, (t) => {\n iterateDeletedStructs(transaction, transaction.deleteSet, item => {\n if (item instanceof GC || !(/** @type {YText} */ (item.parent)._hasFormatting) || needFullCleanup.has(/** @type {YText} */ (item.parent))) {\n return\n }\n const parent = /** @type {YText} */ (item.parent);\n if (item.content.constructor === ContentFormat) {\n needFullCleanup.add(parent);\n } else {\n // If no formatting attribute was inserted or deleted, we can make due with contextless\n // formatting cleanups.\n // Contextless: it is not necessary to compute currentAttributes for the affected position.\n cleanupContextlessFormattingGap(t, item);\n }\n });\n // If a formatting item was inserted, we simply clean the whole type.\n // We need to compute currentAttributes for the current position anyway.\n for (const yText of needFullCleanup) {\n cleanupYTextFormatting(yText);\n }\n });\n};\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst deleteText = (transaction, currPos, length) => {\n const startLength = length;\n const startAttrs = map.copy(currPos.currentAttributes);\n const start = currPos.right;\n while (length > 0 && currPos.right !== null) {\n if (currPos.right.deleted === false) {\n switch (currPos.right.content.constructor) {\n case ContentType:\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n currPos.right.delete(transaction);\n break\n }\n }\n currPos.forward();\n }\n if (start) {\n cleanupFormattingGap(transaction, start, currPos.right, startAttrs, currPos.currentAttributes);\n }\n const parent = /** @type {AbstractType} */ (/** @type {Item} */ (currPos.left || currPos.right).parent);\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, -startLength + length);\n }\n return currPos\n};\n\n/**\n * The Quill Delta format represents changes on a text document with\n * formatting information. For mor information visit {@link https://quilljs.com/docs/delta/|Quill Delta}\n *\n * @example\n * {\n * ops: [\n * { insert: 'Gandalf', attributes: { bold: true } },\n * { insert: ' the ' },\n * { insert: 'Grey', attributes: { color: '#cccccc' } }\n * ]\n * }\n *\n */\n\n/**\n * Attributes that can be assigned to a selection of text.\n *\n * @example\n * {\n * bold: true,\n * font-size: '40px'\n * }\n *\n * @typedef {Object} TextAttributes\n */\n\n/**\n * @extends YEvent\n * Event that describes the changes on a YText type.\n */\nclass YTextEvent extends YEvent {\n /**\n * @param {YText} ytext\n * @param {Transaction} transaction\n * @param {Set} subs The keys that changed\n */\n constructor (ytext, transaction, subs) {\n super(ytext, transaction);\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false;\n /**\n * Set of all changed attributes.\n * @type {Set}\n */\n this.keysChanged = new Set();\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true;\n } else {\n this.keysChanged.add(sub);\n }\n });\n }\n\n /**\n * @type {{added:Set,deleted:Set,keys:Map,delta:Array<{insert?:Array|string, delete?:number, retain?:number}>}}\n */\n get changes () {\n if (this._changes === null) {\n /**\n * @type {{added:Set,deleted:Set,keys:Map,delta:Array<{insert?:Array|string|AbstractType|object, delete?:number, retain?:number}>}}\n */\n const changes = {\n keys: this.keys,\n delta: this.delta,\n added: new Set(),\n deleted: new Set()\n };\n this._changes = changes;\n }\n return /** @type {any} */ (this._changes)\n }\n\n /**\n * Compute the changes in the delta format.\n * A {@link https://quilljs.com/docs/delta/|Quill Delta}) that represents the changes on the document.\n *\n * @type {Array<{insert?:string|object|AbstractType, delete?:number, retain?:number, attributes?: Object}>}\n *\n * @public\n */\n get delta () {\n if (this._delta === null) {\n const y = /** @type {Doc} */ (this.target.doc);\n /**\n * @type {Array<{insert?:string|object|AbstractType, delete?:number, retain?:number, attributes?: Object}>}\n */\n const delta = [];\n transact(y, transaction => {\n const currentAttributes = new Map(); // saves all current attributes for insert\n const oldAttributes = new Map();\n let item = this.target._start;\n /**\n * @type {string?}\n */\n let action = null;\n /**\n * @type {Object}\n */\n const attributes = {}; // counts added or removed new attributes for retain\n /**\n * @type {string|object}\n */\n let insert = '';\n let retain = 0;\n let deleteLen = 0;\n const addOp = () => {\n if (action !== null) {\n /**\n * @type {any}\n */\n let op = null;\n switch (action) {\n case 'delete':\n if (deleteLen > 0) {\n op = { delete: deleteLen };\n }\n deleteLen = 0;\n break\n case 'insert':\n if (typeof insert === 'object' || insert.length > 0) {\n op = { insert };\n if (currentAttributes.size > 0) {\n op.attributes = {};\n currentAttributes.forEach((value, key) => {\n if (value !== null) {\n op.attributes[key] = value;\n }\n });\n }\n }\n insert = '';\n break\n case 'retain':\n if (retain > 0) {\n op = { retain };\n if (!object.isEmpty(attributes)) {\n op.attributes = object.assign({}, attributes);\n }\n }\n retain = 0;\n break\n }\n if (op) delta.push(op);\n action = null;\n }\n };\n while (item !== null) {\n switch (item.content.constructor) {\n case ContentType:\n case ContentEmbed:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n addOp();\n action = 'insert';\n insert = item.content.getContent()[0];\n addOp();\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += 1;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += 1;\n }\n break\n case ContentString:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n if (action !== 'insert') {\n addOp();\n action = 'insert';\n }\n insert += /** @type {ContentString} */ (item.content).str;\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += item.length;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += item.length;\n }\n break\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (item.content);\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n const curVal = currentAttributes.get(key) ?? null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (equalAttrs(value, (oldAttributes.get(key) ?? null))) {\n delete attributes[key];\n } else {\n attributes[key] = value;\n }\n } else if (value !== null) {\n item.delete(transaction);\n }\n }\n } else if (this.deletes(item)) {\n oldAttributes.set(key, value);\n const curVal = currentAttributes.get(key) ?? null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n attributes[key] = curVal;\n }\n } else if (!item.deleted) {\n oldAttributes.set(key, value);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (!equalAttrs(attr, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (value === null) {\n delete attributes[key];\n } else {\n attributes[key] = value;\n }\n } else if (attr !== null) { // this will be cleaned up automatically by the contextless cleanup function\n item.delete(transaction);\n }\n }\n }\n if (!item.deleted) {\n if (action === 'insert') {\n addOp();\n }\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (item.content));\n }\n break\n }\n }\n item = item.right;\n }\n addOp();\n while (delta.length > 0) {\n const lastOp = delta[delta.length - 1];\n if (lastOp.retain !== undefined && lastOp.attributes === undefined) {\n // retain delta's if they don't assign attributes\n delta.pop();\n } else {\n break\n }\n }\n });\n this._delta = delta;\n }\n return /** @type {any} */ (this._delta)\n }\n}\n\n/**\n * Type that represents text with formatting information.\n *\n * This type replaces y-richtext as this implementation is able to handle\n * block formats (format information on a paragraph), embeds (complex elements\n * like pictures and videos), and text formats (**bold**, *italic*).\n *\n * @extends AbstractType\n */\nclass YText extends AbstractType {\n /**\n * @param {String} [string] The initial value of the YText.\n */\n constructor (string) {\n super();\n /**\n * Array of pending operations on this type\n * @type {Array?}\n */\n this._pending = string !== undefined ? [() => this.insert(0, string)] : [];\n /**\n * @type {Array|null}\n */\n this._searchMarker = [];\n /**\n * Whether this YText contains formatting attributes.\n * This flag is updated when a formatting item is integrated (see ContentFormat.integrate)\n */\n this._hasFormatting = false;\n }\n\n /**\n * Number of characters of this text type.\n *\n * @type {number}\n */\n get length () {\n return this._length\n }\n\n /**\n * @param {Doc} y\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n try {\n /** @type {Array} */ (this._pending).forEach(f => f());\n } catch (e) {\n console.error(e);\n }\n this._pending = null;\n }\n\n _copy () {\n return new YText()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YText}\n */\n clone () {\n const text = new YText();\n text.applyDelta(this.toDelta());\n return text\n }\n\n /**\n * Creates YTextEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n const event = new YTextEvent(this, transaction, parentSubs);\n callTypeObservers(this, transaction, event);\n // If a remote change happened, we try to cleanup potential formatting duplicates.\n if (!transaction.local && this._hasFormatting) {\n transaction._needFormattingCleanup = true;\n }\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @public\n */\n toString () {\n let str = '';\n /**\n * @type {Item|null}\n */\n let n = this._start;\n while (n !== null) {\n if (!n.deleted && n.countable && n.content.constructor === ContentString) {\n str += /** @type {ContentString} */ (n.content).str;\n }\n n = n.right;\n }\n return str\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @return {string}\n * @public\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Apply a {@link Delta} on this shared YText type.\n *\n * @param {any} delta The changes to apply on this element.\n * @param {object} opts\n * @param {boolean} [opts.sanitize] Sanitize input delta. Removes ending newlines if set to true.\n *\n *\n * @public\n */\n applyDelta (delta, { sanitize = true } = {}) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const currPos = new ItemTextListPosition(null, this._start, 0, new Map());\n for (let i = 0; i < delta.length; i++) {\n const op = delta[i];\n if (op.insert !== undefined) {\n // Quill assumes that the content starts with an empty paragraph.\n // Yjs/Y.Text assumes that it starts empty. We always hide that\n // there is a newline at the end of the content.\n // If we omit this step, clients will see a different number of\n // paragraphs, but nothing bad will happen.\n const ins = (!sanitize && typeof op.insert === 'string' && i === delta.length - 1 && currPos.right === null && op.insert.slice(-1) === '\\n') ? op.insert.slice(0, -1) : op.insert;\n if (typeof ins !== 'string' || ins.length > 0) {\n insertText(transaction, this, currPos, ins, op.attributes || {});\n }\n } else if (op.retain !== undefined) {\n formatText(transaction, this, currPos, op.retain, op.attributes || {});\n } else if (op.delete !== undefined) {\n deleteText(transaction, currPos, op.delete);\n }\n }\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.applyDelta(delta));\n }\n }\n\n /**\n * Returns the Delta representation of this YText type.\n *\n * @param {Snapshot} [snapshot]\n * @param {Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', ID):any} [computeYChange]\n * @return {any} The Delta representation of this type.\n *\n * @public\n */\n toDelta (snapshot, prevSnapshot, computeYChange) {\n /**\n * @type{Array}\n */\n const ops = [];\n const currentAttributes = new Map();\n const doc = /** @type {Doc} */ (this.doc);\n let str = '';\n let n = this._start;\n function packStr () {\n if (str.length > 0) {\n // pack str with attributes to ops\n /**\n * @type {Object}\n */\n const attributes = {};\n let addAttributes = false;\n currentAttributes.forEach((value, key) => {\n addAttributes = true;\n attributes[key] = value;\n });\n /**\n * @type {Object}\n */\n const op = { insert: str };\n if (addAttributes) {\n op.attributes = attributes;\n }\n ops.push(op);\n str = '';\n }\n }\n const computeDelta = () => {\n while (n !== null) {\n if (isVisible(n, snapshot) || (prevSnapshot !== undefined && isVisible(n, prevSnapshot))) {\n switch (n.content.constructor) {\n case ContentString: {\n const cur = currentAttributes.get('ychange');\n if (snapshot !== undefined && !isVisible(n, snapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.type !== 'removed') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('removed', n.id) : { type: 'removed' });\n }\n } else if (prevSnapshot !== undefined && !isVisible(n, prevSnapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.type !== 'added') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('added', n.id) : { type: 'added' });\n }\n } else if (cur !== undefined) {\n packStr();\n currentAttributes.delete('ychange');\n }\n str += /** @type {ContentString} */ (n.content).str;\n break\n }\n case ContentType:\n case ContentEmbed: {\n packStr();\n /**\n * @type {Object}\n */\n const op = {\n insert: n.content.getContent()[0]\n };\n if (currentAttributes.size > 0) {\n const attrs = /** @type {Object} */ ({});\n op.attributes = attrs;\n currentAttributes.forEach((value, key) => {\n attrs[key] = value;\n });\n }\n ops.push(op);\n break\n }\n case ContentFormat:\n if (isVisible(n, snapshot)) {\n packStr();\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (n.content));\n }\n break\n }\n }\n n = n.right;\n }\n packStr();\n };\n if (snapshot || prevSnapshot) {\n // snapshots are merged again after the transaction, so we need to keep the\n // transaction alive until we are done\n transact(doc, transaction => {\n if (snapshot) {\n splitSnapshotAffectedStructs(transaction, snapshot);\n }\n if (prevSnapshot) {\n splitSnapshotAffectedStructs(transaction, prevSnapshot);\n }\n computeDelta();\n }, 'cleanup');\n } else {\n computeDelta();\n }\n return ops\n }\n\n /**\n * Insert text at a given index.\n *\n * @param {number} index The index at which to start inserting.\n * @param {String} text The text to insert at the specified position.\n * @param {TextAttributes} [attributes] Optionally define some formatting\n * information to apply on the inserted\n * Text.\n * @public\n */\n insert (index, text, attributes) {\n if (text.length <= 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index, !attributes);\n if (!attributes) {\n attributes = {};\n // @ts-ignore\n pos.currentAttributes.forEach((v, k) => { attributes[k] = v; });\n }\n insertText(transaction, this, pos, text, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.insert(index, text, attributes));\n }\n }\n\n /**\n * Inserts an embed at a index.\n *\n * @param {number} index The index to insert the embed at.\n * @param {Object | AbstractType} embed The Object that represents the embed.\n * @param {TextAttributes} [attributes] Attribute information to apply on the\n * embed\n *\n * @public\n */\n insertEmbed (index, embed, attributes) {\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index, !attributes);\n insertText(transaction, this, pos, embed, attributes || {});\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.insertEmbed(index, embed, attributes || {}));\n }\n }\n\n /**\n * Deletes text starting from an index.\n *\n * @param {number} index Index at which to start deleting.\n * @param {number} length The number of characters to remove. Defaults to 1.\n *\n * @public\n */\n delete (index, length) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n deleteText(transaction, findPosition(transaction, this, index, true), length);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.delete(index, length));\n }\n }\n\n /**\n * Assigns properties to a range of text.\n *\n * @param {number} index The position where to start formatting.\n * @param {number} length The amount of characters to assign properties to.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * text.\n *\n * @public\n */\n format (index, length, attributes) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index, false);\n if (pos.right === null) {\n return\n }\n formatText(transaction, this, pos, length, attributes);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.format(index, length, attributes));\n }\n }\n\n /**\n * Removes an attribute.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.removeAttribute(attributeName));\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that is to be set.\n * @param {any} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue);\n });\n } else {\n /** @type {Array} */ (this._pending).push(() => this.setAttribute(attributeName, attributeValue));\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that identifies the\n * queried value.\n * @return {any} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @return {Object} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes () {\n return typeMapGetAll(this)\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YTextRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n * @return {YText}\n *\n * @private\n * @function\n */\nconst readYText = _decoder => new YText();\n\n/**\n * @module YXml\n */\n\n\n/**\n * Define the elements to which a set of CSS queries apply.\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors}\n *\n * @example\n * query = '.classSelector'\n * query = 'nodeSelector'\n * query = '#idSelector'\n *\n * @typedef {string} CSS_Selector\n */\n\n/**\n * Dom filter function.\n *\n * @callback domFilter\n * @param {string} nodeName The nodeName of the element\n * @param {Map} attributes The map of attributes.\n * @return {boolean} Whether to include the Dom node in the YXmlElement.\n */\n\n/**\n * Represents a subset of the nodes of a YXmlElement / YXmlFragment and a\n * position within them.\n *\n * Can be created with {@link YXmlFragment#createTreeWalker}\n *\n * @public\n * @implements {Iterable}\n */\nclass YXmlTreeWalker {\n /**\n * @param {YXmlFragment | YXmlElement} root\n * @param {function(AbstractType):boolean} [f]\n */\n constructor (root, f = () => true) {\n this._filter = f;\n this._root = root;\n /**\n * @type {Item}\n */\n this._currentNode = /** @type {Item} */ (root._start);\n this._firstCall = true;\n }\n\n [Symbol.iterator] () {\n return this\n }\n\n /**\n * Get the next node.\n *\n * @return {IteratorResult} The next node.\n *\n * @public\n */\n next () {\n /**\n * @type {Item|null}\n */\n let n = this._currentNode;\n let type = n && n.content && /** @type {any} */ (n.content).type;\n if (n !== null && (!this._firstCall || n.deleted || !this._filter(type))) { // if first call, we check if we can use the first item\n do {\n type = /** @type {any} */ (n.content).type;\n if (!n.deleted && (type.constructor === YXmlElement || type.constructor === YXmlFragment) && type._start !== null) {\n // walk down in the tree\n n = type._start;\n } else {\n // walk right or up in the tree\n while (n !== null) {\n if (n.right !== null) {\n n = n.right;\n break\n } else if (n.parent === this._root) {\n n = null;\n } else {\n n = /** @type {AbstractType} */ (n.parent)._item;\n }\n }\n }\n } while (n !== null && (n.deleted || !this._filter(/** @type {ContentType} */ (n.content).type)))\n }\n this._firstCall = false;\n if (n === null) {\n // @ts-ignore\n return { value: undefined, done: true }\n }\n this._currentNode = n;\n return { value: /** @type {any} */ (n.content).type, done: false }\n }\n}\n\n/**\n * Represents a list of {@link YXmlElement}.and {@link YXmlText} types.\n * A YxmlFragment is similar to a {@link YXmlElement}, but it does not have a\n * nodeName and it does not have attributes. Though it can be bound to a DOM\n * element - in this case the attributes and the nodeName are not shared.\n *\n * @public\n * @extends AbstractType\n */\nclass YXmlFragment extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array|null}\n */\n this._prelimContent = [];\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get firstChild () {\n const first = this._first;\n return first ? first.content.getContent()[0] : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n _copy () {\n return new YXmlFragment()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YXmlFragment}\n */\n clone () {\n const el = new YXmlFragment();\n // @ts-ignore\n el.insert(0, this.toArray().map(item => item instanceof AbstractType ? item.clone() : item));\n return el\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Create a subtree of childNodes.\n *\n * @example\n * const walker = elem.createTreeWalker(dom => dom.nodeName === 'div')\n * for (let node in walker) {\n * // `node` is a div node\n * nop(node)\n * }\n *\n * @param {function(AbstractType):boolean} filter Function that is called on each child element and\n * returns a Boolean indicating whether the child\n * is to be included in the subtree.\n * @return {YXmlTreeWalker} A subtree and a position within it.\n *\n * @public\n */\n createTreeWalker (filter) {\n return new YXmlTreeWalker(this, filter)\n }\n\n /**\n * Returns the first YXmlElement that matches the query.\n * Similar to DOM's {@link querySelector}.\n *\n * Query support:\n * - tagname\n * TODO:\n * - id\n * - attribute\n *\n * @param {CSS_Selector} query The query on the children.\n * @return {YXmlElement|YXmlText|YXmlHook|null} The first element that matches the query or null.\n *\n * @public\n */\n querySelector (query) {\n query = query.toUpperCase();\n // @ts-ignore\n const iterator = new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query);\n const next = iterator.next();\n if (next.done) {\n return null\n } else {\n return next.value\n }\n }\n\n /**\n * Returns all YXmlElements that match the query.\n * Similar to Dom's {@link querySelectorAll}.\n *\n * @todo Does not yet support all queries. Currently only query by tagName.\n *\n * @param {CSS_Selector} query The query on the children\n * @return {Array} The elements that match this query.\n *\n * @public\n */\n querySelectorAll (query) {\n query = query.toUpperCase();\n // @ts-ignore\n return array.from(new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query))\n }\n\n /**\n * Creates YXmlEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YXmlEvent(this, parentSubs, transaction));\n }\n\n /**\n * Get the string representation of all the children of this YXmlFragment.\n *\n * @return {string} The string representation of all children.\n */\n toString () {\n return typeListMap(this, xml => xml.toString()).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const fragment = _document.createDocumentFragment();\n if (binding !== undefined) {\n binding._createAssociation(fragment, this);\n }\n typeListForEach(this, xmlType => {\n fragment.insertBefore(xmlType.toDOM(_document, hooks, binding), null);\n });\n return fragment\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {number} index The index to insert content at\n * @param {Array} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, 0, ...content);\n }\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {null|Item|YXmlElement|YXmlText} ref The index to insert content at\n * @param {Array} content The array of content\n */\n insertAfter (ref, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const refItem = (ref && ref instanceof AbstractType) ? ref._item : ref;\n typeListInsertGenericsAfter(transaction, this, refItem, content);\n });\n } else {\n const pc = /** @type {Array} */ (this._prelimContent);\n const index = ref === null ? 0 : pc.findIndex(el => el === ref) + 1;\n if (index === 0 && ref !== null) {\n throw error.create('Reference item not found')\n }\n pc.splice(index, 0, ...content);\n }\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} [length=1] The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, length);\n }\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array} content Array of content to append.\n */\n push (content) {\n this.insert(this.length, content);\n }\n\n /**\n * Prepends content to this YArray.\n *\n * @param {Array} content Array of content to prepend.\n */\n unshift (content) {\n this.insert(0, content);\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {YXmlElement|YXmlText}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Returns a portion of this YXmlFragment into a JavaScript Array selected\n * from start to end (end not included).\n *\n * @param {number} [start]\n * @param {number} [end]\n * @return {Array}\n */\n slice (start = 0, end = this.length) {\n return typeListSlice(this, start, end)\n }\n\n /**\n * Executes a provided function on once on every child element.\n *\n * @param {function(YXmlElement|YXmlText,number, typeof self):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f);\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlFragmentRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n * @return {YXmlFragment}\n *\n * @private\n * @function\n */\nconst readYXmlFragment = _decoder => new YXmlFragment();\n\n/**\n * @typedef {Object|number|null|Array|string|Uint8Array|AbstractType} ValueTypes\n */\n\n/**\n * An YXmlElement imitates the behavior of a\n * https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element\n *\n * * An YXmlElement has attributes (key value pairs)\n * * An YXmlElement has childElements that must inherit from YXmlElement\n *\n * @template {{ [key: string]: ValueTypes }} [KV={ [key: string]: string }]\n */\nclass YXmlElement extends YXmlFragment {\n constructor (nodeName = 'UNDEFINED') {\n super();\n this.nodeName = nodeName;\n /**\n * @type {Map|null}\n */\n this._prelimAttrs = new Map();\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get nextSibling () {\n const n = this._item ? this._item.next : null;\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get prevSibling () {\n const n = this._item ? this._item.prev : null;\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;(/** @type {Map} */ (this._prelimAttrs)).forEach((value, key) => {\n this.setAttribute(key, value);\n });\n this._prelimAttrs = null;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n *\n * @return {YXmlElement}\n */\n _copy () {\n return new YXmlElement(this.nodeName)\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YXmlElement}\n */\n clone () {\n /**\n * @type {YXmlElement}\n */\n const el = new YXmlElement(this.nodeName);\n const attrs = this.getAttributes();\n object.forEach(attrs, (value, key) => {\n if (typeof value === 'string') {\n el.setAttribute(key, value);\n }\n });\n // @ts-ignore\n el.insert(0, this.toArray().map(item => item instanceof AbstractType ? item.clone() : item));\n return el\n }\n\n /**\n * Returns the XML serialization of this YXmlElement.\n * The attributes are ordered by attribute-name, so you can easily use this\n * method to compare YXmlElements\n *\n * @return {string} The string representation of this type.\n *\n * @public\n */\n toString () {\n const attrs = this.getAttributes();\n const stringBuilder = [];\n const keys = [];\n for (const key in attrs) {\n keys.push(key);\n }\n keys.sort();\n const keysLen = keys.length;\n for (let i = 0; i < keysLen; i++) {\n const key = keys[i];\n stringBuilder.push(key + '=\"' + attrs[key] + '\"');\n }\n const nodeName = this.nodeName.toLocaleLowerCase();\n const attrsString = stringBuilder.length > 0 ? ' ' + stringBuilder.join(' ') : '';\n return `<${nodeName}${attrsString}>${super.toString()}`\n }\n\n /**\n * Removes an attribute from this YXmlElement.\n *\n * @param {string} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName);\n });\n } else {\n /** @type {Map} */ (this._prelimAttrs).delete(attributeName);\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @template {keyof KV & string} KEY\n *\n * @param {KEY} attributeName The attribute name that is to be set.\n * @param {KV[KEY]} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue);\n });\n } else {\n /** @type {Map} */ (this._prelimAttrs).set(attributeName, attributeValue);\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @template {keyof KV & string} KEY\n *\n * @param {KEY} attributeName The attribute name that identifies the\n * queried value.\n * @return {KV[KEY]|undefined} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns whether an attribute exists\n *\n * @param {string} attributeName The attribute name to check for existence.\n * @return {boolean} whether the attribute exists.\n *\n * @public\n */\n hasAttribute (attributeName) {\n return /** @type {any} */ (typeMapHas(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @param {Snapshot} [snapshot]\n * @return {{ [Key in Extract]?: KV[Key]}} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes (snapshot) {\n return /** @type {any} */ (snapshot ? typeMapGetAllSnapshot(this, snapshot) : typeMapGetAll(this))\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const dom = _document.createElement(this.nodeName);\n const attrs = this.getAttributes();\n for (const key in attrs) {\n const value = attrs[key];\n if (typeof value === 'string') {\n dom.setAttribute(key, value);\n }\n }\n typeListForEach(this, yxml => {\n dom.appendChild(yxml.toDOM(_document, hooks, binding));\n });\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlElementRefID);\n encoder.writeKey(this.nodeName);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlElement}\n *\n * @function\n */\nconst readYXmlElement = decoder => new YXmlElement(decoder.readKey());\n\n/**\n * @extends YEvent\n * An Event that describes changes on a YXml Element or Yxml Fragment\n */\nclass YXmlEvent extends YEvent {\n /**\n * @param {YXmlElement|YXmlText|YXmlFragment} target The target on which the event is created.\n * @param {Set} subs The set of changed attributes. `null` is included if the\n * child list changed.\n * @param {Transaction} transaction The transaction instance with wich the\n * change was created.\n */\n constructor (target, subs, transaction) {\n super(target, transaction);\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false;\n /**\n * Set of all changed attributes.\n * @type {Set}\n */\n this.attributesChanged = new Set();\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true;\n } else {\n this.attributesChanged.add(sub);\n }\n });\n }\n}\n\n/**\n * You can manage binding to a custom type with YXmlHook.\n *\n * @extends {YMap}\n */\nclass YXmlHook extends YMap {\n /**\n * @param {string} hookName nodeName of the Dom Node.\n */\n constructor (hookName) {\n super();\n /**\n * @type {string}\n */\n this.hookName = hookName;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n */\n _copy () {\n return new YXmlHook(this.hookName)\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YXmlHook}\n */\n clone () {\n const el = new YXmlHook(this.hookName);\n this.forEach((value, key) => {\n el.set(key, value);\n });\n return el\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object.} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type\n * @return {Element} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const hook = hooks[this.hookName];\n let dom;\n if (hook !== undefined) {\n dom = hook.createDom(this);\n } else {\n dom = document.createElement(this.hookName);\n }\n dom.setAttribute('data-yjs-hook', this.hookName);\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlHookRefID);\n encoder.writeKey(this.hookName);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlHook}\n *\n * @private\n * @function\n */\nconst readYXmlHook = decoder =>\n new YXmlHook(decoder.readKey());\n\n/**\n * Represents text in a Dom Element. In the future this type will also handle\n * simple formatting information like bold and italic.\n */\nclass YXmlText extends YText {\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get nextSibling () {\n const n = this._item ? this._item.next : null;\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get prevSibling () {\n const n = this._item ? this._item.prev : null;\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n _copy () {\n return new YXmlText()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YXmlText}\n */\n clone () {\n const text = new YXmlText();\n text.applyDelta(this.toDelta());\n return text\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlText.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Text} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks, binding) {\n const dom = _document.createTextNode(this.toString());\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n toString () {\n // @ts-ignore\n return this.toDelta().map(delta => {\n const nestedNodes = [];\n for (const nodeName in delta.attributes) {\n const attrs = [];\n for (const key in delta.attributes[nodeName]) {\n attrs.push({ key, value: delta.attributes[nodeName][key] });\n }\n // sort attributes to get a unique order\n attrs.sort((a, b) => a.key < b.key ? -1 : 1);\n nestedNodes.push({ nodeName, attrs });\n }\n // sort node order to get a unique order\n nestedNodes.sort((a, b) => a.nodeName < b.nodeName ? -1 : 1);\n // now convert to dom string\n let str = '';\n for (let i = 0; i < nestedNodes.length; i++) {\n const node = nestedNodes[i];\n str += `<${node.nodeName}`;\n for (let j = 0; j < node.attrs.length; j++) {\n const attr = node.attrs[j];\n str += ` ${attr.key}=\"${attr.value}\"`;\n }\n str += '>';\n }\n str += delta.insert;\n for (let i = nestedNodes.length - 1; i >= 0; i--) {\n str += ``;\n }\n return str\n }).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlTextRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlText}\n *\n * @private\n * @function\n */\nconst readYXmlText = decoder => new YXmlText();\n\nclass AbstractStruct {\n /**\n * @param {ID} id\n * @param {number} length\n */\n constructor (id, length) {\n this.id = id;\n this.length = length;\n }\n\n /**\n * @type {boolean}\n */\n get deleted () {\n throw error.methodUnimplemented()\n }\n\n /**\n * Merge this struct with the item to the right.\n * This method is already assuming that `this.id.clock + this.length === this.id.clock`.\n * Also this method does *not* remove right from StructStore!\n * @param {AbstractStruct} right\n * @return {boolean} wether this merged with right\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n * @param {number} offset\n * @param {number} encodingRef\n */\n write (encoder, offset, encodingRef) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n throw error.methodUnimplemented()\n }\n}\n\nconst structGCRefNumber = 0;\n\n/**\n * @private\n */\nclass GC extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {GC} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (this.constructor !== right.constructor) {\n return false\n }\n this.length += right.length;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.length -= offset;\n }\n addStruct(transaction.doc.store, this);\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structGCRefNumber);\n encoder.writeLen(this.length - offset);\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n\nclass ContentBinary {\n /**\n * @param {Uint8Array} content\n */\n constructor (content) {\n this.content = content;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.content]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentBinary}\n */\n copy () {\n return new ContentBinary(this.content)\n }\n\n /**\n * @param {number} offset\n * @return {ContentBinary}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentBinary} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeBuf(this.content);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 3\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2 } decoder\n * @return {ContentBinary}\n */\nconst readContentBinary = decoder => new ContentBinary(decoder.readBuf());\n\nclass ContentDeleted {\n /**\n * @param {number} len\n */\n constructor (len) {\n this.len = len;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.len\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentDeleted}\n */\n copy () {\n return new ContentDeleted(this.len)\n }\n\n /**\n * @param {number} offset\n * @return {ContentDeleted}\n */\n splice (offset) {\n const right = new ContentDeleted(this.len - offset);\n this.len = offset;\n return right\n }\n\n /**\n * @param {ContentDeleted} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.len += right.len;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n addToDeleteSet(transaction.deleteSet, item.id.client, item.id.clock, this.len);\n item.markDeleted();\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeLen(this.len - offset);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 1\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2 } decoder\n * @return {ContentDeleted}\n */\nconst readContentDeleted = decoder => new ContentDeleted(decoder.readLen());\n\n/**\n * @param {string} guid\n * @param {Object} opts\n */\nconst createDocFromOpts = (guid, opts) => new Doc({ guid, ...opts, shouldLoad: opts.shouldLoad || opts.autoLoad || false });\n\n/**\n * @private\n */\nclass ContentDoc {\n /**\n * @param {Doc} doc\n */\n constructor (doc) {\n if (doc._item) {\n console.error('This document was already integrated as a sub-document. You should create a second instance instead with the same guid.');\n }\n /**\n * @type {Doc}\n */\n this.doc = doc;\n /**\n * @type {any}\n */\n const opts = {};\n this.opts = opts;\n if (!doc.gc) {\n opts.gc = false;\n }\n if (doc.autoLoad) {\n opts.autoLoad = true;\n }\n if (doc.meta !== null) {\n opts.meta = doc.meta;\n }\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.doc]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentDoc}\n */\n copy () {\n return new ContentDoc(createDocFromOpts(this.doc.guid, this.opts))\n }\n\n /**\n * @param {number} offset\n * @return {ContentDoc}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentDoc} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n // this needs to be reflected in doc.destroy as well\n this.doc._item = item;\n transaction.subdocsAdded.add(this.doc);\n if (this.doc.shouldLoad) {\n transaction.subdocsLoaded.add(this.doc);\n }\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (transaction.subdocsAdded.has(this.doc)) {\n transaction.subdocsAdded.delete(this.doc);\n } else {\n transaction.subdocsRemoved.add(this.doc);\n }\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) { }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(this.doc.guid);\n encoder.writeAny(this.opts);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 9\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentDoc}\n */\nconst readContentDoc = decoder => new ContentDoc(createDocFromOpts(decoder.readString(), decoder.readAny()));\n\n/**\n * @private\n */\nclass ContentEmbed {\n /**\n * @param {Object} embed\n */\n constructor (embed) {\n this.embed = embed;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.embed]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentEmbed}\n */\n copy () {\n return new ContentEmbed(this.embed)\n }\n\n /**\n * @param {number} offset\n * @return {ContentEmbed}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentEmbed} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeJSON(this.embed);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 5\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentEmbed}\n */\nconst readContentEmbed = decoder => new ContentEmbed(decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentFormat {\n /**\n * @param {string} key\n * @param {Object} value\n */\n constructor (key, value) {\n this.key = key;\n this.value = value;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentFormat}\n */\n copy () {\n return new ContentFormat(this.key, this.value)\n }\n\n /**\n * @param {number} _offset\n * @return {ContentFormat}\n */\n splice (_offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentFormat} _right\n * @return {boolean}\n */\n mergeWith (_right) {\n return false\n }\n\n /**\n * @param {Transaction} _transaction\n * @param {Item} item\n */\n integrate (_transaction, item) {\n // @todo searchmarker are currently unsupported for rich text documents\n const p = /** @type {YText} */ (item.parent);\n p._searchMarker = null;\n p._hasFormatting = true;\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeKey(this.key);\n encoder.writeJSON(this.value);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 6\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentFormat}\n */\nconst readContentFormat = decoder => new ContentFormat(decoder.readKey(), decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentJSON {\n /**\n * @param {Array} arr\n */\n constructor (arr) {\n /**\n * @type {Array}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentJSON}\n */\n copy () {\n return new ContentJSON(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentJSON}\n */\n splice (offset) {\n const right = new ContentJSON(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentJSON} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeString(c === undefined ? 'undefined' : JSON.stringify(c));\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 2\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentJSON}\n */\nconst readContentJSON = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n const c = decoder.readString();\n if (c === 'undefined') {\n cs.push(undefined);\n } else {\n cs.push(JSON.parse(c));\n }\n }\n return new ContentJSON(cs)\n};\n\nclass ContentAny {\n /**\n * @param {Array} arr\n */\n constructor (arr) {\n /**\n * @type {Array}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentAny}\n */\n copy () {\n return new ContentAny(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentAny}\n */\n splice (offset) {\n const right = new ContentAny(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentAny} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeAny(c);\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 8\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentAny}\n */\nconst readContentAny = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n cs.push(decoder.readAny());\n }\n return new ContentAny(cs)\n};\n\n/**\n * @private\n */\nclass ContentString {\n /**\n * @param {string} str\n */\n constructor (str) {\n /**\n * @type {string}\n */\n this.str = str;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.str.length\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return this.str.split('')\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentString}\n */\n copy () {\n return new ContentString(this.str)\n }\n\n /**\n * @param {number} offset\n * @return {ContentString}\n */\n splice (offset) {\n const right = new ContentString(this.str.slice(offset));\n this.str = this.str.slice(0, offset);\n\n // Prevent encoding invalid documents because of splitting of surrogate pairs: https://github.com/yjs/yjs/issues/248\n const firstCharCode = this.str.charCodeAt(offset - 1);\n if (firstCharCode >= 0xD800 && firstCharCode <= 0xDBFF) {\n // Last character of the left split is the start of a surrogate utf16/ucs2 pair.\n // We don't support splitting of surrogate pairs because this may lead to invalid documents.\n // Replace the invalid character with a unicode replacement character (� / U+FFFD)\n this.str = this.str.slice(0, offset - 1) + '�';\n // replace right as well\n right.str = '�' + right.str.slice(1);\n }\n return right\n }\n\n /**\n * @param {ContentString} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.str += right.str;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(offset === 0 ? this.str : this.str.slice(offset));\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 4\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentString}\n */\nconst readContentString = decoder => new ContentString(decoder.readString());\n\n/**\n * @type {Array>}\n * @private\n */\nconst typeRefs = [\n readYArray,\n readYMap,\n readYText,\n readYXmlElement,\n readYXmlFragment,\n readYXmlHook,\n readYXmlText\n];\n\nconst YArrayRefID = 0;\nconst YMapRefID = 1;\nconst YTextRefID = 2;\nconst YXmlElementRefID = 3;\nconst YXmlFragmentRefID = 4;\nconst YXmlHookRefID = 5;\nconst YXmlTextRefID = 6;\n\n/**\n * @private\n */\nclass ContentType {\n /**\n * @param {AbstractType} type\n */\n constructor (type) {\n /**\n * @type {AbstractType}\n */\n this.type = type;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array}\n */\n getContent () {\n return [this.type]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentType}\n */\n copy () {\n return new ContentType(this.type._copy())\n }\n\n /**\n * @param {number} offset\n * @return {ContentType}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentType} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n this.type._integrate(transaction.doc, item);\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n let item = this.type._start;\n while (item !== null) {\n if (!item.deleted) {\n item.delete(transaction);\n } else if (item.id.clock < (transaction.beforeState.get(item.id.client) || 0)) {\n // This will be gc'd later and we want to merge it if possible\n // We try to merge all deleted items after each transaction,\n // but we have no knowledge about that this needs to be merged\n // since it is not in transaction.ds. Hence we add it to transaction._mergeStructs\n transaction._mergeStructs.push(item);\n }\n item = item.right;\n }\n this.type._map.forEach(item => {\n if (!item.deleted) {\n item.delete(transaction);\n } else if (item.id.clock < (transaction.beforeState.get(item.id.client) || 0)) {\n // same as above\n transaction._mergeStructs.push(item);\n }\n });\n transaction.changed.delete(this.type);\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) {\n let item = this.type._start;\n while (item !== null) {\n item.gc(store, true);\n item = item.right;\n }\n this.type._start = null;\n this.type._map.forEach(/** @param {Item | null} item */ (item) => {\n while (item !== null) {\n item.gc(store, true);\n item = item.left;\n }\n });\n this.type._map = new Map();\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n this.type._write(encoder);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 7\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentType}\n */\nconst readContentType = decoder => new ContentType(typeRefs[decoder.readTypeRef()](decoder));\n\n/**\n * @todo This should return several items\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {{item:Item, diff:number}}\n */\nconst followRedone = (store, id) => {\n /**\n * @type {ID|null}\n */\n let nextID = id;\n let diff = 0;\n let item;\n do {\n if (diff > 0) {\n nextID = createID(nextID.client, nextID.clock + diff);\n }\n item = getItem(store, nextID);\n diff = nextID.clock - item.id.clock;\n nextID = item.redone;\n } while (nextID !== null && item instanceof Item)\n return {\n item, diff\n }\n};\n\n/**\n * Make sure that neither item nor any of its parents is ever deleted.\n *\n * This property does not persist when storing it into a database or when\n * sending it to other peers\n *\n * @param {Item|null} item\n * @param {boolean} keep\n */\nconst keepItem = (item, keep) => {\n while (item !== null && item.keep !== keep) {\n item.keep = keep;\n item = /** @type {AbstractType} */ (item.parent)._item;\n }\n};\n\n/**\n * Split leftItem into two items\n * @param {Transaction} transaction\n * @param {Item} leftItem\n * @param {number} diff\n * @return {Item}\n *\n * @function\n * @private\n */\nconst splitItem = (transaction, leftItem, diff) => {\n // create rightItem\n const { client, clock } = leftItem.id;\n const rightItem = new Item(\n createID(client, clock + diff),\n leftItem,\n createID(client, clock + diff - 1),\n leftItem.right,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n );\n if (leftItem.deleted) {\n rightItem.markDeleted();\n }\n if (leftItem.keep) {\n rightItem.keep = true;\n }\n if (leftItem.redone !== null) {\n rightItem.redone = createID(leftItem.redone.client, leftItem.redone.clock + diff);\n }\n // update left (do not set leftItem.rightOrigin as it will lead to problems when syncing)\n leftItem.right = rightItem;\n // update right\n if (rightItem.right !== null) {\n rightItem.right.left = rightItem;\n }\n // right is more specific.\n transaction._mergeStructs.push(rightItem);\n // update parent._map\n if (rightItem.parentSub !== null && rightItem.right === null) {\n /** @type {AbstractType} */ (rightItem.parent)._map.set(rightItem.parentSub, rightItem);\n }\n leftItem.length = diff;\n return rightItem\n};\n\n/**\n * @param {Array} stack\n * @param {ID} id\n */\nconst isDeletedByUndoStack = (stack, id) => array.some(stack, /** @param {StackItem} s */ s => isDeleted(s.deletions, id));\n\n/**\n * Redoes the effect of this operation.\n *\n * @param {Transaction} transaction The Yjs instance.\n * @param {Item} item\n * @param {Set} redoitems\n * @param {DeleteSet} itemsToDelete\n * @param {boolean} ignoreRemoteMapChanges\n * @param {import('../utils/UndoManager.js').UndoManager} um\n *\n * @return {Item|null}\n *\n * @private\n */\nconst redoItem = (transaction, item, redoitems, itemsToDelete, ignoreRemoteMapChanges, um) => {\n const doc = transaction.doc;\n const store = doc.store;\n const ownClientID = doc.clientID;\n const redone = item.redone;\n if (redone !== null) {\n return getItemCleanStart(transaction, redone)\n }\n let parentItem = /** @type {AbstractType} */ (item.parent)._item;\n /**\n * @type {Item|null}\n */\n let left = null;\n /**\n * @type {Item|null}\n */\n let right;\n // make sure that parent is redone\n if (parentItem !== null && parentItem.deleted === true) {\n // try to undo parent if it will be undone anyway\n if (parentItem.redone === null && (!redoitems.has(parentItem) || redoItem(transaction, parentItem, redoitems, itemsToDelete, ignoreRemoteMapChanges, um) === null)) {\n return null\n }\n while (parentItem.redone !== null) {\n parentItem = getItemCleanStart(transaction, parentItem.redone);\n }\n }\n const parentType = parentItem === null ? /** @type {AbstractType} */ (item.parent) : /** @type {ContentType} */ (parentItem.content).type;\n\n if (item.parentSub === null) {\n // Is an array item. Insert at the old position\n left = item.left;\n right = item;\n // find next cloned_redo items\n while (left !== null) {\n /**\n * @type {Item|null}\n */\n let leftTrace = left;\n // trace redone until parent matches\n while (leftTrace !== null && /** @type {AbstractType} */ (leftTrace.parent)._item !== parentItem) {\n leftTrace = leftTrace.redone === null ? null : getItemCleanStart(transaction, leftTrace.redone);\n }\n if (leftTrace !== null && /** @type {AbstractType} */ (leftTrace.parent)._item === parentItem) {\n left = leftTrace;\n break\n }\n left = left.left;\n }\n while (right !== null) {\n /**\n * @type {Item|null}\n */\n let rightTrace = right;\n // trace redone until parent matches\n while (rightTrace !== null && /** @type {AbstractType} */ (rightTrace.parent)._item !== parentItem) {\n rightTrace = rightTrace.redone === null ? null : getItemCleanStart(transaction, rightTrace.redone);\n }\n if (rightTrace !== null && /** @type {AbstractType} */ (rightTrace.parent)._item === parentItem) {\n right = rightTrace;\n break\n }\n right = right.right;\n }\n } else {\n right = null;\n if (item.right && !ignoreRemoteMapChanges) {\n left = item;\n // Iterate right while right is in itemsToDelete\n // If it is intended to delete right while item is redone, we can expect that item should replace right.\n while (left !== null && left.right !== null && (left.right.redone || isDeleted(itemsToDelete, left.right.id) || isDeletedByUndoStack(um.undoStack, left.right.id) || isDeletedByUndoStack(um.redoStack, left.right.id))) {\n left = left.right;\n // follow redone\n while (left.redone) left = getItemCleanStart(transaction, left.redone);\n }\n if (left && left.right !== null) {\n // It is not possible to redo this item because it conflicts with a\n // change from another client\n return null\n }\n } else {\n left = parentType._map.get(item.parentSub) || null;\n }\n }\n const nextClock = getState(store, ownClientID);\n const nextId = createID(ownClientID, nextClock);\n const redoneItem = new Item(\n nextId,\n left, left && left.lastId,\n right, right && right.id,\n parentType,\n item.parentSub,\n item.content.copy()\n );\n item.redone = nextId;\n keepItem(redoneItem, true);\n redoneItem.integrate(transaction, 0);\n return redoneItem\n};\n\n/**\n * Abstract class that represents any content.\n */\nclass Item extends AbstractStruct {\n /**\n * @param {ID} id\n * @param {Item | null} left\n * @param {ID | null} origin\n * @param {Item | null} right\n * @param {ID | null} rightOrigin\n * @param {AbstractType|ID|null} parent Is a type if integrated, is null if it is possible to copy parent from left or right, is ID before integration to search for it.\n * @param {string | null} parentSub\n * @param {AbstractContent} content\n */\n constructor (id, left, origin, right, rightOrigin, parent, parentSub, content) {\n super(id, content.getLength());\n /**\n * The item that was originally to the left of this item.\n * @type {ID | null}\n */\n this.origin = origin;\n /**\n * The item that is currently to the left of this item.\n * @type {Item | null}\n */\n this.left = left;\n /**\n * The item that is currently to the right of this item.\n * @type {Item | null}\n */\n this.right = right;\n /**\n * The item that was originally to the right of this item.\n * @type {ID | null}\n */\n this.rightOrigin = rightOrigin;\n /**\n * @type {AbstractType|ID|null}\n */\n this.parent = parent;\n /**\n * If the parent refers to this item with some kind of key (e.g. YMap, the\n * key is specified here. The key is then used to refer to the list in which\n * to insert this item. If `parentSub = null` type._start is the list in\n * which to insert to. Otherwise it is `parent._map`.\n * @type {String | null}\n */\n this.parentSub = parentSub;\n /**\n * If this type's effect is redone this type refers to the type that undid\n * this operation.\n * @type {ID | null}\n */\n this.redone = null;\n /**\n * @type {AbstractContent}\n */\n this.content = content;\n /**\n * bit1: keep\n * bit2: countable\n * bit3: deleted\n * bit4: mark - mark node as fast-search-marker\n * @type {number} byte\n */\n this.info = this.content.isCountable() ? binary.BIT2 : 0;\n }\n\n /**\n * This is used to mark the item as an indexed fast-search marker\n *\n * @type {boolean}\n */\n set marker (isMarked) {\n if (((this.info & binary.BIT4) > 0) !== isMarked) {\n this.info ^= binary.BIT4;\n }\n }\n\n get marker () {\n return (this.info & binary.BIT4) > 0\n }\n\n /**\n * If true, do not garbage collect this Item.\n */\n get keep () {\n return (this.info & binary.BIT1) > 0\n }\n\n set keep (doKeep) {\n if (this.keep !== doKeep) {\n this.info ^= binary.BIT1;\n }\n }\n\n get countable () {\n return (this.info & binary.BIT2) > 0\n }\n\n /**\n * Whether this item was deleted or not.\n * @type {Boolean}\n */\n get deleted () {\n return (this.info & binary.BIT3) > 0\n }\n\n set deleted (doDelete) {\n if (this.deleted !== doDelete) {\n this.info ^= binary.BIT3;\n }\n }\n\n markDeleted () {\n this.info |= binary.BIT3;\n }\n\n /**\n * Return the creator clientID of the missing op or define missing items and return null.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n if (this.origin && this.origin.client !== this.id.client && this.origin.clock >= getState(store, this.origin.client)) {\n return this.origin.client\n }\n if (this.rightOrigin && this.rightOrigin.client !== this.id.client && this.rightOrigin.clock >= getState(store, this.rightOrigin.client)) {\n return this.rightOrigin.client\n }\n if (this.parent && this.parent.constructor === ID && this.id.client !== this.parent.client && this.parent.clock >= getState(store, this.parent.client)) {\n return this.parent.client\n }\n\n // We have all missing ids, now find the items\n\n if (this.origin) {\n this.left = getItemCleanEnd(transaction, store, this.origin);\n this.origin = this.left.lastId;\n }\n if (this.rightOrigin) {\n this.right = getItemCleanStart(transaction, this.rightOrigin);\n this.rightOrigin = this.right.id;\n }\n if ((this.left && this.left.constructor === GC) || (this.right && this.right.constructor === GC)) {\n this.parent = null;\n } else if (!this.parent) {\n // only set parent if this shouldn't be garbage collected\n if (this.left && this.left.constructor === Item) {\n this.parent = this.left.parent;\n this.parentSub = this.left.parentSub;\n }\n if (this.right && this.right.constructor === Item) {\n this.parent = this.right.parent;\n this.parentSub = this.right.parentSub;\n }\n } else if (this.parent.constructor === ID) {\n const parentItem = getItem(store, this.parent);\n if (parentItem.constructor === GC) {\n this.parent = null;\n } else {\n this.parent = /** @type {ContentType} */ (parentItem.content).type;\n }\n }\n return null\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.left = getItemCleanEnd(transaction, transaction.doc.store, createID(this.id.client, this.id.clock - 1));\n this.origin = this.left.lastId;\n this.content = this.content.splice(offset);\n this.length -= offset;\n }\n\n if (this.parent) {\n if ((!this.left && (!this.right || this.right.left !== null)) || (this.left && this.left.right !== this.right)) {\n /**\n * @type {Item|null}\n */\n let left = this.left;\n\n /**\n * @type {Item|null}\n */\n let o;\n // set o to the first conflicting item\n if (left !== null) {\n o = left.right;\n } else if (this.parentSub !== null) {\n o = /** @type {AbstractType} */ (this.parent)._map.get(this.parentSub) || null;\n while (o !== null && o.left !== null) {\n o = o.left;\n }\n } else {\n o = /** @type {AbstractType} */ (this.parent)._start;\n }\n // TODO: use something like DeleteSet here (a tree implementation would be best)\n // @todo use global set definitions\n /**\n * @type {Set}\n */\n const conflictingItems = new Set();\n /**\n * @type {Set}\n */\n const itemsBeforeOrigin = new Set();\n // Let c in conflictingItems, b in itemsBeforeOrigin\n // ***{origin}bbbb{this}{c,b}{c,b}{o}***\n // Note that conflictingItems is a subset of itemsBeforeOrigin\n while (o !== null && o !== this.right) {\n itemsBeforeOrigin.add(o);\n conflictingItems.add(o);\n if (compareIDs(this.origin, o.origin)) {\n // case 1\n if (o.id.client < this.id.client) {\n left = o;\n conflictingItems.clear();\n } else if (compareIDs(this.rightOrigin, o.rightOrigin)) {\n // this and o are conflicting and point to the same integration points. The id decides which item comes first.\n // Since this is to the left of o, we can break here\n break\n } // else, o might be integrated before an item that this conflicts with. If so, we will find it in the next iterations\n } else if (o.origin !== null && itemsBeforeOrigin.has(getItem(transaction.doc.store, o.origin))) { // use getItem instead of getItemCleanEnd because we don't want / need to split items.\n // case 2\n if (!conflictingItems.has(getItem(transaction.doc.store, o.origin))) {\n left = o;\n conflictingItems.clear();\n }\n } else {\n break\n }\n o = o.right;\n }\n this.left = left;\n }\n // reconnect left/right + update parent map/start if necessary\n if (this.left !== null) {\n const right = this.left.right;\n this.right = right;\n this.left.right = this;\n } else {\n let r;\n if (this.parentSub !== null) {\n r = /** @type {AbstractType} */ (this.parent)._map.get(this.parentSub) || null;\n while (r !== null && r.left !== null) {\n r = r.left;\n }\n } else {\n r = /** @type {AbstractType} */ (this.parent)._start\n ;/** @type {AbstractType} */ (this.parent)._start = this;\n }\n this.right = r;\n }\n if (this.right !== null) {\n this.right.left = this;\n } else if (this.parentSub !== null) {\n // set as current parent value if right === null and this is parentSub\n /** @type {AbstractType} */ (this.parent)._map.set(this.parentSub, this);\n if (this.left !== null) {\n // this is the current attribute value of parent. delete right\n this.left.delete(transaction);\n }\n }\n // adjust length of parent\n if (this.parentSub === null && this.countable && !this.deleted) {\n /** @type {AbstractType} */ (this.parent)._length += this.length;\n }\n addStruct(transaction.doc.store, this);\n this.content.integrate(transaction, this);\n // add parent to transaction.changed\n addChangedTypeToTransaction(transaction, /** @type {AbstractType} */ (this.parent), this.parentSub);\n if ((/** @type {AbstractType} */ (this.parent)._item !== null && /** @type {AbstractType} */ (this.parent)._item.deleted) || (this.parentSub !== null && this.right !== null)) {\n // delete if parent is deleted or if this is not the current attribute value of parent\n this.delete(transaction);\n }\n } else {\n // parent is not defined. Integrate GC struct instead\n new GC(this.id, this.length).integrate(transaction, 0);\n }\n }\n\n /**\n * Returns the next non-deleted item\n */\n get next () {\n let n = this.right;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Returns the previous non-deleted item\n */\n get prev () {\n let n = this.left;\n while (n !== null && n.deleted) {\n n = n.left;\n }\n return n\n }\n\n /**\n * Computes the last content address of this Item.\n */\n get lastId () {\n // allocating ids is pretty costly because of the amount of ids created, so we try to reuse whenever possible\n return this.length === 1 ? this.id : createID(this.id.client, this.id.clock + this.length - 1)\n }\n\n /**\n * Try to merge two items\n *\n * @param {Item} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (\n this.constructor === right.constructor &&\n compareIDs(right.origin, this.lastId) &&\n this.right === right &&\n compareIDs(this.rightOrigin, right.rightOrigin) &&\n this.id.client === right.id.client &&\n this.id.clock + this.length === right.id.clock &&\n this.deleted === right.deleted &&\n this.redone === null &&\n right.redone === null &&\n this.content.constructor === right.content.constructor &&\n this.content.mergeWith(right.content)\n ) {\n const searchMarker = /** @type {AbstractType} */ (this.parent)._searchMarker;\n if (searchMarker) {\n searchMarker.forEach(marker => {\n if (marker.p === right) {\n // right is going to be \"forgotten\" so we need to update the marker\n marker.p = this;\n // adjust marker index\n if (!this.deleted && this.countable) {\n marker.index -= this.length;\n }\n }\n });\n }\n if (right.keep) {\n this.keep = true;\n }\n this.right = right.right;\n if (this.right !== null) {\n this.right.left = this;\n }\n this.length += right.length;\n return true\n }\n return false\n }\n\n /**\n * Mark this Item as deleted.\n *\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (!this.deleted) {\n const parent = /** @type {AbstractType} */ (this.parent);\n // adjust the length of parent\n if (this.countable && this.parentSub === null) {\n parent._length -= this.length;\n }\n this.markDeleted();\n addToDeleteSet(transaction.deleteSet, this.id.client, this.id.clock, this.length);\n addChangedTypeToTransaction(transaction, parent, this.parentSub);\n this.content.delete(transaction);\n }\n }\n\n /**\n * @param {StructStore} store\n * @param {boolean} parentGCd\n */\n gc (store, parentGCd) {\n if (!this.deleted) {\n throw error.unexpectedCase()\n }\n this.content.gc(store);\n if (parentGCd) {\n replaceStruct(store, this, new GC(this.id, this.length));\n } else {\n this.content = new ContentDeleted(this.length);\n }\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n * @param {number} offset\n */\n write (encoder, offset) {\n const origin = offset > 0 ? createID(this.id.client, this.id.clock + offset - 1) : this.origin;\n const rightOrigin = this.rightOrigin;\n const parentSub = this.parentSub;\n const info = (this.content.getRef() & binary.BITS5) |\n (origin === null ? 0 : binary.BIT8) | // origin is defined\n (rightOrigin === null ? 0 : binary.BIT7) | // right origin is defined\n (parentSub === null ? 0 : binary.BIT6); // parentSub is non-null\n encoder.writeInfo(info);\n if (origin !== null) {\n encoder.writeLeftID(origin);\n }\n if (rightOrigin !== null) {\n encoder.writeRightID(rightOrigin);\n }\n if (origin === null && rightOrigin === null) {\n const parent = /** @type {AbstractType} */ (this.parent);\n if (parent._item !== undefined) {\n const parentItem = parent._item;\n if (parentItem === null) {\n // parent type on y._map\n // find the correct key\n const ykey = findRootTypeKey(parent);\n encoder.writeParentInfo(true); // write parentYKey\n encoder.writeString(ykey);\n } else {\n encoder.writeParentInfo(false); // write parent id\n encoder.writeLeftID(parentItem.id);\n }\n } else if (parent.constructor === String) { // this edge case was added by differential updates\n encoder.writeParentInfo(true); // write parentYKey\n encoder.writeString(parent);\n } else if (parent.constructor === ID) {\n encoder.writeParentInfo(false); // write parent id\n encoder.writeLeftID(parent);\n } else {\n error.unexpectedCase();\n }\n if (parentSub !== null) {\n encoder.writeString(parentSub);\n }\n }\n this.content.write(encoder, offset);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @param {number} info\n */\nconst readItemContent = (decoder, info) => contentRefs[info & binary.BITS5](decoder);\n\n/**\n * A lookup map for reading Item content.\n *\n * @type {Array}\n */\nconst contentRefs = [\n () => { error.unexpectedCase(); }, // GC is not ItemContent\n readContentDeleted, // 1\n readContentJSON, // 2\n readContentBinary, // 3\n readContentString, // 4\n readContentEmbed, // 5\n readContentFormat, // 6\n readContentType, // 7\n readContentAny, // 8\n readContentDoc, // 9\n () => { error.unexpectedCase(); } // 10 - Skip is not ItemContent\n];\n\nconst structSkipRefNumber = 10;\n\n/**\n * @private\n */\nclass Skip extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {Skip} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (this.constructor !== right.constructor) {\n return false\n }\n this.length += right.length;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n // skip structs cannot be integrated\n error.unexpectedCase();\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structSkipRefNumber);\n // write as VarUint because Skips can't make use of predictable length-encoding\n encoding.writeVarUint(encoder.restEncoder, this.length - offset);\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n\n/** eslint-env browser */\n\n\nconst glo = /** @type {any} */ (typeof globalThis !== 'undefined'\n ? globalThis\n : typeof window !== 'undefined'\n ? window\n // @ts-ignore\n : typeof global !== 'undefined' ? global : {});\n\nconst importIdentifier = '__ $YJS$ __';\n\nif (glo[importIdentifier] === true) {\n /**\n * Dear reader of this message. Please take this seriously.\n *\n * If you see this message, make sure that you only import one version of Yjs. In many cases,\n * your package manager installs two versions of Yjs that are used by different packages within your project.\n * Another reason for this message is that some parts of your project use the commonjs version of Yjs\n * and others use the EcmaScript version of Yjs.\n *\n * This often leads to issues that are hard to debug. We often need to perform constructor checks,\n * e.g. `struct instanceof GC`. If you imported different versions of Yjs, it is impossible for us to\n * do the constructor checks anymore - which might break the CRDT algorithm.\n *\n * https://github.com/yjs/yjs/issues/438\n */\n console.error('Yjs was already imported. This breaks constructor checks and will lead to issues! - https://github.com/yjs/yjs/issues/438');\n}\nglo[importIdentifier] = true;\n\nexport { AbsolutePosition, AbstractConnector, AbstractStruct, AbstractType, YArray as Array, ContentAny, ContentBinary, ContentDeleted, ContentDoc, ContentEmbed, ContentFormat, ContentJSON, ContentString, ContentType, Doc, GC, ID, Item, YMap as Map, PermanentUserData, RelativePosition, Skip, Snapshot, YText as Text, Transaction, UndoManager, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, YXmlElement as XmlElement, YXmlFragment as XmlFragment, YXmlHook as XmlHook, YXmlText as XmlText, YArrayEvent, YEvent, YMapEvent, YTextEvent, YXmlEvent, applyUpdate, applyUpdateV2, cleanupYTextFormatting, compareIDs, compareRelativePositions, convertUpdateFormatV1ToV2, convertUpdateFormatV2ToV1, createAbsolutePositionFromRelativePosition, createDeleteSet, createDeleteSetFromStructStore, createDocFromSnapshot, createID, createRelativePositionFromJSON, createRelativePositionFromTypeIndex, createSnapshot, decodeRelativePosition, decodeSnapshot, decodeSnapshotV2, decodeStateVector, decodeUpdate, decodeUpdateV2, diffUpdate, diffUpdateV2, emptySnapshot, encodeRelativePosition, encodeSnapshot, encodeSnapshotV2, encodeStateAsUpdate, encodeStateAsUpdateV2, encodeStateVector, encodeStateVectorFromUpdate, encodeStateVectorFromUpdateV2, equalDeleteSets, equalSnapshots, findIndexSS, findRootTypeKey, getItem, getState, getTypeChildren, isDeleted, isParentOf, iterateDeletedStructs, logType, logUpdate, logUpdateV2, mergeDeleteSets, mergeUpdates, mergeUpdatesV2, obfuscateUpdate, obfuscateUpdateV2, parseUpdateMeta, parseUpdateMetaV2, readUpdate, readUpdateV2, relativePositionToJSON, snapshot, snapshotContainsUpdate, transact, tryGc, typeListToArraySnapshot, typeMapGetAllSnapshot, typeMapGetSnapshot };\n//# sourceMappingURL=yjs.mjs.map\n","/* eslint-env browser */\n\n/**\n * Helpers to work with IndexedDB.\n *\n * @module indexeddb\n */\n\nimport * as promise from './promise.js'\nimport * as error from './error.js'\n\n/* c8 ignore start */\n\n/**\n * IDB Request to Promise transformer\n *\n * @param {IDBRequest} request\n * @return {Promise}\n */\nexport const rtop = request => promise.create((resolve, reject) => {\n // @ts-ignore\n request.onerror = event => reject(new Error(event.target.error))\n // @ts-ignore\n request.onsuccess = event => resolve(event.target.result)\n})\n\n/**\n * @param {string} name\n * @param {function(IDBDatabase):any} initDB Called when the database is first created\n * @return {Promise}\n */\nexport const openDB = (name, initDB) => promise.create((resolve, reject) => {\n const request = indexedDB.open(name)\n /**\n * @param {any} event\n */\n request.onupgradeneeded = event => initDB(event.target.result)\n /**\n * @param {any} event\n */\n request.onerror = event => reject(error.create(event.target.error))\n /**\n * @param {any} event\n */\n request.onsuccess = event => {\n /**\n * @type {IDBDatabase}\n */\n const db = event.target.result\n db.onversionchange = () => { db.close() }\n resolve(db)\n }\n})\n\n/**\n * @param {string} name\n */\nexport const deleteDB = name => rtop(indexedDB.deleteDatabase(name))\n\n/**\n * @param {IDBDatabase} db\n * @param {Array|Array>} definitions\n */\nexport const createStores = (db, definitions) => definitions.forEach(d =>\n // @ts-ignore\n db.createObjectStore.apply(db, d)\n)\n\n/**\n * @param {IDBDatabase} db\n * @param {Array} stores\n * @param {\"readwrite\"|\"readonly\"} [access]\n * @return {Array}\n */\nexport const transact = (db, stores, access = 'readwrite') => {\n const transaction = db.transaction(stores, access)\n return stores.map(store => getStore(transaction, store))\n}\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise}\n */\nexport const count = (store, range) =>\n rtop(store.count(range))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | Array } key\n * @return {Promise>}\n */\nexport const get = (store, key) =>\n rtop(store.get(key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | IDBKeyRange | Array } key\n */\nexport const del = (store, key) =>\n rtop(store.delete(key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array} [key]\n */\nexport const put = (store, item, key) =>\n rtop(store.put(item, key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array} key\n * @return {Promise}\n */\nexport const add = (store, item, key) =>\n rtop(store.add(item, key))\n\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date} item\n * @return {Promise} Returns the generated key\n */\nexport const addAutoKey = (store, item) =>\n rtop(store.add(item))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @param {number} [limit]\n * @return {Promise>}\n */\nexport const getAll = (store, range, limit) =>\n rtop(store.getAll(range, limit))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @param {number} [limit]\n * @return {Promise>}\n */\nexport const getAllKeys = (store, range, limit) =>\n rtop(store.getAllKeys(range, limit))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} query\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n * @return {Promise}\n */\nexport const queryFirst = (store, query, direction) => {\n /**\n * @type {any}\n */\n let first = null\n return iterateKeys(store, query, key => {\n first = key\n return false\n }, direction).then(() => first)\n}\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange?} [range]\n * @return {Promise}\n */\nexport const getLastKey = (store, range = null) => queryFirst(store, range, 'prev')\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange?} [range]\n * @return {Promise}\n */\nexport const getFirstKey = (store, range = null) => queryFirst(store, range, 'next')\n\n/**\n * @typedef KeyValuePair\n * @type {Object}\n * @property {any} k key\n * @property {any} v Value\n */\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @param {number} [limit]\n * @return {Promise>}\n */\nexport const getAllKeysValues = (store, range, limit) =>\n // @ts-ignore\n promise.all([getAllKeys(store, range, limit), getAll(store, range, limit)]).then(([ks, vs]) => ks.map((k, i) => ({ k, v: vs[i] })))\n\n/**\n * @param {any} request\n * @param {function(IDBCursorWithValue):void|boolean|Promise} f\n * @return {Promise}\n */\nconst iterateOnRequest = (request, f) => promise.create((resolve, reject) => {\n request.onerror = reject\n /**\n * @param {any} event\n */\n request.onsuccess = async event => {\n const cursor = event.target.result\n if (cursor === null || (await f(cursor)) === false) {\n return resolve()\n }\n cursor.continue()\n }\n})\n\n/**\n * Iterate on keys and values\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any,any):void|boolean|Promise} f Callback that receives (value, key)\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\nexport const iterate = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openCursor(keyrange, direction), cursor => f(cursor.value, cursor.key))\n\n/**\n * Iterate on the keys (no values)\n *\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any):void|boolean|Promise} f callback that receives the key\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\nexport const iterateKeys = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openKeyCursor(keyrange, direction), cursor => f(cursor.key))\n\n/**\n * Open store from transaction\n * @param {IDBTransaction} t\n * @param {String} store\n * @returns {IDBObjectStore}\n */\nexport const getStore = (t, store) => t.objectStore(store)\n\n/**\n * @param {any} lower\n * @param {any} upper\n * @param {boolean} lowerOpen\n * @param {boolean} upperOpen\n */\nexport const createIDBKeyRangeBound = (lower, upper, lowerOpen, upperOpen) => IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)\n\n/**\n * @param {any} upper\n * @param {boolean} upperOpen\n */\nexport const createIDBKeyRangeUpperBound = (upper, upperOpen) => IDBKeyRange.upperBound(upper, upperOpen)\n\n/**\n * @param {any} lower\n * @param {boolean} lowerOpen\n */\nexport const createIDBKeyRangeLowerBound = (lower, lowerOpen) => IDBKeyRange.lowerBound(lower, lowerOpen)\n\n/* c8 ignore stop */\n","import * as Y from 'yjs'\nimport * as idb from 'lib0/indexeddb'\nimport * as promise from 'lib0/promise'\nimport { Observable } from 'lib0/observable'\n\nconst customStoreName = 'custom'\nconst updatesStoreName = 'updates'\n\nexport const PREFERRED_TRIM_SIZE = 500\n\n/**\n * @param {IndexeddbPersistence} idbPersistence\n * @param {function(IDBObjectStore):void} [beforeApplyUpdatesCallback]\n * @param {function(IDBObjectStore):void} [afterApplyUpdatesCallback]\n */\nexport const fetchUpdates = (idbPersistence, beforeApplyUpdatesCallback = () => {}, afterApplyUpdatesCallback = () => {}) => {\n const [updatesStore] = idb.transact(/** @type {IDBDatabase} */ (idbPersistence.db), [updatesStoreName]) // , 'readonly')\n return idb.getAll(updatesStore, idb.createIDBKeyRangeLowerBound(idbPersistence._dbref, false)).then(updates => {\n if (!idbPersistence._destroyed) {\n beforeApplyUpdatesCallback(updatesStore)\n Y.transact(idbPersistence.doc, () => {\n updates.forEach(val => Y.applyUpdate(idbPersistence.doc, val))\n }, idbPersistence, false)\n afterApplyUpdatesCallback(updatesStore)\n }\n })\n .then(() => idb.getLastKey(updatesStore).then(lastKey => { idbPersistence._dbref = lastKey + 1 }))\n .then(() => idb.count(updatesStore).then(cnt => { idbPersistence._dbsize = cnt }))\n .then(() => updatesStore)\n}\n\n/**\n * @param {IndexeddbPersistence} idbPersistence\n * @param {boolean} forceStore\n */\nexport const storeState = (idbPersistence, forceStore = true) =>\n fetchUpdates(idbPersistence)\n .then(updatesStore => {\n if (forceStore || idbPersistence._dbsize >= PREFERRED_TRIM_SIZE) {\n idb.addAutoKey(updatesStore, Y.encodeStateAsUpdate(idbPersistence.doc))\n .then(() => idb.del(updatesStore, idb.createIDBKeyRangeUpperBound(idbPersistence._dbref, true)))\n .then(() => idb.count(updatesStore).then(cnt => { idbPersistence._dbsize = cnt }))\n }\n })\n\n/**\n * @param {string} name\n */\nexport const clearDocument = name => idb.deleteDB(name)\n\n/**\n * @extends Observable\n */\nexport class IndexeddbPersistence extends Observable {\n /**\n * @param {string} name\n * @param {Y.Doc} doc\n */\n constructor (name, doc) {\n super()\n this.doc = doc\n this.name = name\n this._dbref = 0\n this._dbsize = 0\n this._destroyed = false\n /**\n * @type {IDBDatabase|null}\n */\n this.db = null\n this.synced = false\n this._db = idb.openDB(name, db =>\n idb.createStores(db, [\n ['updates', { autoIncrement: true }],\n ['custom']\n ])\n )\n /**\n * @type {Promise}\n */\n this.whenSynced = promise.create(resolve => this.on('synced', () => resolve(this)))\n\n this._db.then(db => {\n this.db = db\n /**\n * @param {IDBObjectStore} updatesStore\n */\n const beforeApplyUpdatesCallback = (updatesStore) => idb.addAutoKey(updatesStore, Y.encodeStateAsUpdate(doc))\n const afterApplyUpdatesCallback = () => {\n if (this._destroyed) return this\n this.synced = true\n this.emit('synced', [this])\n }\n fetchUpdates(this, beforeApplyUpdatesCallback, afterApplyUpdatesCallback)\n })\n /**\n * Timeout in ms untill data is merged and persisted in idb.\n */\n this._storeTimeout = 1000\n /**\n * @type {any}\n */\n this._storeTimeoutId = null\n /**\n * @param {Uint8Array} update\n * @param {any} origin\n */\n this._storeUpdate = (update, origin) => {\n if (this.db && origin !== this) {\n const [updatesStore] = idb.transact(/** @type {IDBDatabase} */ (this.db), [updatesStoreName])\n idb.addAutoKey(updatesStore, update)\n if (++this._dbsize >= PREFERRED_TRIM_SIZE) {\n // debounce store call\n if (this._storeTimeoutId !== null) {\n clearTimeout(this._storeTimeoutId)\n }\n this._storeTimeoutId = setTimeout(() => {\n storeState(this, false)\n this._storeTimeoutId = null\n }, this._storeTimeout)\n }\n }\n }\n doc.on('update', this._storeUpdate)\n this.destroy = this.destroy.bind(this)\n doc.on('destroy', this.destroy)\n }\n\n destroy () {\n if (this._storeTimeoutId) {\n clearTimeout(this._storeTimeoutId)\n }\n this.doc.off('update', this._storeUpdate)\n this.doc.off('destroy', this.destroy)\n this._destroyed = true\n return this._db.then(db => {\n db.close()\n })\n }\n\n /**\n * Destroys this instance and removes all data from indexeddb.\n *\n * @return {Promise}\n */\n clearData () {\n return this.destroy().then(() => {\n idb.deleteDB(this.name)\n })\n }\n\n /**\n * @param {String | number | ArrayBuffer | Date} key\n * @return {Promise}\n */\n get (key) {\n return this._db.then(db => {\n const [custom] = idb.transact(db, [customStoreName], 'readonly')\n return idb.get(custom, key)\n })\n }\n\n /**\n * @param {String | number | ArrayBuffer | Date} key\n * @param {String | number | ArrayBuffer | Date} value\n * @return {Promise}\n */\n set (key, value) {\n return this._db.then(db => {\n const [custom] = idb.transact(db, [customStoreName])\n return idb.put(custom, value, key)\n })\n }\n\n /**\n * @param {String | number | ArrayBuffer | Date} key\n * @return {Promise}\n */\n del (key) {\n return this._db.then(db => {\n const [custom] = idb.transact(db, [customStoreName])\n return idb.del(custom, key)\n })\n }\n}\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nconst floor = Math.floor;\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nconst min = (a, b) => a < b ? a : b;\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nconst max = (a, b) => a > b ? a : b;\n\n/* eslint-env browser */\nconst BIT8 = 128;\nconst BITS7 = 127;\n\n/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nconst _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str));\n const len = encodedString.length;\n const buf = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i));\n }\n return buf\n};\n\n/* c8 ignore next */\nconst utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null);\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nconst _encodeUtf8Native = str => utf8TextEncoder.encode(str);\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* c8 ignore next */\nconst encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill;\n\n/* c8 ignore next */\nlet utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true });\n\n/* c8 ignore start */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* c8 ignore next */\n utf8TextDecoder = null;\n}\n\n/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nconst write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length;\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf);\n encoder.cbuf = new Uint8Array(bufferLen * 2);\n encoder.cpos = 0;\n }\n encoder.cbuf[encoder.cpos++] = num;\n};\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nconst writeVarUint = (encoder, num) => {\n while (num > BITS7) {\n write(encoder, BIT8 | (BITS7 & num));\n num = floor(num / 128); // shift >>> 7\n }\n write(encoder, BITS7 & num);\n};\n\n/**\n * A cache to store strings temporarily\n */\nconst _strBuffer = new Uint8Array(30000);\nconst _maxStrBSize = _strBuffer.length / 3;\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nconst _writeVarStringNative = (encoder, str) => {\n if (str.length < _maxStrBSize) {\n // We can encode the string into the existing buffer\n /* c8 ignore next */\n const written = utf8TextEncoder.encodeInto(str, _strBuffer).written || 0;\n writeVarUint(encoder, written);\n for (let i = 0; i < written; i++) {\n write(encoder, _strBuffer[i]);\n }\n } else {\n writeVarUint8Array(encoder, encodeUtf8(str));\n }\n};\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nconst _writeVarStringPolyfill = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str));\n const len = encodedString.length;\n writeVarUint(encoder, len);\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)));\n }\n};\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\n/* c8 ignore next */\nconst writeVarString = (utf8TextEncoder && /** @type {any} */ (utf8TextEncoder).encodeInto) ? _writeVarStringNative : _writeVarStringPolyfill;\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nconst writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length;\n const cpos = encoder.cpos;\n const leftCopyLen = min(bufferLen - cpos, uint8Array.length);\n const rightCopyLen = uint8Array.length - leftCopyLen;\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos);\n encoder.cpos += leftCopyLen;\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf);\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(max(bufferLen * 2, rightCopyLen));\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen));\n encoder.cpos = rightCopyLen;\n }\n};\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nconst writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength);\n writeUint8Array(encoder, uint8Array);\n};\n\n/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* c8 ignore next */\nconst create = s => new Error(s);\n\n/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nconst errorUnexpectedEndOfArray = create('Unexpected end of array');\nconst errorIntegerOutOfRange = create('Integer out of Range');\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nconst readUint8Array = (decoder, len) => {\n const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len);\n decoder.pos += len;\n return view\n};\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nconst readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder));\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nconst readUint8 = decoder => decoder.arr[decoder.pos++];\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nconst readVarUint = decoder => {\n let num = 0;\n let mult = 1;\n const len = decoder.arr.length;\n while (decoder.pos < len) {\n const r = decoder.arr[decoder.pos++];\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & BITS7) * mult; // shift $r << (7*#iterations) and add it to num\n mult *= 128; // next iteration, shift 7 \"more\" to the left\n if (r < BIT8) {\n return num\n }\n /* c8 ignore start */\n if (num > MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n};\n\n/**\n * We don't test this function anymore as we use native decoding/encoding by default now.\n * Better not modify this anymore..\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\n/* c8 ignore start */\nconst _readVarStringPolyfill = decoder => {\n let remainingLen = readVarUint(decoder);\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)); // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder));\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000;\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen);\n decoder.pos += nextLen;\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes));\n remainingLen -= nextLen;\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n};\n/* c8 ignore stop */\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n */\nconst _readVarStringNative = decoder =>\n /** @type any */ (utf8TextDecoder).decode(readVarUint8Array(decoder));\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n *\n */\n/* c8 ignore next */\nconst readVarString = utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill;\n\nvar AuthMessageType;\n(function (AuthMessageType) {\n AuthMessageType[AuthMessageType[\"Token\"] = 0] = \"Token\";\n AuthMessageType[AuthMessageType[\"PermissionDenied\"] = 1] = \"PermissionDenied\";\n AuthMessageType[AuthMessageType[\"Authenticated\"] = 2] = \"Authenticated\";\n})(AuthMessageType || (AuthMessageType = {}));\nconst writeAuthentication = (encoder, auth) => {\n writeVarUint(encoder, AuthMessageType.Token);\n writeVarString(encoder, auth);\n};\nconst writePermissionDenied = (encoder, reason) => {\n writeVarUint(encoder, AuthMessageType.PermissionDenied);\n writeVarString(encoder, reason);\n};\nconst writeAuthenticated = (encoder, scope) => {\n writeVarUint(encoder, AuthMessageType.Authenticated);\n writeVarString(encoder, scope);\n};\nconst readAuthMessage = (decoder, permissionDeniedHandler, authenticatedHandler) => {\n switch (readVarUint(decoder)) {\n case AuthMessageType.PermissionDenied: {\n permissionDeniedHandler(readVarString(decoder));\n break;\n }\n case AuthMessageType.Authenticated: {\n authenticatedHandler(readVarString(decoder));\n break;\n }\n }\n};\n\n/**\n * The server is terminating the connection because a data frame was received\n * that is too large.\n * See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/code\n */\nconst MessageTooBig = {\n code: 1009,\n reason: 'Message Too Big',\n};\n/**\n * The server successfully processed the request, asks that the requester reset\n * its document view, and is not returning any content.\n */\nconst ResetConnection = {\n code: 4205,\n reason: 'Reset Connection',\n};\n/**\n * Similar to Forbidden, but specifically for use when authentication is required and has\n * failed or has not yet been provided.\n */\nconst Unauthorized = {\n code: 4401,\n reason: 'Unauthorized',\n};\n/**\n * The request contained valid data and was understood by the server, but the server\n * is refusing action.\n */\nconst Forbidden = {\n code: 4403,\n reason: 'Forbidden',\n};\n/**\n * The server timed out waiting for the request.\n */\nconst ConnectionTimeout = {\n code: 4408,\n reason: 'Connection Timeout',\n};\n\nconst awarenessStatesToArray = (states) => {\n return Array.from(states.entries()).map(([key, value]) => {\n return {\n clientId: key,\n ...value,\n };\n });\n};\n\n/**\n * State of the WebSocket connection.\n * https://developer.mozilla.org/de/docs/Web/API/WebSocket/readyState\n */\nvar WsReadyStates;\n(function (WsReadyStates) {\n WsReadyStates[WsReadyStates[\"Connecting\"] = 0] = \"Connecting\";\n WsReadyStates[WsReadyStates[\"Open\"] = 1] = \"Open\";\n WsReadyStates[WsReadyStates[\"Closing\"] = 2] = \"Closing\";\n WsReadyStates[WsReadyStates[\"Closed\"] = 3] = \"Closed\";\n})(WsReadyStates || (WsReadyStates = {}));\n\nexport { ConnectionTimeout, Forbidden, MessageTooBig, ResetConnection, Unauthorized, WsReadyStates, awarenessStatesToArray, readAuthMessage, writeAuthenticated, writeAuthentication, writePermissionDenied };\n//# sourceMappingURL=hocuspocus-common.esm.js.map\n","function applyDefaults(options) {\n if (!options) {\n options = {};\n }\n return {\n delay: (options.delay === undefined) ? 200 : options.delay,\n initialDelay: (options.initialDelay === undefined) ? 0 : options.initialDelay,\n minDelay: (options.minDelay === undefined) ? 0 : options.minDelay,\n maxDelay: (options.maxDelay === undefined) ? 0 : options.maxDelay,\n factor: (options.factor === undefined) ? 0 : options.factor,\n maxAttempts: (options.maxAttempts === undefined) ? 3 : options.maxAttempts,\n timeout: (options.timeout === undefined) ? 0 : options.timeout,\n jitter: (options.jitter === true),\n initialJitter: (options.initialJitter === true),\n handleError: (options.handleError === undefined) ? null : options.handleError,\n handleTimeout: (options.handleTimeout === undefined) ? null : options.handleTimeout,\n beforeAttempt: (options.beforeAttempt === undefined) ? null : options.beforeAttempt,\n calculateDelay: (options.calculateDelay === undefined) ? null : options.calculateDelay\n };\n}\nexport async function sleep(delay) {\n return new Promise((resolve) => setTimeout(resolve, delay));\n}\nexport function defaultCalculateDelay(context, options) {\n let delay = options.delay;\n if (delay === 0) {\n // no delay between attempts\n return 0;\n }\n if (options.factor) {\n delay *= Math.pow(options.factor, context.attemptNum - 1);\n if (options.maxDelay !== 0) {\n delay = Math.min(delay, options.maxDelay);\n }\n }\n if (options.jitter) {\n // Jitter will result in a random value between `minDelay` and\n // calculated delay for a given attempt.\n // See https://www.awsarchitectureblog.com/2015/03/backoff.html\n // We're using the \"full jitter\" strategy.\n const min = Math.ceil(options.minDelay);\n const max = Math.floor(delay);\n delay = Math.floor(Math.random() * (max - min + 1)) + min;\n }\n return Math.round(delay);\n}\nexport async function retry(attemptFunc, attemptOptions) {\n const options = applyDefaults(attemptOptions);\n for (const prop of [\n 'delay',\n 'initialDelay',\n 'minDelay',\n 'maxDelay',\n 'maxAttempts',\n 'timeout'\n ]) {\n const value = options[prop];\n if (!Number.isInteger(value) || (value < 0)) {\n throw new Error(`Value for ${prop} must be an integer greater than or equal to 0`);\n }\n }\n if ((options.factor.constructor !== Number) || (options.factor < 0)) {\n throw new Error(`Value for factor must be a number greater than or equal to 0`);\n }\n if (options.delay < options.minDelay) {\n throw new Error(`delay cannot be less than minDelay (delay: ${options.delay}, minDelay: ${options.minDelay}`);\n }\n const context = {\n attemptNum: 0,\n attemptsRemaining: options.maxAttempts ? options.maxAttempts : -1,\n aborted: false,\n abort() {\n context.aborted = true;\n }\n };\n const calculateDelay = options.calculateDelay || defaultCalculateDelay;\n async function makeAttempt() {\n if (options.beforeAttempt) {\n options.beforeAttempt(context, options);\n }\n if (context.aborted) {\n const err = new Error(`Attempt aborted`);\n err.code = 'ATTEMPT_ABORTED';\n throw err;\n }\n const onError = async (err) => {\n if (options.handleError) {\n await options.handleError(err, context, options);\n }\n if (context.aborted || (context.attemptsRemaining === 0)) {\n throw err;\n }\n // We are about to try again so increment attempt number\n context.attemptNum++;\n const delay = calculateDelay(context, options);\n if (delay) {\n await sleep(delay);\n }\n return makeAttempt();\n };\n if (context.attemptsRemaining > 0) {\n context.attemptsRemaining--;\n }\n if (options.timeout) {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n if (options.handleTimeout) {\n // If calling handleTimeout throws an error that is not wrapped in a promise\n // we want to catch the error and reject.\n try {\n resolve(options.handleTimeout(context, options));\n }\n catch (e) {\n reject(e);\n }\n }\n else {\n const err = new Error(`Retry timeout (attemptNum: ${context.attemptNum}, timeout: ${options.timeout})`);\n err.code = 'ATTEMPT_TIMEOUT';\n reject(err);\n }\n }, options.timeout);\n attemptFunc(context, options).then((result) => {\n clearTimeout(timer);\n resolve(result);\n }).catch((err) => {\n clearTimeout(timer);\n // Calling resolve with a Promise that rejects here will result\n // in an unhandled rejection. Calling `reject` with errors\n // does not result in an unhandled rejection\n onError(err).then(resolve).catch(reject);\n });\n });\n }\n else {\n // No timeout provided so wait indefinitely for the returned promise\n // to be resolved.\n return attemptFunc(context, options).catch(onError);\n }\n }\n const initialDelay = options.calculateDelay\n ? options.calculateDelay(context, options)\n : options.initialDelay;\n if (initialDelay) {\n await sleep(initialDelay);\n }\n if (context.attemptNum < 1 && options.initialJitter) {\n const delay = calculateDelay(context, options);\n if (delay) {\n await sleep(delay);\n }\n }\n return makeAttempt();\n}\n","import { WsReadyStates, Unauthorized, Forbidden, MessageTooBig, readAuthMessage, writeAuthentication, awarenessStatesToArray } from '@hocuspocus/common';\nimport * as Y from 'yjs';\nimport { retry } from '@lifeomic/attempt';\n\n/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map}\n *\n * @function\n */\nconst create$2 = () => new Map();\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template V,K\n * @template {Map} MAP\n * @param {MAP} map\n * @param {K} key\n * @param {function():V} createT\n * @return {V}\n */\nconst setIfUndefined = (map, key, createT) => {\n let set = map.get(key);\n if (set === undefined) {\n map.set(key, set = createT());\n }\n return set\n};\n\n/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nconst create$1 = () => new Set();\n\n/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike|Iterable} arraylike\n * @return {T}\n */\nconst from = Array.from;\n\n/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nconst fromCharCode = String.fromCharCode;\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase();\n\nconst trimLeftRegex = /^\\s*/g;\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst trimLeft = s => s.replace(trimLeftRegex, '');\n\nconst fromCamelCaseRegex = /([A-Z])/g;\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nconst fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`));\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nconst _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str));\n const len = encodedString.length;\n const buf = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i));\n }\n return buf\n};\n\n/* c8 ignore next */\nconst utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null);\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nconst _encodeUtf8Native = str => utf8TextEncoder.encode(str);\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* c8 ignore next */\nconst encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill;\n\n/* c8 ignore next */\nlet utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true });\n\n/* c8 ignore start */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* c8 ignore next */\n utf8TextDecoder = null;\n}\n\n/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* c8 ignore next */\nconst undefinedToNull = v => v === undefined ? null : v;\n\n/* eslint-env browser */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* c8 ignore start */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map();\n }\n\n /**\n * @param {string} key\n * @param {any} newValue\n */\n setItem (key, newValue) {\n this.map.set(key, newValue);\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n/* c8 ignore stop */\n\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill();\nlet usePolyfill = true;\n\n/* c8 ignore start */\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n if (typeof localStorage !== 'undefined' && localStorage) {\n _localStorage = localStorage;\n usePolyfill = false;\n }\n} catch (e) { }\n/* c8 ignore stop */\n\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\n/* c8 ignore next */\nconst varStorage = _localStorage;\n\n/**\n * A polyfill for `addEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nconst onChange = eventHandler => usePolyfill || addEventListener('storage', /** @type {any} */ (eventHandler));\n\n/**\n * A polyfill for `removeEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nconst offChange = eventHandler => usePolyfill || removeEventListener('storage', /** @type {any} */ (eventHandler));\n\n/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @param {Object} obj\n */\nconst keys = Object.keys;\n\n/**\n * @todo implement mapToArray & map\n *\n * @template R\n * @param {Object} obj\n * @param {function(any,string):R} f\n * @return {Array}\n */\nconst map = (obj, f) => {\n const results = [];\n for (const key in obj) {\n results.push(f(obj[key], key));\n }\n return results\n};\n\n/**\n * @param {Object} obj\n * @return {number}\n */\nconst length$1 = obj => keys(obj).length;\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nconst hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);\n\n/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nconst equalityStrict = (a, b) => a === b;\n\n/* c8 ignore start */\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst equalityDeep = (a, b) => {\n if (a == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a);\n b = new Uint8Array(b);\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case Object:\n if (length$1(a) !== length$1(b)) {\n return false\n }\n for (const key in a) {\n if (!hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n};\n\n/**\n * @template V\n * @template {V} OPTS\n *\n * @param {V} value\n * @param {Array} options\n */\n// @ts-ignore\nconst isOneOf = (value, options) => options.includes(value);\n\n/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\n/* c8 ignore next 2 */\n// @ts-ignore\nconst isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name) && Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\n/* c8 ignore next */\nconst isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && !isNode;\n/* c8 ignore next 3 */\ntypeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false;\n\n/**\n * @type {Map}\n */\nlet params;\n\n/* c8 ignore start */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = create$2();\n const pargs = process.argv;\n let currParamName = null;\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i];\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '');\n }\n currParamName = parg;\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg);\n currParamName = null;\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '');\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = create$2(); // eslint-disable-next-line no-undef\n (location.search || '?').slice(1).split('&').forEach((kv) => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=');\n params.set(`--${fromCamelCase(key, '-')}`, value);\n params.set(`-${fromCamelCase(key, '-')}`, value);\n }\n });\n } else {\n params = create$2();\n }\n }\n return params\n};\n/* c8 ignore stop */\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next */\nconst hasParam = (name) => computeParams().has(name);\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 4 */\nconst getVariable = (name) =>\n isNode\n ? undefinedToNull(process.env[name.toUpperCase()])\n : undefinedToNull(varStorage.getItem(name));\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next 2 */\nconst hasConf = (name) =>\n hasParam('--' + name) || getVariable(name) !== null;\n\n/* c8 ignore next */\nhasConf('production');\n\n/* c8 ignore next 2 */\nconst forceColor = isNode &&\n isOneOf(process.env.FORCE_COLOR, ['true', '1', '2']);\n\n/* c8 ignore start */\n!hasParam('no-colors') &&\n (!isNode || process.stdout.isTTY || forceColor) && (\n !isNode || hasParam('color') || forceColor ||\n getVariable('COLORTERM') !== null ||\n (getVariable('TERM') || '').includes('color')\n);\n/* c8 ignore stop */\n\n/**\n * Common Math expressions.\n *\n * @module math\n */\n\nconst floor = Math.floor;\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nconst min = (a, b) => a < b ? a : b;\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nconst max = (a, b) => a > b ? a : b;\n\n/* eslint-env browser */\nconst BIT7 = 64;\nconst BIT8 = 128;\nconst BITS6 = 63;\nconst BITS7 = 127;\n\n/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\n\n/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nclass Encoder {\n constructor () {\n this.cpos = 0;\n this.cbuf = new Uint8Array(100);\n /**\n * @type {Array}\n */\n this.bufs = [];\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nconst createEncoder = () => new Encoder();\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nconst length = encoder => {\n let len = encoder.cpos;\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length;\n }\n return len\n};\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nconst toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder));\n let curPos = 0;\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i];\n uint8arr.set(d, curPos);\n curPos += d.length;\n }\n uint8arr.set(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos), curPos);\n return uint8arr\n};\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nconst write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length;\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf);\n encoder.cbuf = new Uint8Array(bufferLen * 2);\n encoder.cpos = 0;\n }\n encoder.cbuf[encoder.cpos++] = num;\n};\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nconst writeVarUint = (encoder, num) => {\n while (num > BITS7) {\n write(encoder, BIT8 | (BITS7 & num));\n num = floor(num / 128); // shift >>> 7\n }\n write(encoder, BITS7 & num);\n};\n\n/**\n * A cache to store strings temporarily\n */\nconst _strBuffer = new Uint8Array(30000);\nconst _maxStrBSize = _strBuffer.length / 3;\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nconst _writeVarStringNative = (encoder, str) => {\n if (str.length < _maxStrBSize) {\n // We can encode the string into the existing buffer\n /* c8 ignore next */\n const written = utf8TextEncoder.encodeInto(str, _strBuffer).written || 0;\n writeVarUint(encoder, written);\n for (let i = 0; i < written; i++) {\n write(encoder, _strBuffer[i]);\n }\n } else {\n writeVarUint8Array(encoder, encodeUtf8(str));\n }\n};\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nconst _writeVarStringPolyfill = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str));\n const len = encodedString.length;\n writeVarUint(encoder, len);\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)));\n }\n};\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\n/* c8 ignore next */\nconst writeVarString = (utf8TextEncoder && /** @type {any} */ (utf8TextEncoder).encodeInto) ? _writeVarStringNative : _writeVarStringPolyfill;\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nconst writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length;\n const cpos = encoder.cpos;\n const leftCopyLen = min(bufferLen - cpos, uint8Array.length);\n const rightCopyLen = uint8Array.length - leftCopyLen;\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos);\n encoder.cpos += leftCopyLen;\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf);\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(max(bufferLen * 2, rightCopyLen));\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen));\n encoder.cpos = rightCopyLen;\n }\n};\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nconst writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength);\n writeUint8Array(encoder, uint8Array);\n};\n\n/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* c8 ignore next */\nconst create = s => new Error(s);\n\n/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nconst errorUnexpectedEndOfArray = create('Unexpected end of array');\nconst errorIntegerOutOfRange = create('Integer out of Range');\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nclass Decoder {\n /**\n * @param {Uint8Array} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array}\n */\n this.arr = uint8Array;\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0;\n }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nconst createDecoder = uint8Array => new Decoder(uint8Array);\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nconst readUint8Array = (decoder, len) => {\n const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len);\n decoder.pos += len;\n return view\n};\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nconst readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder));\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nconst readUint8 = decoder => decoder.arr[decoder.pos++];\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nconst readVarUint = decoder => {\n let num = 0;\n let mult = 1;\n const len = decoder.arr.length;\n while (decoder.pos < len) {\n const r = decoder.arr[decoder.pos++];\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & BITS7) * mult; // shift $r << (7*#iterations) and add it to num\n mult *= 128; // next iteration, shift 7 \"more\" to the left\n if (r < BIT8) {\n return num\n }\n /* c8 ignore start */\n if (num > MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n};\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if number is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nconst readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++];\n let num = r & BITS6;\n let mult = 64;\n const sign = (r & BIT7) > 0 ? -1 : 1;\n if ((r & BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n const len = decoder.arr.length;\n while (decoder.pos < len) {\n r = decoder.arr[decoder.pos++];\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & BITS7) * mult;\n mult *= 128;\n if (r < BIT8) {\n return sign * num\n }\n /* c8 ignore start */\n if (num > MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n};\n\n/**\n * We don't test this function anymore as we use native decoding/encoding by default now.\n * Better not modify this anymore..\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\n/* c8 ignore start */\nconst _readVarStringPolyfill = decoder => {\n let remainingLen = readVarUint(decoder);\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)); // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder));\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000;\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen);\n decoder.pos += nextLen;\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes));\n remainingLen -= nextLen;\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n};\n/* c8 ignore stop */\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n */\nconst _readVarStringNative = decoder =>\n /** @type any */ (utf8TextDecoder).decode(readVarUint8Array(decoder));\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n *\n */\n/* c8 ignore next */\nconst readVarString = utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill;\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nconst peekVarString = decoder => {\n const pos = decoder.pos;\n const s = readVarString(decoder);\n decoder.pos = pos;\n return s\n};\n\n/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\n/**\n * @param {number} len\n */\nconst createUint8ArrayFromLen = len => new Uint8Array(len);\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nconst createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length);\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nconst createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer);\n\n/* c8 ignore start */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = '';\n for (let i = 0; i < bytes.byteLength; i++) {\n s += fromCharCode(bytes[i]);\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n};\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64');\n\n/* c8 ignore start */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s);\n const bytes = createUint8ArrayFromLen(a.length);\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i);\n }\n return bytes\n};\n/* c8 ignore stop */\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64');\n return createUint8ArrayViewFromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength)\n};\n\n/* c8 ignore next */\nconst toBase64 = isBrowser ? toBase64Browser : toBase64Node;\n\n/* c8 ignore next */\nconst fromBase64 = isBrowser ? fromBase64Browser : fromBase64Node;\n\n/* eslint-env browser */\n\n/**\n * @typedef {Object} Channel\n * @property {Set} Channel.subs\n * @property {any} Channel.bc\n */\n\n/**\n * @type {Map}\n */\nconst channels = new Map();\n\n/* c8 ignore start */\nclass LocalStoragePolyfill {\n /**\n * @param {string} room\n */\n constructor (room) {\n this.room = room;\n /**\n * @type {null|function({data:ArrayBuffer}):void}\n */\n this.onmessage = null;\n /**\n * @param {any} e\n */\n this._onChange = e => e.key === room && this.onmessage !== null && this.onmessage({ data: fromBase64(e.newValue || '') });\n onChange(this._onChange);\n }\n\n /**\n * @param {ArrayBuffer} buf\n */\n postMessage (buf) {\n varStorage.setItem(this.room, toBase64(createUint8ArrayFromArrayBuffer(buf)));\n }\n\n close () {\n offChange(this._onChange);\n }\n}\n/* c8 ignore stop */\n\n// Use BroadcastChannel or Polyfill\n/* c8 ignore next */\nconst BC = typeof BroadcastChannel === 'undefined' ? LocalStoragePolyfill : BroadcastChannel;\n\n/**\n * @param {string} room\n * @return {Channel}\n */\nconst getChannel = room =>\n setIfUndefined(channels, room, () => {\n const subs = create$1();\n const bc = new BC(room);\n /**\n * @param {{data:ArrayBuffer}} e\n */\n /* c8 ignore next */\n bc.onmessage = e => subs.forEach(sub => sub(e.data, 'broadcastchannel'));\n return {\n bc, subs\n }\n });\n\n/**\n * Subscribe to global `publish` events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nconst subscribe = (room, f) => {\n getChannel(room).subs.add(f);\n return f\n};\n\n/**\n * Unsubscribe from `publish` global events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nconst unsubscribe = (room, f) => {\n const channel = getChannel(room);\n const unsubscribed = channel.subs.delete(f);\n if (unsubscribed && channel.subs.size === 0) {\n channel.bc.close();\n channels.delete(room);\n }\n return unsubscribed\n};\n\n/**\n * Publish data to all subscribers (including subscribers on this tab)\n *\n * @function\n * @param {string} room\n * @param {any} data\n * @param {any} [origin]\n */\nconst publish = (room, data, origin = null) => {\n const c = getChannel(room);\n c.bc.postMessage(data);\n c.subs.forEach(sub => sub(data, origin));\n};\n\n/**\n * Mutual exclude for JavaScript.\n *\n * @module mutex\n */\n\n/**\n * @callback mutex\n * @param {function():void} cb Only executed when this mutex is not in the current stack\n * @param {function():void} [elseCb] Executed when this mutex is in the current stack\n */\n\n/**\n * Creates a mutual exclude function with the following property:\n *\n * ```js\n * const mutex = createMutex()\n * mutex(() => {\n * // This function is immediately executed\n * mutex(() => {\n * // This function is not executed, as the mutex is already active.\n * })\n * })\n * ```\n *\n * @return {mutex} A mutual exclude function\n * @public\n */\nconst createMutex = () => {\n let token = true;\n return (f, g) => {\n if (token) {\n token = false;\n try {\n f();\n } finally {\n token = true;\n }\n } else if (g !== undefined) {\n g();\n }\n }\n};\n\n/**\n * Utility module to work with time.\n *\n * @module time\n */\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nconst getUnixTime = Date.now;\n\n/**\n * Observable class prototype.\n *\n * @module observable\n */\n\n/* c8 ignore start */\n/**\n * Handles named events.\n *\n * @deprecated\n * @template N\n */\nclass Observable {\n constructor () {\n /**\n * Some desc.\n * @type {Map}\n */\n this._observers = create$2();\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n on (name, f) {\n setIfUndefined(this._observers, name, create$1).add(f);\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n once (name, f) {\n /**\n * @param {...any} args\n */\n const _f = (...args) => {\n this.off(name, _f);\n f(...args);\n };\n this.on(name, _f);\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n off (name, f) {\n const observers = this._observers.get(name);\n if (observers !== undefined) {\n observers.delete(f);\n if (observers.size === 0) {\n this._observers.delete(name);\n }\n }\n }\n\n /**\n * Emit a named event. All registered event listeners that listen to the\n * specified name will receive the event.\n *\n * @todo This should catch exceptions\n *\n * @param {N} name The event name.\n * @param {Array} args The arguments that are applied to the event listener.\n */\n emit (name, args) {\n // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n return from((this._observers.get(name) || create$2()).values()).forEach(f => f(...args))\n }\n\n destroy () {\n this._observers = create$2();\n }\n}\n/* c8 ignore end */\n\n/**\n * @module awareness-protocol\n */\n\nconst outdatedTimeout = 30000;\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable}\n */\nclass Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super();\n this.doc = doc;\n /**\n * @type {number}\n */\n this.clientID = doc.clientID;\n /**\n * Maps from client id to client state\n * @type {Map>}\n */\n this.states = new Map();\n /**\n * @type {Map}\n */\n this.meta = new Map();\n this._checkInterval = /** @type {any} */ (setInterval(() => {\n const now = getUnixTime();\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(this.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState());\n }\n /**\n * @type {Array}\n */\n const remove = [];\n this.meta.forEach((meta, clientid) => {\n if (clientid !== this.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid);\n }\n });\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout');\n }\n }, floor(outdatedTimeout / 10)));\n doc.on('destroy', () => {\n this.destroy();\n });\n this.setLocalState({});\n }\n\n destroy () {\n this.emit('destroy', [this]);\n this.setLocalState(null);\n super.destroy();\n clearInterval(this._checkInterval);\n }\n\n /**\n * @return {Object|null}\n */\n getLocalState () {\n return this.states.get(this.clientID) || null\n }\n\n /**\n * @param {Object|null} state\n */\n setLocalState (state) {\n const clientID = this.clientID;\n const currLocalMeta = this.meta.get(clientID);\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1;\n const prevState = this.states.get(clientID);\n if (state === null) {\n this.states.delete(clientID);\n } else {\n this.states.set(clientID, state);\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: getUnixTime()\n });\n const added = [];\n const updated = [];\n const filteredUpdated = [];\n const removed = [];\n if (state === null) {\n removed.push(clientID);\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID);\n }\n } else {\n updated.push(clientID);\n if (!equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID);\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local']);\n }\n this.emit('update', [{ added, updated, removed }, 'local']);\n }\n\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState();\n if (state !== null) {\n this.setLocalState({\n ...state,\n [field]: value\n });\n }\n }\n\n /**\n * @return {Map>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array} clients\n * @param {any} origin\n */\nconst removeAwarenessStates = (awareness, clients, origin) => {\n const removed = [];\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i];\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID);\n if (clientID === awareness.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID));\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: getUnixTime()\n });\n }\n removed.push(clientID);\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin]);\n awareness.emit('update', [{ added: [], updated: [], removed }, origin]);\n }\n};\n\n/**\n * @param {Awareness} awareness\n * @param {Array} clients\n * @return {Uint8Array}\n */\nconst encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length;\n const encoder = createEncoder();\n writeVarUint(encoder, len);\n for (let i = 0; i < len; i++) {\n const clientID = clients[i];\n const state = states.get(clientID) || null;\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock;\n writeVarUint(encoder, clientID);\n writeVarUint(encoder, clock);\n writeVarString(encoder, JSON.stringify(state));\n }\n return toUint8Array(encoder)\n};\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nconst applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = createDecoder(update);\n const timestamp = getUnixTime();\n const added = [];\n const updated = [];\n const filteredUpdated = [];\n const removed = [];\n const len = readVarUint(decoder);\n for (let i = 0; i < len; i++) {\n const clientID = readVarUint(decoder);\n let clock = readVarUint(decoder);\n const state = JSON.parse(readVarString(decoder));\n const clientMeta = awareness.meta.get(clientID);\n const prevState = awareness.states.get(clientID);\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock;\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++;\n } else {\n awareness.states.delete(clientID);\n }\n } else {\n awareness.states.set(clientID, state);\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n });\n if (clientMeta === undefined && state !== null) {\n added.push(clientID);\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID);\n } else if (state !== null) {\n if (!equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID);\n }\n updated.push(clientID);\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin]);\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin]);\n }\n};\n\nclass EventEmitter {\n constructor() {\n this.callbacks = {};\n }\n on(event, fn) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n this.callbacks[event].push(fn);\n return this;\n }\n emit(event, ...args) {\n const callbacks = this.callbacks[event];\n if (callbacks) {\n callbacks.forEach(callback => callback.apply(this, args));\n }\n return this;\n }\n off(event, fn) {\n const callbacks = this.callbacks[event];\n if (callbacks) {\n if (fn) {\n this.callbacks[event] = callbacks.filter(callback => callback !== fn);\n }\n else {\n delete this.callbacks[event];\n }\n }\n return this;\n }\n removeAllListeners() {\n this.callbacks = {};\n }\n}\n\n/**\n * Utility module to work with urls.\n *\n * @module url\n */\n\n/**\n * @param {Object} params\n * @return {string}\n */\nconst encodeQueryParams = params =>\n map(params, (val, key) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`).join('&');\n\nvar MessageType;\n(function (MessageType) {\n MessageType[MessageType[\"Sync\"] = 0] = \"Sync\";\n MessageType[MessageType[\"Awareness\"] = 1] = \"Awareness\";\n MessageType[MessageType[\"Auth\"] = 2] = \"Auth\";\n MessageType[MessageType[\"QueryAwareness\"] = 3] = \"QueryAwareness\";\n MessageType[MessageType[\"Stateless\"] = 5] = \"Stateless\";\n MessageType[MessageType[\"CLOSE\"] = 7] = \"CLOSE\";\n MessageType[MessageType[\"SyncStatus\"] = 8] = \"SyncStatus\";\n})(MessageType || (MessageType = {}));\nvar WebSocketStatus;\n(function (WebSocketStatus) {\n WebSocketStatus[\"Connecting\"] = \"connecting\";\n WebSocketStatus[\"Connected\"] = \"connected\";\n WebSocketStatus[\"Disconnected\"] = \"disconnected\";\n})(WebSocketStatus || (WebSocketStatus = {}));\n\nclass IncomingMessage {\n constructor(data) {\n this.data = data;\n this.encoder = createEncoder();\n this.decoder = createDecoder(new Uint8Array(this.data));\n }\n peekVarString() {\n return peekVarString(this.decoder);\n }\n readVarUint() {\n return readVarUint(this.decoder);\n }\n readVarString() {\n return readVarString(this.decoder);\n }\n readVarUint8Array() {\n return readVarUint8Array(this.decoder);\n }\n writeVarUint(type) {\n return writeVarUint(this.encoder, type);\n }\n writeVarString(string) {\n return writeVarString(this.encoder, string);\n }\n writeVarUint8Array(data) {\n return writeVarUint8Array(this.encoder, data);\n }\n length() {\n return length(this.encoder);\n }\n}\n\nclass HocuspocusProviderWebsocket extends EventEmitter {\n constructor(configuration) {\n super();\n this.messageQueue = [];\n this.configuration = {\n url: '',\n // @ts-ignore\n document: undefined,\n WebSocketPolyfill: undefined,\n parameters: {},\n connect: true,\n broadcast: true,\n forceSyncInterval: false,\n // TODO: this should depend on awareness.outdatedTime\n messageReconnectTimeout: 30000,\n // 1 second\n delay: 1000,\n // instant\n initialDelay: 0,\n // double the delay each time\n factor: 2,\n // unlimited retries\n maxAttempts: 0,\n // wait at least 1 second\n minDelay: 1000,\n // at least every 30 seconds\n maxDelay: 30000,\n // randomize\n jitter: true,\n // retry forever\n timeout: 0,\n onOpen: () => null,\n onConnect: () => null,\n onMessage: () => null,\n onOutgoingMessage: () => null,\n onStatus: () => null,\n onDisconnect: () => null,\n onClose: () => null,\n onDestroy: () => null,\n onAwarenessUpdate: () => null,\n onAwarenessChange: () => null,\n quiet: false,\n providerMap: new Map(),\n };\n this.webSocket = null;\n this.webSocketHandlers = {};\n this.shouldConnect = true;\n this.status = WebSocketStatus.Disconnected;\n this.lastMessageReceived = 0;\n this.identifier = 0;\n this.intervals = {\n forceSync: null,\n connectionChecker: null,\n };\n this.connectionAttempt = null;\n this.receivedOnOpenPayload = undefined;\n this.receivedOnStatusPayload = undefined;\n this.closeTries = 0;\n this.setConfiguration(configuration);\n this.configuration.WebSocketPolyfill = configuration.WebSocketPolyfill\n ? configuration.WebSocketPolyfill\n : WebSocket;\n this.on('open', this.configuration.onOpen);\n this.on('open', this.onOpen.bind(this));\n this.on('connect', this.configuration.onConnect);\n this.on('message', this.configuration.onMessage);\n this.on('outgoingMessage', this.configuration.onOutgoingMessage);\n this.on('status', this.configuration.onStatus);\n this.on('status', this.onStatus.bind(this));\n this.on('disconnect', this.configuration.onDisconnect);\n this.on('close', this.configuration.onClose);\n this.on('destroy', this.configuration.onDestroy);\n this.on('awarenessUpdate', this.configuration.onAwarenessUpdate);\n this.on('awarenessChange', this.configuration.onAwarenessChange);\n this.on('close', this.onClose.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.intervals.connectionChecker = setInterval(this.checkConnection.bind(this), this.configuration.messageReconnectTimeout / 10);\n if (typeof configuration.connect !== 'undefined') {\n this.shouldConnect = configuration.connect;\n }\n if (!this.shouldConnect) {\n return;\n }\n this.connect();\n }\n async onOpen(event) {\n this.receivedOnOpenPayload = event;\n }\n async onStatus(data) {\n this.receivedOnStatusPayload = data;\n }\n attach(provider) {\n let connectPromise;\n this.configuration.providerMap.set(provider.configuration.name, provider);\n if (this.status === WebSocketStatus.Disconnected && this.shouldConnect) {\n connectPromise = this.connect();\n }\n if (this.receivedOnOpenPayload) {\n provider.onOpen(this.receivedOnOpenPayload);\n }\n if (this.receivedOnStatusPayload) {\n provider.onStatus(this.receivedOnStatusPayload);\n }\n return connectPromise;\n }\n detach(provider) {\n this.configuration.providerMap.delete(provider.configuration.name);\n }\n setConfiguration(configuration = {}) {\n this.configuration = { ...this.configuration, ...configuration };\n }\n async connect() {\n if (this.status === WebSocketStatus.Connected) {\n return;\n }\n // Always cancel any previously initiated connection retryer instances\n if (this.cancelWebsocketRetry) {\n this.cancelWebsocketRetry();\n this.cancelWebsocketRetry = undefined;\n }\n this.receivedOnOpenPayload = undefined;\n this.receivedOnStatusPayload = undefined;\n this.shouldConnect = true;\n const abortableRetry = () => {\n let cancelAttempt = false;\n const retryPromise = retry(this.createWebSocketConnection.bind(this), {\n delay: this.configuration.delay,\n initialDelay: this.configuration.initialDelay,\n factor: this.configuration.factor,\n maxAttempts: this.configuration.maxAttempts,\n minDelay: this.configuration.minDelay,\n maxDelay: this.configuration.maxDelay,\n jitter: this.configuration.jitter,\n timeout: this.configuration.timeout,\n beforeAttempt: context => {\n if (!this.shouldConnect || cancelAttempt) {\n context.abort();\n }\n },\n }).catch((error) => {\n // If we aborted the connection attempt then don’t throw an error\n // ref: https://github.com/lifeomic/attempt/blob/master/src/index.ts#L136\n if (error && error.code !== 'ATTEMPT_ABORTED') {\n throw error;\n }\n });\n return {\n retryPromise,\n cancelFunc: () => {\n cancelAttempt = true;\n },\n };\n };\n const { retryPromise, cancelFunc } = abortableRetry();\n this.cancelWebsocketRetry = cancelFunc;\n return retryPromise;\n }\n attachWebSocketListeners(ws, reject) {\n const { identifier } = ws;\n const onMessageHandler = (payload) => this.emit('message', payload);\n const onCloseHandler = (payload) => this.emit('close', { event: payload });\n const onOpenHandler = (payload) => this.emit('open', payload);\n const onErrorHandler = (err) => {\n reject(err);\n };\n this.webSocketHandlers[identifier] = {\n message: onMessageHandler,\n close: onCloseHandler,\n open: onOpenHandler,\n error: onErrorHandler,\n };\n const handlers = this.webSocketHandlers[ws.identifier];\n Object.keys(handlers).forEach(name => {\n ws.addEventListener(name, handlers[name]);\n });\n }\n cleanupWebSocket() {\n if (!this.webSocket) {\n return;\n }\n const { identifier } = this.webSocket;\n const handlers = this.webSocketHandlers[identifier];\n Object.keys(handlers).forEach(name => {\n var _a;\n (_a = this.webSocket) === null || _a === void 0 ? void 0 : _a.removeEventListener(name, handlers[name]);\n delete this.webSocketHandlers[identifier];\n });\n this.webSocket.close();\n this.webSocket = null;\n }\n createWebSocketConnection() {\n return new Promise((resolve, reject) => {\n if (this.webSocket) {\n this.messageQueue = [];\n this.cleanupWebSocket();\n }\n this.lastMessageReceived = 0;\n this.identifier += 1;\n // Init the WebSocket connection\n const ws = new this.configuration.WebSocketPolyfill(this.url);\n ws.binaryType = 'arraybuffer';\n ws.identifier = this.identifier;\n this.attachWebSocketListeners(ws, reject);\n this.webSocket = ws;\n // Reset the status\n this.status = WebSocketStatus.Connecting;\n this.emit('status', { status: WebSocketStatus.Connecting });\n // Store resolve/reject for later use\n this.connectionAttempt = {\n resolve,\n reject,\n };\n });\n }\n onMessage(event) {\n var _a;\n this.resolveConnectionAttempt();\n this.lastMessageReceived = getUnixTime();\n const message = new IncomingMessage(event.data);\n const documentName = message.peekVarString();\n (_a = this.configuration.providerMap.get(documentName)) === null || _a === void 0 ? void 0 : _a.onMessage(event);\n }\n resolveConnectionAttempt() {\n if (this.connectionAttempt) {\n this.connectionAttempt.resolve();\n this.connectionAttempt = null;\n this.status = WebSocketStatus.Connected;\n this.emit('status', { status: WebSocketStatus.Connected });\n this.emit('connect');\n this.messageQueue.forEach(message => this.send(message));\n this.messageQueue = [];\n }\n }\n stopConnectionAttempt() {\n this.connectionAttempt = null;\n }\n rejectConnectionAttempt() {\n var _a;\n (_a = this.connectionAttempt) === null || _a === void 0 ? void 0 : _a.reject();\n this.connectionAttempt = null;\n }\n checkConnection() {\n var _a;\n // Don’t check the connection when it’s not even established\n if (this.status !== WebSocketStatus.Connected) {\n return;\n }\n // Don’t close the connection while waiting for the first message\n if (!this.lastMessageReceived) {\n return;\n }\n // Don’t close the connection when a message was received recently\n if (this.configuration.messageReconnectTimeout\n >= getUnixTime() - this.lastMessageReceived) {\n return;\n }\n // No message received in a long time, not even your own\n // Awareness updates, which are updated every 15 seconds\n // if awareness is enabled.\n this.closeTries += 1;\n // https://bugs.webkit.org/show_bug.cgi?id=247943\n if (this.closeTries > 2) {\n this.onClose({\n event: {\n code: 4408,\n reason: 'forced',\n },\n });\n this.closeTries = 0;\n }\n else {\n (_a = this.webSocket) === null || _a === void 0 ? void 0 : _a.close();\n this.messageQueue = [];\n }\n }\n // Ensure that the URL always ends with /\n get serverUrl() {\n while (this.configuration.url[this.configuration.url.length - 1] === '/') {\n return this.configuration.url.slice(0, this.configuration.url.length - 1);\n }\n return this.configuration.url;\n }\n get url() {\n const encodedParams = encodeQueryParams(this.configuration.parameters);\n return `${this.serverUrl}${encodedParams.length === 0 ? '' : `?${encodedParams}`}`;\n }\n disconnect() {\n this.shouldConnect = false;\n if (this.webSocket === null) {\n return;\n }\n try {\n this.webSocket.close();\n this.messageQueue = [];\n }\n catch {\n //\n }\n }\n send(message) {\n var _a;\n if (((_a = this.webSocket) === null || _a === void 0 ? void 0 : _a.readyState) === WsReadyStates.Open) {\n this.webSocket.send(message);\n }\n else {\n this.messageQueue.push(message);\n }\n }\n onClose({ event }) {\n this.closeTries = 0;\n this.cleanupWebSocket();\n if (this.status === WebSocketStatus.Connected) {\n this.status = WebSocketStatus.Disconnected;\n this.emit('status', { status: WebSocketStatus.Disconnected });\n this.emit('disconnect', { event });\n }\n if (event.code === Unauthorized.code) {\n if (event.reason === Unauthorized.reason) {\n console.warn('[HocuspocusProvider] An authentication token is required, but you didn’t send one. Try adding a `token` to your HocuspocusProvider configuration. Won’t try again.');\n }\n else {\n console.warn(`[HocuspocusProvider] Connection closed with status Unauthorized: ${event.reason}`);\n }\n this.shouldConnect = false;\n }\n if (event.code === Forbidden.code) {\n if (!this.configuration.quiet) {\n console.warn('[HocuspocusProvider] The provided authentication token isn’t allowed to connect to this server. Will try again.');\n return; // TODO REMOVE ME\n }\n }\n if (event.code === MessageTooBig.code) {\n console.warn(`[HocuspocusProvider] Connection closed with status MessageTooBig: ${event.reason}`);\n this.shouldConnect = false;\n }\n if (this.connectionAttempt) {\n // That connection attempt failed.\n this.rejectConnectionAttempt();\n }\n else if (this.shouldConnect) {\n // The connection was closed by the server. Let’s just try again.\n this.connect();\n }\n // If we’ll reconnect, we’re done for now.\n if (this.shouldConnect) {\n return;\n }\n // The status is set correctly already.\n if (this.status === WebSocketStatus.Disconnected) {\n return;\n }\n // Let’s update the connection status.\n this.status = WebSocketStatus.Disconnected;\n this.emit('status', { status: WebSocketStatus.Disconnected });\n this.emit('disconnect', { event });\n }\n destroy() {\n this.emit('destroy');\n if (this.intervals.forceSync) {\n clearInterval(this.intervals.forceSync);\n }\n clearInterval(this.intervals.connectionChecker);\n // If there is still a connection attempt outstanding then we should stop\n // it before calling disconnect, otherwise it will be rejected in the onClose\n // handler and trigger a retry\n this.stopConnectionAttempt();\n this.disconnect();\n this.removeAllListeners();\n this.cleanupWebSocket();\n }\n}\n\n/**\n * @module sync-protocol\n */\n\n/**\n * @typedef {Map} StateMap\n */\n\n/**\n * Core Yjs defines two message types:\n * • YjsSyncStep1: Includes the State Set of the sending client. When received, the client should reply with YjsSyncStep2.\n * • YjsSyncStep2: Includes all missing structs and the complete delete set. When received, the client is assured that it\n * received all information from the remote client.\n *\n * In a peer-to-peer network, you may want to introduce a SyncDone message type. Both parties should initiate the connection\n * with SyncStep1. When a client received SyncStep2, it should reply with SyncDone. When the local client received both\n * SyncStep2 and SyncDone, it is assured that it is synced to the remote client.\n *\n * In a client-server model, you want to handle this differently: The client should initiate the connection with SyncStep1.\n * When the server receives SyncStep1, it should reply with SyncStep2 immediately followed by SyncStep1. The client replies\n * with SyncStep2 when it receives SyncStep1. Optionally the server may send a SyncDone after it received SyncStep2, so the\n * client knows that the sync is finished. There are two reasons for this more elaborated sync model: 1. This protocol can\n * easily be implemented on top of http and websockets. 2. The server should only reply to requests, and not initiate them.\n * Therefore it is necessary that the client initiates the sync.\n *\n * Construction of a message:\n * [messageType : varUint, message definition..]\n *\n * Note: A message does not include information about the room name. This must to be handled by the upper layer protocol!\n *\n * stringify[messageType] stringifies a message definition (messageType is already read from the bufffer)\n */\n\nconst messageYjsSyncStep1 = 0;\nconst messageYjsSyncStep2 = 1;\nconst messageYjsUpdate = 2;\n\n/**\n * Create a sync step 1 message based on the state of the current shared document.\n *\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n */\nconst writeSyncStep1 = (encoder, doc) => {\n writeVarUint(encoder, messageYjsSyncStep1);\n const sv = Y.encodeStateVector(doc);\n writeVarUint8Array(encoder, sv);\n};\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n * @param {Uint8Array} [encodedStateVector]\n */\nconst writeSyncStep2 = (encoder, doc, encodedStateVector) => {\n writeVarUint(encoder, messageYjsSyncStep2);\n writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector));\n};\n\n/**\n * Read SyncStep1 message and reply with SyncStep2.\n *\n * @param {decoding.Decoder} decoder The reply to the received message\n * @param {encoding.Encoder} encoder The received message\n * @param {Y.Doc} doc\n */\nconst readSyncStep1 = (decoder, encoder, doc) =>\n writeSyncStep2(encoder, doc, readVarUint8Array(decoder));\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nconst readSyncStep2 = (decoder, doc, transactionOrigin) => {\n try {\n Y.applyUpdate(doc, readVarUint8Array(decoder), transactionOrigin);\n } catch (error) {\n // This catches errors that are thrown by event handlers\n console.error('Caught error while handling a Yjs update', error);\n }\n};\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Uint8Array} update\n */\nconst writeUpdate = (encoder, update) => {\n writeVarUint(encoder, messageYjsUpdate);\n writeVarUint8Array(encoder, update);\n};\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nconst readUpdate = readSyncStep2;\n\n/**\n * @param {decoding.Decoder} decoder A message received from another client\n * @param {encoding.Encoder} encoder The reply message. Does not need to be sent if empty.\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nconst readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {\n const messageType = readVarUint(decoder);\n switch (messageType) {\n case messageYjsSyncStep1:\n readSyncStep1(decoder, encoder, doc);\n break\n case messageYjsSyncStep2:\n readSyncStep2(decoder, doc, transactionOrigin);\n break\n case messageYjsUpdate:\n readUpdate(decoder, doc, transactionOrigin);\n break\n default:\n throw new Error('Unknown message type')\n }\n return messageType\n};\n\nclass OutgoingMessage {\n constructor() {\n this.encoder = createEncoder();\n }\n get(args) {\n return args.encoder;\n }\n toUint8Array() {\n return toUint8Array(this.encoder);\n }\n}\n\nclass MessageReceiver {\n constructor(message) {\n this.broadcasted = false;\n this.message = message;\n }\n setBroadcasted(value) {\n this.broadcasted = value;\n return this;\n }\n apply(provider, emitSynced) {\n const { message } = this;\n const type = message.readVarUint();\n const emptyMessageLength = message.length();\n switch (type) {\n case MessageType.Sync:\n this.applySyncMessage(provider, emitSynced);\n break;\n case MessageType.Awareness:\n this.applyAwarenessMessage(provider);\n break;\n case MessageType.Auth:\n this.applyAuthMessage(provider);\n break;\n case MessageType.QueryAwareness:\n this.applyQueryAwarenessMessage(provider);\n break;\n case MessageType.Stateless:\n provider.receiveStateless(readVarString(message.decoder));\n break;\n case MessageType.SyncStatus:\n this.applySyncStatusMessage(provider, readVarInt(message.decoder) === 1);\n break;\n default:\n throw new Error(`Can’t apply message of unknown type: ${type}`);\n }\n // Reply\n if (message.length() > emptyMessageLength + 1) { // length of documentName (considered in emptyMessageLength plus length of yjs sync type, set in applySyncMessage)\n if (this.broadcasted) {\n // TODO: Some weird TypeScript error\n // @ts-ignore\n provider.broadcast(OutgoingMessage, { encoder: message.encoder });\n }\n else {\n // TODO: Some weird TypeScript error\n // @ts-ignore\n provider.send(OutgoingMessage, { encoder: message.encoder });\n }\n }\n }\n applySyncMessage(provider, emitSynced) {\n const { message } = this;\n message.writeVarUint(MessageType.Sync);\n // Apply update\n const syncMessageType = readSyncMessage(message.decoder, message.encoder, provider.document, provider);\n // Synced once we receive Step2\n if (emitSynced && syncMessageType === messageYjsSyncStep2) {\n provider.synced = true;\n }\n }\n applySyncStatusMessage(provider, applied) {\n if (applied) {\n provider.decrementUnsyncedChanges();\n }\n }\n applyAwarenessMessage(provider) {\n if (!provider.awareness)\n return;\n const { message } = this;\n applyAwarenessUpdate(provider.awareness, message.readVarUint8Array(), provider);\n }\n applyAuthMessage(provider) {\n const { message } = this;\n readAuthMessage(message.decoder, provider.permissionDeniedHandler.bind(provider), provider.authenticatedHandler.bind(provider));\n }\n applyQueryAwarenessMessage(provider) {\n if (!provider.awareness)\n return;\n const { message } = this;\n message.writeVarUint(MessageType.Awareness);\n message.writeVarUint8Array(encodeAwarenessUpdate(provider.awareness, Array.from(provider.awareness.getStates().keys())));\n }\n}\n\nclass MessageSender {\n constructor(Message, args = {}) {\n this.message = new Message();\n this.encoder = this.message.get(args);\n }\n create() {\n return toUint8Array(this.encoder);\n }\n send(webSocket) {\n webSocket === null || webSocket === void 0 ? void 0 : webSocket.send(this.create());\n }\n broadcast(channel) {\n publish(channel, this.create());\n }\n}\n\nclass AuthenticationMessage extends OutgoingMessage {\n constructor() {\n super(...arguments);\n this.type = MessageType.Auth;\n this.description = 'Authentication';\n }\n get(args) {\n if (typeof args.token === 'undefined') {\n throw new Error('The authentication message requires `token` as an argument.');\n }\n writeVarString(this.encoder, args.documentName);\n writeVarUint(this.encoder, this.type);\n writeAuthentication(this.encoder, args.token);\n return this.encoder;\n }\n}\n\nclass AwarenessMessage extends OutgoingMessage {\n constructor() {\n super(...arguments);\n this.type = MessageType.Awareness;\n this.description = 'Awareness states update';\n }\n get(args) {\n if (typeof args.awareness === 'undefined') {\n throw new Error('The awareness message requires awareness as an argument');\n }\n if (typeof args.clients === 'undefined') {\n throw new Error('The awareness message requires clients as an argument');\n }\n writeVarString(this.encoder, args.documentName);\n writeVarUint(this.encoder, this.type);\n let awarenessUpdate;\n if (args.states === undefined) {\n awarenessUpdate = encodeAwarenessUpdate(args.awareness, args.clients);\n }\n else {\n awarenessUpdate = encodeAwarenessUpdate(args.awareness, args.clients, args.states);\n }\n writeVarUint8Array(this.encoder, awarenessUpdate);\n return this.encoder;\n }\n}\n\nclass CloseMessage extends OutgoingMessage {\n constructor() {\n super(...arguments);\n this.type = MessageType.CLOSE;\n this.description = 'Ask the server to close the connection';\n }\n get(args) {\n writeVarString(this.encoder, args.documentName);\n writeVarUint(this.encoder, this.type);\n return this.encoder;\n }\n}\n\nclass QueryAwarenessMessage extends OutgoingMessage {\n constructor() {\n super(...arguments);\n this.type = MessageType.QueryAwareness;\n this.description = 'Queries awareness states';\n }\n get(args) {\n writeVarString(this.encoder, args.documentName);\n writeVarUint(this.encoder, this.type);\n return this.encoder;\n }\n}\n\nclass StatelessMessage extends OutgoingMessage {\n constructor() {\n super(...arguments);\n this.type = MessageType.Stateless;\n this.description = 'A stateless message';\n }\n get(args) {\n var _a;\n writeVarString(this.encoder, args.documentName);\n writeVarUint(this.encoder, this.type);\n writeVarString(this.encoder, (_a = args.payload) !== null && _a !== void 0 ? _a : '');\n return this.encoder;\n }\n}\n\nclass SyncStepOneMessage extends OutgoingMessage {\n constructor() {\n super(...arguments);\n this.type = MessageType.Sync;\n this.description = 'First sync step';\n }\n get(args) {\n if (typeof args.document === 'undefined') {\n throw new Error('The sync step one message requires document as an argument');\n }\n writeVarString(this.encoder, args.documentName);\n writeVarUint(this.encoder, this.type);\n writeSyncStep1(this.encoder, args.document);\n return this.encoder;\n }\n}\n\nclass SyncStepTwoMessage extends OutgoingMessage {\n constructor() {\n super(...arguments);\n this.type = MessageType.Sync;\n this.description = 'Second sync step';\n }\n get(args) {\n if (typeof args.document === 'undefined') {\n throw new Error('The sync step two message requires document as an argument');\n }\n writeVarString(this.encoder, args.documentName);\n writeVarUint(this.encoder, this.type);\n writeSyncStep2(this.encoder, args.document);\n return this.encoder;\n }\n}\n\nclass UpdateMessage extends OutgoingMessage {\n constructor() {\n super(...arguments);\n this.type = MessageType.Sync;\n this.description = 'A document update';\n }\n get(args) {\n writeVarString(this.encoder, args.documentName);\n writeVarUint(this.encoder, this.type);\n writeUpdate(this.encoder, args.update);\n return this.encoder;\n }\n}\n\nclass AwarenessError extends Error {\n constructor() {\n super(...arguments);\n this.code = 1001;\n }\n}\nclass HocuspocusProvider extends EventEmitter {\n constructor(configuration) {\n var _a, _b, _c;\n super();\n this.configuration = {\n name: '',\n // @ts-ignore\n document: undefined,\n // @ts-ignore\n awareness: undefined,\n token: null,\n parameters: {},\n broadcast: true,\n forceSyncInterval: false,\n onAuthenticated: () => null,\n onAuthenticationFailed: () => null,\n onOpen: () => null,\n onConnect: () => null,\n onMessage: () => null,\n onOutgoingMessage: () => null,\n onStatus: () => null,\n onSynced: () => null,\n onDisconnect: () => null,\n onClose: () => null,\n onDestroy: () => null,\n onAwarenessUpdate: () => null,\n onAwarenessChange: () => null,\n onStateless: () => null,\n quiet: false,\n connect: true,\n preserveConnection: true,\n };\n this.subscribedToBroadcastChannel = false;\n this.isSynced = false;\n this.unsyncedChanges = 0;\n this.status = WebSocketStatus.Disconnected;\n this.isAuthenticated = false;\n this.authorizedScope = undefined;\n this.mux = createMutex();\n this.intervals = {\n forceSync: null,\n };\n this.isConnected = true;\n this.boundBroadcastChannelSubscriber = this.broadcastChannelSubscriber.bind(this);\n this.boundPageHide = this.pageHide.bind(this);\n this.boundOnOpen = this.onOpen.bind(this);\n this.boundOnClose = this.onClose.bind(this);\n this.boundOnStatus = this.onStatus.bind(this);\n this.forwardConnect = (e) => this.emit('connect', e);\n this.forwardOpen = (e) => this.emit('open', e);\n this.forwardClose = (e) => this.emit('close', e);\n this.forwardDisconnect = (e) => this.emit('disconnect', e);\n this.forwardDestroy = (e) => this.emit('destroy', e);\n this.setConfiguration(configuration);\n this.configuration.document = configuration.document ? configuration.document : new Y.Doc();\n this.configuration.awareness = configuration.awareness !== undefined ? configuration.awareness : new Awareness(this.document);\n this.on('open', this.configuration.onOpen);\n this.on('message', this.configuration.onMessage);\n this.on('outgoingMessage', this.configuration.onOutgoingMessage);\n this.on('synced', this.configuration.onSynced);\n this.on('destroy', this.configuration.onDestroy);\n this.on('awarenessUpdate', this.configuration.onAwarenessUpdate);\n this.on('awarenessChange', this.configuration.onAwarenessChange);\n this.on('stateless', this.configuration.onStateless);\n this.on('authenticated', this.configuration.onAuthenticated);\n this.on('authenticationFailed', this.configuration.onAuthenticationFailed);\n this.configuration.websocketProvider.on('connect', this.configuration.onConnect);\n this.configuration.websocketProvider.on('connect', this.forwardConnect);\n this.configuration.websocketProvider.on('open', this.boundOnOpen);\n this.configuration.websocketProvider.on('open', this.forwardOpen);\n this.configuration.websocketProvider.on('close', this.boundOnClose);\n this.configuration.websocketProvider.on('close', this.configuration.onClose);\n this.configuration.websocketProvider.on('close', this.forwardClose);\n this.configuration.websocketProvider.on('status', this.boundOnStatus);\n this.configuration.websocketProvider.on('disconnect', this.configuration.onDisconnect);\n this.configuration.websocketProvider.on('disconnect', this.forwardDisconnect);\n this.configuration.websocketProvider.on('destroy', this.configuration.onDestroy);\n this.configuration.websocketProvider.on('destroy', this.forwardDestroy);\n (_a = this.awareness) === null || _a === void 0 ? void 0 : _a.on('update', () => {\n this.emit('awarenessUpdate', { states: awarenessStatesToArray(this.awareness.getStates()) });\n });\n (_b = this.awareness) === null || _b === void 0 ? void 0 : _b.on('change', () => {\n this.emit('awarenessChange', { states: awarenessStatesToArray(this.awareness.getStates()) });\n });\n this.document.on('update', this.documentUpdateHandler.bind(this));\n (_c = this.awareness) === null || _c === void 0 ? void 0 : _c.on('update', this.awarenessUpdateHandler.bind(this));\n this.registerEventListeners();\n if (this.configuration.forceSyncInterval\n && typeof this.configuration.forceSyncInterval === 'number') {\n this.intervals.forceSync = setInterval(this.forceSync.bind(this), this.configuration.forceSyncInterval);\n }\n this.configuration.websocketProvider.attach(this);\n }\n onStatus({ status }) {\n this.status = status;\n this.configuration.onStatus({ status });\n this.emit('status', { status });\n }\n setConfiguration(configuration = {}) {\n if (!configuration.websocketProvider && configuration.url) {\n const websocketProviderConfig = configuration;\n this.configuration.websocketProvider = new HocuspocusProviderWebsocket({\n url: websocketProviderConfig.url,\n connect: websocketProviderConfig.connect,\n parameters: websocketProviderConfig.parameters,\n });\n }\n this.configuration = { ...this.configuration, ...configuration };\n }\n get document() {\n return this.configuration.document;\n }\n get awareness() {\n return this.configuration.awareness;\n }\n get hasUnsyncedChanges() {\n return this.unsyncedChanges > 0;\n }\n resetUnsyncedChanges() {\n this.unsyncedChanges = 1;\n this.emit('unsyncedChanges', this.unsyncedChanges);\n }\n incrementUnsyncedChanges() {\n this.unsyncedChanges += 1;\n this.emit('unsyncedChanges', this.unsyncedChanges);\n }\n decrementUnsyncedChanges() {\n this.unsyncedChanges -= 1;\n if (this.unsyncedChanges === 0) {\n this.synced = true;\n }\n this.emit('unsyncedChanges', this.unsyncedChanges);\n }\n forceSync() {\n this.resetUnsyncedChanges();\n this.send(SyncStepOneMessage, { document: this.document, documentName: this.configuration.name });\n }\n pageHide() {\n if (this.awareness) {\n removeAwarenessStates(this.awareness, [this.document.clientID], 'page hide');\n }\n }\n registerEventListeners() {\n if (typeof window === 'undefined' || !('addEventListener' in window)) {\n return;\n }\n window.addEventListener('pagehide', this.boundPageHide);\n }\n sendStateless(payload) {\n this.send(StatelessMessage, { documentName: this.configuration.name, payload });\n }\n documentUpdateHandler(update, origin) {\n if (origin === this) {\n return;\n }\n this.incrementUnsyncedChanges();\n this.send(UpdateMessage, { update, documentName: this.configuration.name }, true);\n }\n awarenessUpdateHandler({ added, updated, removed }, origin) {\n const changedClients = added.concat(updated).concat(removed);\n this.send(AwarenessMessage, {\n awareness: this.awareness,\n clients: changedClients,\n documentName: this.configuration.name,\n }, true);\n }\n /**\n * Indicates whether a first handshake with the server has been established\n *\n * Note: this does not mean all updates from the client have been persisted to the backend. For this,\n * use `hasUnsyncedChanges`.\n */\n get synced() {\n return this.isSynced;\n }\n set synced(state) {\n if (this.isSynced === state) {\n return;\n }\n this.isSynced = state;\n this.emit('synced', { state });\n this.emit('sync', { state });\n }\n receiveStateless(payload) {\n this.emit('stateless', { payload });\n }\n get isAuthenticationRequired() {\n return !!this.configuration.token && !this.isAuthenticated;\n }\n // not needed, but provides backward compatibility with e.g. lexical/yjs\n async connect() {\n if (this.configuration.broadcast) {\n this.subscribeToBroadcastChannel();\n }\n this.configuration.websocketProvider.shouldConnect = true;\n return this.configuration.websocketProvider.attach(this);\n }\n disconnect() {\n this.disconnectBroadcastChannel();\n this.configuration.websocketProvider.detach(this);\n this.isConnected = false;\n if (!this.configuration.preserveConnection) {\n this.configuration.websocketProvider.disconnect();\n }\n }\n async onOpen(event) {\n this.isAuthenticated = false;\n this.isConnected = true;\n this.emit('open', { event });\n let token;\n try {\n token = await this.getToken();\n }\n catch (error) {\n this.permissionDeniedHandler(`Failed to get token: ${error}`);\n return;\n }\n if (this.isAuthenticationRequired) {\n this.send(AuthenticationMessage, {\n token,\n documentName: this.configuration.name,\n });\n }\n this.startSync();\n }\n async getToken() {\n if (typeof this.configuration.token === 'function') {\n const token = await this.configuration.token();\n return token;\n }\n return this.configuration.token;\n }\n startSync() {\n this.resetUnsyncedChanges();\n this.send(SyncStepOneMessage, { document: this.document, documentName: this.configuration.name });\n if (this.awareness && this.awareness.getLocalState() !== null) {\n this.send(AwarenessMessage, {\n awareness: this.awareness,\n clients: [this.document.clientID],\n documentName: this.configuration.name,\n });\n }\n }\n send(message, args, broadcast = false) {\n if (!this.isConnected) {\n return;\n }\n if (broadcast) {\n this.mux(() => { this.broadcast(message, args); });\n }\n const messageSender = new MessageSender(message, args);\n this.emit('outgoingMessage', { message: messageSender.message });\n messageSender.send(this.configuration.websocketProvider);\n }\n onMessage(event) {\n const message = new IncomingMessage(event.data);\n const documentName = message.readVarString();\n message.writeVarString(documentName);\n this.emit('message', { event, message: new IncomingMessage(event.data) });\n new MessageReceiver(message).apply(this, true);\n }\n onClose(event) {\n this.isAuthenticated = false;\n this.synced = false;\n // update awareness (all users except local left)\n if (this.awareness) {\n removeAwarenessStates(this.awareness, Array.from(this.awareness.getStates().keys()).filter(client => client !== this.document.clientID), this);\n }\n }\n destroy() {\n this.emit('destroy');\n if (this.intervals.forceSync) {\n clearInterval(this.intervals.forceSync);\n }\n if (this.awareness) {\n removeAwarenessStates(this.awareness, [this.document.clientID], 'provider destroy');\n this.awareness.off('update', this.awarenessUpdateHandler);\n this.awareness.destroy();\n }\n this.document.off('update', this.documentUpdateHandler);\n this.removeAllListeners();\n this.configuration.websocketProvider.off('connect', this.configuration.onConnect);\n this.configuration.websocketProvider.off('connect', this.forwardConnect);\n this.configuration.websocketProvider.off('open', this.boundOnOpen);\n this.configuration.websocketProvider.off('open', this.forwardOpen);\n this.configuration.websocketProvider.off('close', this.boundOnClose);\n this.configuration.websocketProvider.off('close', this.configuration.onClose);\n this.configuration.websocketProvider.off('close', this.forwardClose);\n this.configuration.websocketProvider.off('status', this.boundOnStatus);\n this.configuration.websocketProvider.off('disconnect', this.configuration.onDisconnect);\n this.configuration.websocketProvider.off('disconnect', this.forwardDisconnect);\n this.configuration.websocketProvider.off('destroy', this.configuration.onDestroy);\n this.configuration.websocketProvider.off('destroy', this.forwardDestroy);\n this.send(CloseMessage, { documentName: this.configuration.name });\n this.disconnect();\n if (typeof window === 'undefined' || !('removeEventListener' in window)) {\n return;\n }\n window.removeEventListener('pagehide', this.boundPageHide);\n }\n permissionDeniedHandler(reason) {\n this.emit('authenticationFailed', { reason });\n this.isAuthenticated = false;\n this.disconnect();\n this.status = WebSocketStatus.Disconnected;\n }\n authenticatedHandler(scope) {\n this.isAuthenticated = true;\n this.authorizedScope = scope;\n this.emit('authenticated');\n }\n get broadcastChannel() {\n return `${this.configuration.name}`;\n }\n broadcastChannelSubscriber(data) {\n this.mux(() => {\n const message = new IncomingMessage(data);\n const documentName = message.readVarString();\n message.writeVarString(documentName);\n new MessageReceiver(message)\n .setBroadcasted(true)\n .apply(this, false);\n });\n }\n subscribeToBroadcastChannel() {\n if (!this.subscribedToBroadcastChannel) {\n subscribe(this.broadcastChannel, this.boundBroadcastChannelSubscriber);\n this.subscribedToBroadcastChannel = true;\n }\n this.mux(() => {\n this.broadcast(SyncStepOneMessage, { document: this.document, documentName: this.configuration.name });\n this.broadcast(SyncStepTwoMessage, { document: this.document, documentName: this.configuration.name });\n this.broadcast(QueryAwarenessMessage, { document: this.document, documentName: this.configuration.name });\n if (this.awareness) {\n this.broadcast(AwarenessMessage, {\n awareness: this.awareness,\n clients: [this.document.clientID],\n document: this.document,\n documentName: this.configuration.name,\n });\n }\n });\n }\n disconnectBroadcastChannel() {\n // broadcast message with local awareness state set to null (indicating disconnect)\n if (this.awareness) {\n this.send(AwarenessMessage, {\n awareness: this.awareness,\n clients: [this.document.clientID],\n states: new Map(),\n documentName: this.configuration.name,\n }, true);\n }\n if (this.subscribedToBroadcastChannel) {\n unsubscribe(this.broadcastChannel, this.boundBroadcastChannelSubscriber);\n this.subscribedToBroadcastChannel = false;\n }\n }\n broadcast(Message, args) {\n if (!this.configuration.broadcast) {\n return;\n }\n if (!this.subscribedToBroadcastChannel) {\n return;\n }\n new MessageSender(Message, args).broadcast(this.broadcastChannel);\n }\n setAwarenessField(key, value) {\n if (!this.awareness) {\n throw new AwarenessError(`Cannot set awareness field \"${key}\" to ${JSON.stringify(value)}. You have disabled Awareness for this provider by explicitly passing awareness: null in the provider configuration.`);\n }\n this.awareness.setLocalStateField(key, value);\n }\n}\n\n/* eslint-env browser */\nconst getRandomValues = crypto.getRandomValues.bind(crypto);\n\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nconst uint32 = () => getRandomValues(new Uint32Array(1))[0];\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11;\n\n/**\n * @return {string}\n */\nconst uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n);\n\nclass TiptapCollabProviderWebsocket extends HocuspocusProviderWebsocket {\n constructor(configuration) {\n var _a;\n let url = (_a = configuration.baseUrl) !== null && _a !== void 0 ? _a : `wss://${configuration.appId}.collab.tiptap.cloud`;\n if (configuration.shardKey) {\n url += url.includes('?') ? '&' : '?';\n url += `shard=${configuration.shardKey}`;\n }\n super({ ...configuration, url });\n }\n}\n\nclass TiptapCollabProvider extends HocuspocusProvider {\n constructor(configuration) {\n if (!configuration.websocketProvider) {\n configuration.websocketProvider = new TiptapCollabProviderWebsocket({ appId: configuration.appId, baseUrl: configuration.baseUrl });\n }\n if (!configuration.token) {\n configuration.token = 'notoken'; // need to send a token anyway (which will be ignored)\n }\n super(configuration);\n this.tiptapCollabConfigurationPrefix = '__tiptapcollab__';\n if (configuration.user) {\n this.userData = new Y.PermanentUserData(this.document, this.document.getMap('__tiptapcollab__users'));\n this.userData.setUserMapping(this.document, this.document.clientID, configuration.user);\n }\n }\n /**\n * note: this will only work if your server loaded @hocuspocus-pro/extension-history, or if you are on a Tiptap business plan.\n */\n createVersion(name) {\n return this.sendStateless(JSON.stringify({ action: 'version.create', name }));\n }\n /**\n * note: this will only work if your server loaded @hocuspocus-pro/extension-history, or if you are on a Tiptap business plan.\n */\n revertToVersion(targetVersion) {\n return this.sendStateless(JSON.stringify({ action: 'document.revert', version: targetVersion }));\n }\n /**\n * note: this will only work if your server loaded @hocuspocus-pro/extension-history, or if you are on a Tiptap business plan.\n *\n * The server will reply with a stateless message (THistoryVersionPreviewEvent)\n */\n previewVersion(targetVersion) {\n return this.sendStateless(JSON.stringify({ action: 'version.preview', version: targetVersion }));\n }\n /**\n * note: this will only work if your server loaded @hocuspocus-pro/extension-history, or if you are on a Tiptap business plan.\n */\n getVersions() {\n return this.configuration.document.getArray(`${this.tiptapCollabConfigurationPrefix}versions`).toArray();\n }\n watchVersions(callback) {\n return this.configuration.document.getArray('__tiptapcollab__versions').observe(callback);\n }\n unwatchVersions(callback) {\n return this.configuration.document.getArray('__tiptapcollab__versions').unobserve(callback);\n }\n isAutoVersioning() {\n return !!this.configuration.document.getMap(`${this.tiptapCollabConfigurationPrefix}config`).get('autoVersioning');\n }\n enableAutoVersioning() {\n return this.configuration.document.getMap(`${this.tiptapCollabConfigurationPrefix}config`).set('autoVersioning', 1);\n }\n disableAutoVersioning() {\n return this.configuration.document.getMap(`${this.tiptapCollabConfigurationPrefix}config`).set('autoVersioning', 0);\n }\n getYThreads() {\n return this.configuration.document.getArray(`${this.tiptapCollabConfigurationPrefix}threads`);\n }\n getThreads() {\n return this.getYThreads().toJSON();\n }\n getThreadIndex(id) {\n let index = null;\n let i = 0;\n // eslint-disable-next-line no-restricted-syntax\n for (const thread of this.getThreads()) {\n if (thread.id === id) {\n index = i;\n break;\n }\n i += 1;\n }\n return index;\n }\n getThread(id) {\n const index = this.getThreadIndex(id);\n if (index === null) {\n return null;\n }\n return this.getYThreads().get(index).toJSON();\n }\n getYThread(id) {\n const index = this.getThreadIndex(id);\n if (index === null) {\n return null;\n }\n return this.getYThreads().get(index);\n }\n createThread(data) {\n let createdThread = {};\n this.document.transact(() => {\n const thread = new Y.Map();\n thread.set('id', uuidv4());\n thread.set('createdAt', (new Date()).toISOString());\n thread.set('comments', new Y.Array());\n this.getYThreads().push([thread]);\n createdThread = this.updateThread(String(thread.get('id')), data);\n });\n return createdThread;\n }\n updateThread(id, data) {\n let updatedThread = {};\n this.document.transact(() => {\n const thread = this.getYThread(id);\n if (thread === null) {\n return null;\n }\n thread.set('updatedAt', (new Date()).toISOString());\n if (data.data) {\n thread.set('data', data.data);\n }\n if (data.resolvedAt || data.resolvedAt === null) {\n thread.set('resolvedAt', data.resolvedAt);\n }\n updatedThread = thread.toJSON();\n });\n return updatedThread;\n }\n deleteThread(id) {\n const index = this.getThreadIndex(id);\n if (index === null) {\n return;\n }\n this.getYThreads().delete(index, 1);\n }\n getThreadComments(threadId) {\n var _a, _b;\n const index = this.getThreadIndex(threadId);\n if (index === null) {\n return null;\n }\n return (_b = (_a = this.getThread(threadId)) === null || _a === void 0 ? void 0 : _a.comments) !== null && _b !== void 0 ? _b : [];\n }\n getThreadComment(threadId, commentId) {\n var _a, _b;\n const index = this.getThreadIndex(threadId);\n if (index === null) {\n return null;\n }\n return (_b = (_a = this.getThread(threadId)) === null || _a === void 0 ? void 0 : _a.comments.find(comment => comment.id === commentId)) !== null && _b !== void 0 ? _b : null;\n }\n addComment(threadId, data) {\n let updatedThread = {};\n this.document.transact(() => {\n const thread = this.getYThread(threadId);\n if (thread === null)\n return null;\n const commentMap = new Y.Map();\n commentMap.set('id', uuidv4());\n commentMap.set('createdAt', (new Date()).toISOString());\n thread.get('comments').push([commentMap]);\n this.updateComment(threadId, String(commentMap.get('id')), data);\n updatedThread = thread.toJSON();\n });\n return updatedThread;\n }\n updateComment(threadId, commentId, data) {\n let updatedThread = {};\n this.document.transact(() => {\n const thread = this.getYThread(threadId);\n if (thread === null)\n return null;\n let comment = null;\n // eslint-disable-next-line no-restricted-syntax\n for (const c of thread.get('comments')) {\n if (c.get('id') === commentId) {\n comment = c;\n break;\n }\n }\n if (comment === null)\n return null;\n comment.set('updatedAt', (new Date()).toISOString());\n if (data.data) {\n comment.set('data', data.data);\n }\n if (data.content) {\n comment.set('content', data.content);\n }\n updatedThread = thread.toJSON();\n });\n return updatedThread;\n }\n deleteComment(threadId, commentId) {\n const thread = this.getYThread(threadId);\n if (thread === null)\n return null;\n let commentIndex = 0;\n // eslint-disable-next-line no-restricted-syntax\n for (const c of thread.get('comments')) {\n if (c.get('id') === commentId) {\n break;\n }\n commentIndex += 1;\n }\n // if the first comment of a thread is deleted we also\n // delete the thread itself as the source comment is gone\n if (commentIndex === 0) {\n this.deleteThread(threadId);\n return;\n }\n if (commentIndex > 0) {\n thread.get('comments').delete(commentIndex);\n }\n return thread.toJSON();\n }\n watchThreads(callback) {\n this.getYThreads().observeDeep(callback);\n }\n unwatchThreads(callback) {\n this.getYThreads().unobserveDeep(callback);\n }\n}\n\nexport { AwarenessError, HocuspocusProvider, HocuspocusProviderWebsocket, MessageType, TiptapCollabProvider, TiptapCollabProviderWebsocket, WebSocketStatus };\n//# sourceMappingURL=hocuspocus-provider.esm.js.map\n","/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n /**\n Get the line description around the given position.\n */\n lineAt(pos) {\n if (pos < 0 || pos > this.length)\n throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n return this.lineInner(pos, false, 1, 0);\n }\n /**\n Get the description for the given (1-based) line number.\n */\n line(n) {\n if (n < 1 || n > this.lines)\n throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n return this.lineInner(n, true, 1, 0);\n }\n /**\n Replace a range of the text with the given content.\n */\n replace(from, to, text) {\n [from, to] = clip(this, from, to);\n let parts = [];\n this.decompose(0, from, parts, 2 /* Open.To */);\n if (text.length)\n text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n this.decompose(to, this.length, parts, 1 /* Open.From */);\n return TextNode.from(parts, this.length - (to - from) + text.length);\n }\n /**\n Append another document to this one.\n */\n append(other) {\n return this.replace(this.length, this.length, other);\n }\n /**\n Retrieve the text between the given points.\n */\n slice(from, to = this.length) {\n [from, to] = clip(this, from, to);\n let parts = [];\n this.decompose(from, to, parts, 0);\n return TextNode.from(parts, to - from);\n }\n /**\n Test whether this text is equal to another instance.\n */\n eq(other) {\n if (other == this)\n return true;\n if (other.length != this.length || other.lines != this.lines)\n return false;\n let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n let a = new RawTextCursor(this), b = new RawTextCursor(other);\n for (let skip = start, pos = start;;) {\n a.next(skip);\n b.next(skip);\n skip = 0;\n if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n return false;\n pos += a.value.length;\n if (a.done || pos >= end)\n return true;\n }\n }\n /**\n Iterate over the text. When `dir` is `-1`, iteration happens\n from end to start. This will return lines and the breaks between\n them as separate strings.\n */\n iter(dir = 1) { return new RawTextCursor(this, dir); }\n /**\n Iterate over a range of the text. When `from` > `to`, the\n iterator will run in reverse.\n */\n iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n /**\n Return a cursor that iterates over the given range of lines,\n _without_ returning the line breaks between, and yielding empty\n strings for empty lines.\n \n When `from` and `to` are given, they should be 1-based line numbers.\n */\n iterLines(from, to) {\n let inner;\n if (from == null) {\n inner = this.iter();\n }\n else {\n if (to == null)\n to = this.lines + 1;\n let start = this.line(from).from;\n inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n }\n return new LineCursor(inner);\n }\n /**\n Return the document as a string, using newline characters to\n separate lines.\n */\n toString() { return this.sliceString(0); }\n /**\n Convert the document to an array of lines (which can be\n deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n */\n toJSON() {\n let lines = [];\n this.flatten(lines);\n return lines;\n }\n /**\n @internal\n */\n constructor() { }\n /**\n Create a `Text` instance for the given array of lines.\n */\n static of(text) {\n if (text.length == 0)\n throw new RangeError(\"A document must have at least one line\");\n if (text.length == 1 && !text[0])\n return Text.empty;\n return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n constructor(text, length = textLength(text)) {\n super();\n this.text = text;\n this.length = length;\n }\n get lines() { return this.text.length; }\n get children() { return null; }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let string = this.text[i], end = offset + string.length;\n if ((isLine ? line : end) >= target)\n return new Line(offset, end, line, string);\n offset = end + 1;\n line++;\n }\n }\n decompose(from, to, target, open) {\n let text = from <= 0 && to >= this.length ? this\n : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n if (open & 1 /* Open.From */) {\n let prev = target.pop();\n let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n if (joined.length <= 32 /* Tree.Branch */) {\n target.push(new TextLeaf(joined, prev.length + text.length));\n }\n else {\n let mid = joined.length >> 1;\n target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n }\n }\n else {\n target.push(text);\n }\n }\n replace(from, to, text) {\n if (!(text instanceof TextLeaf))\n return super.replace(from, to, text);\n [from, to] = clip(this, from, to);\n let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n let newLen = this.length + text.length - (to - from);\n if (lines.length <= 32 /* Tree.Branch */)\n return new TextLeaf(lines, newLen);\n return TextNode.from(TextLeaf.split(lines, []), newLen);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n [from, to] = clip(this, from, to);\n let result = \"\";\n for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n let line = this.text[i], end = pos + line.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += line.slice(Math.max(0, from - pos), to - pos);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let line of this.text)\n target.push(line);\n }\n scanIdentical() { return 0; }\n static split(text, target) {\n let part = [], len = -1;\n for (let line of text) {\n part.push(line);\n len += line.length + 1;\n if (part.length == 32 /* Tree.Branch */) {\n target.push(new TextLeaf(part, len));\n part = [];\n len = -1;\n }\n }\n if (len > -1)\n target.push(new TextLeaf(part, len));\n return target;\n }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n constructor(children, length) {\n super();\n this.children = children;\n this.length = length;\n this.lines = 0;\n for (let child of children)\n this.lines += child.lines;\n }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n if ((isLine ? endLine : end) >= target)\n return child.lineInner(target, isLine, line, offset);\n offset = end + 1;\n line = endLine + 1;\n }\n }\n decompose(from, to, target, open) {\n for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n if (from <= end && to >= pos) {\n let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n if (pos >= from && end <= to && !childOpen)\n target.push(child);\n else\n child.decompose(from - pos, to - pos, target, childOpen);\n }\n pos = end + 1;\n }\n }\n replace(from, to, text) {\n [from, to] = clip(this, from, to);\n if (text.lines < this.lines)\n for (let i = 0, pos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n // Fast path: if the change only affects one child and the\n // child's size remains in the acceptable range, only update\n // that child\n if (from >= pos && to <= end) {\n let updated = child.replace(from - pos, to - pos, text);\n let totalLines = this.lines - child.lines + updated.lines;\n if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n let copy = this.children.slice();\n copy[i] = updated;\n return new TextNode(copy, this.length - (to - from) + text.length);\n }\n return super.replace(pos, end, updated);\n }\n pos = end + 1;\n }\n return super.replace(from, to, text);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n [from, to] = clip(this, from, to);\n let result = \"\";\n for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n let child = this.children[i], end = pos + child.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += child.sliceString(from - pos, to - pos, lineSep);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let child of this.children)\n child.flatten(target);\n }\n scanIdentical(other, dir) {\n if (!(other instanceof TextNode))\n return 0;\n let length = 0;\n let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n : [this.children.length - 1, other.children.length - 1, -1, -1];\n for (;; iA += dir, iB += dir) {\n if (iA == eA || iB == eB)\n return length;\n let chA = this.children[iA], chB = other.children[iB];\n if (chA != chB)\n return length + chA.scanIdentical(chB, dir);\n length += chA.length + 1;\n }\n }\n static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n let lines = 0;\n for (let ch of children)\n lines += ch.lines;\n if (lines < 32 /* Tree.Branch */) {\n let flat = [];\n for (let ch of children)\n ch.flatten(flat);\n return new TextLeaf(flat, length);\n }\n let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n function add(child) {\n let last;\n if (child.lines > maxChunk && child instanceof TextNode) {\n for (let node of child.children)\n add(node);\n }\n else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n flush();\n chunked.push(child);\n }\n else if (child instanceof TextLeaf && currentLines &&\n (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n child.lines + last.lines <= 32 /* Tree.Branch */) {\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n }\n else {\n if (currentLines + child.lines > chunk)\n flush();\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk.push(child);\n }\n }\n function flush() {\n if (currentLines == 0)\n return;\n chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n currentLen = -1;\n currentLines = currentChunk.length = 0;\n }\n for (let child of children)\n add(child);\n flush();\n return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n let length = -1;\n for (let line of text)\n length += line.length + 1;\n return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n let line = text[i], end = pos + line.length;\n if (end >= from) {\n if (end > to)\n line = line.slice(0, to - pos);\n if (pos < from)\n line = line.slice(from - pos);\n if (first) {\n target[target.length - 1] += line;\n first = false;\n }\n else\n target.push(line);\n }\n pos = end + 1;\n }\n return target;\n}\nfunction sliceText(text, from, to) {\n return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n constructor(text, dir = 1) {\n this.dir = dir;\n this.done = false;\n this.lineBreak = false;\n this.value = \"\";\n this.nodes = [text];\n this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n }\n nextInner(skip, dir) {\n this.done = this.lineBreak = false;\n for (;;) {\n let last = this.nodes.length - 1;\n let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n if (offset == (dir > 0 ? size : 0)) {\n if (last == 0) {\n this.done = true;\n this.value = \"\";\n return this;\n }\n if (dir > 0)\n this.offsets[last - 1]++;\n this.nodes.pop();\n this.offsets.pop();\n }\n else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n this.offsets[last] += dir;\n if (skip == 0) {\n this.lineBreak = true;\n this.value = \"\\n\";\n return this;\n }\n skip--;\n }\n else if (top instanceof TextLeaf) {\n // Move to the next string\n let next = top.text[offset + (dir < 0 ? -1 : 0)];\n this.offsets[last] += dir;\n if (next.length > Math.max(0, skip)) {\n this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n return this;\n }\n skip -= next.length;\n }\n else {\n let next = top.children[offset + (dir < 0 ? -1 : 0)];\n if (skip > next.length) {\n skip -= next.length;\n this.offsets[last] += dir;\n }\n else {\n if (dir < 0)\n this.offsets[last]--;\n this.nodes.push(next);\n this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n }\n }\n }\n }\n next(skip = 0) {\n if (skip < 0) {\n this.nextInner(-skip, (-this.dir));\n skip = this.value.length;\n }\n return this.nextInner(skip, this.dir);\n }\n}\nclass PartialTextCursor {\n constructor(text, start, end) {\n this.value = \"\";\n this.done = false;\n this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n this.pos = start > end ? text.length : 0;\n this.from = Math.min(start, end);\n this.to = Math.max(start, end);\n }\n nextInner(skip, dir) {\n if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n this.value = \"\";\n this.done = true;\n return this;\n }\n skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n if (skip > limit)\n skip = limit;\n limit -= skip;\n let { value } = this.cursor.next(skip);\n this.pos += (value.length + skip) * dir;\n this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n this.done = !this.value;\n return this;\n }\n next(skip = 0) {\n if (skip < 0)\n skip = Math.max(skip, this.from - this.pos);\n else if (skip > 0)\n skip = Math.min(skip, this.to - this.pos);\n return this.nextInner(skip, this.cursor.dir);\n }\n get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n constructor(inner) {\n this.inner = inner;\n this.afterBreak = true;\n this.value = \"\";\n this.done = false;\n }\n next(skip = 0) {\n let { done, lineBreak, value } = this.inner.next(skip);\n if (done && this.afterBreak) {\n this.value = \"\";\n this.afterBreak = false;\n }\n else if (done) {\n this.done = true;\n this.value = \"\";\n }\n else if (lineBreak) {\n if (this.afterBreak) {\n this.value = \"\";\n }\n else {\n this.afterBreak = true;\n this.next();\n }\n }\n else {\n this.value = value;\n this.afterBreak = false;\n }\n return this;\n }\n get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n /**\n @internal\n */\n constructor(\n /**\n The position of the start of the line.\n */\n from, \n /**\n The position at the end of the line (_before_ the line break,\n or at the end of document for the last line).\n */\n to, \n /**\n This line's line number (1-based).\n */\n number, \n /**\n The line's content.\n */\n text) {\n this.from = from;\n this.to = to;\n this.number = number;\n this.text = text;\n }\n /**\n The length of the line (not including any line break after it).\n */\n get length() { return this.to - this.from; }\n}\nfunction clip(text, from, to) {\n from = Math.max(0, Math.min(text.length, from));\n return [from, Math.max(from, Math.min(text.length, to))];\n}\n\n// Compressed representation of the Grapheme_Cluster_Break=Extend\n// information from\n// http://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n// Each pair of elements represents a range, as an offet from the\n// previous range and a length. Numbers are in base-36, with the empty\n// string being a shorthand for 1.\nlet extend = /*@__PURE__*/\"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\".split(\",\").map(s => s ? parseInt(s, 36) : 1);\n// Convert offsets into absolute values\nfor (let i = 1; i < extend.length; i++)\n extend[i] += extend[i - 1];\nfunction isExtendingChar(code) {\n for (let i = 1; i < extend.length; i += 2)\n if (extend[i] > code)\n return extend[i - 1] <= code;\n return false;\n}\nfunction isRegionalIndicator(code) {\n return code >= 0x1F1E6 && code <= 0x1F1FF;\n}\nconst ZWJ = 0x200d;\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending);\n}\nfunction nextClusterBreak(str, pos, includeExtending) {\n if (pos == str.length)\n return pos;\n // If pos is in the middle of a surrogate pair, move to its start\n if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1)))\n pos--;\n let prev = codePointAt(str, pos);\n pos += codePointSize(prev);\n while (pos < str.length) {\n let next = codePointAt(str, pos);\n if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n pos += codePointSize(next);\n prev = next;\n }\n else if (isRegionalIndicator(next)) {\n let countBefore = 0, i = pos - 2;\n while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) {\n countBefore++;\n i -= 2;\n }\n if (countBefore % 2 == 0)\n break;\n else\n pos += 2;\n }\n else {\n break;\n }\n }\n return pos;\n}\nfunction prevClusterBreak(str, pos, includeExtending) {\n while (pos > 0) {\n let found = nextClusterBreak(str, pos - 2, includeExtending);\n if (found < pos)\n return found;\n pos--;\n }\n return 0;\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos);\n if (!surrogateHigh(code0) || pos + 1 == str.length)\n return code0;\n let code1 = str.charCodeAt(pos + 1);\n if (!surrogateLow(code1))\n return code0;\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n if (code <= 0xffff)\n return String.fromCharCode(code);\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n /**\n Map a position to a valid new position, even when its context\n was deleted.\n */\n MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n /**\n Return null if deletion happens across the position.\n */\n MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n /**\n Return null if the character _before_ the position is deleted.\n */\n MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n /**\n Return null if the character _after_ the position is deleted.\n */\n MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n // Sections are encoded as pairs of integers. The first is the\n // length in the current document, and the second is -1 for\n // unaffected sections, and the length of the replacement content\n // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n // 0), and a replacement two positive numbers.\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n sections) {\n this.sections = sections;\n }\n /**\n The length of the document before the change.\n */\n get length() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2)\n result += this.sections[i];\n return result;\n }\n /**\n The length of the document after the change.\n */\n get newLength() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2) {\n let ins = this.sections[i + 1];\n result += ins < 0 ? this.sections[i] : ins;\n }\n return result;\n }\n /**\n False when there are actual changes in this set.\n */\n get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n /**\n Iterate over the unchanged parts left by these changes. `posA`\n provides the position of the range in the old document, `posB`\n the new position in the changed document.\n */\n iterGaps(f) {\n for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0) {\n f(posA, posB, len);\n posB += len;\n }\n else {\n posB += ins;\n }\n posA += len;\n }\n }\n /**\n Iterate over the ranges changed by these changes. (See\n [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n variant that also provides you with the inserted text.)\n `fromA`/`toA` provides the extent of the change in the starting\n document, `fromB`/`toB` the extent of the replacement in the\n changed document.\n \n When `individual` is true, adjacent changes (which are kept\n separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n reported separately.\n */\n iterChangedRanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a description of the inverted form of these changes.\n */\n get invertedDesc() {\n let sections = [];\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0)\n sections.push(len, ins);\n else\n sections.push(ins, len);\n }\n return new ChangeDesc(sections);\n }\n /**\n Compute the combined effect of applying another set of changes\n after this one. The length of the document after this set should\n match the length before `other`.\n */\n composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n /**\n Map this description, which should start with the same document\n as `other`, over another set of changes, so that it can be\n applied after it. When `before` is true, map as if the changes\n in `other` happened before the ones in `this`.\n */\n mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n let posA = 0, posB = 0;\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n if (ins < 0) {\n if (endA > pos)\n return posB + (pos - posA);\n posB += len;\n }\n else {\n if (mode != MapMode.Simple && endA >= pos &&\n (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n mode == MapMode.TrackBefore && posA < pos ||\n mode == MapMode.TrackAfter && endA > pos))\n return null;\n if (endA > pos || endA == pos && assoc < 0 && !len)\n return pos == posA || assoc < 0 ? posB : posB + ins;\n posB += ins;\n }\n posA = endA;\n }\n if (pos > posA)\n throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n return posB;\n }\n /**\n Check whether these changes touch a given range. When one of the\n changes entirely covers the range, the string `\"cover\"` is\n returned.\n */\n touchesRange(from, to = from) {\n for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n if (ins >= 0 && pos <= to && end >= from)\n return pos < from && end > to ? \"cover\" : true;\n pos = end;\n }\n return false;\n }\n /**\n @internal\n */\n toString() {\n let result = \"\";\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n }\n return result;\n }\n /**\n Serialize this change desc to a JSON-representable value.\n */\n toJSON() { return this.sections; }\n /**\n Create a change desc from its JSON representation (as produced\n by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n return new ChangeDesc(json);\n }\n /**\n @internal\n */\n static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n constructor(sections, \n /**\n @internal\n */\n inserted) {\n super(sections);\n this.inserted = inserted;\n }\n /**\n Apply the changes to a document, returning the modified\n document.\n */\n apply(doc) {\n if (this.length != doc.length)\n throw new RangeError(\"Applying change set to a document with the wrong length\");\n iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n return doc;\n }\n mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n /**\n Given the document as it existed _before_ the changes, return a\n change set that represents the inverse of this set, which could\n be used to go from the document created by the changes back to\n the document as it existed before the changes.\n */\n invert(doc) {\n let sections = this.sections.slice(), inserted = [];\n for (let i = 0, pos = 0; i < sections.length; i += 2) {\n let len = sections[i], ins = sections[i + 1];\n if (ins >= 0) {\n sections[i] = ins;\n sections[i + 1] = len;\n let index = i >> 1;\n while (inserted.length < index)\n inserted.push(Text.empty);\n inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n }\n pos += len;\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n Combine two subsequent change sets into a single set. `other`\n must start in the document produced by `this`. If `this` goes\n `docA` → `docB` and `other` represents `docB` → `docC`, the\n returned value will represent the change `docA` → `docC`.\n */\n compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n /**\n Given another change set starting in the same document, maps this\n change set over the other, producing a new change set that can be\n applied to the document produced by applying `other`. When\n `before` is `true`, order changes as if `this` comes before\n `other`, otherwise (the default) treat `other` as coming first.\n \n Given two changes `A` and `B`, `A.compose(B.map(A))` and\n `B.compose(A.map(B, true))` will produce the same document. This\n provides a basic form of [operational\n transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n and can be used for collaborative editing.\n */\n map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n /**\n Iterate over the changed ranges in the document, calling `f` for\n each, with the range in the original document (`fromA`-`toA`)\n and the range that replaces it in the new document\n (`fromB`-`toB`).\n \n When `individual` is true, adjacent changes are reported\n separately.\n */\n iterChanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n set.\n */\n get desc() { return ChangeDesc.create(this.sections); }\n /**\n @internal\n */\n filter(ranges) {\n let resultSections = [], resultInserted = [], filteredSections = [];\n let iter = new SectionIter(this);\n done: for (let i = 0, pos = 0;;) {\n let next = i == ranges.length ? 1e9 : ranges[i++];\n while (pos < next || pos == next && iter.len == 0) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, next - pos);\n addSection(filteredSections, len, -1);\n let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n addSection(resultSections, len, ins);\n if (ins > 0)\n addInsert(resultInserted, resultSections, iter.text);\n iter.forward(len);\n pos += len;\n }\n let end = ranges[i++];\n while (pos < end) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, end - pos);\n addSection(resultSections, len, -1);\n addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n iter.forward(len);\n pos += len;\n }\n }\n return { changes: new ChangeSet(resultSections, resultInserted),\n filtered: ChangeDesc.create(filteredSections) };\n }\n /**\n Serialize this change set to a JSON-representable value.\n */\n toJSON() {\n let parts = [];\n for (let i = 0; i < this.sections.length; i += 2) {\n let len = this.sections[i], ins = this.sections[i + 1];\n if (ins < 0)\n parts.push(len);\n else if (ins == 0)\n parts.push([len]);\n else\n parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n }\n return parts;\n }\n /**\n Create a change set for the given changes, for a document of the\n given length, using `lineSep` as line separator.\n */\n static of(changes, length, lineSep) {\n let sections = [], inserted = [], pos = 0;\n let total = null;\n function flush(force = false) {\n if (!force && !sections.length)\n return;\n if (pos < length)\n addSection(sections, length - pos, -1);\n let set = new ChangeSet(sections, inserted);\n total = total ? total.compose(set.map(total)) : set;\n sections = [];\n inserted = [];\n pos = 0;\n }\n function process(spec) {\n if (Array.isArray(spec)) {\n for (let sub of spec)\n process(sub);\n }\n else if (spec instanceof ChangeSet) {\n if (spec.length != length)\n throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n flush();\n total = total ? total.compose(spec.map(total)) : spec;\n }\n else {\n let { from, to = from, insert } = spec;\n if (from > to || from < 0 || to > length)\n throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n let insLen = insText.length;\n if (from == to && insLen == 0)\n return;\n if (from < pos)\n flush();\n if (from > pos)\n addSection(sections, from - pos, -1);\n addSection(sections, to - from, insLen);\n addInsert(inserted, sections, insText);\n pos = to;\n }\n }\n process(changes);\n flush(!total);\n return total;\n }\n /**\n Create an empty changeset of the given length.\n */\n static empty(length) {\n return new ChangeSet(length ? [length, -1] : [], []);\n }\n /**\n Create a changeset from its JSON representation (as produced by\n [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json))\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n let sections = [], inserted = [];\n for (let i = 0; i < json.length; i++) {\n let part = json[i];\n if (typeof part == \"number\") {\n sections.push(part, -1);\n }\n else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n }\n else if (part.length == 1) {\n sections.push(part[0], 0);\n }\n else {\n while (inserted.length < i)\n inserted.push(Text.empty);\n inserted[i] = Text.of(part.slice(1));\n sections.push(part[0], inserted[i].length);\n }\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n @internal\n */\n static createSet(sections, inserted) {\n return new ChangeSet(sections, inserted);\n }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n if (len == 0 && ins <= 0)\n return;\n let last = sections.length - 2;\n if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n sections[last] += len;\n else if (len == 0 && sections[last] == 0)\n sections[last + 1] += ins;\n else if (forceJoin) {\n sections[last] += len;\n sections[last + 1] += ins;\n }\n else\n sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n if (value.length == 0)\n return;\n let index = (sections.length - 2) >> 1;\n if (index < values.length) {\n values[values.length - 1] = values[values.length - 1].append(value);\n }\n else {\n while (values.length < index)\n values.push(Text.empty);\n values.push(value);\n }\n}\nfunction iterChanges(desc, f, individual) {\n let inserted = desc.inserted;\n for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n let len = desc.sections[i++], ins = desc.sections[i++];\n if (ins < 0) {\n posA += len;\n posB += len;\n }\n else {\n let endA = posA, endB = posB, text = Text.empty;\n for (;;) {\n endA += len;\n endB += ins;\n if (ins && inserted)\n text = text.append(inserted[(i - 2) >> 1]);\n if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n break;\n len = desc.sections[i++];\n ins = desc.sections[i++];\n }\n f(posA, endA, posB, endB, text);\n posA = endA;\n posB = endB;\n }\n }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n // Produce a copy of setA that applies to the document after setB\n // has been applied (assuming both start at the same document).\n let sections = [], insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n // Iterate over both sets in parallel. inserted tracks, for changes\n // in A that have to be processed piece-by-piece, whether their\n // content has been inserted already, and refers to the section\n // index.\n for (let inserted = -1;;) {\n if (a.ins == -1 && b.ins == -1) {\n // Move across ranges skipped by both sets.\n let len = Math.min(a.len, b.len);\n addSection(sections, len, -1);\n a.forward(len);\n b.forward(len);\n }\n else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n // If there's a change in B that comes before the next change in\n // A (ordered by start pos, then len, then before flag), skip\n // that (and process any changes in A it covers).\n let len = b.len;\n addSection(sections, b.ins, -1);\n while (len) {\n let piece = Math.min(a.len, len);\n if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n addSection(sections, 0, a.ins);\n if (insert)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n }\n a.forward(piece);\n len -= piece;\n }\n b.next();\n }\n else if (a.ins >= 0) {\n // Process the part of a change in A up to the start of the next\n // non-deletion change in B (if overlapping).\n let len = 0, left = a.len;\n while (left) {\n if (b.ins == -1) {\n let piece = Math.min(left, b.len);\n len += piece;\n left -= piece;\n b.forward(piece);\n }\n else if (b.ins == 0 && b.len < left) {\n left -= b.len;\n b.next();\n }\n else {\n break;\n }\n }\n addSection(sections, len, inserted < a.i ? a.ins : 0);\n if (insert && inserted < a.i)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n a.forward(a.len - left);\n }\n else if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else {\n throw new Error(\"Mismatched change set lengths\");\n }\n }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n let sections = [];\n let insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n for (let open = false;;) {\n if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else if (a.ins == 0) { // Deletion in A\n addSection(sections, a.len, 0, open);\n a.next();\n }\n else if (b.len == 0 && !b.done) { // Insertion in B\n addSection(sections, 0, b.ins, open);\n if (insert)\n addInsert(insert, sections, b.text);\n b.next();\n }\n else if (a.done || b.done) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else {\n let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n if (a.ins == -1) {\n let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n addSection(sections, len, insB, open);\n if (insert && insB)\n addInsert(insert, sections, b.text);\n }\n else if (b.ins == -1) {\n addSection(sections, a.off ? 0 : a.len, len, open);\n if (insert)\n addInsert(insert, sections, a.textBit(len));\n }\n else {\n addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n if (insert && !b.off)\n addInsert(insert, sections, b.text);\n }\n open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n a.forward2(len);\n b.forward(len);\n }\n }\n}\nclass SectionIter {\n constructor(set) {\n this.set = set;\n this.i = 0;\n this.next();\n }\n next() {\n let { sections } = this.set;\n if (this.i < sections.length) {\n this.len = sections[this.i++];\n this.ins = sections[this.i++];\n }\n else {\n this.len = 0;\n this.ins = -2;\n }\n this.off = 0;\n }\n get done() { return this.ins == -2; }\n get len2() { return this.ins < 0 ? this.len : this.ins; }\n get text() {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length ? Text.empty : inserted[index];\n }\n textBit(len) {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length && !len ? Text.empty\n : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n }\n forward(len) {\n if (len == this.len)\n this.next();\n else {\n this.len -= len;\n this.off += len;\n }\n }\n forward2(len) {\n if (this.ins == -1)\n this.forward(len);\n else if (len == this.ins)\n this.next();\n else {\n this.ins -= len;\n this.off += len;\n }\n }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n constructor(\n /**\n The lower boundary of the range.\n */\n from, \n /**\n The upper boundary of the range.\n */\n to, flags) {\n this.from = from;\n this.to = to;\n this.flags = flags;\n }\n /**\n The anchor of the range—the side that doesn't move when you\n extend it.\n */\n get anchor() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.to : this.from; }\n /**\n The head of the range, which is moved when the range is\n [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n */\n get head() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.from : this.to; }\n /**\n True when `anchor` and `head` are at the same position.\n */\n get empty() { return this.from == this.to; }\n /**\n If this is a cursor that is explicitly associated with the\n character on one of its sides, this returns the side. -1 means\n the character before its position, 1 the character after, and 0\n means no association.\n */\n get assoc() { return this.flags & 8 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 16 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n /**\n The bidirectional text level associated with this cursor, if\n any.\n */\n get bidiLevel() {\n let level = this.flags & 7 /* RangeFlag.BidiLevelMask */;\n return level == 7 ? null : level;\n }\n /**\n The goal column (stored vertical offset) associated with a\n cursor. This is used to preserve the vertical position when\n [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n lines of different length.\n */\n get goalColumn() {\n let value = this.flags >> 6 /* RangeFlag.GoalColumnOffset */;\n return value == 16777215 /* RangeFlag.NoGoalColumn */ ? undefined : value;\n }\n /**\n Map this range through a change, producing a valid range in the\n updated document.\n */\n map(change, assoc = -1) {\n let from, to;\n if (this.empty) {\n from = to = change.mapPos(this.from, assoc);\n }\n else {\n from = change.mapPos(this.from, 1);\n to = change.mapPos(this.to, -1);\n }\n return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags);\n }\n /**\n Extend this range to cover at least `from` to `to`.\n */\n extend(from, to = from) {\n if (from <= this.anchor && to >= this.anchor)\n return EditorSelection.range(from, to);\n let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n return EditorSelection.range(this.anchor, head);\n }\n /**\n Compare this range to another range.\n */\n eq(other, includeAssoc = false) {\n return this.anchor == other.anchor && this.head == other.head &&\n (!includeAssoc || !this.empty || this.assoc == other.assoc);\n }\n /**\n Return a JSON-serializable object representing the range.\n */\n toJSON() { return { anchor: this.anchor, head: this.head }; }\n /**\n Convert a JSON representation of a range to a `SelectionRange`\n instance.\n */\n static fromJSON(json) {\n if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n return EditorSelection.range(json.anchor, json.head);\n }\n /**\n @internal\n */\n static create(from, to, flags) {\n return new SelectionRange(from, to, flags);\n }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n constructor(\n /**\n The ranges in the selection, sorted by position. Ranges cannot\n overlap (but they may touch, if they aren't empty).\n */\n ranges, \n /**\n The index of the _main_ range in the selection (which is\n usually the range that was added last).\n */\n mainIndex) {\n this.ranges = ranges;\n this.mainIndex = mainIndex;\n }\n /**\n Map a selection through a change. Used to adjust the selection\n position for changes.\n */\n map(change, assoc = -1) {\n if (change.empty)\n return this;\n return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n }\n /**\n Compare this selection to another selection. By default, ranges\n are compared only by position. When `includeAssoc` is true,\n cursor ranges must also have the same\n [`assoc`](https://codemirror.net/6/docs/ref/#state.SelectionRange.assoc) value.\n */\n eq(other, includeAssoc = false) {\n if (this.ranges.length != other.ranges.length ||\n this.mainIndex != other.mainIndex)\n return false;\n for (let i = 0; i < this.ranges.length; i++)\n if (!this.ranges[i].eq(other.ranges[i], includeAssoc))\n return false;\n return true;\n }\n /**\n Get the primary selection range. Usually, you should make sure\n your code applies to _all_ ranges, by using methods like\n [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n */\n get main() { return this.ranges[this.mainIndex]; }\n /**\n Make sure the selection only has one range. Returns a selection\n holding only the main range from this selection.\n */\n asSingle() {\n return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n }\n /**\n Extend this selection with an extra range.\n */\n addRange(range, main = true) {\n return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n }\n /**\n Replace a given range with another range, and then normalize the\n selection to merge and sort ranges if necessary.\n */\n replaceRange(range, which = this.mainIndex) {\n let ranges = this.ranges.slice();\n ranges[which] = range;\n return EditorSelection.create(ranges, this.mainIndex);\n }\n /**\n Convert this selection to an object that can be serialized to\n JSON.\n */\n toJSON() {\n return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n }\n /**\n Create a selection from a JSON representation.\n */\n static fromJSON(json) {\n if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n }\n /**\n Create a selection holding a single range.\n */\n static single(anchor, head = anchor) {\n return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n }\n /**\n Sort and merge the given set of ranges, creating a valid\n selection.\n */\n static create(ranges, mainIndex = 0) {\n if (ranges.length == 0)\n throw new RangeError(\"A selection needs at least one range\");\n for (let pos = 0, i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n if (range.empty ? range.from <= pos : range.from < pos)\n return EditorSelection.normalized(ranges.slice(), mainIndex);\n pos = range.to;\n }\n return new EditorSelection(ranges, mainIndex);\n }\n /**\n Create a cursor selection range at the given position. You can\n safely ignore the optional arguments in most situations.\n */\n static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */) |\n (bidiLevel == null ? 7 : Math.min(6, bidiLevel)) |\n ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */));\n }\n /**\n Create a selection range.\n */\n static range(anchor, head, goalColumn, bidiLevel) {\n let flags = ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */) |\n (bidiLevel == null ? 7 : Math.min(6, bidiLevel));\n return head < anchor ? SelectionRange.create(head, anchor, 32 /* RangeFlag.Inverted */ | 16 /* RangeFlag.AssocAfter */ | flags)\n : SelectionRange.create(anchor, head, (head > anchor ? 8 /* RangeFlag.AssocBefore */ : 0) | flags);\n }\n /**\n @internal\n */\n static normalized(ranges, mainIndex = 0) {\n let main = ranges[mainIndex];\n ranges.sort((a, b) => a.from - b.from);\n mainIndex = ranges.indexOf(main);\n for (let i = 1; i < ranges.length; i++) {\n let range = ranges[i], prev = ranges[i - 1];\n if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n let from = prev.from, to = Math.max(range.to, prev.to);\n if (i <= mainIndex)\n mainIndex--;\n ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n }\n }\n return new EditorSelection(ranges, mainIndex);\n }\n}\nfunction checkSelection(selection, docLength) {\n for (let range of selection.ranges)\n if (range.to > docLength)\n throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n\nNote that `Facet` instances can be used anywhere where\n[`FacetReader`](https://codemirror.net/6/docs/ref/#state.FacetReader) is expected.\n*/\nclass Facet {\n constructor(\n /**\n @internal\n */\n combine, \n /**\n @internal\n */\n compareInput, \n /**\n @internal\n */\n compare, isStatic, enables) {\n this.combine = combine;\n this.compareInput = compareInput;\n this.compare = compare;\n this.isStatic = isStatic;\n /**\n @internal\n */\n this.id = nextID++;\n this.default = combine([]);\n this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n }\n /**\n Returns a facet reader for this facet, which can be used to\n [read](https://codemirror.net/6/docs/ref/#state.EditorState.facet) it but not to define values for it.\n */\n get reader() { return this; }\n /**\n Define a new facet.\n */\n static define(config = {}) {\n return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n }\n /**\n Returns an extension that adds the given value to this facet.\n */\n of(value) {\n return new FacetProvider([], this, 0 /* Provider.Static */, value);\n }\n /**\n Create an extension that computes a value for the facet from a\n state. You must take care to declare the parts of the state that\n this value depends on, since your function is only called again\n for a new state when one of those parts changed.\n \n In cases where your value depends only on a single field, you'll\n want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n */\n compute(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n }\n /**\n Create an extension that computes zero or more values for this\n facet from a state.\n */\n computeN(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n }\n from(field, get) {\n if (!get)\n get = x => x;\n return this.compute([field], state => get(state.field(field)));\n }\n}\nfunction sameArray(a, b) {\n return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n constructor(dependencies, facet, type, value) {\n this.dependencies = dependencies;\n this.facet = facet;\n this.type = type;\n this.value = value;\n this.id = nextID++;\n }\n dynamicSlot(addresses) {\n var _a;\n let getter = this.value;\n let compare = this.facet.compareInput;\n let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n let depDoc = false, depSel = false, depAddrs = [];\n for (let dep of this.dependencies) {\n if (dep == \"doc\")\n depDoc = true;\n else if (dep == \"selection\")\n depSel = true;\n else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n depAddrs.push(addresses[dep.id]);\n }\n return {\n create(state) {\n state.values[idx] = getter(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n let newVal = getter(state);\n if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n }\n return 0;\n },\n reconfigure: (state, oldState) => {\n let newVal, oldAddr = oldState.config.address[id];\n if (oldAddr != null) {\n let oldVal = getAddr(oldState, oldAddr);\n if (this.dependencies.every(dep => {\n return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n }) || (multi ? compareArray(newVal = getter(state), oldVal, compare) : compare(newVal = getter(state), oldVal))) {\n state.values[idx] = oldVal;\n return 0;\n }\n }\n else {\n newVal = getter(state);\n }\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n}\nfunction compareArray(a, b, compare) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compare(a[i], b[i]))\n return false;\n return true;\n}\nfunction ensureAll(state, addrs) {\n let changed = false;\n for (let addr of addrs)\n if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n changed = true;\n return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n let providerAddrs = providers.map(p => addresses[p.id]);\n let providerTypes = providers.map(p => p.type);\n let dynamic = providerAddrs.filter(p => !(p & 1));\n let idx = addresses[facet.id] >> 1;\n function get(state) {\n let values = [];\n for (let i = 0; i < providerAddrs.length; i++) {\n let value = getAddr(state, providerAddrs[i]);\n if (providerTypes[i] == 2 /* Provider.Multi */)\n for (let val of value)\n values.push(val);\n else\n values.push(value);\n }\n return facet.combine(values);\n }\n return {\n create(state) {\n for (let addr of providerAddrs)\n ensureAddr(state, addr);\n state.values[idx] = get(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if (!ensureAll(state, dynamic))\n return 0;\n let value = get(state);\n if (facet.compare(value, state.values[idx]))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure(state, oldState) {\n let depChanged = ensureAll(state, providerAddrs);\n let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n state.values[idx] = oldValue;\n return 0;\n }\n let value = get(state);\n if (facet.compare(value, oldValue)) {\n state.values[idx] = oldValue;\n return 0;\n }\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n }\n };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n constructor(\n /**\n @internal\n */\n id, createF, updateF, compareF, \n /**\n @internal\n */\n spec) {\n this.id = id;\n this.createF = createF;\n this.updateF = updateF;\n this.compareF = compareF;\n this.spec = spec;\n /**\n @internal\n */\n this.provides = undefined;\n }\n /**\n Define a state field.\n */\n static define(config) {\n let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n if (config.provide)\n field.provides = config.provide(field);\n return field;\n }\n create(state) {\n let init = state.facet(initField).find(i => i.field == this);\n return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n }\n /**\n @internal\n */\n slot(addresses) {\n let idx = addresses[this.id] >> 1;\n return {\n create: (state) => {\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n },\n update: (state, tr) => {\n let oldVal = state.values[idx];\n let value = this.updateF(oldVal, tr);\n if (this.compareF(oldVal, value))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure: (state, oldState) => {\n if (oldState.config.address[this.id] != null) {\n state.values[idx] = oldState.field(this);\n return 0;\n }\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n /**\n Returns an extension that enables this field and overrides the\n way it is initialized. Can be useful when you need to provide a\n non-default starting value for the field.\n */\n init(create) {\n return [this, initField.of({ field: this, create })];\n }\n /**\n State field instances can be used as\n [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n given state.\n */\n get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n /**\n The highest precedence level, for extensions that should end up\n near the start of the precedence ordering.\n */\n highest: /*@__PURE__*/prec(Prec_.highest),\n /**\n A higher-than-default precedence, for extensions that should\n come before those with default precedence.\n */\n high: /*@__PURE__*/prec(Prec_.high),\n /**\n The default precedence, which is also used for extensions\n without an explicit precedence.\n */\n default: /*@__PURE__*/prec(Prec_.default),\n /**\n A lower-than-default precedence.\n */\n low: /*@__PURE__*/prec(Prec_.low),\n /**\n The lowest precedence level. Meant for things that should end up\n near the end of the extension order.\n */\n lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n constructor(inner, prec) {\n this.inner = inner;\n this.prec = prec;\n }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n /**\n Create an instance of this compartment to add to your [state\n configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n */\n of(ext) { return new CompartmentInstance(this, ext); }\n /**\n Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n reconfigures this compartment.\n */\n reconfigure(content) {\n return Compartment.reconfigure.of({ compartment: this, extension: content });\n }\n /**\n Get the current content of the compartment in the state, or\n `undefined` if it isn't present.\n */\n get(state) {\n return state.config.compartments.get(this);\n }\n}\nclass CompartmentInstance {\n constructor(compartment, inner) {\n this.compartment = compartment;\n this.inner = inner;\n }\n}\nclass Configuration {\n constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n this.base = base;\n this.compartments = compartments;\n this.dynamicSlots = dynamicSlots;\n this.address = address;\n this.staticValues = staticValues;\n this.facets = facets;\n this.statusTemplate = [];\n while (this.statusTemplate.length < dynamicSlots.length)\n this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n }\n staticFacet(facet) {\n let addr = this.address[facet.id];\n return addr == null ? facet.default : this.staticValues[addr >> 1];\n }\n static resolve(base, compartments, oldState) {\n let fields = [];\n let facets = Object.create(null);\n let newCompartments = new Map();\n for (let ext of flatten(base, compartments, newCompartments)) {\n if (ext instanceof StateField)\n fields.push(ext);\n else\n (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n }\n let address = Object.create(null);\n let staticValues = [];\n let dynamicSlots = [];\n for (let field of fields) {\n address[field.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => field.slot(a));\n }\n let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n for (let id in facets) {\n let providers = facets[id], facet = providers[0].facet;\n let oldProviders = oldFacets && oldFacets[id] || [];\n if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n address[facet.id] = (staticValues.length << 1) | 1;\n if (sameArray(oldProviders, providers)) {\n staticValues.push(oldState.facet(facet));\n }\n else {\n let value = facet.combine(providers.map(p => p.value));\n staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n }\n }\n else {\n for (let p of providers) {\n if (p.type == 0 /* Provider.Static */) {\n address[p.id] = (staticValues.length << 1) | 1;\n staticValues.push(p.value);\n }\n else {\n address[p.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => p.dynamicSlot(a));\n }\n }\n address[facet.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n }\n }\n let dynamic = dynamicSlots.map(f => f(address));\n return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n }\n}\nfunction flatten(extension, compartments, newCompartments) {\n let result = [[], [], [], [], []];\n let seen = new Map();\n function inner(ext, prec) {\n let known = seen.get(ext);\n if (known != null) {\n if (known <= prec)\n return;\n let found = result[known].indexOf(ext);\n if (found > -1)\n result[known].splice(found, 1);\n if (ext instanceof CompartmentInstance)\n newCompartments.delete(ext.compartment);\n }\n seen.set(ext, prec);\n if (Array.isArray(ext)) {\n for (let e of ext)\n inner(e, prec);\n }\n else if (ext instanceof CompartmentInstance) {\n if (newCompartments.has(ext.compartment))\n throw new RangeError(`Duplicate use of compartment in extensions`);\n let content = compartments.get(ext.compartment) || ext.inner;\n newCompartments.set(ext.compartment, content);\n inner(content, prec);\n }\n else if (ext instanceof PrecExtension) {\n inner(ext.inner, ext.prec);\n }\n else if (ext instanceof StateField) {\n result[prec].push(ext);\n if (ext.provides)\n inner(ext.provides, prec);\n }\n else if (ext instanceof FacetProvider) {\n result[prec].push(ext);\n if (ext.facet.extensions)\n inner(ext.facet.extensions, Prec_.default);\n }\n else {\n let content = ext.extension;\n if (!content)\n throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n inner(content, prec);\n }\n }\n inner(extension, Prec_.default);\n return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n if (addr & 1)\n return 2 /* SlotStatus.Computed */;\n let idx = addr >> 1;\n let status = state.status[idx];\n if (status == 4 /* SlotStatus.Computing */)\n throw new Error(\"Cyclic dependency between fields and/or facets\");\n if (status & 2 /* SlotStatus.Computed */)\n return status;\n state.status[idx] = 4 /* SlotStatus.Computing */;\n let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n combine: values => values.some(v => v),\n static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : undefined,\n static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n /**\n @internal\n */\n constructor(\n /**\n The annotation type.\n */\n type, \n /**\n The value of this annotation.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Define a new type of annotation.\n */\n static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n /**\n Create an instance of this annotation.\n */\n of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n /**\n @internal\n */\n constructor(\n // The `any` types in these function types are there to work\n // around TypeScript issue #37631, where the type guard on\n // `StateEffect.is` mysteriously stops working when these properly\n // have type `Value`.\n /**\n @internal\n */\n map) {\n this.map = map;\n }\n /**\n Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n type.\n */\n of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n type, \n /**\n The value of this effect.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Map this effect through a position mapping. Will return\n `undefined` when that ends up deleting the effect.\n */\n map(mapping) {\n let mapped = this.type.map(this.value, mapping);\n return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n }\n /**\n Tells you whether this effect object is of a given\n [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n */\n is(type) { return this.type == type; }\n /**\n Define a new effect type. The type parameter indicates the type\n of values that his effect holds. It should be a type that\n doesn't include `undefined`, since that is used in\n [mapping](https://codemirror.net/6/docs/ref/#state.StateEffect.map) to indicate that an effect is\n removed.\n */\n static define(spec = {}) {\n return new StateEffectType(spec.map || (v => v));\n }\n /**\n Map an array of effects through a change set.\n */\n static mapEffects(effects, mapping) {\n if (!effects.length)\n return effects;\n let result = [];\n for (let effect of effects) {\n let mapped = effect.map(mapping);\n if (mapped)\n result.push(mapped);\n }\n return result;\n }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n constructor(\n /**\n The state from which the transaction starts.\n */\n startState, \n /**\n The document changes made by this transaction.\n */\n changes, \n /**\n The selection set by this transaction, or undefined if it\n doesn't explicitly set a selection.\n */\n selection, \n /**\n The effects added to the transaction.\n */\n effects, \n /**\n @internal\n */\n annotations, \n /**\n Whether the selection should be scrolled into view after this\n transaction is dispatched.\n */\n scrollIntoView) {\n this.startState = startState;\n this.changes = changes;\n this.selection = selection;\n this.effects = effects;\n this.annotations = annotations;\n this.scrollIntoView = scrollIntoView;\n /**\n @internal\n */\n this._doc = null;\n /**\n @internal\n */\n this._state = null;\n if (selection)\n checkSelection(selection, changes.newLength);\n if (!annotations.some((a) => a.type == Transaction.time))\n this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n }\n /**\n @internal\n */\n static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n }\n /**\n The new document produced by the transaction. Contrary to\n [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n force the entire new state to be computed right away, so it is\n recommended that [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n when they need to look at the new document.\n */\n get newDoc() {\n return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n }\n /**\n The new selection produced by the transaction. If\n [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n current selection through the changes made by the transaction.\n */\n get newSelection() {\n return this.selection || this.startState.selection.map(this.changes);\n }\n /**\n The new state created by the transaction. Computed on demand\n (but retained for subsequent access), so it is recommended not to\n access it in [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n */\n get state() {\n if (!this._state)\n this.startState.applyTransaction(this);\n return this._state;\n }\n /**\n Get the value of the given annotation type, if any.\n */\n annotation(type) {\n for (let ann of this.annotations)\n if (ann.type == type)\n return ann.value;\n return undefined;\n }\n /**\n Indicates whether the transaction changed the document.\n */\n get docChanged() { return !this.changes.empty; }\n /**\n Indicates whether this transaction reconfigures the state\n (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n with a top-level configuration\n [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n */\n get reconfigured() { return this.startState.config != this.state.config; }\n /**\n Returns true if the transaction has a [user\n event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n or more specific than `event`. For example, if the transaction\n has `\"select.pointer\"` as user event, `\"select\"` and\n `\"select.pointer\"` will match it.\n */\n isUserEvent(event) {\n let e = this.annotation(Transaction.userEvent);\n return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n - `\"input.type\"` for typed input\n - `\"input.type.compose\"` for composition\n - `\"input.paste\"` for pasted input\n - `\"input.drop\"` when adding content with drag-and-drop\n - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n - `\"delete.selection\"` when deleting the selection\n - `\"delete.forward\"` when deleting forward from the selection\n - `\"delete.backward\"` when deleting backward from the selection\n - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n let result = [];\n for (let iA = 0, iB = 0;;) {\n let from, to;\n if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n from = a[iA++];\n to = a[iA++];\n }\n else if (iB < b.length) {\n from = b[iB++];\n to = b[iB++];\n }\n else\n return result;\n if (!result.length || result[result.length - 1] < from)\n result.push(from, to);\n else if (result[result.length - 1] < to)\n result[result.length - 1] = to;\n }\n}\nfunction mergeTransaction(a, b, sequential) {\n var _a;\n let mapForA, mapForB, changes;\n if (sequential) {\n mapForA = b.changes;\n mapForB = ChangeSet.empty(b.changes.length);\n changes = a.changes.compose(b.changes);\n }\n else {\n mapForA = b.changes.map(a.changes);\n mapForB = a.changes.mapDesc(b.changes, true);\n changes = a.changes.compose(mapForA);\n }\n return {\n changes,\n selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n scrollIntoView: a.scrollIntoView || b.scrollIntoView\n };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n let sel = spec.selection, annotations = asArray(spec.annotations);\n if (spec.userEvent)\n annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n return {\n changes: spec.changes instanceof ChangeSet ? spec.changes\n : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n effects: asArray(spec.effects),\n annotations,\n scrollIntoView: !!spec.scrollIntoView\n };\n}\nfunction resolveTransaction(state, specs, filter) {\n let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n if (specs.length && specs[0].filter === false)\n filter = false;\n for (let i = 1; i < specs.length; i++) {\n if (specs[i].filter === false)\n filter = false;\n let seq = !!specs[i].sequential;\n s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n }\n let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n let state = tr.startState;\n // Change filters\n let result = true;\n for (let filter of state.facet(changeFilter)) {\n let value = filter(tr);\n if (value === false) {\n result = false;\n break;\n }\n if (Array.isArray(value))\n result = result === true ? value : joinRanges(result, value);\n }\n if (result !== true) {\n let changes, back;\n if (result === false) {\n back = tr.changes.invertedDesc;\n changes = ChangeSet.empty(state.doc.length);\n }\n else {\n let filtered = tr.changes.filter(result);\n changes = filtered.changes;\n back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n }\n tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n }\n // Transaction filters\n let filters = state.facet(transactionFilter);\n for (let i = filters.length - 1; i >= 0; i--) {\n let filtered = filters[i](tr);\n if (filtered instanceof Transaction)\n tr = filtered;\n else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n tr = filtered[0];\n else\n tr = resolveTransaction(state, asArray(filtered), false);\n }\n return tr;\n}\nfunction extendTransaction(tr) {\n let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n for (let i = extenders.length - 1; i >= 0; i--) {\n let extension = extenders[i](tr);\n if (extension && Object.keys(extension).length)\n spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n }\n return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n /**\n Word characters.\n */\n CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n /**\n Whitespace.\n */\n CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n /**\n Anything else.\n */\n CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n if (wordChar)\n return wordChar.test(str);\n for (let i = 0; i < str.length; i++) {\n let ch = str[i];\n if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n return true;\n }\n return false;\n}\nfunction makeCategorizer(wordChars) {\n return (char) => {\n if (!/\\S/.test(char))\n return CharCategory.Space;\n if (hasWordChar(char))\n return CharCategory.Word;\n for (let i = 0; i < wordChars.length; i++)\n if (char.indexOf(wordChars[i]) > -1)\n return CharCategory.Word;\n return CharCategory.Other;\n };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n constructor(\n /**\n @internal\n */\n config, \n /**\n The current document.\n */\n doc, \n /**\n The current selection.\n */\n selection, \n /**\n @internal\n */\n values, computeSlot, tr) {\n this.config = config;\n this.doc = doc;\n this.selection = selection;\n this.values = values;\n this.status = config.statusTemplate.slice();\n this.computeSlot = computeSlot;\n // Fill in the computed state immediately, so that further queries\n // for it made during the update return this state\n if (tr)\n tr._state = this;\n for (let i = 0; i < this.config.dynamicSlots.length; i++)\n ensureAddr(this, i << 1);\n this.computeSlot = null;\n }\n field(field, require = true) {\n let addr = this.config.address[field.id];\n if (addr == null) {\n if (require)\n throw new RangeError(\"Field is not present in this state\");\n return undefined;\n }\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n can be passed. Unless\n [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n are assumed to start in the _current_ document (not the document\n produced by previous specs), and its\n [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n to the document created by its _own_ changes. The resulting\n transaction contains the combined effect of all the different\n specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n specs take precedence over earlier ones.\n */\n update(...specs) {\n return resolveTransaction(this, specs, true);\n }\n /**\n @internal\n */\n applyTransaction(tr) {\n let conf = this.config, { base, compartments } = conf;\n for (let effect of tr.effects) {\n if (effect.is(Compartment.reconfigure)) {\n if (conf) {\n compartments = new Map;\n conf.compartments.forEach((val, key) => compartments.set(key, val));\n conf = null;\n }\n compartments.set(effect.value.compartment, effect.value.extension);\n }\n else if (effect.is(StateEffect.reconfigure)) {\n conf = null;\n base = effect.value;\n }\n else if (effect.is(StateEffect.appendConfig)) {\n conf = null;\n base = asArray(base).concat(effect.value);\n }\n }\n let startValues;\n if (!conf) {\n conf = Configuration.resolve(base, compartments, this);\n let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n startValues = intermediateState.values;\n }\n else {\n startValues = tr.startState.values.slice();\n }\n let selection = tr.startState.facet(allowMultipleSelections) ? tr.newSelection : tr.newSelection.asSingle();\n new EditorState(conf, tr.newDoc, selection, startValues, (state, slot) => slot.update(state, tr), tr);\n }\n /**\n Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n replaces every selection range with the given content.\n */\n replaceSelection(text) {\n if (typeof text == \"string\")\n text = this.toText(text);\n return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n range: EditorSelection.cursor(range.from + text.length) }));\n }\n /**\n Create a set of changes and a new selection by running the given\n function for each range in the active selection. The function\n can return an optional set of changes (in the coordinate space\n of the start document), plus an updated range (in the coordinate\n space of the document produced by the call's own changes). This\n method will merge all the changes and ranges into a single\n changeset and selection, and return it as a [transaction\n spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n */\n changeByRange(f) {\n let sel = this.selection;\n let result1 = f(sel.ranges[0]);\n let changes = this.changes(result1.changes), ranges = [result1.range];\n let effects = asArray(result1.effects);\n for (let i = 1; i < sel.ranges.length; i++) {\n let result = f(sel.ranges[i]);\n let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n for (let j = 0; j < i; j++)\n ranges[j] = ranges[j].map(newMapped);\n let mapBy = changes.mapDesc(newChanges, true);\n ranges.push(result.range.map(mapBy));\n changes = changes.compose(newMapped);\n effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n }\n return {\n changes,\n selection: EditorSelection.create(ranges, sel.mainIndex),\n effects\n };\n }\n /**\n Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n description, taking the state's document length and line\n separator into account.\n */\n changes(spec = []) {\n if (spec instanceof ChangeSet)\n return spec;\n return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n }\n /**\n Using the state's [line\n separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n */\n toText(string) {\n return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n }\n /**\n Return the given range of the document as a string.\n */\n sliceDoc(from = 0, to = this.doc.length) {\n return this.doc.sliceString(from, to, this.lineBreak);\n }\n /**\n Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n */\n facet(facet) {\n let addr = this.config.address[facet.id];\n if (addr == null)\n return facet.default;\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Convert this state to a JSON-serializable object. When custom\n fields should be serialized, you can pass them in as an object\n mapping property names (in the resulting object, which should\n not use `doc` or `selection`) to fields.\n */\n toJSON(fields) {\n let result = {\n doc: this.sliceDoc(),\n selection: this.selection.toJSON()\n };\n if (fields)\n for (let prop in fields) {\n let value = fields[prop];\n if (value instanceof StateField && this.config.address[value.id] != null)\n result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n }\n return result;\n }\n /**\n Deserialize a state from its JSON representation. When custom\n fields should be deserialized, pass the same object you passed\n to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n third argument.\n */\n static fromJSON(json, config = {}, fields) {\n if (!json || typeof json.doc != \"string\")\n throw new RangeError(\"Invalid JSON representation for EditorState\");\n let fieldInit = [];\n if (fields)\n for (let prop in fields) {\n if (Object.prototype.hasOwnProperty.call(json, prop)) {\n let field = fields[prop], value = json[prop];\n fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n }\n }\n return EditorState.create({\n doc: json.doc,\n selection: EditorSelection.fromJSON(json.selection),\n extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n });\n }\n /**\n Create a new state. You'll usually only need this when\n initializing an editor—updated states are created by applying\n transactions.\n */\n static create(config = {}) {\n let configuration = Configuration.resolve(config.extensions || [], new Map);\n let doc = config.doc instanceof Text ? config.doc\n : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n let selection = !config.selection ? EditorSelection.single(0)\n : config.selection instanceof EditorSelection ? config.selection\n : EditorSelection.single(config.selection.anchor, config.selection.head);\n checkSelection(selection, doc.length);\n if (!configuration.staticFacet(allowMultipleSelections))\n selection = selection.asSingle();\n return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n }\n /**\n The size (in columns) of a tab in the document, determined by\n the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n */\n get tabSize() { return this.facet(EditorState.tabSize); }\n /**\n Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n string for this state.\n */\n get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n /**\n Returns true when the editor is\n [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n */\n get readOnly() { return this.facet(readOnly); }\n /**\n Look up a translation for the given phrase (via the\n [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n original string if no translation is found.\n \n If additional arguments are passed, they will be inserted in\n place of markers like `$1` (for the first value) and `$2`, etc.\n A single `$` is equivalent to `$1`, and `$$` will produce a\n literal dollar sign.\n */\n phrase(phrase, ...insert) {\n for (let map of this.facet(EditorState.phrases))\n if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n phrase = map[phrase];\n break;\n }\n if (insert.length)\n phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n if (i == \"$\")\n return \"$\";\n let n = +(i || 1);\n return !n || n > insert.length ? m : insert[n - 1];\n });\n return phrase;\n }\n /**\n Find the values for a given language data field, provided by the\n the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n \n Examples of language data fields are...\n \n - [`\"commentTokens\"`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) for specifying\n comment syntax.\n - [`\"autocomplete\"`](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion^config.override)\n for providing language-specific completion sources.\n - [`\"wordChars\"`](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) for adding\n characters that should be considered part of words in this\n language.\n - [`\"closeBrackets\"`](https://codemirror.net/6/docs/ref/#autocomplete.CloseBracketConfig) controls\n bracket closing behavior.\n */\n languageDataAt(name, pos, side = -1) {\n let values = [];\n for (let provider of this.facet(languageData)) {\n for (let result of provider(this, pos, side)) {\n if (Object.prototype.hasOwnProperty.call(result, name))\n values.push(result[name]);\n }\n }\n return values;\n }\n /**\n Return a function that can categorize strings (expected to\n represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n into one of:\n \n - Word (contains an alphanumeric character or a character\n explicitly listed in the local language's `\"wordChars\"`\n language data, which should be a string)\n - Space (contains only whitespace)\n - Other (anything else)\n */\n charCategorizer(at) {\n return makeCategorizer(this.languageDataAt(\"wordChars\", at).join(\"\"));\n }\n /**\n Find the word at the given position, meaning the range\n containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n around it. If no word characters are adjacent to the position,\n this returns null.\n */\n wordAt(pos) {\n let { text, from, length } = this.doc.lineAt(pos);\n let cat = this.charCategorizer(pos);\n let start = pos - from, end = pos - from;\n while (start > 0) {\n let prev = findClusterBreak(text, start, false);\n if (cat(text.slice(prev, start)) != CharCategory.Word)\n break;\n start = prev;\n }\n while (end < length) {\n let next = findClusterBreak(text, end);\n if (cat(text.slice(end, next)) != CharCategory.Word)\n break;\n end = next;\n }\n return start == end ? null : EditorSelection.range(start + from, end + from);\n }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n compare(a, b) {\n let kA = Object.keys(a), kB = Object.keys(b);\n return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n let result = {};\n for (let config of configs)\n for (let key of Object.keys(config)) {\n let value = config[key], current = result[key];\n if (current === undefined)\n result[key] = value;\n else if (current === value || value === undefined) ; // No conflict\n else if (Object.hasOwnProperty.call(combine, key))\n result[key] = combine[key](current, value);\n else\n throw new Error(\"Config merge conflict for field \" + key);\n }\n for (let key in defaults)\n if (result[key] === undefined)\n result[key] = defaults[key];\n return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n /**\n Compare this value with another value. Used when comparing\n rangesets. The default implementation compares by identity.\n Unless you are only creating a fixed number of unique instances\n of your value type, it is a good idea to implement this\n properly.\n */\n eq(other) { return this == other; }\n /**\n Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n */\n range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n constructor(\n /**\n The range's start position.\n */\n from, \n /**\n Its end position.\n */\n to, \n /**\n The value associated with this range.\n */\n value) {\n this.from = from;\n this.to = to;\n this.value = value;\n }\n /**\n @internal\n */\n static create(from, to, value) {\n return new Range(from, to, value);\n }\n}\nfunction cmpRange(a, b) {\n return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n constructor(from, to, value, \n // Chunks are marked with the largest point that occurs\n // in them (or -1 for no points), so that scans that are\n // only interested in points (such as the\n // heightmap-related logic) can skip range-only chunks.\n maxPoint) {\n this.from = from;\n this.to = to;\n this.value = value;\n this.maxPoint = maxPoint;\n }\n get length() { return this.to[this.to.length - 1]; }\n // Find the index of the given position and side. Use the ranges'\n // `from` pos when `end == false`, `to` when `end == true`.\n findIndex(pos, side, end, startAt = 0) {\n let arr = end ? this.to : this.from;\n for (let lo = startAt, hi = arr.length;;) {\n if (lo == hi)\n return lo;\n let mid = (lo + hi) >> 1;\n let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n if (mid == lo)\n return diff >= 0 ? lo : hi;\n if (diff >= 0)\n hi = mid;\n else\n lo = mid + 1;\n }\n }\n between(offset, from, to, f) {\n for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n return false;\n }\n map(offset, changes) {\n let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n for (let i = 0; i < this.value.length; i++) {\n let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n if (curFrom == curTo) {\n let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n if (mapped == null)\n continue;\n newFrom = newTo = mapped;\n if (val.startSide != val.endSide) {\n newTo = changes.mapPos(curFrom, val.endSide);\n if (newTo < newFrom)\n continue;\n }\n }\n else {\n newFrom = changes.mapPos(curFrom, val.startSide);\n newTo = changes.mapPos(curTo, val.endSide);\n if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n continue;\n }\n if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n continue;\n if (newPos < 0)\n newPos = newFrom;\n if (val.point)\n maxPoint = Math.max(maxPoint, newTo - newFrom);\n value.push(val);\n from.push(newFrom - newPos);\n to.push(newTo - newPos);\n }\n return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n constructor(\n /**\n @internal\n */\n chunkPos, \n /**\n @internal\n */\n chunk, \n /**\n @internal\n */\n nextLayer, \n /**\n @internal\n */\n maxPoint) {\n this.chunkPos = chunkPos;\n this.chunk = chunk;\n this.nextLayer = nextLayer;\n this.maxPoint = maxPoint;\n }\n /**\n @internal\n */\n static create(chunkPos, chunk, nextLayer, maxPoint) {\n return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n }\n /**\n @internal\n */\n get length() {\n let last = this.chunk.length - 1;\n return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n }\n /**\n The number of ranges in the set.\n */\n get size() {\n if (this.isEmpty)\n return 0;\n let size = this.nextLayer.size;\n for (let chunk of this.chunk)\n size += chunk.value.length;\n return size;\n }\n /**\n @internal\n */\n chunkEnd(index) {\n return this.chunkPos[index] + this.chunk[index].length;\n }\n /**\n Update the range set, optionally adding new ranges or filtering\n out existing ones.\n \n (Note: The type parameter is just there as a kludge to work\n around TypeScript variance issues that prevented `RangeSet`\n from being a subtype of `RangeSet` when `X` is a subtype of\n `Y`.)\n */\n update(updateSpec) {\n let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n let filter = updateSpec.filter;\n if (add.length == 0 && !filter)\n return this;\n if (sort)\n add = add.slice().sort(cmpRange);\n if (this.isEmpty)\n return add.length ? RangeSet.of(add) : this;\n let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n let builder = new RangeSetBuilder();\n while (cur.value || i < add.length) {\n if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n let range = add[i++];\n if (!builder.addInner(range.from, range.to, range.value))\n spill.push(range);\n }\n else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n cur.nextChunk();\n }\n else {\n if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n if (!builder.addInner(cur.from, cur.to, cur.value))\n spill.push(Range.create(cur.from, cur.to, cur.value));\n }\n cur.next();\n }\n }\n return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n }\n /**\n Map this range set through a set of changes, return the new set.\n */\n map(changes) {\n if (changes.empty || this.isEmpty)\n return this;\n let chunks = [], chunkPos = [], maxPoint = -1;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n let touch = changes.touchesRange(start, start + chunk.length);\n if (touch === false) {\n maxPoint = Math.max(maxPoint, chunk.maxPoint);\n chunks.push(chunk);\n chunkPos.push(changes.mapPos(start));\n }\n else if (touch === true) {\n let { mapped, pos } = chunk.map(start, changes);\n if (mapped) {\n maxPoint = Math.max(maxPoint, mapped.maxPoint);\n chunks.push(mapped);\n chunkPos.push(pos);\n }\n }\n }\n let next = this.nextLayer.map(changes);\n return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n }\n /**\n Iterate over the ranges that touch the region `from` to `to`,\n calling `f` for each. There is no guarantee that the ranges will\n be reported in any specific order. When the callback returns\n `false`, iteration stops.\n */\n between(from, to, f) {\n if (this.isEmpty)\n return;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n if (to >= start && from <= start + chunk.length &&\n chunk.between(start, from - start, to - start, f) === false)\n return;\n }\n this.nextLayer.between(from, to, f);\n }\n /**\n Iterate over the ranges in this set, in order, including all\n ranges that end at or after `from`.\n */\n iter(from = 0) {\n return HeapCursor.from([this]).goto(from);\n }\n /**\n @internal\n */\n get isEmpty() { return this.nextLayer == this; }\n /**\n Iterate over the ranges in a collection of sets, in order,\n starting from `from`.\n */\n static iter(sets, from = 0) {\n return HeapCursor.from(sets).goto(from);\n }\n /**\n Iterate over two groups of sets, calling methods on `comparator`\n to notify it of possible differences.\n */\n static compare(oldSets, newSets, \n /**\n This indicates how the underlying data changed between these\n ranges, and is needed to synchronize the iteration.\n */\n textDiff, comparator, \n /**\n Can be used to ignore all non-point ranges, and points below\n the given size. When -1, all ranges are compared.\n */\n minPointSize = -1) {\n let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let sharedChunks = findSharedChunks(a, b, textDiff);\n let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n if (textDiff.empty && textDiff.length == 0)\n compare(sideA, 0, sideB, 0, 0, comparator);\n }\n /**\n Compare the contents of two groups of range sets, returning true\n if they are equivalent in the given range.\n */\n static eq(oldSets, newSets, from = 0, to) {\n if (to == null)\n to = 1000000000 /* C.Far */ - 1;\n let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n if (a.length != b.length)\n return false;\n if (!a.length)\n return true;\n let sharedChunks = findSharedChunks(a, b);\n let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n for (;;) {\n if (sideA.to != sideB.to ||\n !sameValues(sideA.active, sideB.active) ||\n sideA.point && (!sideB.point || !sideA.point.eq(sideB.point)))\n return false;\n if (sideA.to > to)\n return true;\n sideA.next();\n sideB.next();\n }\n }\n /**\n Iterate over a group of range sets at the same time, notifying\n the iterator about the ranges covering every given piece of\n content. Returns the open count (see\n [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n of the iteration.\n */\n static spans(sets, from, to, iterator, \n /**\n When given and greater than -1, only points of at least this\n size are taken into account.\n */\n minPointSize = -1) {\n let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n let openRanges = cursor.openStart;\n for (;;) {\n let curTo = Math.min(cursor.to, to);\n if (cursor.point) {\n let active = cursor.activeForPoint(cursor.to);\n let openCount = cursor.pointFrom < from ? active.length + 1\n : cursor.point.startSide < 0 ? active.length\n : Math.min(active.length, openRanges);\n iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank);\n openRanges = Math.min(cursor.openEnd(curTo), active.length);\n }\n else if (curTo > pos) {\n iterator.span(pos, curTo, cursor.active, openRanges);\n openRanges = cursor.openEnd(curTo);\n }\n if (cursor.to > to)\n return openRanges + (cursor.point && cursor.to > to ? 1 : 0);\n pos = cursor.to;\n cursor.next();\n }\n }\n /**\n Create a range set for the given range or array of ranges. By\n default, this expects the ranges to be _sorted_ (by start\n position and, if two start at the same position,\n `value.startSide`). You can pass `true` as second argument to\n cause the method to sort them.\n */\n static of(ranges, sort = false) {\n let build = new RangeSetBuilder();\n for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n build.add(range.from, range.to, range.value);\n return build.finish();\n }\n /**\n Join an array of range sets into a single set.\n */\n static join(sets) {\n if (!sets.length)\n return RangeSet.empty;\n let result = sets[sets.length - 1];\n for (let i = sets.length - 2; i >= 0; i--) {\n for (let layer = sets[i]; layer != RangeSet.empty; layer = layer.nextLayer)\n result = new RangeSet(layer.chunkPos, layer.chunk, result, Math.max(layer.maxPoint, result.maxPoint));\n }\n return result;\n }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction lazySort(ranges) {\n if (ranges.length > 1)\n for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n let cur = ranges[i];\n if (cmpRange(prev, cur) > 0)\n return ranges.slice().sort(cmpRange);\n prev = cur;\n }\n return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n finishChunk(newArrays) {\n this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n this.chunkPos.push(this.chunkStart);\n this.chunkStart = -1;\n this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n this.maxPoint = -1;\n if (newArrays) {\n this.from = [];\n this.to = [];\n this.value = [];\n }\n }\n /**\n Create an empty builder.\n */\n constructor() {\n this.chunks = [];\n this.chunkPos = [];\n this.chunkStart = -1;\n this.last = null;\n this.lastFrom = -1000000000 /* C.Far */;\n this.lastTo = -1000000000 /* C.Far */;\n this.from = [];\n this.to = [];\n this.value = [];\n this.maxPoint = -1;\n this.setMaxPoint = -1;\n this.nextLayer = null;\n }\n /**\n Add a range. Ranges should be added in sorted (by `from` and\n `value.startSide`) order.\n */\n add(from, to, value) {\n if (!this.addInner(from, to, value))\n (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).add(from, to, value);\n }\n /**\n @internal\n */\n addInner(from, to, value) {\n let diff = from - this.lastTo || value.startSide - this.last.endSide;\n if (diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n if (diff < 0)\n return false;\n if (this.from.length == 250 /* C.ChunkSize */)\n this.finishChunk(true);\n if (this.chunkStart < 0)\n this.chunkStart = from;\n this.from.push(from - this.chunkStart);\n this.to.push(to - this.chunkStart);\n this.last = value;\n this.lastFrom = from;\n this.lastTo = to;\n this.value.push(value);\n if (value.point)\n this.maxPoint = Math.max(this.maxPoint, to - from);\n return true;\n }\n /**\n @internal\n */\n addChunk(from, chunk) {\n if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n return false;\n if (this.from.length)\n this.finishChunk(true);\n this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n this.chunks.push(chunk);\n this.chunkPos.push(from);\n let last = chunk.value.length - 1;\n this.last = chunk.value[last];\n this.lastFrom = chunk.from[last] + from;\n this.lastTo = chunk.to[last] + from;\n return true;\n }\n /**\n Finish the range set. Returns the new set. The builder can't be\n used anymore after this has been called.\n */\n finish() { return this.finishInner(RangeSet.empty); }\n /**\n @internal\n */\n finishInner(next) {\n if (this.from.length)\n this.finishChunk(false);\n if (this.chunks.length == 0)\n return next;\n let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n this.from = null; // Make sure further `add` calls produce errors\n return result;\n }\n}\nfunction findSharedChunks(a, b, textDiff) {\n let inA = new Map();\n for (let set of a)\n for (let i = 0; i < set.chunk.length; i++)\n if (set.chunk[i].maxPoint <= 0)\n inA.set(set.chunk[i], set.chunkPos[i]);\n let shared = new Set();\n for (let set of b)\n for (let i = 0; i < set.chunk.length; i++) {\n let known = inA.get(set.chunk[i]);\n if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n shared.add(set.chunk[i]);\n }\n return shared;\n}\nclass LayerCursor {\n constructor(layer, skip, minPoint, rank = 0) {\n this.layer = layer;\n this.skip = skip;\n this.minPoint = minPoint;\n this.rank = rank;\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n get endSide() { return this.value ? this.value.endSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.chunkIndex = this.rangeIndex = 0;\n this.gotoInner(pos, side, false);\n return this;\n }\n gotoInner(pos, side, forward) {\n while (this.chunkIndex < this.layer.chunk.length) {\n let next = this.layer.chunk[this.chunkIndex];\n if (!(this.skip && this.skip.has(next) ||\n this.layer.chunkEnd(this.chunkIndex) < pos ||\n next.maxPoint < this.minPoint))\n break;\n this.chunkIndex++;\n forward = false;\n }\n if (this.chunkIndex < this.layer.chunk.length) {\n let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n if (!forward || this.rangeIndex < rangeIndex)\n this.setRangeIndex(rangeIndex);\n }\n this.next();\n }\n forward(pos, side) {\n if ((this.to - pos || this.endSide - side) < 0)\n this.gotoInner(pos, side, true);\n }\n next() {\n for (;;) {\n if (this.chunkIndex == this.layer.chunk.length) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n break;\n }\n else {\n let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n let from = chunkPos + chunk.from[this.rangeIndex];\n this.from = from;\n this.to = chunkPos + chunk.to[this.rangeIndex];\n this.value = chunk.value[this.rangeIndex];\n this.setRangeIndex(this.rangeIndex + 1);\n if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n break;\n }\n }\n }\n setRangeIndex(index) {\n if (index == this.layer.chunk[this.chunkIndex].value.length) {\n this.chunkIndex++;\n if (this.skip) {\n while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n this.chunkIndex++;\n }\n this.rangeIndex = 0;\n }\n else {\n this.rangeIndex = index;\n }\n }\n nextChunk() {\n this.chunkIndex++;\n this.rangeIndex = 0;\n this.next();\n }\n compare(other) {\n return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n this.to - other.to || this.endSide - other.endSide;\n }\n}\nclass HeapCursor {\n constructor(heap) {\n this.heap = heap;\n }\n static from(sets, skip = null, minPoint = -1) {\n let heap = [];\n for (let i = 0; i < sets.length; i++) {\n for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n if (cur.maxPoint >= minPoint)\n heap.push(new LayerCursor(cur, skip, minPoint, i));\n }\n }\n return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n for (let cur of this.heap)\n cur.goto(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n this.next();\n return this;\n }\n forward(pos, side) {\n for (let cur of this.heap)\n cur.forward(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n if ((this.to - pos || this.value.endSide - side) < 0)\n this.next();\n }\n next() {\n if (this.heap.length == 0) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n this.rank = -1;\n }\n else {\n let top = this.heap[0];\n this.from = top.from;\n this.to = top.to;\n this.value = top.value;\n this.rank = top.rank;\n if (top.value)\n top.next();\n heapBubble(this.heap, 0);\n }\n }\n}\nfunction heapBubble(heap, index) {\n for (let cur = heap[index];;) {\n let childIndex = (index << 1) + 1;\n if (childIndex >= heap.length)\n break;\n let child = heap[childIndex];\n if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n child = heap[childIndex + 1];\n childIndex++;\n }\n if (cur.compare(child) < 0)\n break;\n heap[childIndex] = cur;\n heap[index] = child;\n index = childIndex;\n }\n}\nclass SpanCursor {\n constructor(sets, skip, minPoint) {\n this.minPoint = minPoint;\n this.active = [];\n this.activeTo = [];\n this.activeRank = [];\n this.minActive = -1;\n // A currently active point range, if any\n this.point = null;\n this.pointFrom = 0;\n this.pointRank = 0;\n this.to = -1000000000 /* C.Far */;\n this.endSide = 0;\n // The amount of open active ranges at the start of the iterator.\n // Not including points.\n this.openStart = -1;\n this.cursor = HeapCursor.from(sets, skip, minPoint);\n }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.cursor.goto(pos, side);\n this.active.length = this.activeTo.length = this.activeRank.length = 0;\n this.minActive = -1;\n this.to = pos;\n this.endSide = side;\n this.openStart = -1;\n this.next();\n return this;\n }\n forward(pos, side) {\n while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n this.removeActive(this.minActive);\n this.cursor.forward(pos, side);\n }\n removeActive(index) {\n remove(this.active, index);\n remove(this.activeTo, index);\n remove(this.activeRank, index);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n addActive(trackOpen) {\n let i = 0, { value, to, rank } = this.cursor;\n // Organize active marks by rank first, then by size\n while (i < this.activeRank.length && (rank - this.activeRank[i] || to - this.activeTo[i]) > 0)\n i++;\n insert(this.active, i, value);\n insert(this.activeTo, i, to);\n insert(this.activeRank, i, rank);\n if (trackOpen)\n insert(trackOpen, i, this.cursor.from);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n // After calling this, if `this.point` != null, the next range is a\n // point. Otherwise, it's a regular range, covered by `this.active`.\n next() {\n let from = this.to, wasPoint = this.point;\n this.point = null;\n let trackOpen = this.openStart < 0 ? [] : null;\n for (;;) {\n let a = this.minActive;\n if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n if (this.activeTo[a] > from) {\n this.to = this.activeTo[a];\n this.endSide = this.active[a].endSide;\n break;\n }\n this.removeActive(a);\n if (trackOpen)\n remove(trackOpen, a);\n }\n else if (!this.cursor.value) {\n this.to = this.endSide = 1000000000 /* C.Far */;\n break;\n }\n else if (this.cursor.from > from) {\n this.to = this.cursor.from;\n this.endSide = this.cursor.startSide;\n break;\n }\n else {\n let nextVal = this.cursor.value;\n if (!nextVal.point) { // Opening a range\n this.addActive(trackOpen);\n this.cursor.next();\n }\n else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n // Ignore any non-empty points that end precisely at the end of the prev point\n this.cursor.next();\n }\n else { // New point\n this.point = nextVal;\n this.pointFrom = this.cursor.from;\n this.pointRank = this.cursor.rank;\n this.to = this.cursor.to;\n this.endSide = nextVal.endSide;\n this.cursor.next();\n this.forward(this.to, this.endSide);\n break;\n }\n }\n }\n if (trackOpen) {\n this.openStart = 0;\n for (let i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--)\n this.openStart++;\n }\n }\n activeForPoint(to) {\n if (!this.active.length)\n return this.active;\n let active = [];\n for (let i = this.active.length - 1; i >= 0; i--) {\n if (this.activeRank[i] < this.pointRank)\n break;\n if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n active.push(this.active[i]);\n }\n return active.reverse();\n }\n openEnd(to) {\n let open = 0;\n for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n open++;\n return open;\n }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n a.goto(startA);\n b.goto(startB);\n let endB = startB + length;\n let pos = startB, dPos = startB - startA;\n for (;;) {\n let diff = (a.to + dPos) - b.to || a.endSide - b.endSide;\n let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n if (a.point || b.point) {\n if (!(a.point && b.point && (a.point == b.point || a.point.eq(b.point)) &&\n sameValues(a.activeForPoint(a.to), b.activeForPoint(b.to))))\n comparator.comparePoint(pos, clipEnd, a.point, b.point);\n }\n else {\n if (clipEnd > pos && !sameValues(a.active, b.active))\n comparator.compareRange(pos, clipEnd, a.active, b.active);\n }\n if (end > endB)\n break;\n pos = end;\n if (diff <= 0)\n a.next();\n if (diff >= 0)\n b.next();\n }\n}\nfunction sameValues(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (a[i] != b[i] && !a[i].eq(b[i]))\n return false;\n return true;\n}\nfunction remove(array, index) {\n for (let i = index, e = array.length - 1; i < e; i++)\n array[i] = array[i + 1];\n array.pop();\n}\nfunction insert(array, index, value) {\n for (let i = array.length - 1; i >= index; i--)\n array[i + 1] = array[i];\n array[index] = value;\n}\nfunction findMinIndex(value, array) {\n let found = -1, foundPos = 1000000000 /* C.Far */;\n for (let i = 0; i < array.length; i++)\n if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n found = i;\n foundPos = array[i];\n }\n return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n let n = 0;\n for (let i = 0; i < to;) {\n if (string.charCodeAt(i) == 9) {\n n += tabSize - (n % tabSize);\n i++;\n }\n else {\n n++;\n i = findClusterBreak(string, i);\n }\n }\n return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n for (let i = 0, n = 0;;) {\n if (n >= col)\n return i;\n if (i == string.length)\n break;\n n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n i = findClusterBreak(string, i);\n }\n return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n // :: (Object","\n\n","\n\n
\n Pogzul\n\n
\n
    \n
  • Blog
  • \n\n {#if $page.props.current_user}\n
  • Projects
  • \n {/if}\n
\n\n \n
\n
","\n\n
\n
\n \n\n
\n

Create your own copy of this project.

\n
\n
\n
\n","\n\n\n\n\n {page_title}\n \n\n \n \n \n \n \n\n {#if $tags.image}\n \n {/if}\n\n \n \n \n \n\n \n \n","/** @param {number} x */\nconst linear = (x) => x;\n\n/** @param {number} t */\nfunction cubic_out(t) {\n\tconst f = t - 1.0;\n\treturn f * f * f + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nfunction cubic_in_out(t) {\n\treturn t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nfunction split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\n/**\n * Animates a `blur` filter alongside an element's opacity.\n *\n * https://svelte.dev/docs/svelte-transition#blur\n * @param {Element} node\n * @param {import('./public').BlurParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function blur(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubic_in_out, amount = 5, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst f = style.filter === 'none' ? '' : style.filter;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [value, unit] = split_css_unit(amount);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `opacity: ${target_opacity - od * u}; filter: ${f} blur(${u * value}${unit});`\n\t};\n}\n\n/**\n * Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.\n *\n * https://svelte.dev/docs/svelte-transition#fade\n * @param {Element} node\n * @param {import('./public').FadeParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n\tconst o = +getComputedStyle(node).opacity;\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) => `opacity: ${t * o}`\n\t};\n}\n\n/**\n * Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.\n *\n * https://svelte.dev/docs/svelte-transition#fly\n * @param {Element} node\n * @param {import('./public').FlyParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fly(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubic_out, x = 0, y = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [x_value, x_unit] = split_css_unit(x);\n\tconst [y_value, y_unit] = split_css_unit(y);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x_value}${x_unit}, ${(1 - t) * y_value}${y_unit});\n\t\t\topacity: ${target_opacity - od * u}`\n\t};\n}\n\n/**\n * Slides an element in and out.\n *\n * https://svelte.dev/docs/svelte-transition#slide\n * @param {Element} node\n * @param {import('./public').SlideParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function slide(node, { delay = 0, duration = 400, easing = cubic_out, axis = 'y' } = {}) {\n\tconst style = getComputedStyle(node);\n\tconst opacity = +style.opacity;\n\tconst primary_property = axis === 'y' ? 'height' : 'width';\n\tconst primary_property_value = parseFloat(style[primary_property]);\n\tconst secondary_properties = axis === 'y' ? ['top', 'bottom'] : ['left', 'right'];\n\tconst capitalized_secondary_properties = secondary_properties.map(\n\t\t(e) => /** @type {'Left' | 'Right' | 'Top' | 'Bottom'} */ (`${e[0].toUpperCase()}${e.slice(1)}`)\n\t);\n\tconst padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]);\n\tconst padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]);\n\tconst margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]);\n\tconst margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]);\n\tconst border_width_start_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[0]}Width`]\n\t);\n\tconst border_width_end_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[1]}Width`]\n\t);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) =>\n\t\t\t'overflow: hidden;' +\n\t\t\t`opacity: ${Math.min(t * 20, 1) * opacity};` +\n\t\t\t`${primary_property}: ${t * primary_property_value}px;` +\n\t\t\t`padding-${secondary_properties[0]}: ${t * padding_start_value}px;` +\n\t\t\t`padding-${secondary_properties[1]}: ${t * padding_end_value}px;` +\n\t\t\t`margin-${secondary_properties[0]}: ${t * margin_start_value}px;` +\n\t\t\t`margin-${secondary_properties[1]}: ${t * margin_end_value}px;` +\n\t\t\t`border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;` +\n\t\t\t`border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;`\n\t};\n}\n\n/**\n * Animates the opacity and scale of an element. `in` transitions animate from an element's current (default) values to the provided values, passed as parameters. `out` transitions animate from the provided values to an element's default values.\n *\n * https://svelte.dev/docs/svelte-transition#scale\n * @param {Element} node\n * @param {import('./public').ScaleParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function scale(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubic_out, start = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst sd = 1 - start;\n\tconst od = target_opacity * (1 - opacity);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - sd * u});\n\t\t\topacity: ${target_opacity - od * u}\n\t\t`\n\t};\n}\n\n/**\n * Animates the stroke of an SVG element, like a snake in a tube. `in` transitions begin with the path invisible and draw the path to the screen over time. `out` transitions start in a visible state and gradually erase the path. `draw` only works with elements that have a `getTotalLength` method, like `` and ``.\n *\n * https://svelte.dev/docs/svelte-transition#draw\n * @param {SVGElement & { getTotalLength(): number }} node\n * @param {import('./public').DrawParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function draw(node, { delay = 0, speed, duration, easing = cubic_in_out } = {}) {\n\tlet len = node.getTotalLength();\n\tconst style = getComputedStyle(node);\n\tif (style.strokeLinecap !== 'butt') {\n\t\tlen += parseInt(style.strokeWidth);\n\t}\n\tif (duration === undefined) {\n\t\tif (speed === undefined) {\n\t\t\tduration = 800;\n\t\t} else {\n\t\t\tduration = len / speed;\n\t\t}\n\t} else if (typeof duration === 'function') {\n\t\tduration = duration(len);\n\t}\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_, u) => `\n\t\t\tstroke-dasharray: ${len};\n\t\t\tstroke-dashoffset: ${u * len};\n\t\t`\n\t};\n}\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nfunction assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\n/**\n * The `crossfade` function creates a pair of [transitions](https://svelte.dev/docs#template-syntax-element-directives-transition-fn) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.\n *\n * https://svelte.dev/docs/svelte-transition#crossfade\n * @param {import('./public').CrossfadeParams & {\n * \tfallback?: (node: Element, params: import('./public').CrossfadeParams, intro: boolean) => import('./public').TransitionConfig;\n * }} params\n * @returns {[(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig, (node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig]}\n */\nexport function crossfade({ fallback, ...defaults }) {\n\t/** @type {Map} */\n\tconst to_receive = new Map();\n\t/** @type {Map} */\n\tconst to_send = new Map();\n\n\t/**\n\t * @param {Element} from_node\n\t * @param {Element} node\n\t * @param {import('./public').CrossfadeParams} params\n\t * @returns {import('./public').TransitionConfig}\n\t */\n\tfunction crossfade(from_node, node, params) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = /** @param {number} d */ (d) => Math.sqrt(d) * 30,\n\t\t\teasing = cubic_out\n\t\t} = assign(assign({}, defaults), params);\n\t\tconst from = from_node.getBoundingClientRect();\n\t\tconst to = node.getBoundingClientRect();\n\t\tconst dx = from.left - to.left;\n\t\tconst dy = from.top - to.top;\n\t\tconst dw = from.width / to.width;\n\t\tconst dh = from.height / to.height;\n\t\tconst d = Math.sqrt(dx * dx + dy * dy);\n\t\tconst style = getComputedStyle(node);\n\t\tconst transform = style.transform === 'none' ? '' : style.transform;\n\t\tconst opacity = +style.opacity;\n\t\treturn {\n\t\t\tdelay,\n\t\t\tduration: typeof duration === 'function' ? duration(d) : duration,\n\t\t\teasing,\n\t\t\tcss: (t, u) => `\n\t\t\t opacity: ${t * opacity};\n\t\t\t transform-origin: top left;\n\t\t\t transform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${\n\t\t\t\t\t\tt + (1 - t) * dh\n\t\t\t\t\t});\n\t\t `\n\t\t};\n\t}\n\n\t/**\n\t * @param {Map} items\n\t * @param {Map} counterparts\n\t * @param {boolean} intro\n\t * @returns {(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig}\n\t */\n\tfunction transition(items, counterparts, intro) {\n\t\t// @ts-expect-error TODO improve typings (are the public types wrong?)\n\t\treturn (node, params) => {\n\t\t\titems.set(params.key, node);\n\t\t\treturn () => {\n\t\t\t\tif (counterparts.has(params.key)) {\n\t\t\t\t\tconst other_node = counterparts.get(params.key);\n\t\t\t\t\tcounterparts.delete(params.key);\n\t\t\t\t\treturn crossfade(/** @type {Element} */ (other_node), node, params);\n\t\t\t\t}\n\t\t\t\t// if the node is disappearing altogether\n\t\t\t\t// (i.e. wasn't claimed by the other list)\n\t\t\t\t// then we need to supply an outro\n\t\t\t\titems.delete(params.key);\n\t\t\t\treturn fallback && fallback(node, params, intro);\n\t\t\t};\n\t\t};\n\t}\n\treturn [transition(to_send, to_receive, false), transition(to_receive, to_send, true)];\n}\n","/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function linear(t) {\n\treturn t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backInOut(t) {\n\tconst s = 1.70158 * 1.525;\n\tif ((t *= 2) < 1) return 0.5 * (t * t * ((s + 1) * t - s));\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backIn(t) {\n\tconst s = 1.70158;\n\treturn t * t * ((s + 1) * t - s);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backOut(t) {\n\tconst s = 1.70158;\n\treturn --t * t * ((s + 1) * t + s) + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceOut(t) {\n\tconst a = 4.0 / 11.0;\n\tconst b = 8.0 / 11.0;\n\tconst c = 9.0 / 10.0;\n\tconst ca = 4356.0 / 361.0;\n\tconst cb = 35442.0 / 1805.0;\n\tconst cc = 16061.0 / 1805.0;\n\tconst t2 = t * t;\n\treturn t < a\n\t\t? 7.5625 * t2\n\t\t: t < b\n\t\t\t? 9.075 * t2 - 9.9 * t + 3.4\n\t\t\t: t < c\n\t\t\t\t? ca * t2 - cb * t + cc\n\t\t\t\t: 10.8 * t * t - 20.52 * t + 10.72;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceInOut(t) {\n\treturn t < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceIn(t) {\n\treturn 1.0 - bounceOut(1.0 - t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circInOut(t) {\n\tif ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1);\n\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circIn(t) {\n\treturn 1.0 - Math.sqrt(1.0 - t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circOut(t) {\n\treturn Math.sqrt(1 - --t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicInOut(t) {\n\treturn t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicIn(t) {\n\treturn t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicOut(t) {\n\tconst f = t - 1.0;\n\treturn f * f * f + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticInOut(t) {\n\treturn t < 0.5\n\t\t? 0.5 * Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n\t\t: 0.5 *\n\t\t\t\tMath.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n\t\t\t\tMath.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n\t\t\t\t1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticIn(t) {\n\treturn Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticOut(t) {\n\treturn Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoInOut(t) {\n\treturn t === 0.0 || t === 1.0\n\t\t? t\n\t\t: t < 0.5\n\t\t\t? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n\t\t\t: -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoIn(t) {\n\treturn t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoOut(t) {\n\treturn t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadInOut(t) {\n\tt /= 0.5;\n\tif (t < 1) return 0.5 * t * t;\n\tt--;\n\treturn -0.5 * (t * (t - 2) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadIn(t) {\n\treturn t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadOut(t) {\n\treturn -t * (t - 2.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartInOut(t) {\n\treturn t < 0.5 ? +8.0 * Math.pow(t, 4.0) : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartIn(t) {\n\treturn Math.pow(t, 4.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartOut(t) {\n\treturn Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintInOut(t) {\n\tif ((t *= 2) < 1) return 0.5 * t * t * t * t * t;\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintIn(t) {\n\treturn t * t * t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintOut(t) {\n\treturn --t * t * t * t * t + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineInOut(t) {\n\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineIn(t) {\n\tconst v = Math.cos(t * Math.PI * 0.5);\n\tif (Math.abs(v) < 1e-14) return 1;\n\telse return 1 - v;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineOut(t) {\n\treturn Math.sin((t * Math.PI) / 2);\n}\n","import { cubicOut } from '../easing/index.js';\n\n/**\n * The flip function calculates the start and end position of an element and animates between them, translating the x and y values.\n * `flip` stands for [First, Last, Invert, Play](https://aerotwist.com/blog/flip-your-animations/).\n *\n * https://svelte.dev/docs/svelte-animate#flip\n * @param {Element} node\n * @param {{ from: DOMRect; to: DOMRect }} fromTo\n * @param {import('./public.js').FlipParams} params\n * @returns {import('./public.js').AnimationConfig}\n */\nexport function flip(node, { from, to }, params = {}) {\n\tconst style = getComputedStyle(node);\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst [ox, oy] = style.transformOrigin.split(' ').map(parseFloat);\n\tconst dx = from.left + (from.width * ox) / to.width - (to.left + ox);\n\tconst dy = from.top + (from.height * oy) / to.height - (to.top + oy);\n\tconst { delay = 0, duration = (d) => Math.sqrt(d) * 120, easing = cubicOut } = params;\n\treturn {\n\t\tdelay,\n\t\tduration: typeof duration === 'function' ? duration(Math.sqrt(dx * dx + dy * dy)) : duration,\n\t\teasing,\n\t\tcss: (t, u) => {\n\t\t\tconst x = u * dx;\n\t\t\tconst y = u * dy;\n\t\t\tconst sx = t + (u * from.width) / to.width;\n\t\t\tconst sy = t + (u * from.height) / to.height;\n\t\t\treturn `transform: ${transform} translate(${x}px, ${y}px) scale(${sx}, ${sy});`;\n\t\t}\n\t};\n}\n","\n\n\n\n
\n {#each $flash_messages as { type, message, id } (id) }\n
\n {#if type === 'success'}\n \n \n \n {:else if type === 'info'}\n \n {:else if type === 'warning'}\n \n \n \n {:else if type === 'error'}\n \n \n \n {/if}\n\n {message}\n
\n {/each}\n
\n\n","\n\n\n {#if project}\n
\n

Delete {project.name}

\n\n

Are you sure?

\n\n

This will delete the project for you and anyone else.

\n\n
\n \n \n\n \n {#if is_deleting}{/if}\n\n Yes, delete this project\n \n \n\n
\n \n
\n
\n\n
\n \n
\n {/if}\n
","\n\n
\n
\n

Projects

\n\n

\n Shift + Click to delete a project.\n

\n
\n\n \n

Create

\n\n \n
\n
\n\n
    \n {#each projects as project}\n
  • \n {\n if (evt.shiftKey) {\n evt.preventDefault()\n\n delete_project_modal.show(project)\n }\n }}\n >\n {project.name}\n \n \n
  • \n {/each}\n\n {#if !projects.length}\n
  • Get started by creating a new project.
  • \n {/if}\n
\n\n","\n\n\n\n\n
\n \n\n
\n \n
\n
\n\n
\n \n
\n
","import { notify } from '$lib/components'\n\n/** @param {string} text */\nexport const copy_to_clipboard = async (text) => {\n notify({ type: 'success', message: 'Copied to clipboard!' })\n\n if (!('clipboard' in navigator)) {\n return copy_to_clipboard_fallback(text)\n }\n\n return await navigator.clipboard.writeText(text)\n}\n\n/** @param {string} text */\nconst copy_to_clipboard_fallback = (text) => {\n const input = document.createElement('textarea')\n input.innerHTML = text\n document.body.appendChild(input)\n input.select()\n document.execCommand('copy')\n document.body.removeChild(input)\n}\n","\n\n\n
\n
\n \n\n \n
\n\n
\n
\n
\n Can {$form.public_access === 'write' ? 'edit' : 'view'}\n
\n\n
    \n
  • \n\n \n \n
  • \n\n
  • \n \n \n
  • \n
\n
\n
\n
\n\n
\n \n\n \n
\n\n\n copy_to_clipboard(project_url)}\n>\n \n\n
\n Copy link\n
\n","\n\n

A dedicated page to experience the project.

\n\n{#if experience}\n \n
\n
\n \n\n \n
\n
\n\n
\n \n\n \n
\n \n\n copy_to_clipboard(experience_url)}\n >\n \n\n
\n Copy link\n
\n \n\n
\n Published at {format_datetime(experience.published_at)}.\n\n
\n \n
\n
\n{:else}\n
\n \n
\n{/if}","\n\n\n\n\n
\n

Share \"{$project_store.name}\"

\n\n
\n \n
\n \n
\n\n \n
\n \n
\n
\n\n
\n \n
\n
\n\n
\n \n
\n
","\n\n
\n
\n \n\n \n\n
\n \n\n \n
\n\n
\n \n
\n \n
\n\n {#if $page.props.is_project_owner}\n \n {/if}\n
","\n\n{#if $page.props.current_user.email}\n

We've emailed you an activation link to save your projects.

\n\n
\n Didn't get it?\n\n .\n
\n{:else}\n

We automatically save your projects locally. An account gives you access from anywhere.

\n\n
\n
\n \n\n \n\n {#if $form.errors?.email}\n
    \n {#each $form.errors.email as error}\n
  • {error}
  • \n {/each}\n
\n {/if}\n
\n\n
\n \n\n \n\n {#if $form.errors?.password}\n
    \n {#each $form.errors.password as error}\n
  • {error}
  • \n {/each}\n
\n {/if}\n
\n\n
\n \n\n \n\n {#if $form.errors?.password_confirmation}\n
    \n {#each $form.errors.password_confirmation as error}\n
  • {error}
  • \n {/each}\n
\n {/if}\n
\n\n \n
\n\n

Already have an account? .

\n{/if}","\n\n

Sign in to access all of your projects.

\n\n
\n
\n \n\n \n\n {#if $form.errors?.email}\n
    \n {#each $form.errors.email as error}\n
  • {error}
  • \n {/each}\n
\n {/if}\n
\n\n
\n \n\n \n\n {#if $form.errors?.password}\n
    \n {#each $form.errors.password as error}\n
  • {error}
  • \n {/each}\n
\n {/if}\n
\n\n \n
\n\n

Need an account? .

","\n\n\n\n\n
\n

Save your projects

\n\n \n\n {#if is_signing_up}\n modal.close()} />\n {:else}\n modal.close()} />\n {/if}\n\n
\n \n
\n
\n\n
\n \n
\n
","\n\n
\n

The Plog

\n\n {#each posts as post}\n
\n \n {post.title}\n\n
\n

{post.title}

\n
\n \n
\n {/each}\n
","\n\n\n Pogzul • {post.title}\n\n\n
\n

{post.title}

\n\n {post.title}\n\n {@html post.html}\n
","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Honeybadger = factory());\n})(this, (function () { 'use strict';\n\n\tvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction getDefaultExportFromCjs (x) {\n\t\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n\t}\n\n\tfunction getAugmentedNamespace(n) {\n\t var f = n.default;\n\t\tif (typeof f == \"function\") {\n\t\t\tvar a = function () {\n\t\t\t\treturn f.apply(this, arguments);\n\t\t\t};\n\t\t\ta.prototype = f.prototype;\n\t } else a = {};\n\t Object.defineProperty(a, '__esModule', {value: true});\n\t\tObject.keys(n).forEach(function (k) {\n\t\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: function () {\n\t\t\t\t\treturn n[k];\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn a;\n\t}\n\n\tvar browser$1 = {};\n\n\tvar src = {};\n\n\tvar events = {};\n\n\tvar util$1 = {};\n\n\tvar UNKNOWN_FUNCTION = '';\n\t/**\n\t * This parses the different stack traces and puts them into one format\n\t * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n\t */\n\n\tfunction parse(stackString) {\n\t var lines = stackString.split('\\n');\n\t return lines.reduce(function (stack, line) {\n\t var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n\t if (parseResult) {\n\t stack.push(parseResult);\n\t }\n\n\t return stack;\n\t }, []);\n\t}\n\tvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\tvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n\tfunction parseChrome(line) {\n\t var parts = chromeRe.exec(line);\n\n\t if (!parts) {\n\t return null;\n\t }\n\n\t var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n\t var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n\t var submatch = chromeEvalRe.exec(parts[2]);\n\n\t if (isEval && submatch != null) {\n\t // throw out eval line/column and use top-most line/column number\n\t parts[2] = submatch[1]; // url\n\n\t parts[3] = submatch[2]; // line\n\n\t parts[4] = submatch[3]; // column\n\t }\n\n\t return {\n\t file: !isNative ? parts[2] : null,\n\t methodName: parts[1] || UNKNOWN_FUNCTION,\n\t arguments: isNative ? [parts[2]] : [],\n\t lineNumber: parts[3] ? +parts[3] : null,\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t}\n\n\tvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n\tfunction parseWinjs(line) {\n\t var parts = winjsRe.exec(line);\n\n\t if (!parts) {\n\t return null;\n\t }\n\n\t return {\n\t file: parts[2],\n\t methodName: parts[1] || UNKNOWN_FUNCTION,\n\t arguments: [],\n\t lineNumber: +parts[3],\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t}\n\n\tvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n\tvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\n\tfunction parseGecko(line) {\n\t var parts = geckoRe.exec(line);\n\n\t if (!parts) {\n\t return null;\n\t }\n\n\t var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n\t var submatch = geckoEvalRe.exec(parts[3]);\n\n\t if (isEval && submatch != null) {\n\t // throw out eval line/column and use top-most line number\n\t parts[3] = submatch[1];\n\t parts[4] = submatch[2];\n\t parts[5] = null; // no column when eval\n\t }\n\n\t return {\n\t file: parts[3],\n\t methodName: parts[1] || UNKNOWN_FUNCTION,\n\t arguments: parts[2] ? parts[2].split(',') : [],\n\t lineNumber: parts[4] ? +parts[4] : null,\n\t column: parts[5] ? +parts[5] : null\n\t };\n\t}\n\n\tvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\n\tfunction parseJSC(line) {\n\t var parts = javaScriptCoreRe.exec(line);\n\n\t if (!parts) {\n\t return null;\n\t }\n\n\t return {\n\t file: parts[3],\n\t methodName: parts[1] || UNKNOWN_FUNCTION,\n\t arguments: [],\n\t lineNumber: +parts[4],\n\t column: parts[5] ? +parts[5] : null\n\t };\n\t}\n\n\tvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n\tfunction parseNode(line) {\n\t var parts = nodeRe.exec(line);\n\n\t if (!parts) {\n\t return null;\n\t }\n\n\t return {\n\t file: parts[2],\n\t methodName: parts[1] || UNKNOWN_FUNCTION,\n\t arguments: [],\n\t lineNumber: +parts[3],\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t}\n\n\tvar stackTraceParser_esm = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tparse: parse\n\t});\n\n\tvar require$$0$1 = /*@__PURE__*/getAugmentedNamespace(stackTraceParser_esm);\n\n\t(function (exports) {\n\t\tvar __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t var desc = Object.getOwnPropertyDescriptor(m, k);\n\t\t if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n\t\t desc = { enumerable: true, get: function() { return m[k]; } };\n\t\t }\n\t\t Object.defineProperty(o, k2, desc);\n\t\t}) : (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t o[k2] = m[k];\n\t\t}));\n\t\tvar __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t\t Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t\t}) : function(o, v) {\n\t\t o[\"default\"] = v;\n\t\t});\n\t\tvar __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {\n\t\t if (mod && mod.__esModule) return mod;\n\t\t var result = {};\n\t\t if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t\t __setModuleDefault(result, mod);\n\t\t return result;\n\t\t};\n\t\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t\t return new (P || (P = Promise))(function (resolve, reject) {\n\t\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t\t });\n\t\t};\n\t\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t function step(op) {\n\t\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t while (_) try {\n\t\t 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;\n\t\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t switch (op[0]) {\n\t\t case 0: case 1: t = op; break;\n\t\t case 4: _.label++; return { value: op[1], done: false };\n\t\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t default:\n\t\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t if (t[2]) _.ops.pop();\n\t\t _.trys.pop(); continue;\n\t\t }\n\t\t op = body.call(thisArg, _);\n\t\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t }\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.logDeprecatedMethod = exports.globalThisOrWindow = exports.isBrowserConfig = exports.clone = exports.formatCGIData = exports.filterUrl = exports.filter = exports.generateStackTrace = exports.endpoint = exports.instrumentConsole = exports.instrument = exports.isErrorObject = exports.makeNotice = exports.logger = exports.sanitize = exports.shallowClone = exports.runAfterNotifyHandlers = exports.runBeforeNotifyHandlers = exports.getSourceForBacktrace = exports.getCauses = exports.calculateBacktraceShift = exports.DEFAULT_BACKTRACE_SHIFT = exports.makeBacktrace = exports.objectIsExtensible = exports.objectIsEmpty = exports.mergeNotice = exports.merge = void 0;\n\t\t/* eslint-disable prefer-rest-params */\n\t\tvar stackTraceParser = __importStar(require$$0$1);\n\t\tfunction merge(obj1, obj2) {\n\t\t var result = {};\n\t\t for (var k in obj1) {\n\t\t result[k] = obj1[k];\n\t\t }\n\t\t for (var k in obj2) {\n\t\t result[k] = obj2[k];\n\t\t }\n\t\t return result;\n\t\t}\n\t\texports.merge = merge;\n\t\tfunction mergeNotice(notice1, notice2) {\n\t\t var result = merge(notice1, notice2);\n\t\t if (notice1.context && notice2.context) {\n\t\t result.context = merge(notice1.context, notice2.context);\n\t\t }\n\t\t return result;\n\t\t}\n\t\texports.mergeNotice = mergeNotice;\n\t\tfunction objectIsEmpty(obj) {\n\t\t for (var k in obj) {\n\t\t if (Object.prototype.hasOwnProperty.call(obj, k)) {\n\t\t return false;\n\t\t }\n\t\t }\n\t\t return true;\n\t\t}\n\t\texports.objectIsEmpty = objectIsEmpty;\n\t\tfunction objectIsExtensible(obj) {\n\t\t if (typeof Object.isExtensible !== 'function') {\n\t\t return true;\n\t\t }\n\t\t return Object.isExtensible(obj);\n\t\t}\n\t\texports.objectIsExtensible = objectIsExtensible;\n\t\tfunction makeBacktrace(stack, filterHbSourceCode, logger) {\n\t\t if (filterHbSourceCode === void 0) { filterHbSourceCode = false; }\n\t\t if (logger === void 0) { logger = console; }\n\t\t if (!stack) {\n\t\t return [];\n\t\t }\n\t\t try {\n\t\t var backtrace = stackTraceParser\n\t\t .parse(stack)\n\t\t .map(function (line) {\n\t\t return {\n\t\t file: line.file,\n\t\t method: line.methodName,\n\t\t number: line.lineNumber,\n\t\t column: line.column\n\t\t };\n\t\t });\n\t\t if (filterHbSourceCode) {\n\t\t backtrace.splice(0, calculateBacktraceShift(backtrace));\n\t\t }\n\t\t return backtrace;\n\t\t }\n\t\t catch (err) {\n\t\t logger.debug(err);\n\t\t return [];\n\t\t }\n\t\t}\n\t\texports.makeBacktrace = makeBacktrace;\n\t\tfunction isFrameFromHbSourceCode(frame) {\n\t\t var hasHbFile = false;\n\t\t var hasHbMethod = false;\n\t\t if (frame.file) {\n\t\t hasHbFile = frame.file.toLowerCase().indexOf('@honeybadger-io') > -1;\n\t\t }\n\t\t if (frame.method) {\n\t\t hasHbMethod = frame.method.toLowerCase().indexOf('@honeybadger-io') > -1;\n\t\t }\n\t\t return hasHbFile || hasHbMethod;\n\t\t}\n\t\texports.DEFAULT_BACKTRACE_SHIFT = 3;\n\t\t/**\n\t\t * If {@link generateStackTrace} is used, we want to exclude frames that come from\n\t\t * Honeybadger's source code.\n\t\t *\n\t\t * Logic:\n\t\t * - For each frame, increment the shift if source code is from Honeybadger\n\t\t * - If a frame from an file is encountered increment the shift ONLY if between Honeybadger source code\n\t\t * (i.e. previous and next frames are from Honeybadger)\n\t\t * - Exit when frame encountered is not from Honeybadger source code\n\t\t *\n\t\t * Note: this will not always work, especially in browser versions where code\n\t\t * is minified, uglified and bundled.\n\t\t * For those cases we default to 3:\n\t\t * - generateStackTrace\n\t\t * - makeNotice\n\t\t * - notify\n\t\t */\n\t\tfunction calculateBacktraceShift(backtrace) {\n\t\t var shift = 0;\n\t\t for (var i = 0; i < backtrace.length; i++) {\n\t\t var frame = backtrace[i];\n\t\t if (isFrameFromHbSourceCode(frame)) {\n\t\t shift++;\n\t\t continue;\n\t\t }\n\t\t if (!frame.file || frame.file === '') {\n\t\t var nextFrame = backtrace[i + 1];\n\t\t if (nextFrame && isFrameFromHbSourceCode(nextFrame)) {\n\t\t shift++;\n\t\t continue;\n\t\t }\n\t\t }\n\t\t break;\n\t\t }\n\t\t return shift || exports.DEFAULT_BACKTRACE_SHIFT;\n\t\t}\n\t\texports.calculateBacktraceShift = calculateBacktraceShift;\n\t\tfunction getCauses(notice, logger) {\n\t\t if (notice.cause) {\n\t\t var causes = [];\n\t\t var cause = notice;\n\t\t // @ts-ignore this throws an error if tsconfig.json has strict: true\n\t\t while (causes.length < 3 && (cause = cause.cause)) {\n\t\t causes.push({\n\t\t class: cause.name,\n\t\t message: cause.message,\n\t\t backtrace: typeof cause.stack == 'string' ? makeBacktrace(cause.stack, false, logger) : null\n\t\t });\n\t\t }\n\t\t return causes;\n\t\t }\n\t\t return [];\n\t\t}\n\t\texports.getCauses = getCauses;\n\t\tfunction getSourceForBacktrace(backtrace, getSourceFileHandler) {\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var result, index, trace, fileContent;\n\t\t return __generator(this, function (_a) {\n\t\t switch (_a.label) {\n\t\t case 0:\n\t\t result = [];\n\t\t if (!getSourceFileHandler || !backtrace || !backtrace.length) {\n\t\t return [2 /*return*/, result];\n\t\t }\n\t\t index = 0;\n\t\t _a.label = 1;\n\t\t case 1:\n\t\t if (!backtrace.length) return [3 /*break*/, 3];\n\t\t trace = backtrace.splice(0)[index];\n\t\t return [4 /*yield*/, getSourceFileHandler(trace.file)];\n\t\t case 2:\n\t\t fileContent = _a.sent();\n\t\t result[index] = getSourceCodeSnippet(fileContent, trace.number);\n\t\t index++;\n\t\t return [3 /*break*/, 1];\n\t\t case 3: return [2 /*return*/, result];\n\t\t }\n\t\t });\n\t\t });\n\t\t}\n\t\texports.getSourceForBacktrace = getSourceForBacktrace;\n\t\tfunction runBeforeNotifyHandlers(notice, handlers) {\n\t\t var results = [];\n\t\t var result = true;\n\t\t for (var i = 0, len = handlers.length; i < len; i++) {\n\t\t var handler = handlers[i];\n\t\t var handlerResult = handler(notice);\n\t\t if (handlerResult === false) {\n\t\t result = false;\n\t\t }\n\t\t results.push(handlerResult);\n\t\t }\n\t\t return {\n\t\t results: results,\n\t\t result: result\n\t\t };\n\t\t}\n\t\texports.runBeforeNotifyHandlers = runBeforeNotifyHandlers;\n\t\tfunction runAfterNotifyHandlers(notice, handlers, error) {\n\t\t if (notice && notice.afterNotify) {\n\t\t notice.afterNotify(error, notice);\n\t\t }\n\t\t for (var i = 0, len = handlers.length; i < len; i++) {\n\t\t handlers[i](error, notice);\n\t\t }\n\t\t return true;\n\t\t}\n\t\texports.runAfterNotifyHandlers = runAfterNotifyHandlers;\n\t\t// Returns a new object with properties from other object.\n\t\tfunction shallowClone(obj) {\n\t\t if (typeof (obj) !== 'object' || obj === null) {\n\t\t return {};\n\t\t }\n\t\t var result = {};\n\t\t for (var k in obj) {\n\t\t result[k] = obj[k];\n\t\t }\n\t\t return result;\n\t\t}\n\t\texports.shallowClone = shallowClone;\n\t\tfunction sanitize(obj, maxDepth) {\n\t\t if (maxDepth === void 0) { maxDepth = 8; }\n\t\t var seenObjects = [];\n\t\t function seen(obj) {\n\t\t if (!obj || typeof (obj) !== 'object') {\n\t\t return false;\n\t\t }\n\t\t for (var i = 0; i < seenObjects.length; i++) {\n\t\t var value = seenObjects[i];\n\t\t if (value === obj) {\n\t\t return true;\n\t\t }\n\t\t }\n\t\t seenObjects.push(obj);\n\t\t return false;\n\t\t }\n\t\t function canSerialize(obj) {\n\t\t var typeOfObj = typeof obj;\n\t\t // Functions are TMI\n\t\t if (/function/.test(typeOfObj)) {\n\t\t // Let special toJSON method pass as it's used by JSON.stringify (#722)\n\t\t return obj.name === 'toJSON';\n\t\t }\n\t\t // Symbols can't convert to strings.\n\t\t if (/symbol/.test(typeOfObj)) {\n\t\t return false;\n\t\t }\n\t\t if (obj === null) {\n\t\t return false;\n\t\t }\n\t\t // No prototype, likely created with `Object.create(null)`.\n\t\t if (typeof obj === 'object' && typeof obj.hasOwnProperty === 'undefined') {\n\t\t return false;\n\t\t }\n\t\t return true;\n\t\t }\n\t\t function serialize(obj, depth) {\n\t\t if (depth === void 0) { depth = 0; }\n\t\t if (depth >= maxDepth) {\n\t\t return '[DEPTH]';\n\t\t }\n\t\t // Inspect invalid types\n\t\t if (!canSerialize(obj)) {\n\t\t return Object.prototype.toString.call(obj);\n\t\t }\n\t\t // Halt circular references\n\t\t if (seen(obj)) {\n\t\t return '[RECURSION]';\n\t\t }\n\t\t // Serialize inside arrays\n\t\t if (Array.isArray(obj)) {\n\t\t return obj.map(function (o) { return safeSerialize(o, depth + 1); });\n\t\t }\n\t\t // Serialize inside objects\n\t\t if (typeof (obj) === 'object') {\n\t\t var ret = {};\n\t\t for (var k in obj) {\n\t\t var v = obj[k];\n\t\t if (Object.prototype.hasOwnProperty.call(obj, k) && (k != null) && (v != null)) {\n\t\t ret[k] = safeSerialize(v, depth + 1);\n\t\t }\n\t\t }\n\t\t return ret;\n\t\t }\n\t\t // Return everything else untouched\n\t\t return obj;\n\t\t }\n\t\t function safeSerialize(obj, depth) {\n\t\t if (depth === void 0) { depth = 0; }\n\t\t try {\n\t\t return serialize(obj, depth);\n\t\t }\n\t\t catch (e) {\n\t\t return \"[ERROR] \".concat(e);\n\t\t }\n\t\t }\n\t\t return safeSerialize(obj);\n\t\t}\n\t\texports.sanitize = sanitize;\n\t\tfunction logger(client) {\n\t\t var log = function (method) {\n\t\t return function () {\n\t\t var _a;\n\t\t var args = [];\n\t\t for (var _i = 0; _i < arguments.length; _i++) {\n\t\t args[_i] = arguments[_i];\n\t\t }\n\t\t if (method === 'debug') {\n\t\t if (!client.config.debug) {\n\t\t return;\n\t\t }\n\t\t // Log at default level so that you don't need to also enable verbose\n\t\t // logging in Chrome.\n\t\t method = 'log';\n\t\t }\n\t\t args.unshift('[Honeybadger]');\n\t\t (_a = client.config.logger)[method].apply(_a, args);\n\t\t };\n\t\t };\n\t\t return {\n\t\t log: log('log'),\n\t\t info: log('info'),\n\t\t debug: log('debug'),\n\t\t warn: log('warn'),\n\t\t error: log('error')\n\t\t };\n\t\t}\n\t\texports.logger = logger;\n\t\t/**\n\t\t * Converts any object into a notice object (which at minimum has the same\n\t\t * properties as Error, but supports additional Honeybadger properties.)\n\t\t */\n\t\tfunction makeNotice(thing) {\n\t\t var notice;\n\t\t if (!thing) {\n\t\t notice = {};\n\t\t }\n\t\t else if (isErrorObject(thing)) {\n\t\t var e = thing;\n\t\t notice = merge(thing, { name: e.name, message: e.message, stack: e.stack, cause: e.cause });\n\t\t }\n\t\t else if (typeof thing === 'object') {\n\t\t notice = shallowClone(thing);\n\t\t }\n\t\t else {\n\t\t var m = String(thing);\n\t\t notice = { message: m };\n\t\t }\n\t\t return notice;\n\t\t}\n\t\texports.makeNotice = makeNotice;\n\t\tfunction isErrorObject(thing) {\n\t\t return thing instanceof Error\n\t\t || Object.prototype.toString.call(thing) === '[object Error]'; // Important for cross-realm objects\n\t\t}\n\t\texports.isErrorObject = isErrorObject;\n\t\t/**\n\t\t * Instrument an existing function inside an object (usually global).\n\t\t * @param {!Object} object\n\t\t * @param {!String} name\n\t\t * @param {!Function} replacement\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tfunction instrument(object, name, replacement) {\n\t\t if (!object || !name || !replacement || !(name in object)) {\n\t\t return;\n\t\t }\n\t\t try {\n\t\t var original = object[name];\n\t\t while (original && original.__hb_original) {\n\t\t original = original.__hb_original;\n\t\t }\n\t\t object[name] = replacement(original);\n\t\t object[name].__hb_original = original;\n\t\t }\n\t\t catch (_e) {\n\t\t // Ignores errors where \"original\" is a restricted object (see #1001)\n\t\t // Uncaught Error: Permission denied to access property \"__hb_original\"\n\t\t // Also ignores:\n\t\t // Error: TypeError: Cannot set property onunhandledrejection of [object Object] which has only a getter\n\t\t // User-Agent: Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-G960F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.1 Chrome/79.0.3945.136 Mobile Safari/537.36\n\t\t }\n\t\t}\n\t\texports.instrument = instrument;\n\t\tvar _consoleAlreadyInstrumented = false;\n\t\tvar listeners = [];\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tfunction instrumentConsole(_window, handler) {\n\t\t if (!_window || !_window.console || !handler) {\n\t\t return;\n\t\t }\n\t\t listeners.push(handler);\n\t\t if (_consoleAlreadyInstrumented) {\n\t\t return;\n\t\t }\n\t\t _consoleAlreadyInstrumented = true;\n\t\t ['debug', 'info', 'warn', 'error', 'log'].forEach(function (level) {\n\t\t instrument(_window.console, level, function hbLogger(original) {\n\t\t return function () {\n\t\t var args = Array.prototype.slice.call(arguments);\n\t\t listeners.forEach(function (listener) {\n\t\t try {\n\t\t listener(level, args);\n\t\t }\n\t\t catch (_e) {\n\t\t // ignore\n\t\t // should never reach here because instrument method already wraps with try/catch block\n\t\t }\n\t\t });\n\t\t if (typeof original === 'function') {\n\t\t Function.prototype.apply.call(original, _window.console, arguments);\n\t\t }\n\t\t };\n\t\t });\n\t\t });\n\t\t}\n\t\texports.instrumentConsole = instrumentConsole;\n\t\tfunction endpoint(base, path) {\n\t\t var endpoint = base.trim().replace(/\\/$/, '');\n\t\t path = path.trim().replace(/(^\\/|\\/$)/g, '');\n\t\t return \"\".concat(endpoint, \"/\").concat(path);\n\t\t}\n\t\texports.endpoint = endpoint;\n\t\tfunction generateStackTrace() {\n\t\t try {\n\t\t throw new Error('');\n\t\t }\n\t\t catch (e) {\n\t\t if (e.stack) {\n\t\t return e.stack;\n\t\t }\n\t\t }\n\t\t var maxStackSize = 10;\n\t\t var stack = [];\n\t\t var curr = arguments.callee;\n\t\t while (curr && stack.length < maxStackSize) {\n\t\t if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n\t\t stack.push(RegExp.$1 || '');\n\t\t }\n\t\t else {\n\t\t stack.push('');\n\t\t }\n\t\t try {\n\t\t curr = curr.caller;\n\t\t }\n\t\t catch (e) {\n\t\t break;\n\t\t }\n\t\t }\n\t\t return stack.join('\\n');\n\t\t}\n\t\texports.generateStackTrace = generateStackTrace;\n\t\tfunction filter(obj, filters) {\n\t\t if (!is('Object', obj)) {\n\t\t return;\n\t\t }\n\t\t if (!is('Array', filters)) {\n\t\t filters = [];\n\t\t }\n\t\t var seen = [];\n\t\t function filter(obj) {\n\t\t var k, newObj;\n\t\t if (is('Object', obj) || is('Array', obj)) {\n\t\t if (seen.indexOf(obj) !== -1) {\n\t\t return '[CIRCULAR DATA STRUCTURE]';\n\t\t }\n\t\t seen.push(obj);\n\t\t }\n\t\t if (is('Object', obj)) {\n\t\t newObj = {};\n\t\t for (k in obj) {\n\t\t if (filterMatch(k, filters)) {\n\t\t newObj[k] = '[FILTERED]';\n\t\t }\n\t\t else {\n\t\t newObj[k] = filter(obj[k]);\n\t\t }\n\t\t }\n\t\t return newObj;\n\t\t }\n\t\t if (is('Array', obj)) {\n\t\t return obj.map(function (v) {\n\t\t return filter(v);\n\t\t });\n\t\t }\n\t\t if (is('Function', obj)) {\n\t\t return '[FUNC]';\n\t\t }\n\t\t return obj;\n\t\t }\n\t\t return filter(obj);\n\t\t}\n\t\texports.filter = filter;\n\t\tfunction filterMatch(key, filters) {\n\t\t for (var i = 0; i < filters.length; i++) {\n\t\t if (key.toLowerCase().indexOf(filters[i].toLowerCase()) !== -1) {\n\t\t return true;\n\t\t }\n\t\t }\n\t\t return false;\n\t\t}\n\t\tfunction is(type, obj) {\n\t\t var klass = Object.prototype.toString.call(obj).slice(8, -1);\n\t\t return obj !== undefined && obj !== null && klass === type;\n\t\t}\n\t\tfunction filterUrl(url, filters) {\n\t\t if (!filters) {\n\t\t return url;\n\t\t }\n\t\t if (typeof url !== 'string') {\n\t\t return url;\n\t\t }\n\t\t var query = url.split(/\\?/, 2)[1];\n\t\t if (!query) {\n\t\t return url;\n\t\t }\n\t\t var result = url;\n\t\t query.split(/[&]\\s?/).forEach(function (pair) {\n\t\t var _a = pair.split('=', 2), key = _a[0], value = _a[1];\n\t\t if (filterMatch(key, filters)) {\n\t\t result = result.replace(\"\".concat(key, \"=\").concat(value), \"\".concat(key, \"=[FILTERED]\"));\n\t\t }\n\t\t });\n\t\t return result;\n\t\t}\n\t\texports.filterUrl = filterUrl;\n\t\tfunction formatCGIData(vars, prefix) {\n\t\t if (prefix === void 0) { prefix = ''; }\n\t\t var formattedVars = {};\n\t\t Object.keys(vars).forEach(function (key) {\n\t\t var formattedKey = prefix + key.replace(/\\W/g, '_').toUpperCase();\n\t\t formattedVars[formattedKey] = vars[key];\n\t\t });\n\t\t return formattedVars;\n\t\t}\n\t\texports.formatCGIData = formatCGIData;\n\t\tfunction clone(obj) {\n\t\t return JSON.parse(JSON.stringify(obj));\n\t\t}\n\t\texports.clone = clone;\n\t\tfunction getSourceCodeSnippet(fileData, lineNumber, sourceRadius) {\n\t\t if (sourceRadius === void 0) { sourceRadius = 2; }\n\t\t if (!fileData) {\n\t\t return null;\n\t\t }\n\t\t var lines = fileData.split('\\n');\n\t\t // add one empty line because array index starts from 0, but error line number is counted from 1\n\t\t lines.unshift('');\n\t\t var start = lineNumber - sourceRadius;\n\t\t var end = lineNumber + sourceRadius;\n\t\t var result = {};\n\t\t for (var i = start; i <= end; i++) {\n\t\t var line = lines[i];\n\t\t if (typeof line === 'string') {\n\t\t result[i] = line;\n\t\t }\n\t\t }\n\t\t return result;\n\t\t}\n\t\tfunction isBrowserConfig(config) {\n\t\t return config.async !== undefined;\n\t\t}\n\t\texports.isBrowserConfig = isBrowserConfig;\n\t\t/** globalThis has fairly good support. But just in case, lets check its defined.\n\t\t * @see {https://caniuse.com/?search=globalThis}\n\t\t */\n\t\tfunction globalThisOrWindow() {\n\t\t if (typeof globalThis !== 'undefined') {\n\t\t return globalThis;\n\t\t }\n\t\t if (typeof self !== 'undefined') {\n\t\t return self;\n\t\t }\n\t\t return window;\n\t\t}\n\t\texports.globalThisOrWindow = globalThisOrWindow;\n\t\tvar _deprecatedMethodCalls = {};\n\t\t/**\n\t\t * Logs a deprecation warning, every X calls to the method.\n\t\t */\n\t\tfunction logDeprecatedMethod(logger, oldMethod, newMethod, callCountThreshold) {\n\t\t if (callCountThreshold === void 0) { callCountThreshold = 100; }\n\t\t var key = \"\".concat(oldMethod, \"-\").concat(newMethod);\n\t\t if (typeof _deprecatedMethodCalls[key] === 'undefined') {\n\t\t _deprecatedMethodCalls[key] = 0;\n\t\t }\n\t\t if (_deprecatedMethodCalls[key] % callCountThreshold !== 0) {\n\t\t _deprecatedMethodCalls[key]++;\n\t\t return;\n\t\t }\n\t\t var msg = \"Deprecation warning: \".concat(oldMethod, \" has been deprecated; please use \").concat(newMethod, \" instead.\");\n\t\t logger.warn(msg);\n\t\t _deprecatedMethodCalls[key]++;\n\t\t}\n\t\texports.logDeprecatedMethod = logDeprecatedMethod;\n\t\t\n\t} (util$1));\n\n\tObject.defineProperty(events, \"__esModule\", { value: true });\n\tvar util_1$4 = util$1;\n\tfunction default_1$4(_window) {\n\t if (_window === void 0) { _window = (0, util_1$4.globalThisOrWindow)(); }\n\t return {\n\t shouldReloadOnConfigure: false,\n\t load: function (client) {\n\t function sendEventsToInsights() {\n\t return client.config.eventsEnabled;\n\t }\n\t if (!sendEventsToInsights()) {\n\t return;\n\t }\n\t (0, util_1$4.instrumentConsole)(_window, function (level, args) {\n\t if (!sendEventsToInsights()) {\n\t return;\n\t }\n\t if (args.length === 0) {\n\t return;\n\t }\n\t var data = {\n\t severity: level,\n\t };\n\t if (typeof args[0] === 'string') {\n\t data.message = args[0];\n\t data.args = args.slice(1);\n\t }\n\t else {\n\t data.args = args;\n\t }\n\t client.event('log', data);\n\t });\n\t }\n\t };\n\t}\n\tevents.default = default_1$4;\n\n\tvar client = {};\n\n\tvar store = {};\n\n\tObject.defineProperty(store, \"__esModule\", { value: true });\n\tstore.GlobalStore = void 0;\n\tvar util_1$3 = util$1;\n\tvar GlobalStore = /** @class */ (function () {\n\t function GlobalStore(contents, breadcrumbsLimit) {\n\t this.contents = contents;\n\t this.breadcrumbsLimit = breadcrumbsLimit;\n\t }\n\t GlobalStore.create = function (contents, breadcrumbsLimit) {\n\t return new GlobalStore(contents, breadcrumbsLimit);\n\t };\n\t GlobalStore.prototype.available = function () {\n\t return true;\n\t };\n\t GlobalStore.prototype.getContents = function (key) {\n\t var value = key ? this.contents[key] : this.contents;\n\t return JSON.parse(JSON.stringify(value));\n\t };\n\t GlobalStore.prototype.setContext = function (context) {\n\t this.contents.context = (0, util_1$3.merge)(this.contents.context, context || {});\n\t };\n\t GlobalStore.prototype.addBreadcrumb = function (breadcrumb) {\n\t if (this.contents.breadcrumbs.length == this.breadcrumbsLimit) {\n\t this.contents.breadcrumbs.shift();\n\t }\n\t this.contents.breadcrumbs.push(breadcrumb);\n\t };\n\t GlobalStore.prototype.clear = function () {\n\t this.contents.context = {};\n\t this.contents.breadcrumbs = [];\n\t };\n\t GlobalStore.prototype.run = function (callback) {\n\t return callback();\n\t };\n\t return GlobalStore;\n\t}());\n\tstore.GlobalStore = GlobalStore;\n\n\tvar throttled_events_logger = {};\n\n\tclass NdJson {\n\t static parse(data) {\n\t const lines = data.trim().split('\\n');\n\t return lines.map(line => JSON.parse(line));\n\t }\n\t static stringify(data) {\n\t return data.map(item => JSON.stringify(item)).join('\\n');\n\t }\n\t}\n\n\tvar module = /*#__PURE__*/Object.freeze({\n\t\t__proto__: null,\n\t\tNdJson: NdJson\n\t});\n\n\tvar require$$0 = /*@__PURE__*/getAugmentedNamespace(module);\n\n\tvar defaults = {};\n\n\tObject.defineProperty(defaults, \"__esModule\", { value: true });\n\tdefaults.CONFIG = void 0;\n\tdefaults.CONFIG = {\n\t apiKey: null,\n\t endpoint: 'https://api.honeybadger.io',\n\t environment: null,\n\t hostname: null,\n\t projectRoot: null,\n\t component: null,\n\t action: null,\n\t revision: null,\n\t reportData: null,\n\t breadcrumbsEnabled: true,\n\t // we could decide the value of eventsEnabled based on `env` and `developmentEnvironments`\n\t eventsEnabled: false,\n\t maxBreadcrumbs: 40,\n\t maxObjectDepth: 8,\n\t logger: console,\n\t developmentEnvironments: ['dev', 'development', 'test'],\n\t debug: false,\n\t tags: null,\n\t enableUncaught: true,\n\t enableUnhandledRejection: true,\n\t afterUncaught: function () { return true; },\n\t filters: ['creditcard', 'password'],\n\t __plugins: [],\n\t};\n\n\tvar __assign$2 = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t __assign$2 = Object.assign || function(t) {\n\t for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t s = arguments[i];\n\t for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t t[p] = s[p];\n\t }\n\t return t;\n\t };\n\t return __assign$2.apply(this, arguments);\n\t};\n\tvar __awaiter$2 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t return new (P || (P = Promise))(function (resolve, reject) {\n\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t });\n\t};\n\tvar __generator$2 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t function step(op) {\n\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t while (_) try {\n\t 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;\n\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t switch (op[0]) {\n\t case 0: case 1: t = op; break;\n\t case 4: _.label++; return { value: op[1], done: false };\n\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t default:\n\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t if (t[2]) _.ops.pop();\n\t _.trys.pop(); continue;\n\t }\n\t op = body.call(thisArg, _);\n\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t }\n\t};\n\tObject.defineProperty(throttled_events_logger, \"__esModule\", { value: true });\n\tthrottled_events_logger.ThrottledEventsLogger = void 0;\n\tvar json_nd_1 = require$$0;\n\tvar util_1$2 = util$1;\n\tvar defaults_1$1 = defaults;\n\tvar ThrottledEventsLogger = /** @class */ (function () {\n\t function ThrottledEventsLogger(config, transport) {\n\t this.config = config;\n\t this.transport = transport;\n\t this.queue = [];\n\t this.isProcessing = false;\n\t this.config = __assign$2(__assign$2({}, defaults_1$1.CONFIG), config);\n\t this.logger = this.originalLogger();\n\t }\n\t ThrottledEventsLogger.prototype.configure = function (opts) {\n\t for (var k in opts) {\n\t this.config[k] = opts[k];\n\t }\n\t };\n\t ThrottledEventsLogger.prototype.log = function (payload) {\n\t this.queue.push(payload);\n\t if (!this.isProcessing) {\n\t this.processQueue();\n\t }\n\t };\n\t ThrottledEventsLogger.prototype.processQueue = function () {\n\t var _this = this;\n\t if (this.queue.length === 0 || this.isProcessing) {\n\t return;\n\t }\n\t this.isProcessing = true;\n\t var eventsData = this.queue.slice();\n\t this.queue = [];\n\t var data = json_nd_1.NdJson.stringify(eventsData);\n\t this.makeHttpRequest(data)\n\t .then(function () {\n\t setTimeout(function () {\n\t _this.isProcessing = false;\n\t _this.processQueue();\n\t }, 50);\n\t })\n\t .catch(function (error) {\n\t _this.logger.error('[Honeybadger] Error making HTTP request:', error);\n\t // Continue processing the queue even if there's an error\n\t setTimeout(function () {\n\t _this.isProcessing = false;\n\t _this.processQueue();\n\t }, 50);\n\t });\n\t };\n\t ThrottledEventsLogger.prototype.makeHttpRequest = function (data) {\n\t return __awaiter$2(this, void 0, void 0, function () {\n\t var _this = this;\n\t return __generator$2(this, function (_a) {\n\t return [2 /*return*/, this.transport\n\t .send({\n\t headers: {\n\t 'X-API-Key': this.config.apiKey,\n\t 'Content-Type': 'application/json',\n\t },\n\t method: 'POST',\n\t endpoint: (0, util_1$2.endpoint)(this.config.endpoint, '/v1/events'),\n\t maxObjectDepth: this.config.maxObjectDepth,\n\t logger: this.logger,\n\t }, data)\n\t .then(function () {\n\t if (_this.config.debug) {\n\t _this.logger.debug('[Honeybadger] Events sent successfully');\n\t }\n\t })\n\t .catch(function (err) {\n\t _this.logger.error(\"[Honeybadger] Error sending events: \".concat(err.message));\n\t })];\n\t });\n\t });\n\t };\n\t /**\n\t * todo: improve this\n\t *\n\t * The EventsLogger overrides the console methods to enable automatic instrumentation\n\t * of console logs to the Honeybadger API.\n\t * So if we want to log something in here we need to use the original methods.\n\t */\n\t ThrottledEventsLogger.prototype.originalLogger = function () {\n\t var _a, _b, _c, _d, _e;\n\t return {\n\t // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t log: (_a = console.log.__hb_original) !== null && _a !== void 0 ? _a : console.log,\n\t // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t info: (_b = console.info.__hb_original) !== null && _b !== void 0 ? _b : console.info,\n\t // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t debug: (_c = console.debug.__hb_original) !== null && _c !== void 0 ? _c : console.debug,\n\t // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t warn: (_d = console.warn.__hb_original) !== null && _d !== void 0 ? _d : console.warn,\n\t // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t error: (_e = console.error.__hb_original) !== null && _e !== void 0 ? _e : console.error,\n\t };\n\t };\n\t return ThrottledEventsLogger;\n\t}());\n\tthrottled_events_logger.ThrottledEventsLogger = ThrottledEventsLogger;\n\n\tvar __assign$1 = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t __assign$1 = Object.assign || function(t) {\n\t for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t s = arguments[i];\n\t for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t t[p] = s[p];\n\t }\n\t return t;\n\t };\n\t return __assign$1.apply(this, arguments);\n\t};\n\tvar __awaiter$1 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t return new (P || (P = Promise))(function (resolve, reject) {\n\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t });\n\t};\n\tvar __generator$1 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t function step(op) {\n\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t while (_) try {\n\t 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;\n\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t switch (op[0]) {\n\t case 0: case 1: t = op; break;\n\t case 4: _.label++; return { value: op[1], done: false };\n\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t default:\n\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t if (t[2]) _.ops.pop();\n\t _.trys.pop(); continue;\n\t }\n\t op = body.call(thisArg, _);\n\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t }\n\t};\n\tObject.defineProperty(client, \"__esModule\", { value: true });\n\tclient.Client = void 0;\n\tvar util_1$1 = util$1;\n\tvar store_1 = store;\n\tvar throttled_events_logger_1 = throttled_events_logger;\n\tvar defaults_1 = defaults;\n\t// Split at commas and spaces\n\tvar TAG_SEPARATOR = /,|\\s+/;\n\t// Checks for non-blank characters\n\tvar NOT_BLANK = /\\S/;\n\tvar Client = /** @class */ (function () {\n\t function Client(opts, transport) {\n\t if (opts === void 0) { opts = {}; }\n\t this.__pluginsLoaded = false;\n\t this.__store = null;\n\t this.__beforeNotifyHandlers = [];\n\t this.__afterNotifyHandlers = [];\n\t this.__notifier = {\n\t name: '@honeybadger-io/core',\n\t url: 'https://github.com/honeybadger-io/honeybadger-js/tree/master/packages/core',\n\t version: '6.10.0'\n\t };\n\t this.config = __assign$1(__assign$1({}, defaults_1.CONFIG), opts);\n\t this.__initStore();\n\t this.__transport = transport;\n\t this.__eventsLogger = new throttled_events_logger_1.ThrottledEventsLogger(this.config, this.__transport);\n\t this.logger = (0, util_1$1.logger)(this);\n\t }\n\t Client.prototype.getVersion = function () {\n\t return this.__notifier.version;\n\t };\n\t Client.prototype.getNotifier = function () {\n\t return this.__notifier;\n\t };\n\t /**\n\t * CAREFUL: When adding a new notifier or updating the name of an existing notifier,\n\t * the Honeybadger rails project may need its mappings updated.\n\t * See https://github.com/honeybadger-io/honeybadger/blob/master/app/presenters/breadcrumbs_presenter.rb\n\t * https://github.com/honeybadger-io/honeybadger/blob/master/app/models/parser/java_script.rb\n\t * https://github.com/honeybadger-io/honeybadger/blob/master/app/models/language.rb\n\t **/\n\t Client.prototype.setNotifier = function (notifier) {\n\t this.__notifier = notifier;\n\t };\n\t Client.prototype.configure = function (opts) {\n\t if (opts === void 0) { opts = {}; }\n\t for (var k in opts) {\n\t this.config[k] = opts[k];\n\t }\n\t this.__eventsLogger.configure(this.config);\n\t this.loadPlugins();\n\t return this;\n\t };\n\t Client.prototype.loadPlugins = function () {\n\t var _this = this;\n\t var pluginsToLoad = this.__pluginsLoaded\n\t ? this.config.__plugins.filter(function (plugin) { return plugin.shouldReloadOnConfigure; })\n\t : this.config.__plugins;\n\t pluginsToLoad.forEach(function (plugin) { return plugin.load(_this); });\n\t this.__pluginsLoaded = true;\n\t };\n\t Client.prototype.__initStore = function () {\n\t this.__store = new store_1.GlobalStore({ context: {}, breadcrumbs: [] }, this.config.maxBreadcrumbs);\n\t };\n\t Client.prototype.beforeNotify = function (handler) {\n\t this.__beforeNotifyHandlers.push(handler);\n\t return this;\n\t };\n\t Client.prototype.afterNotify = function (handler) {\n\t this.__afterNotifyHandlers.push(handler);\n\t return this;\n\t };\n\t Client.prototype.setContext = function (context) {\n\t if (typeof context === 'object' && context != null) {\n\t this.__store.setContext(context);\n\t }\n\t return this;\n\t };\n\t Client.prototype.resetContext = function (context) {\n\t this.logger.warn('Deprecation warning: `Honeybadger.resetContext()` has been deprecated; please use `Honeybadger.clear()` instead.');\n\t this.__store.clear();\n\t if (typeof context === 'object' && context !== null) {\n\t this.__store.setContext(context);\n\t }\n\t return this;\n\t };\n\t Client.prototype.clear = function () {\n\t this.__store.clear();\n\t return this;\n\t };\n\t Client.prototype.notify = function (noticeable, name, extra) {\n\t var _this = this;\n\t if (name === void 0) { name = undefined; }\n\t if (extra === void 0) { extra = undefined; }\n\t var notice = this.makeNotice(noticeable, name, extra);\n\t // we need to have the source file data before the beforeNotifyHandlers,\n\t // in case they modify them\n\t var sourceCodeData = notice && notice.backtrace ? notice.backtrace.map(function (trace) { return (0, util_1$1.shallowClone)(trace); }) : null;\n\t var preConditionsResult = this.__runPreconditions(notice);\n\t if (preConditionsResult instanceof Error) {\n\t (0, util_1$1.runAfterNotifyHandlers)(notice, this.__afterNotifyHandlers, preConditionsResult);\n\t return false;\n\t }\n\t if (preConditionsResult instanceof Promise) {\n\t preConditionsResult.then(function (result) {\n\t if (result instanceof Error) {\n\t (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, result);\n\t return false;\n\t }\n\t return _this.__send(notice, sourceCodeData);\n\t });\n\t return true;\n\t }\n\t this.__send(notice, sourceCodeData).catch(function (_err) { });\n\t return true;\n\t };\n\t /**\n\t * An async version of {@link notify} that resolves only after the notice has been reported to Honeybadger.\n\t * Implemented using the {@link afterNotify} hook.\n\t * Rejects if for any reason the report failed to be reported.\n\t * Useful in serverless environments (AWS Lambda).\n\t */\n\t Client.prototype.notifyAsync = function (noticeable, name, extra) {\n\t var _this = this;\n\t if (name === void 0) { name = undefined; }\n\t if (extra === void 0) { extra = undefined; }\n\t return new Promise(function (resolve, reject) {\n\t var applyAfterNotify = function (partialNotice) {\n\t var originalAfterNotify = partialNotice.afterNotify;\n\t partialNotice.afterNotify = function (err) {\n\t originalAfterNotify === null || originalAfterNotify === void 0 ? void 0 : originalAfterNotify.call(_this, err);\n\t if (err) {\n\t return reject(err);\n\t }\n\t resolve();\n\t };\n\t };\n\t // We have to respect any afterNotify hooks that come from the arguments\n\t var objectToOverride;\n\t if (noticeable.afterNotify) {\n\t objectToOverride = noticeable;\n\t }\n\t else if (name && name.afterNotify) {\n\t objectToOverride = name;\n\t }\n\t else if (extra && extra.afterNotify) {\n\t objectToOverride = extra;\n\t }\n\t else if (name && typeof name === 'object') {\n\t objectToOverride = name;\n\t }\n\t else if (extra) {\n\t objectToOverride = extra;\n\t }\n\t else {\n\t objectToOverride = name = {};\n\t }\n\t applyAfterNotify(objectToOverride);\n\t _this.notify(noticeable, name, extra);\n\t });\n\t };\n\t Client.prototype.makeNotice = function (noticeable, name, extra) {\n\t if (name === void 0) { name = undefined; }\n\t if (extra === void 0) { extra = undefined; }\n\t var notice = (0, util_1$1.makeNotice)(noticeable);\n\t if (name && !(typeof name === 'object')) {\n\t var n = String(name);\n\t name = { name: n };\n\t }\n\t if (name) {\n\t notice = (0, util_1$1.mergeNotice)(notice, name);\n\t }\n\t if (typeof extra === 'object' && extra !== null) {\n\t notice = (0, util_1$1.mergeNotice)(notice, extra);\n\t }\n\t if ((0, util_1$1.objectIsEmpty)(notice)) {\n\t return null;\n\t }\n\t var context = this.__store.getContents('context');\n\t var noticeTags = this.__constructTags(notice.tags);\n\t var contextTags = this.__constructTags(context['tags']);\n\t var configTags = this.__constructTags(this.config.tags);\n\t // Turning into a Set will remove duplicates\n\t var tags = noticeTags.concat(contextTags).concat(configTags);\n\t var uniqueTags = tags.filter(function (item, index) { return tags.indexOf(item) === index; });\n\t notice = (0, util_1$1.merge)(notice, {\n\t name: notice.name || 'Error',\n\t context: (0, util_1$1.merge)(context, notice.context),\n\t projectRoot: notice.projectRoot || this.config.projectRoot,\n\t environment: notice.environment || this.config.environment,\n\t component: notice.component || this.config.component,\n\t action: notice.action || this.config.action,\n\t revision: notice.revision || this.config.revision,\n\t tags: uniqueTags,\n\t });\n\t // If we're passed a custom backtrace array, use it\n\t // Otherwise we make one.\n\t if (!Array.isArray(notice.backtrace) || !notice.backtrace.length) {\n\t if (typeof notice.stack !== 'string' || !notice.stack.trim()) {\n\t notice.stack = (0, util_1$1.generateStackTrace)();\n\t notice.backtrace = (0, util_1$1.makeBacktrace)(notice.stack, true, this.logger);\n\t }\n\t else {\n\t notice.backtrace = (0, util_1$1.makeBacktrace)(notice.stack, false, this.logger);\n\t }\n\t }\n\t return notice;\n\t };\n\t Client.prototype.addBreadcrumb = function (message, opts) {\n\t if (!this.config.breadcrumbsEnabled) {\n\t return;\n\t }\n\t opts = opts || {};\n\t var metadata = (0, util_1$1.shallowClone)(opts.metadata);\n\t var category = opts.category || 'custom';\n\t var timestamp = new Date().toISOString();\n\t this.__store.addBreadcrumb({\n\t category: category,\n\t message: message,\n\t metadata: metadata,\n\t timestamp: timestamp\n\t });\n\t return this;\n\t };\n\t /**\n\t * @deprecated Use {@link event} instead.\n\t */\n\t Client.prototype.logEvent = function (data) {\n\t (0, util_1$1.logDeprecatedMethod)(this.logger, 'Honeybadger.logEvent', 'Honeybadger.event');\n\t this.event('log', data);\n\t };\n\t Client.prototype.event = function (type, data) {\n\t var _a;\n\t if (typeof type === 'object') {\n\t data = type;\n\t type = (_a = type['event_type']) !== null && _a !== void 0 ? _a : undefined;\n\t }\n\t this.__eventsLogger.log(__assign$1({ event_type: type, ts: new Date().toISOString() }, data));\n\t };\n\t Client.prototype.__getBreadcrumbs = function () {\n\t return this.__store.getContents('breadcrumbs').slice();\n\t };\n\t Client.prototype.__getContext = function () {\n\t return this.__store.getContents('context');\n\t };\n\t Client.prototype.__developmentMode = function () {\n\t if (this.config.reportData === true) {\n\t return false;\n\t }\n\t return (this.config.environment && this.config.developmentEnvironments.includes(this.config.environment));\n\t };\n\t Client.prototype.__buildPayload = function (notice) {\n\t var headers = (0, util_1$1.filter)(notice.headers, this.config.filters) || {};\n\t var cgiData = (0, util_1$1.filter)(__assign$1(__assign$1({}, notice.cgiData), (0, util_1$1.formatCGIData)(headers, 'HTTP_')), this.config.filters);\n\t return {\n\t notifier: this.__notifier,\n\t breadcrumbs: {\n\t enabled: !!this.config.breadcrumbsEnabled,\n\t trail: notice.__breadcrumbs || []\n\t },\n\t error: {\n\t class: notice.name,\n\t message: notice.message,\n\t backtrace: notice.backtrace,\n\t fingerprint: notice.fingerprint,\n\t tags: notice.tags,\n\t causes: (0, util_1$1.getCauses)(notice, this.logger),\n\t },\n\t request: {\n\t url: (0, util_1$1.filterUrl)(notice.url, this.config.filters),\n\t component: notice.component,\n\t action: notice.action,\n\t context: notice.context,\n\t cgi_data: cgiData,\n\t params: (0, util_1$1.filter)(notice.params, this.config.filters) || {},\n\t session: (0, util_1$1.filter)(notice.session, this.config.filters) || {}\n\t },\n\t server: {\n\t project_root: notice.projectRoot,\n\t environment_name: notice.environment,\n\t revision: notice.revision,\n\t hostname: this.config.hostname,\n\t time: new Date().toUTCString()\n\t },\n\t details: notice.details || {}\n\t };\n\t };\n\t Client.prototype.__constructTags = function (tags) {\n\t if (!tags) {\n\t return [];\n\t }\n\t return tags.toString().split(TAG_SEPARATOR).filter(function (tag) { return NOT_BLANK.test(tag); });\n\t };\n\t Client.prototype.__runPreconditions = function (notice) {\n\t var _this = this;\n\t var preConditionError = null;\n\t if (!notice) {\n\t this.logger.debug('failed to build error report');\n\t preConditionError = new Error('failed to build error report');\n\t }\n\t if (this.config.reportData === false) {\n\t this.logger.debug('skipping error report: honeybadger.js is disabled', notice);\n\t preConditionError = new Error('honeybadger.js is disabled');\n\t }\n\t if (this.__developmentMode()) {\n\t this.logger.log('honeybadger.js is in development mode; the following error report will be sent in production.', notice);\n\t preConditionError = new Error('honeybadger.js is in development mode');\n\t }\n\t if (!this.config.apiKey) {\n\t this.logger.warn('could not send error report: no API key has been configured', notice);\n\t preConditionError = new Error('missing API key');\n\t }\n\t var beforeNotifyResult = (0, util_1$1.runBeforeNotifyHandlers)(notice, this.__beforeNotifyHandlers);\n\t if (!preConditionError && !beforeNotifyResult.result) {\n\t this.logger.debug('skipping error report: one or more beforeNotify handlers returned false', notice);\n\t preConditionError = new Error('beforeNotify handlers returned false');\n\t }\n\t if (beforeNotifyResult.results.length && beforeNotifyResult.results.some(function (result) { return result instanceof Promise; })) {\n\t return Promise.allSettled(beforeNotifyResult.results)\n\t .then(function (results) {\n\t if (!preConditionError && (results.some(function (result) { return result.status === 'rejected' || result.value === false; }))) {\n\t _this.logger.debug('skipping error report: one or more beforeNotify handlers returned false', notice);\n\t preConditionError = new Error('beforeNotify handlers (async) returned false');\n\t }\n\t if (preConditionError) {\n\t return preConditionError;\n\t }\n\t });\n\t }\n\t return preConditionError;\n\t };\n\t Client.prototype.__send = function (notice, originalBacktrace) {\n\t var _this = this;\n\t if (this.config.breadcrumbsEnabled) {\n\t this.addBreadcrumb('Honeybadger Notice', {\n\t category: 'notice',\n\t metadata: {\n\t message: notice.message,\n\t name: notice.name,\n\t stack: notice.stack\n\t }\n\t });\n\t notice.__breadcrumbs = this.__store.getContents('breadcrumbs');\n\t }\n\t else {\n\t notice.__breadcrumbs = [];\n\t }\n\t return (0, util_1$1.getSourceForBacktrace)(originalBacktrace, this.__getSourceFileHandler)\n\t .then(function (sourcePerTrace) { return __awaiter$1(_this, void 0, void 0, function () {\n\t var payload;\n\t return __generator$1(this, function (_a) {\n\t sourcePerTrace.forEach(function (source, index) {\n\t notice.backtrace[index].source = source;\n\t });\n\t payload = this.__buildPayload(notice);\n\t return [2 /*return*/, this.__transport\n\t .send({\n\t headers: {\n\t 'X-API-Key': this.config.apiKey,\n\t 'Content-Type': 'application/json',\n\t 'Accept': 'text/json, application/json'\n\t },\n\t method: 'POST',\n\t endpoint: (0, util_1$1.endpoint)(this.config.endpoint, '/v1/notices/js'),\n\t maxObjectDepth: this.config.maxObjectDepth,\n\t logger: this.logger,\n\t }, payload)];\n\t });\n\t }); })\n\t .then(function (res) {\n\t if (res.statusCode !== 201) {\n\t (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, new Error(\"Bad HTTP response: \".concat(res.statusCode)));\n\t _this.logger.warn(\"Error report failed: unknown response from server. code=\".concat(res.statusCode));\n\t return false;\n\t }\n\t var uuid = JSON.parse(res.body).id;\n\t (0, util_1$1.runAfterNotifyHandlers)((0, util_1$1.merge)(notice, {\n\t id: uuid\n\t }), _this.__afterNotifyHandlers);\n\t _this.logger.info(\"Error report sent \\u26A1 https://app.honeybadger.io/notice/\".concat(uuid));\n\t return true;\n\t })\n\t .catch(function (err) {\n\t _this.logger.error('Error report failed: an unknown error occurred.', \"message=\".concat(err.message));\n\t (0, util_1$1.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, err);\n\t return false;\n\t });\n\t };\n\t return Client;\n\t}());\n\tclient.Client = Client;\n\n\tvar types = {};\n\n\tObject.defineProperty(types, \"__esModule\", { value: true });\n\n\t(function (exports) {\n\t\tvar __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t var desc = Object.getOwnPropertyDescriptor(m, k);\n\t\t if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n\t\t desc = { enumerable: true, get: function() { return m[k]; } };\n\t\t }\n\t\t Object.defineProperty(o, k2, desc);\n\t\t}) : (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t o[k2] = m[k];\n\t\t}));\n\t\tvar __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t\t Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t\t}) : function(o, v) {\n\t\t o[\"default\"] = v;\n\t\t});\n\t\tvar __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {\n\t\t for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n\t\t};\n\t\tvar __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {\n\t\t if (mod && mod.__esModule) return mod;\n\t\t var result = {};\n\t\t if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t\t __setModuleDefault(result, mod);\n\t\t return result;\n\t\t};\n\t\tvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n\t\t return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.Plugins = exports.Util = exports.Types = exports.Client = void 0;\n\t\tvar events_1 = __importDefault(events);\n\t\tvar client_1 = client;\n\t\tObject.defineProperty(exports, \"Client\", { enumerable: true, get: function () { return client_1.Client; } });\n\t\t__exportStar(store, exports);\n\t\texports.Types = __importStar(types);\n\t\texports.Util = __importStar(util$1);\n\t\texports.Plugins = {\n\t\t events: events_1.default\n\t\t};\n\t\t\n\t} (src));\n\n\tvar util = {};\n\n\tObject.defineProperty(util, \"__esModule\", { value: true });\n\tutil.preferCatch = util.encodeCookie = util.decodeCookie = util.localURLPathname = util.parseURL = util.nativeFetch = util.stringTextOfElement = util.stringSelectorOfElement = util.stringNameOfElement = void 0;\n\tvar core_1$7 = src;\n\tvar globalThisOrWindow$7 = core_1$7.Util.globalThisOrWindow;\n\t/**\n\t * Converts an HTMLElement into a human-readable string.\n\t * @param {!HTMLElement} element\n\t * @return {string}\n\t */\n\tfunction stringNameOfElement(element) {\n\t if (!element || !element.tagName) {\n\t return '';\n\t }\n\t var name = element.tagName.toLowerCase();\n\t // Ignore the root element in selectors and events.\n\t if (name === 'html') {\n\t return '';\n\t }\n\t if (element.id) {\n\t name += \"#\".concat(element.id);\n\t }\n\t var stringClassNames = element.getAttribute('class');\n\t if (stringClassNames) {\n\t stringClassNames.split(/\\s+/).forEach(function (className) {\n\t name += \".\".concat(className);\n\t });\n\t }\n\t ['alt', 'name', 'title', 'type'].forEach(function (attrName) {\n\t var attr = element.getAttribute(attrName);\n\t if (attr) {\n\t name += \"[\".concat(attrName, \"=\\\"\").concat(attr, \"\\\"]\");\n\t }\n\t });\n\t var siblings = getSiblings(element);\n\t if (siblings.length > 1) {\n\t name += \":nth-child(\".concat(Array.prototype.indexOf.call(siblings, element) + 1, \")\");\n\t }\n\t return name;\n\t}\n\tutil.stringNameOfElement = stringNameOfElement;\n\tfunction stringSelectorOfElement(element) {\n\t var name = stringNameOfElement(element);\n\t if (element.parentNode && element.parentNode.tagName) {\n\t var parentName = stringSelectorOfElement(element.parentNode);\n\t if (parentName.length > 0) {\n\t return \"\".concat(parentName, \" > \").concat(name);\n\t }\n\t }\n\t return name;\n\t}\n\tutil.stringSelectorOfElement = stringSelectorOfElement;\n\tfunction stringTextOfElement(element) {\n\t var text = element.textContent || element.innerText || '';\n\t if (!text && (element.type === 'submit' || element.type === 'button')) {\n\t text = element.value;\n\t }\n\t return truncate(text.trim(), 300);\n\t}\n\tutil.stringTextOfElement = stringTextOfElement;\n\tfunction nativeFetch() {\n\t var global = globalThisOrWindow$7();\n\t if (!global.fetch) {\n\t return false;\n\t }\n\t if (isNative(global.fetch)) {\n\t return true;\n\t }\n\t if (typeof document === 'undefined') {\n\t return false;\n\t }\n\t // If fetch isn't native, it may be wrapped by someone else. Try to get\n\t // a pristine function from an iframe.\n\t try {\n\t var sandbox = document.createElement('iframe');\n\t sandbox.style.display = 'none';\n\t document.head.appendChild(sandbox);\n\t var result = sandbox.contentWindow.fetch && isNative(sandbox.contentWindow.fetch);\n\t document.head.removeChild(sandbox);\n\t return result;\n\t }\n\t catch (err) {\n\t if (console && console.warn) {\n\t console.warn('failed to detect native fetch via iframe: ' + err);\n\t }\n\t }\n\t return false;\n\t}\n\tutil.nativeFetch = nativeFetch;\n\tfunction isNative(func) {\n\t return func.toString().indexOf('native') !== -1;\n\t}\n\tfunction parseURL(url) {\n\t // Regexp: https://tools.ietf.org/html/rfc3986#appendix-B\n\t var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/) || {};\n\t return {\n\t protocol: match[2],\n\t host: match[4],\n\t pathname: match[5]\n\t };\n\t}\n\tutil.parseURL = parseURL;\n\tfunction localURLPathname(url) {\n\t var parsed = parseURL(url);\n\t var parsedDocURL = parseURL(document.URL);\n\t // URL must be relative\n\t if (!parsed.host || !parsed.protocol) {\n\t return parsed.pathname;\n\t }\n\t // Same domain\n\t if (parsed.protocol === parsedDocURL.protocol && parsed.host === parsedDocURL.host) {\n\t return parsed.pathname;\n\t }\n\t // x-domain\n\t return \"\".concat(parsed.protocol, \"://\").concat(parsed.host).concat(parsed.pathname);\n\t}\n\tutil.localURLPathname = localURLPathname;\n\tfunction decodeCookie(string) {\n\t var result = {};\n\t string.split(/[;,]\\s?/).forEach(function (pair) {\n\t var _a = pair.split('=', 2), key = _a[0], value = _a[1];\n\t result[key] = value;\n\t });\n\t return result;\n\t}\n\tutil.decodeCookie = decodeCookie;\n\tfunction encodeCookie(object) {\n\t if (typeof object !== 'object') {\n\t return undefined;\n\t }\n\t var cookies = [];\n\t for (var k in object) {\n\t cookies.push(k + '=' + object[k]);\n\t }\n\t return cookies.join(';');\n\t}\n\tutil.encodeCookie = encodeCookie;\n\t// Helpers\n\tfunction getSiblings(element) {\n\t try {\n\t var nodes = element.parentNode.childNodes;\n\t var siblings_1 = [];\n\t Array.prototype.forEach.call(nodes, function (node) {\n\t if (node.tagName && node.tagName === element.tagName) {\n\t siblings_1.push(node);\n\t }\n\t });\n\t return siblings_1;\n\t }\n\t catch (e) {\n\t return [];\n\t }\n\t}\n\tfunction truncate(string, length) {\n\t if (string.length > length) {\n\t string = string.substr(0, length) + '...';\n\t }\n\t return string;\n\t}\n\t// Used to decide which error handling method to use when wrapping async\n\t// handlers: try/catch, or `window.onerror`. When available, `window.onerror`\n\t// will provide more information in modern browsers.\n\tutil.preferCatch = (function () {\n\t var preferCatch = true;\n\t // In case we're in an environment without access to \"window\", lets make sure theres a window.\n\t if (typeof window === 'undefined')\n\t return preferCatch;\n\t // IE < 10\n\t if (!window.atob) {\n\t preferCatch = false;\n\t }\n\t // Modern browsers support the full ErrorEvent API\n\t // See https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n\t if (window.ErrorEvent) {\n\t try {\n\t if ((new window.ErrorEvent('')).colno === 0) {\n\t preferCatch = false;\n\t }\n\t // eslint-disable-next-line no-empty\n\t }\n\t catch (_e) { }\n\t }\n\t return preferCatch;\n\t})();\n\n\tvar onerror = {};\n\n\tObject.defineProperty(onerror, \"__esModule\", { value: true });\n\tonerror.onError = onerror.ignoreNextOnError = void 0;\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$6 = src;\n\tvar instrument$4 = core_1$6.Util.instrument, makeNotice = core_1$6.Util.makeNotice, globalThisOrWindow$6 = core_1$6.Util.globalThisOrWindow;\n\tvar ignoreOnError = 0;\n\tvar currentTimeout;\n\tfunction ignoreNextOnError() {\n\t ignoreOnError += 1;\n\t clearTimeout(currentTimeout);\n\t currentTimeout = setTimeout(function () {\n\t ignoreOnError = 0;\n\t });\n\t}\n\tonerror.ignoreNextOnError = ignoreNextOnError;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tfunction onError(_window) {\n\t if (_window === void 0) { _window = globalThisOrWindow$6(); }\n\t return {\n\t load: function (client) {\n\t instrument$4(_window, 'onerror', function (original) {\n\t var onerror = function (msg, url, line, col, err) {\n\t client.logger.debug('window.onerror callback invoked', arguments);\n\t if (ignoreOnError > 0) {\n\t client.logger.debug('Ignoring window.onerror (error likely reported earlier)', arguments);\n\t ignoreOnError -= 1;\n\t return;\n\t }\n\t // See https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers/onerror#Notes\n\t if (line === 0 && /Script error\\.?/.test(msg)) {\n\t if (client.config.enableUncaught) {\n\t // Log only if the user wants to report uncaught errors\n\t client.logger.warn('Ignoring cross-domain script error: enable CORS to track these types of errors', arguments);\n\t }\n\t return;\n\t }\n\t var notice = makeNotice(err);\n\t if (!notice.name) {\n\t notice.name = 'window.onerror';\n\t }\n\t if (!notice.message) {\n\t notice.message = msg;\n\t }\n\t if (!notice.stack) {\n\t // Simulate v8 stack\n\t notice.stack = [notice.message, '\\n at ? (', url || 'unknown', ':', line || 0, ':', col || 0, ')'].join('');\n\t }\n\t client.addBreadcrumb((notice.name === 'window.onerror' || !notice.name) ? 'window.onerror' : \"window.onerror: \".concat(notice.name), {\n\t category: 'error',\n\t metadata: {\n\t name: notice.name,\n\t message: notice.message,\n\t stack: notice.stack\n\t }\n\t });\n\t if (client.config.enableUncaught) {\n\t client.notify(notice);\n\t }\n\t };\n\t return function (msg, url, line, col, err) {\n\t onerror(msg, url, line, col, err);\n\t if (typeof original === 'function') {\n\t return original.apply(_window, arguments);\n\t }\n\t return false;\n\t };\n\t });\n\t }\n\t };\n\t}\n\tonerror.onError = onError;\n\n\tvar onunhandledrejection = {};\n\n\tObject.defineProperty(onunhandledrejection, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$5 = src;\n\tvar instrument$3 = core_1$5.Util.instrument, globalThisOrWindow$5 = core_1$5.Util.globalThisOrWindow;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tfunction default_1$3(_window) {\n\t if (_window === void 0) { _window = globalThisOrWindow$5(); }\n\t return {\n\t load: function (client) {\n\t if (!client.config.enableUnhandledRejection) {\n\t return;\n\t }\n\t instrument$3(_window, 'onunhandledrejection', function (original) {\n\t // See https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event\n\t function onunhandledrejection(promiseRejectionEvent) {\n\t var _a;\n\t client.logger.debug('window.onunhandledrejection callback invoked', arguments);\n\t if (!client.config.enableUnhandledRejection) {\n\t return;\n\t }\n\t var reason = promiseRejectionEvent.reason;\n\t if (reason instanceof Error) {\n\t // simulate v8 stack\n\t // const fileName = reason.fileName || 'unknown'\n\t // const lineNumber = reason.lineNumber || 0\n\t var fileName = 'unknown';\n\t var lineNumber = 0;\n\t var stackFallback = \"\".concat(reason.message, \"\\n at ? (\").concat(fileName, \":\").concat(lineNumber, \")\");\n\t var stack = reason.stack || stackFallback;\n\t var err = {\n\t name: reason.name,\n\t message: \"UnhandledPromiseRejectionWarning: \".concat(reason),\n\t stack: stack\n\t };\n\t client.addBreadcrumb(\"window.onunhandledrejection: \".concat(err.name), {\n\t category: 'error',\n\t metadata: err\n\t });\n\t client.notify(err);\n\t return;\n\t }\n\t var message = typeof reason === 'string' ? reason : ((_a = JSON.stringify(reason)) !== null && _a !== void 0 ? _a : 'Unspecified reason');\n\t client.notify({\n\t name: 'window.onunhandledrejection',\n\t message: \"UnhandledPromiseRejectionWarning: \".concat(message)\n\t });\n\t }\n\t return function (promiseRejectionEvent) {\n\t onunhandledrejection(promiseRejectionEvent);\n\t if (typeof original === 'function') {\n\t original.apply(this, arguments);\n\t }\n\t };\n\t });\n\t }\n\t };\n\t}\n\tonunhandledrejection.default = default_1$3;\n\n\tvar breadcrumbs = {};\n\n\tObject.defineProperty(breadcrumbs, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$4 = src;\n\tvar util_1 = util;\n\tvar sanitize$1 = core_1$4.Util.sanitize, instrument$2 = core_1$4.Util.instrument, instrumentConsole = core_1$4.Util.instrumentConsole, globalThisOrWindow$4 = core_1$4.Util.globalThisOrWindow;\n\tfunction default_1$2(_window) {\n\t if (_window === void 0) { _window = globalThisOrWindow$4(); }\n\t return {\n\t load: function (client) {\n\t function breadcrumbsEnabled(type) {\n\t if (client.config.breadcrumbsEnabled === true) {\n\t return true;\n\t }\n\t if (type) {\n\t return client.config.breadcrumbsEnabled[type] === true;\n\t }\n\t return client.config.breadcrumbsEnabled !== false;\n\t }\n\t // Breadcrumbs: instrument console\n\t (function () {\n\t if (!breadcrumbsEnabled('console')) {\n\t return;\n\t }\n\t function inspectArray(obj) {\n\t if (!Array.isArray(obj)) {\n\t return '';\n\t }\n\t return obj.map(function (value) {\n\t try {\n\t return String(value);\n\t }\n\t catch (e) {\n\t return '[unknown]';\n\t }\n\t }).join(' ');\n\t }\n\t instrumentConsole(_window, function (level, args) {\n\t var message = inspectArray(args);\n\t var opts = {\n\t category: 'log',\n\t metadata: {\n\t level: level,\n\t arguments: sanitize$1(args, 3)\n\t }\n\t };\n\t client.addBreadcrumb(message, opts);\n\t });\n\t })();\n\t // Breadcrumbs: instrument click events\n\t (function () {\n\t if (!breadcrumbsEnabled('dom')) {\n\t return;\n\t }\n\t if (typeof _window.addEventListener !== 'function') {\n\t return;\n\t }\n\t _window.addEventListener('click', function (event) {\n\t var message, selector, text;\n\t try {\n\t message = (0, util_1.stringNameOfElement)(event.target);\n\t selector = (0, util_1.stringSelectorOfElement)(event.target);\n\t text = (0, util_1.stringTextOfElement)(event.target);\n\t }\n\t catch (e) {\n\t message = 'UI Click';\n\t selector = '[unknown]';\n\t text = '[unknown]';\n\t }\n\t // There's nothing to display\n\t if (message.length === 0) {\n\t return;\n\t }\n\t client.addBreadcrumb(message, {\n\t category: 'ui.click',\n\t metadata: {\n\t selector: selector,\n\t text: text,\n\t event: event\n\t }\n\t });\n\t }, _window.location ? true : false); // In CloudFlare workers useCapture must be false. window.location is a hacky way to detect it.\n\t })();\n\t // Breadcrumbs: instrument XMLHttpRequest\n\t (function () {\n\t if (!breadcrumbsEnabled('network')) {\n\t return;\n\t }\n\t // Some environments may not support XMLHttpRequest.\n\t if (typeof XMLHttpRequest === 'undefined') {\n\t return;\n\t }\n\t // -- On xhr.open: capture initial metadata\n\t instrument$2(XMLHttpRequest.prototype, 'open', function (original) {\n\t return function () {\n\t // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t var xhr = this;\n\t var rawUrl = arguments[1];\n\t // in case of url being URL object (which is valid input) we need to stringify it\n\t var url = typeof rawUrl === 'string' ? rawUrl : String(rawUrl);\n\t var method = typeof arguments[0] === 'string' ? arguments[0].toUpperCase() : arguments[0];\n\t var message = \"\".concat(method, \" \").concat((0, util_1.localURLPathname)(url));\n\t this.__hb_xhr = {\n\t type: 'xhr',\n\t method: method,\n\t url: url,\n\t message: message\n\t };\n\t if (typeof original === 'function') {\n\t original.apply(xhr, arguments);\n\t }\n\t };\n\t });\n\t // -- On xhr.send: set up xhr.onreadystatechange to report breadcrumb\n\t instrument$2(XMLHttpRequest.prototype, 'send', function (original) {\n\t return function () {\n\t // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t var xhr = this;\n\t function onreadystatechangeHandler() {\n\t if (xhr.readyState === 4) {\n\t var message = void 0;\n\t if (xhr.__hb_xhr) {\n\t xhr.__hb_xhr.status_code = xhr.status;\n\t message = xhr.__hb_xhr.message;\n\t delete xhr.__hb_xhr.message;\n\t }\n\t client.addBreadcrumb(message || 'XMLHttpRequest', {\n\t category: 'request',\n\t metadata: xhr.__hb_xhr\n\t });\n\t }\n\t }\n\t if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n\t instrument$2(xhr, 'onreadystatechange', function (original) {\n\t return function () {\n\t onreadystatechangeHandler();\n\t if (typeof original === 'function') {\n\t // eslint-disable-next-line prefer-rest-params\n\t original.apply(this, arguments);\n\t }\n\t };\n\t });\n\t }\n\t else {\n\t xhr.onreadystatechange = onreadystatechangeHandler;\n\t }\n\t if (typeof original === 'function') {\n\t // eslint-disable-next-line prefer-rest-params\n\t original.apply(xhr, arguments);\n\t }\n\t };\n\t });\n\t })();\n\t // Breadcrumbs: instrument fetch\n\t (function () {\n\t if (!breadcrumbsEnabled('network')) {\n\t return;\n\t }\n\t if (!(0, util_1.nativeFetch)()) {\n\t // Polyfills use XHR.\n\t return;\n\t }\n\t instrument$2(_window, 'fetch', function (original) {\n\t return function () {\n\t // eslint-disable-next-line prefer-rest-params\n\t var input = arguments[0];\n\t var method = 'GET';\n\t var url;\n\t if (typeof input === 'string') {\n\t url = input;\n\t }\n\t else if ('Request' in _window && input instanceof Request) {\n\t url = input.url;\n\t if (input.method) {\n\t method = input.method;\n\t }\n\t }\n\t else {\n\t url = String(input);\n\t }\n\t if (arguments[1] && arguments[1].method) {\n\t method = arguments[1].method;\n\t }\n\t if (typeof method === 'string') {\n\t method = method.toUpperCase();\n\t }\n\t // localURLPathname cant be constructed for CF workers due to reliance on \"document\".\n\t var message = \"\".concat(method, \" \").concat(typeof document === 'undefined' ? url : (0, util_1.localURLPathname)(url));\n\t var metadata = {\n\t type: 'fetch',\n\t method: method,\n\t url: url\n\t };\n\t return original\n\t .apply(this, arguments)\n\t .then(function (response) {\n\t metadata['status_code'] = response.status;\n\t client.addBreadcrumb(message, {\n\t category: 'request',\n\t metadata: metadata\n\t });\n\t return response;\n\t })\n\t .catch(function (error) {\n\t client.addBreadcrumb('fetch error', {\n\t category: 'error',\n\t metadata: metadata\n\t });\n\t throw error;\n\t });\n\t };\n\t });\n\t })();\n\t // Breadcrumbs: instrument navigation\n\t (function () {\n\t if (!breadcrumbsEnabled('navigation')) {\n\t return;\n\t }\n\t if (_window.location == null) {\n\t // Most likely in a CF worker, we should be listening to fetch requests instead.\n\t return;\n\t }\n\t // The last known href of the current page\n\t var lastHref = _window.location.href;\n\t function recordUrlChange(from, to) {\n\t lastHref = to;\n\t client.addBreadcrumb('Page changed', {\n\t category: 'navigation',\n\t metadata: {\n\t from: from,\n\t to: to\n\t }\n\t });\n\t }\n\t if (typeof addEventListener === 'function') {\n\t addEventListener('popstate', function (_event) {\n\t recordUrlChange(lastHref, _window.location.href);\n\t });\n\t }\n\t if (typeof _window.history === 'undefined') {\n\t return;\n\t }\n\t // https://developer.mozilla.org/en-US/docs/Web/API/History/pushState\n\t // https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState\n\t function historyWrapper(original) {\n\t return function () {\n\t var url = arguments.length > 2 ? arguments[2] : undefined;\n\t if (url) {\n\t recordUrlChange(lastHref, String(url));\n\t }\n\t return original.apply(this, arguments);\n\t };\n\t }\n\t instrument$2(_window.history, 'pushState', historyWrapper);\n\t instrument$2(_window.history, 'replaceState', historyWrapper);\n\t })();\n\t }\n\t };\n\t}\n\tbreadcrumbs.default = default_1$2;\n\n\tvar timers = {};\n\n\tObject.defineProperty(timers, \"__esModule\", { value: true });\n\t/* eslint-disable prefer-rest-params */\n\tvar core_1$3 = src;\n\tvar instrument$1 = core_1$3.Util.instrument, globalThisOrWindow$3 = core_1$3.Util.globalThisOrWindow;\n\tfunction default_1$1(_window) {\n\t if (_window === void 0) { _window = globalThisOrWindow$3(); }\n\t return {\n\t load: function (client) {\n\t // Wrap timers\n\t (function () {\n\t function instrumentTimer(wrapOpts) {\n\t return function (original) {\n\t // See https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout\n\t return function (func, delay) {\n\t if (typeof func === 'function') {\n\t var args_1 = Array.prototype.slice.call(arguments, 2);\n\t func = client.__wrap(func, wrapOpts);\n\t return original(function () {\n\t func.apply(void 0, args_1);\n\t }, delay);\n\t }\n\t else {\n\t return original(func, delay);\n\t }\n\t };\n\t };\n\t }\n\t instrument$1(_window, 'setTimeout', instrumentTimer({ component: 'setTimeout' }));\n\t instrument$1(_window, 'setInterval', instrumentTimer({ component: 'setInterval' }));\n\t })();\n\t }\n\t };\n\t}\n\ttimers.default = default_1$1;\n\n\tvar event_listeners = {};\n\n\tObject.defineProperty(event_listeners, \"__esModule\", { value: true });\n\tvar core_1$2 = src;\n\tvar instrument = core_1$2.Util.instrument, globalThisOrWindow$2 = core_1$2.Util.globalThisOrWindow;\n\tfunction default_1(_window) {\n\t if (_window === void 0) { _window = globalThisOrWindow$2(); }\n\t return {\n\t load: function (client) {\n\t // Wrap event listeners\n\t // Event targets borrowed from bugsnag-js:\n\t // See https://github.com/bugsnag/bugsnag-js/blob/d55af916a4d3c7757f979d887f9533fe1a04cc93/src/bugsnag.js#L542\n\t var targets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'];\n\t targets.forEach(function (prop) {\n\t var prototype = _window[prop] && _window[prop].prototype;\n\t if (prototype && Object.prototype.hasOwnProperty.call(prototype, 'addEventListener')) {\n\t instrument(prototype, 'addEventListener', function (original) {\n\t var wrapOpts = { component: \"\".concat(prop, \".prototype.addEventListener\") };\n\t // See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n\t return function (type, listener, useCapture, wantsUntrusted) {\n\t try {\n\t if (listener && listener.handleEvent != null) {\n\t listener.handleEvent = client.__wrap(listener.handleEvent, wrapOpts);\n\t }\n\t }\n\t catch (e) {\n\t // Ignore 'Permission denied to access property \"handleEvent\"' errors.\n\t client.logger.error(e);\n\t }\n\t return original.call(this, type, client.__wrap(listener, wrapOpts), useCapture, wantsUntrusted);\n\t };\n\t });\n\t instrument(prototype, 'removeEventListener', function (original) {\n\t return function (type, listener, useCapture, wantsUntrusted) {\n\t original.call(this, type, listener, useCapture, wantsUntrusted);\n\t return original.call(this, type, client.__wrap(listener), useCapture, wantsUntrusted);\n\t };\n\t });\n\t }\n\t });\n\t }\n\t };\n\t}\n\tevent_listeners.default = default_1;\n\n\tvar transport = {};\n\n\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t return new (P || (P = Promise))(function (resolve, reject) {\n\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t });\n\t};\n\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t function step(op) {\n\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t while (_) try {\n\t 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;\n\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t switch (op[0]) {\n\t case 0: case 1: t = op; break;\n\t case 4: _.label++; return { value: op[1], done: false };\n\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t default:\n\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t if (t[2]) _.ops.pop();\n\t _.trys.pop(); continue;\n\t }\n\t op = body.call(thisArg, _);\n\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t }\n\t};\n\tObject.defineProperty(transport, \"__esModule\", { value: true });\n\ttransport.BrowserTransport = void 0;\n\tvar core_1$1 = src;\n\tvar sanitize = core_1$1.Util.sanitize, globalThisOrWindow$1 = core_1$1.Util.globalThisOrWindow;\n\t/**\n\t * Helper function to get typesafe Object.entries()\n\t * https://twitter.com/mattpocockuk/status/1502264005251018754?lang=en\n\t */\n\tfunction objectEntries(obj) {\n\t return Object.entries(obj);\n\t}\n\tvar BrowserTransport = /** @class */ (function () {\n\t function BrowserTransport(headers) {\n\t if (headers === void 0) { headers = {}; }\n\t this.headers = {};\n\t this.headers = headers;\n\t }\n\t BrowserTransport.prototype.defaultHeaders = function () {\n\t return this.headers;\n\t };\n\t BrowserTransport.prototype.send = function (options, payload) {\n\t return __awaiter(this, void 0, void 0, function () {\n\t var headerArray, headers, requestInit, response, body;\n\t return __generator(this, function (_a) {\n\t switch (_a.label) {\n\t case 0:\n\t headerArray = options.headers ? objectEntries(options.headers) : [];\n\t headers = this.defaultHeaders();\n\t headerArray.forEach(function (_a) {\n\t var key = _a[0], value = _a[1];\n\t if (key != null && value != null) {\n\t headers[String(key)] = String(value);\n\t }\n\t });\n\t requestInit = {\n\t method: options.method,\n\t headers: headers\n\t };\n\t // GET methods cannot have a body.\n\t if (options.method === 'POST' && payload) {\n\t requestInit.body = typeof payload === 'string' ? payload : JSON.stringify(sanitize(payload, options.maxObjectDepth));\n\t }\n\t return [4 /*yield*/, globalThisOrWindow$1().fetch(options.endpoint, requestInit)];\n\t case 1:\n\t response = _a.sent();\n\t return [4 /*yield*/, response.text()];\n\t case 2:\n\t body = _a.sent();\n\t return [2 /*return*/, Promise.resolve({ statusCode: response.status, body: body })];\n\t }\n\t });\n\t });\n\t };\n\t return BrowserTransport;\n\t}());\n\ttransport.BrowserTransport = BrowserTransport;\n\n\tvar feedbackForm = {};\n\n\tvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t __assign = Object.assign || function(t) {\n\t for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t s = arguments[i];\n\t for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t t[p] = s[p];\n\t }\n\t return t;\n\t };\n\t return __assign.apply(this, arguments);\n\t};\n\tObject.defineProperty(feedbackForm, \"__esModule\", { value: true });\n\tfeedbackForm.BrowserFeedbackForm = void 0;\n\tvar core_1 = src;\n\tvar globalThisOrWindow = core_1.Util.globalThisOrWindow;\n\tvar BrowserFeedbackForm = /** @class */ (function () {\n\t function BrowserFeedbackForm(config, logger, scriptUrl) {\n\t this.config = config;\n\t this.logger = logger;\n\t this.scriptUrl = scriptUrl;\n\t }\n\t /* ROLLUP_STRIP_CODE_CHROME_EXTENSION_START */\n\t BrowserFeedbackForm.prototype.show = function (lastNoticeId, options) {\n\t if (options === void 0) { options = {}; }\n\t if (!this.config || !this.config.apiKey) {\n\t this.logger.debug('Client not initialized');\n\t return;\n\t }\n\t if (!lastNoticeId) {\n\t this.logger.debug(\"Can't show user feedback form without a notice already reported\");\n\t return;\n\t }\n\t var global = globalThisOrWindow();\n\t if (typeof global.document === 'undefined') {\n\t this.logger.debug('global.document is undefined. Cannot attach script');\n\t return;\n\t }\n\t if (this.isUserFeedbackScriptUrlAlreadyVisible()) {\n\t this.logger.debug('User feedback form is already visible');\n\t return;\n\t }\n\t global['honeybadgerUserFeedbackOptions'] = __assign(__assign({}, options), { apiKey: this.config.apiKey, endpoint: this.config.userFeedbackEndpoint, noticeId: lastNoticeId });\n\t this.appendUserFeedbackScriptTag(global, options);\n\t };\n\t BrowserFeedbackForm.prototype.appendUserFeedbackScriptTag = function (window, options) {\n\t if (options === void 0) { options = {}; }\n\t var script = window.document.createElement('script');\n\t script.setAttribute('src', this.scriptUrl);\n\t script.setAttribute('async', 'true');\n\t if (options.onLoad) {\n\t script.onload = options.onLoad;\n\t }\n\t (commonjsGlobal.document.head || commonjsGlobal.document.body).appendChild(script);\n\t };\n\t BrowserFeedbackForm.prototype.isUserFeedbackScriptUrlAlreadyVisible = function () {\n\t var global = globalThisOrWindow();\n\t var feedbackScriptUrl = this.scriptUrl;\n\t for (var i = 0; i < global.document.scripts.length; i++) {\n\t var script = global.document.scripts[i];\n\t if (script.src === feedbackScriptUrl) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t };\n\t return BrowserFeedbackForm;\n\t}());\n\tfeedbackForm.BrowserFeedbackForm = BrowserFeedbackForm;\n\n\t(function (exports) {\n\t\tvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n\t\t var extendStatics = function (d, b) {\n\t\t extendStatics = Object.setPrototypeOf ||\n\t\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t\t function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n\t\t return extendStatics(d, b);\n\t\t };\n\t\t return function (d, b) {\n\t\t if (typeof b !== \"function\" && b !== null)\n\t\t throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\t\t extendStatics(d, b);\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t };\n\t\t})();\n\t\tvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n\t\t __assign = Object.assign || function(t) {\n\t\t for (var s, i = 1, n = arguments.length; i < n; i++) {\n\t\t s = arguments[i];\n\t\t for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n\t\t t[p] = s[p];\n\t\t }\n\t\t return t;\n\t\t };\n\t\t return __assign.apply(this, arguments);\n\t\t};\n\t\tvar __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t\t return new (P || (P = Promise))(function (resolve, reject) {\n\t\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t\t });\n\t\t};\n\t\tvar __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {\n\t\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t function step(op) {\n\t\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t while (_) try {\n\t\t 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;\n\t\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t switch (op[0]) {\n\t\t case 0: case 1: t = op; break;\n\t\t case 4: _.label++; return { value: op[1], done: false };\n\t\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t default:\n\t\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t if (t[2]) _.ops.pop();\n\t\t _.trys.pop(); continue;\n\t\t }\n\t\t op = body.call(thisArg, _);\n\t\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t }\n\t\t};\n\t\tvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n\t\t return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.Types = exports.getUserFeedbackScriptUrl = void 0;\n\t\tvar core_1 = src;\n\t\tvar util_1 = util;\n\t\tvar onerror_1 = onerror;\n\t\tvar onunhandledrejection_1 = __importDefault(onunhandledrejection);\n\t\tvar breadcrumbs_1 = __importDefault(breadcrumbs);\n\t\tvar timers_1 = __importDefault(timers);\n\t\tvar event_listeners_1 = __importDefault(event_listeners);\n\t\tvar transport_1 = transport;\n\t\tvar feedback_form_1 = feedbackForm;\n\t\tvar merge = core_1.Util.merge, filter = core_1.Util.filter, objectIsExtensible = core_1.Util.objectIsExtensible, globalThisOrWindow = core_1.Util.globalThisOrWindow;\n\t\tvar getProjectRoot = function () {\n\t\t var global = globalThisOrWindow();\n\t\t var projectRoot = '';\n\t\t // Cloudflare workers do not have access to location API.\n\t\t if (global.location != null) {\n\t\t projectRoot = global.location.protocol + '//' + global.location.host;\n\t\t }\n\t\t return projectRoot;\n\t\t};\n\t\tvar getUserFeedbackScriptUrl = function (version) {\n\t\t var majorMinorVersion = version.split('.').slice(0, 2).join('.');\n\t\t return \"https://js.honeybadger.io/v\".concat(majorMinorVersion, \"/honeybadger-feedback-form.js\");\n\t\t};\n\t\texports.getUserFeedbackScriptUrl = getUserFeedbackScriptUrl;\n\t\tvar Honeybadger = /** @class */ (function (_super) {\n\t\t __extends(Honeybadger, _super);\n\t\t function Honeybadger(opts) {\n\t\t if (opts === void 0) { opts = {}; }\n\t\t var _this = _super.call(this, __assign({ userFeedbackEndpoint: 'https://api.honeybadger.io/v2/feedback', async: true, maxErrors: null, projectRoot: getProjectRoot() }, opts), new transport_1.BrowserTransport({\n\t\t 'User-Agent': userAgent(),\n\t\t })) || this;\n\t\t /** @internal */\n\t\t _this.__errorsSent = 0;\n\t\t /** @internal */\n\t\t _this.__lastWrapErr = undefined;\n\t\t /** @internal */\n\t\t _this.__lastNoticeId = undefined;\n\t\t /** @internal */\n\t\t _this.__beforeNotifyHandlers = [\n\t\t function (notice) {\n\t\t if (_this.__exceedsMaxErrors()) {\n\t\t _this.logger.debug('Dropping notice: max errors exceeded', notice);\n\t\t return false;\n\t\t }\n\t\t if (notice && !notice.url && typeof document !== 'undefined') {\n\t\t notice.url = document.URL;\n\t\t }\n\t\t _this.__incrementErrorsCount();\n\t\t return true;\n\t\t }\n\t\t ];\n\t\t _this.__afterNotifyHandlers = [\n\t\t function (_error, notice) {\n\t\t if (notice) {\n\t\t _this.__lastNoticeId = notice.id;\n\t\t }\n\t\t }\n\t\t ];\n\t\t return _this;\n\t\t }\n\t\t Honeybadger.prototype.configure = function (opts) {\n\t\t if (opts === void 0) { opts = {}; }\n\t\t return _super.prototype.configure.call(this, opts);\n\t\t };\n\t\t Honeybadger.prototype.resetMaxErrors = function () {\n\t\t return (this.__errorsSent = 0);\n\t\t };\n\t\t Honeybadger.prototype.factory = function (opts) {\n\t\t // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t var clone = new Honeybadger(opts);\n\t\t clone.setNotifier(this.getNotifier());\n\t\t return clone;\n\t\t };\n\t\t Honeybadger.prototype.checkIn = function (_id) {\n\t\t throw new Error('Honeybadger.checkIn() is not supported on the browser');\n\t\t };\n\t\t Honeybadger.prototype.showUserFeedbackForm = function (options) {\n\t\t if (options === void 0) { options = {}; }\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var form;\n\t\t return __generator(this, function (_a) {\n\t\t form = new feedback_form_1.BrowserFeedbackForm(this.config, this.logger, this.getUserFeedbackSubmitUrl());\n\t\t form.show(this.__lastNoticeId, options);\n\t\t return [2 /*return*/];\n\t\t });\n\t\t });\n\t\t };\n\t\t Honeybadger.prototype.getUserFeedbackSubmitUrl = function () {\n\t\t return (0, exports.getUserFeedbackScriptUrl)(this.getVersion());\n\t\t };\n\t\t /** @internal */\n\t\t Honeybadger.prototype.__buildPayload = function (notice) {\n\t\t var cgiData = {\n\t\t HTTP_USER_AGENT: undefined,\n\t\t HTTP_REFERER: undefined,\n\t\t HTTP_COOKIE: undefined\n\t\t };\n\t\t if (typeof navigator !== 'undefined' && navigator.userAgent) {\n\t\t cgiData.HTTP_USER_AGENT = navigator.userAgent;\n\t\t }\n\t\t if (typeof document !== 'undefined' && document.referrer.match(/\\S/)) {\n\t\t cgiData.HTTP_REFERER = document.referrer;\n\t\t }\n\t\t var cookiesObject;\n\t\t if (typeof notice.cookies === 'string') {\n\t\t cookiesObject = (0, util_1.decodeCookie)(notice.cookies);\n\t\t }\n\t\t else {\n\t\t cookiesObject = notice.cookies;\n\t\t }\n\t\t if (cookiesObject) {\n\t\t cgiData.HTTP_COOKIE = (0, util_1.encodeCookie)(filter(cookiesObject, this.config.filters));\n\t\t }\n\t\t var payload = _super.prototype.__buildPayload.call(this, notice);\n\t\t payload.request.cgi_data = merge(cgiData, payload.request.cgi_data);\n\t\t return payload;\n\t\t };\n\t\t /**\n\t\t * wrap always returns the same function so that callbacks can be removed via\n\t\t * removeEventListener.\n\t\t * @internal\n\t\t */\n\t\t Honeybadger.prototype.__wrap = function (f, opts) {\n\t\t if (opts === void 0) { opts = {}; }\n\t\t var func = f;\n\t\t if (!opts) {\n\t\t opts = {};\n\t\t }\n\t\t try {\n\t\t if (typeof func !== 'function') {\n\t\t return func;\n\t\t }\n\t\t if (!objectIsExtensible(func)) {\n\t\t return func;\n\t\t }\n\t\t if (!func.___hb) {\n\t\t // eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\t var client_1 = this;\n\t\t func.___hb = function () {\n\t\t if (util_1.preferCatch) {\n\t\t try {\n\t\t // eslint-disable-next-line prefer-rest-params\n\t\t return func.apply(this, arguments);\n\t\t }\n\t\t catch (err) {\n\t\t if (client_1.__lastWrapErr === err) {\n\t\t throw (err);\n\t\t }\n\t\t client_1.__lastWrapErr = err;\n\t\t (0, onerror_1.ignoreNextOnError)();\n\t\t client_1.addBreadcrumb(opts.component ? \"\".concat(opts.component, \": \").concat(err.name) : err.name, {\n\t\t category: 'error',\n\t\t metadata: {\n\t\t message: err.message,\n\t\t name: err.name,\n\t\t stack: err.stack\n\t\t }\n\t\t });\n\t\t if (client_1.config.enableUncaught) {\n\t\t client_1.notify(err);\n\t\t }\n\t\t throw (err);\n\t\t }\n\t\t }\n\t\t else {\n\t\t // eslint-disable-next-line prefer-rest-params\n\t\t return func.apply(this, arguments);\n\t\t }\n\t\t };\n\t\t }\n\t\t func.___hb.___hb = func.___hb;\n\t\t return func.___hb;\n\t\t }\n\t\t catch (_e) {\n\t\t return func;\n\t\t }\n\t\t };\n\t\t /** @internal */\n\t\t Honeybadger.prototype.__incrementErrorsCount = function () {\n\t\t return this.__errorsSent++;\n\t\t };\n\t\t /** @internal */\n\t\t Honeybadger.prototype.__exceedsMaxErrors = function () {\n\t\t return this.config.maxErrors && this.__errorsSent >= this.config.maxErrors;\n\t\t };\n\t\t return Honeybadger;\n\t\t}(core_1.Client));\n\t\tvar NOTIFIER = {\n\t\t name: '@honeybadger-io/js',\n\t\t url: 'https://github.com/honeybadger-io/honeybadger-js/tree/master/packages/js',\n\t\t version: '6.10.0'\n\t\t};\n\t\tvar userAgent = function () {\n\t\t if (typeof navigator !== 'undefined') {\n\t\t return \"Honeybadger JS Browser Client \".concat(NOTIFIER.version, \"; \").concat(navigator.userAgent);\n\t\t }\n\t\t return \"Honeybadger JS Browser Client \".concat(NOTIFIER.version, \"; n/a; n/a\");\n\t\t};\n\t\tvar singleton = new Honeybadger({\n\t\t __plugins: [\n\t\t (0, onerror_1.onError)(),\n\t\t (0, onunhandledrejection_1.default)(),\n\t\t (0, timers_1.default)(),\n\t\t (0, event_listeners_1.default)(),\n\t\t (0, breadcrumbs_1.default)(),\n\t\t core_1.Plugins.events(),\n\t\t ]\n\t\t});\n\t\tsingleton.setNotifier(NOTIFIER);\n\t\tvar core_2 = src;\n\t\tObject.defineProperty(exports, \"Types\", { enumerable: true, get: function () { return core_2.Types; } });\n\t\texports.default = singleton;\n\t\t\n\t} (browser$1));\n\n\tvar browser = /*@__PURE__*/getDefaultExportFromCjs(browser$1);\n\n\treturn browser;\n\n}));\n//# sourceMappingURL=honeybadger.js.map\n","var e=\"undefined\"!=typeof window?window:void 0,t=\"undefined\"!=typeof globalThis?globalThis:e,n=Array.prototype,i=n.forEach,r=n.indexOf,s=null==t?void 0:t.navigator,o=null==t?void 0:t.document,a=null==t?void 0:t.location,u=null==t?void 0:t.fetch,l=null!=t&&t.XMLHttpRequest&&\"withCredentials\"in new t.XMLHttpRequest?t.XMLHttpRequest:void 0,c=null==t?void 0:t.AbortController,d=null==s?void 0:s.userAgent,h=null!=e?e:{},f={DEBUG:!1,LIB_VERSION:\"1.165.0\"},v=Array.isArray,p=Object.prototype,g=p.hasOwnProperty,_=p.toString,m=v||function(e){return\"[object Array]\"===_.call(e)},y=function(e){return\"function\"==typeof e},b=function(e){return e===Object(e)&&!m(e)},k=function(e){if(b(e)){for(var t in e)if(g.call(e,t))return!1;return!0}return!1},w=function(e){return void 0===e},S=function(e){return\"[object String]\"==_.call(e)},E=function(e){return S(e)&&0===e.trim().length},x=function(e){return null===e},I=function(e){return w(e)||x(e)},F=function(e){return\"[object Number]\"==_.call(e)},P=function(e){return\"[object Boolean]\"===_.call(e)},R=function(e){return e instanceof FormData},C=\"[PostHog.js]\",T={_log:function(t){if(e&&(f.DEBUG||h.POSTHOG_DEBUG)&&!w(e.console)&&e.console){for(var n=(\"__rrweb_original__\"in e.console[t]?e.console[t].__rrweb_original__:e.console[t]),i=arguments.length,r=new Array(i>1?i-1:0),s=1;s script\");r.length>0?null===(i=r[0].parentNode)||void 0===i||i.insertBefore(e,r[0]):o.body.appendChild(e)};null!=o&&o.body?i():null==o||o.addEventListener(\"DOMContentLoaded\",i)};function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function M(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function H(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null==n)return;var i,r,s=[],o=!0,a=!1;try{for(n=n.call(e);!(o=(i=n.next()).done)&&(s.push(i.value),!t||s.length!==t);o=!0);}catch(e){a=!0,r=e}finally{try{o||null==n.return||n.return()}finally{if(a)throw r}}return s}(e,t)||j(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function U(e){return function(e){if(Array.isArray(e))return W(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||j(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function j(e,t){if(e){if(\"string\"==typeof e)return W(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?W(e,t):void 0}}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,o=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,s=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw s}}}}h.__PosthogExtensions__=h.__PosthogExtensions__||{},h.__PosthogExtensions__.loadExternalDependency=function(e,t,n){var i=\"/static/\".concat(t,\".js\")+\"?v=\".concat(e.version);if(\"toolbar\"===t){var r=3e5,s=Math.floor(Date.now()/r)*r;i=\"\".concat(i,\"?&=\").concat(s)}var o=e.requestRouter.endpointFor(\"assets\",i);$(e,o,n)},h.__PosthogExtensions__.loadSiteApp=function(e,t,n){var i=e.requestRouter.endpointFor(\"api\",t);$(e,i,n)};var V={},G=function(e){return e.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\"\")};function Q(e,t,n){if(m(e))if(i&&e.forEach===i)e.forEach(t,n);else if(\"length\"in e&&e.length===+e.length)for(var r=0,s=e.length;r1?t-1:0),i=1;i0&&(t[n]=e)})),t},ne=function(e){return e.replace(/^\\$/,\"\")};function ie(e,t){return n=e,i=function(e){return S(e)&&!x(t)?e.slice(0,t):e},r=new Set,function e(t,n){return t!==Object(t)?i?i(t,n):t:r.has(t)?void 0:(r.add(t),m(t)?(s=[],Q(t,(function(t){s.push(e(t))}))):(s={},J(t,(function(t,n){r.has(t)||(s[n]=e(t,n))}))),s);var s}(n);var n,i,r}var re,se=function(e){var t,n,i,r,s=\"\";for(t=n=0,i=(e=(e+\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\")).length,r=0;r127&&o<2048?String.fromCharCode(o>>6|192,63&o|128):String.fromCharCode(o>>12|224,o>>6&63|128,63&o|128),x(a)||(n>t&&(s+=e.substring(t,n)),s+=a,t=n=r+1)}return n>t&&(s+=e.substring(t,e.length)),s},oe=function(){function t(e){return e&&(e.preventDefault=t.preventDefault,e.stopPropagation=t.stopPropagation),e}return t.preventDefault=function(){this.returnValue=!1},t.stopPropagation=function(){this.cancelBubble=!0},function(n,i,r,s,o){if(n)if(n.addEventListener&&!s)n.addEventListener(i,r,!!o);else{var a=\"on\"+i,u=n[a];n[a]=function(n,i,r){return function(s){if(s=s||t(null==e?void 0:e.event)){var o,a=!0;y(r)&&(o=r(s));var u=i.call(n,s);return!1!==o&&!1!==u||(a=!1),a}}}(n,r,u)}else T.error(\"No valid element provided to register_event\")}}();function ae(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(this.instance.decideEndpointWasHit||this.getFlags()&&this.getFlags().length>0){var n,i=this.getFlagVariants()[e],r=\"\".concat(i),s=this.instance.get_property($e)||{};if(t.send_event||!(\"send_event\"in t))if(!(e in s)||!s[e].includes(r))m(s[e])?s[e].push(r):s[e]=[r],null===(n=this.instance.persistence)||void 0===n||n.register(q({},$e,s)),this.instance.capture(\"$feature_flag_called\",{$feature_flag:e,$feature_flag_response:i});return i}T.warn('getFeatureFlag for key \"'+e+\"\\\" failed. Feature flags didn't load in time.\")}},{key:\"getFeatureFlagPayload\",value:function(e){return this.getFlagPayloads()[e]}},{key:\"isFeatureEnabled\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.instance.decideEndpointWasHit||this.getFlags()&&this.getFlags().length>0)return!!this.getFeatureFlag(e,t);T.warn('isFeatureEnabled for key \"'+e+\"\\\" failed. Feature flags didn't load in time.\")}},{key:\"addFeatureFlagsHandler\",value:function(e){this.featureFlagEventHandlers.push(e)}},{key:\"removeFeatureFlagsHandler\",value:function(e){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((function(t){return t!==e}))}},{key:\"receivedFeatureFlags\",value:function(e,t){if(this.instance.persistence){this.instance.decideEndpointWasHit=!0;var n=this.getFlagVariants(),i=this.getFlagPayloads();!function(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=e.featureFlags,o=e.featureFlagPayloads;if(s)if(m(s)){var a,u={};if(s)for(var l=0;l1&&void 0!==arguments[1]&&arguments[1];if(!this.instance.__loaded||!this.instance.persistence)return T.uninitializedWarning(\"posthog.feature_flags.override\");if(this._override_warning=t,!1===e)this.instance.persistence.unregister(je);else if(m(e)){for(var n={},i=0;i1&&void 0!==arguments[1]&&arguments[1],i=this.instance.get_property(Fe);if(i&&!n)return e(i);this.instance._send_request({transport:\"XHR\",url:this.instance.requestRouter.endpointFor(\"api\",\"/api/early_access_features/?token=\".concat(this.instance.config.token)),method:\"GET\",callback:function(n){var i;if(n.json){var r=n.json.earlyAccessFeatures;return null===(i=t.instance.persistence)||void 0===i||i.register(q({},Fe,r)),e(r)}}})}},{key:\"_prepareFeatureFlagsForCallbacks\",value:function(){var e=this.getFlags(),t=this.getFlagVariants();return{flags:e.filter((function(e){return t[e]})),flagVariants:Object.keys(t).filter((function(e){return t[e]})).reduce((function(e,n){return e[n]=t[n],e}),{})}}},{key:\"_fireFeatureFlagsCallbacks\",value:function(e){var t=this._prepareFeatureFlagsForCallbacks(),n=t.flags,i=t.flagVariants;this.featureFlagEventHandlers.forEach((function(t){return t(n,i,{errorsLoading:e})}))}},{key:\"setPersonPropertiesForFlags\",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.instance.get_property(Pe)||{};this.instance.register(q({},Pe,M(M({},n),e))),t&&this.instance.reloadFeatureFlags()}},{key:\"resetPersonPropertiesForFlags\",value:function(){this.instance.unregister(Pe)}},{key:\"setGroupPropertiesForFlags\",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.instance.get_property(Re)||{};0!==Object.keys(n).length&&Object.keys(n).forEach((function(t){n[t]=M(M({},n[t]),e[t]),delete e[t]})),this.instance.register(q({},Re,M(M({},n),e))),t&&this.instance.reloadFeatureFlags()}},{key:\"resetGroupPropertiesForFlags\",value:function(e){if(e){var t=this.instance.get_property(Re)||{};this.instance.register(q({},Re,M(M({},t),{},q({},e,{}))))}else this.instance.unregister(Re)}}]),e}();Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Number.isInteger||(Number.isInteger=function(e){return F(e)&&isFinite(e)&&Math.floor(e)===e});var Ge=\"0123456789abcdef\",Qe=function(){function e(t){if(L(this,e),this.bytes=t,16!==t.length)throw new TypeError(\"not 128-bit length\")}return N(e,[{key:\"toString\",value:function(){for(var e=\"\",t=0;t>>4)+Ge.charAt(15&this.bytes[t]),3!==t&&5!==t&&7!==t&&9!==t||(e+=\"-\");if(36!==e.length)throw new Error(\"Invalid UUIDv7 was generated\");return e}},{key:\"clone\",value:function(){return new e(this.bytes.slice(0))}},{key:\"equals\",value:function(e){return 0===this.compareTo(e)}},{key:\"compareTo\",value:function(e){for(var t=0;t<16;t++){var n=this.bytes[t]-e.bytes[t];if(0!==n)return Math.sign(n)}return 0}}],[{key:\"fromFieldsV7\",value:function(t,n,i,r){if(!Number.isInteger(t)||!Number.isInteger(n)||!Number.isInteger(i)||!Number.isInteger(r)||t<0||n<0||i<0||r<0||t>0xffffffffffff||n>4095||i>1073741823||r>4294967295)throw new RangeError(\"invalid field value\");var s=new Uint8Array(16);return s[0]=t/Math.pow(2,40),s[1]=t/Math.pow(2,32),s[2]=t/Math.pow(2,24),s[3]=t/Math.pow(2,16),s[4]=t/Math.pow(2,8),s[5]=t,s[6]=112|n>>>8,s[7]=n,s[8]=128|i>>>24,s[9]=i>>>16,s[10]=i>>>8,s[11]=i,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new e(s)}}]),e}(),Je=function(){function e(){L(this,e),q(this,\"timestamp\",0),q(this,\"counter\",0),q(this,\"random\",new Ke)}return N(e,[{key:\"generate\",value:function(){var e=this.generateOrAbort();if(w(e)){this.timestamp=0;var t=this.generateOrAbort();if(w(t))throw new Error(\"Could not generate UUID after timestamp reset\");return t}return e}},{key:\"generateOrAbort\",value:function(){var e=Date.now();if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+1e4>this.timestamp))return;this.counter++,this.counter>4398046511103&&(this.timestamp++,this.resetCounter())}return Qe.fromFieldsV7(this.timestamp,Math.trunc(this.counter/Math.pow(2,30)),this.counter&Math.pow(2,30)-1,this.random.nextUint32())}},{key:\"resetCounter\",value:function(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}}]),e}(),Ye=function(e){if(\"undefined\"!=typeof UUIDV7_DENY_WEAK_RNG&&UUIDV7_DENY_WEAK_RNG)throw new Error(\"no cryptographically strong RNG available\");for(var t=0;t=this.buffer.length&&(Ye(this.buffer),this.cursor=0),this.buffer[this.cursor++]}}]),e}(),Ze=function(){return et().toString()},et=function(){return(Xe||(Xe=new Je)).generate()},tt=\"Thu, 01 Jan 1970 00:00:00 GMT\",nt=\"\";var it=/[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i;function rt(e,t){if(t){var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o;if(nt)return nt;if(!t)return\"\";if([\"localhost\",\"127.0.0.1\"].includes(e))return\"\";for(var n=e.split(\".\"),i=Math.min(n.length,8),r=\"dmn_chk_\"+Ze(),s=new RegExp(\"(^|;)\\\\s*\"+r+\"=1\");!nt&&i--;){var a=n.slice(i).join(\".\"),u=r+\"=1;domain=.\"+a;t.cookie=u,s.test(t.cookie)&&(t.cookie=u+\";expires=\"+tt,nt=a)}return nt}(e);if(!n){var i=function(e){var t=e.match(it);return t?t[0]:\"\"}(e);i!==n&&T.info(\"Warning: cookie subdomain discovery mismatch\",i,n),n=i}return n?\"; domain=.\"+n:\"\"}return\"\"}var st,ot={is_supported:function(){return!!o},error:function(e){T.error(\"cookieStore error: \"+e)},get:function(e){if(o){try{for(var t=e+\"=\",n=o.cookie.split(\";\").filter((function(e){return e.length})),i=0;i3686.4&&T.warn(\"cookieStore warning: large cookie, len=\"+c.length),o.cookie=c,c}catch(e){return}},remove:function(e,t){try{ot.set(e,\"\",-1,t)}catch(e){return}}},at=null,ut={is_supported:function(){if(!x(at))return at;var t=!0;if(w(e))t=!1;else try{var n=\"__mplssupport__\";ut.set(n,\"xyz\"),'\"xyz\"'!==ut.get(n)&&(t=!1),ut.remove(n)}catch(e){t=!1}return t||T.error(\"localStorage unsupported; falling back to cookie store\"),at=t,t},error:function(e){T.error(\"localStorage error: \"+e)},get:function(t){try{return null==e?void 0:e.localStorage.getItem(t)}catch(e){ut.error(e)}return null},parse:function(e){try{return JSON.parse(ut.get(e))||{}}catch(e){}return null},set:function(t,n){try{null==e||e.localStorage.setItem(t,JSON.stringify(n))}catch(e){ut.error(e)}},remove:function(t){try{null==e||e.localStorage.removeItem(t)}catch(e){ut.error(e)}}},lt=[\"distinct_id\",Ee,xe,qe],ct=M(M({},ut),{},{parse:function(e){try{var t={};try{t=ot.parse(e)||{}}catch(e){}var n=Y(t,JSON.parse(ut.get(e)||\"{}\"));return ut.set(e,n),n}catch(e){}return null},set:function(e,t,n,i,r,s){try{ut.set(e,t,void 0,void 0,s);var o={};lt.forEach((function(e){t[e]&&(o[e]=t[e])})),Object.keys(o).length&&ot.set(e,o,n,i,r,s)}catch(e){ut.error(e)}},remove:function(t,n){try{null==e||e.localStorage.removeItem(t),ot.remove(t,n)}catch(e){ut.error(e)}}}),dt={},ht={is_supported:function(){return!0},error:function(e){T.error(\"memoryStorage error: \"+e)},get:function(e){return dt[e]||null},parse:function(e){return dt[e]||null},set:function(e,t){dt[e]=t},remove:function(e){delete dt[e]}},ft=null,vt={is_supported:function(){if(!x(ft))return ft;if(ft=!0,w(e))ft=!1;else try{var t=\"__support__\";vt.set(t,\"xyz\"),'\"xyz\"'!==vt.get(t)&&(ft=!1),vt.remove(t)}catch(e){ft=!1}return ft},error:function(e){T.error(\"sessionStorage error: \",e)},get:function(t){try{return null==e?void 0:e.sessionStorage.getItem(t)}catch(e){vt.error(e)}return null},parse:function(e){try{return JSON.parse(vt.get(e))||null}catch(e){}return null},set:function(t,n){try{null==e||e.sessionStorage.setItem(t,JSON.stringify(n))}catch(e){vt.error(e)}},remove:function(t){try{null==e||e.sessionStorage.removeItem(t)}catch(e){vt.error(e)}}},pt=[\"localhost\",\"127.0.0.1\"],gt=function(e){var t=null==o?void 0:o.createElement(\"a\");return w(t)?null:(t.href=e,t)},_t=function(e,t){return!!function(e){try{new RegExp(e)}catch(e){return!1}return!0}(t)&&new RegExp(t).test(e)},mt=function(e){var t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"&\",r=[];return J(e,(function(e,i){w(e)||w(i)||\"undefined\"===i||(t=encodeURIComponent(function(e){return e instanceof File}(e)?e.name:e.toString()),n=encodeURIComponent(i),r[r.length]=n+\"=\"+t)})),r.join(i)},yt=function(e,t){for(var n,i=((e.split(\"#\")[0]||\"\").split(\"?\")[1]||\"\").split(\"&\"),r=0;r=3&&(t=w(e[2])?e[3]:e[2]),[\"watchOS\",t]}],[new RegExp(\"(\"+St+\" (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|\"+St+\")\",\"i\"),function(e){if(e&&e[2]){var t=[e[2],e[3],e[4]||\"0\"];return[St,t.join(\".\")]}return[St,\"\"]}],[/Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,function(e){var t=[\"Mac OS X\",\"\"];if(e&&e[1]){var n=[e[1],e[2],e[3]||\"0\"];t[1]=n.join(\".\")}return t}],[/Mac/i,[\"Mac OS X\",\"\"]],[/CrOS/,[At,\"\"]],[/Linux|debian/i,[\"Linux\",\"\"]]],gn=function(e){return ln.test(e)?zt:un.test(e)?Vt:an.test(e)?Gt:new RegExp(Zt,\"i\").test(e)?Zt:new RegExp(\"(\"+Xt+\"|WPDesktop)\",\"i\").test(e)?Xt:/iPad/.test(e)?It:/iPod/.test(e)?\"iPod Touch\":/iPhone/.test(e)?\"iPhone\":/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(e)?Pt:cn.test(e)?Ct:/(kobo)\\s(ereader|touch)/i.test(e)?\"Kobo\":new RegExp(Kt,\"i\").test(e)?Kt:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(e)||/(kf[a-z]+)( bui|\\)).+silk\\//i.test(e)?\"Kindle Fire\":/(Android|ZTE)/i.test(e)?!new RegExp(kt).test(e)||/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(e)?/pixel[\\daxl ]{1,6}/i.test(e)&&!/pixel c/i.test(e)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(e)||/lmy47v/i.test(e)&&!/QTAQZ3/i.test(e)?St:xt:St:new RegExp(\"(pda|\"+kt+\")\",\"i\").test(e)?tn:new RegExp(Et,\"i\").test(e)&&!new RegExp(Et+\" pc\",\"i\").test(e)?nn:\"\"},_n=\"https?://(.*)\",mn=[\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gclid\",\"gad_source\",\"gclsrc\",\"dclid\",\"gbraid\",\"wbraid\",\"fbclid\",\"msclkid\",\"twclid\",\"li_fat_id\",\"mc_cid\",\"igshid\",\"ttclid\",\"rdt_cid\"],yn={campaignParams:function(e){return o?this._campaignParamsFromUrl(o.URL,e):{}},_campaignParamsFromUrl:function(e,t){var n=mn.concat(t||[]),i={};return J(n,(function(t){var n=yt(e,t);n&&(i[t]=n)})),i},_searchEngine:function(e){return e?0===e.search(_n+\"google.([^/?]*)\")?\"google\":0===e.search(_n+\"bing.com\")?\"bing\":0===e.search(_n+\"yahoo.com\")?\"yahoo\":0===e.search(_n+\"duckduckgo.com\")?\"duckduckgo\":null:null},_searchInfoFromReferrer:function(e){var t=yn._searchEngine(e),n=\"yahoo\"!=t?\"q\":\"p\",i={};if(!x(t)){i.$search_engine=t;var r=o?yt(o.referrer,n):\"\";r.length&&(i.ph_keyword=r)}return i},searchInfo:function(){var e=null==o?void 0:o.referrer;return e?this._searchInfoFromReferrer(e):{}},browser:fn,browserVersion:function(e,t){var n=fn(e,t),i=vn[n];if(w(i))return null;for(var r=0;r1e3?d.substring(0,997)+\"...\":d,$browser_version:yn.browserVersion(d,navigator.vendor),$browser_language:yn.browserLanguage(),$screen_height:null==e?void 0:e.screen.height,$screen_width:null==e?void 0:e.screen.width,$viewport_height:null==e?void 0:e.innerHeight,$viewport_width:null==e?void 0:e.innerWidth,$lib:\"web\",$lib_version:f.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3})},people_properties:function(){if(!d)return{};var e=H(yn.os(d),2),t=e[0],n=e[1];return Y(te({$os:t,$os_version:n,$browser:yn.browser(d,navigator.vendor)}),{$browser_version:yn.browserVersion(d,navigator.vendor)})}},bn=[\"cookie\",\"localstorage\",\"localstorage+cookie\",\"sessionstorage\",\"memory\"],kn=function(){function e(t){L(this,e),this.config=t,this.props={},this.campaign_params_saved=!1,this.name=function(e){var t=\"\";return e.token&&(t=e.token.replace(/\\+/g,\"PL\").replace(/\\//g,\"SL\").replace(/=/g,\"EQ\")),e.persistence_name?\"ph_\"+e.persistence_name:\"ph_\"+t+\"_posthog\"}(t),this.storage=this.buildStorage(t),this.load(),t.debug&&T.info(\"Persistence loaded\",t.persistence,M({},this.props)),this.update_config(t,t),this.save()}return N(e,[{key:\"buildStorage\",value:function(e){-1===bn.indexOf(e.persistence.toLowerCase())&&(T.critical(\"Unknown persistence type \"+e.persistence+\"; falling back to localStorage+cookie\"),e.persistence=\"localStorage+cookie\");var t=e.persistence.toLowerCase();return\"localstorage\"===t&&ut.is_supported()?ut:\"localstorage+cookie\"===t&&ct.is_supported()?ct:\"sessionstorage\"===t&&vt.is_supported()?vt:\"memory\"===t?ht:\"cookie\"===t?ot:ct.is_supported()?ct:ot}},{key:\"properties\",value:function(){var e={};return J(this.props,(function(t,n){if(n===Ie&&b(t))for(var i=Object.keys(t),s=0;s0&&t.at(-1)!==this;)t.pop();return t.includes(n)?\"[Circular]\":(t.push(n),n)}return n})).length;var t}function Sn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6606028.8;if(e.size>=t&&e.data.length>1){var n=Math.floor(e.data.length/2),i=e.data.slice(0,n),r=e.data.slice(n);return[Sn({size:wn(i),data:i,sessionId:e.sessionId,windowId:e.windowId}),Sn({size:wn(r),data:r,sessionId:e.sessionId,windowId:e.windowId})].flatMap((function(e){return e}))}return[e]}var En=function(e){return e[e.DomContentLoaded=0]=\"DomContentLoaded\",e[e.Load=1]=\"Load\",e[e.FullSnapshot=2]=\"FullSnapshot\",e[e.IncrementalSnapshot=3]=\"IncrementalSnapshot\",e[e.Meta=4]=\"Meta\",e[e.Custom=5]=\"Custom\",e[e.Plugin=6]=\"Plugin\",e}(En||{}),xn=function(e){return e[e.Mutation=0]=\"Mutation\",e[e.MouseMove=1]=\"MouseMove\",e[e.MouseInteraction=2]=\"MouseInteraction\",e[e.Scroll=3]=\"Scroll\",e[e.ViewportResize=4]=\"ViewportResize\",e[e.Input=5]=\"Input\",e[e.TouchMove=6]=\"TouchMove\",e[e.MediaInteraction=7]=\"MediaInteraction\",e[e.StyleSheetRule=8]=\"StyleSheetRule\",e[e.CanvasMutation=9]=\"CanvasMutation\",e[e.Font=10]=\"Font\",e[e.Log=11]=\"Log\",e[e.Drag=12]=\"Drag\",e[e.StyleDeclaration=13]=\"StyleDeclaration\",e[e.Selection=14]=\"Selection\",e[e.AdoptedStyleSheet=15]=\"AdoptedStyleSheet\",e[e.CustomElement=16]=\"CustomElement\",e}(xn||{});function In(e){return e?G(e).split(/\\s+/):[]}function Fn(t){var n=null==e?void 0:e.location.href;return!!(n&&t&&t.some((function(e){return n.match(e)})))}function Pn(e){var t=\"\";switch(A(e.className)){case\"string\":t=e.className;break;case\"object\":t=(e.className&&\"baseVal\"in e.className?e.className.baseVal:null)||e.getAttribute(\"class\")||\"\";break;default:t=\"\"}return In(t)}function Rn(e){return I(e)?null:G(e).split(/(\\s+)/).filter((function(e){return Gn(e)})).join(\"\").replace(/[\\r\\n]/g,\" \").replace(/[ ]+/g,\" \").substring(0,255)}function Cn(e){var t=\"\";return qn(e)&&!Bn(e)&&e.childNodes&&e.childNodes.length&&J(e.childNodes,(function(e){var n;Mn(e)&&e.textContent&&(t+=null!==(n=Rn(e.textContent))&&void 0!==n?n:\"\")})),G(t)}function Tn(e){return w(e.target)?e.srcElement||null:null!==(t=e.target)&&void 0!==t&&t.shadowRoot?e.composedPath()[0]||null:e.target||null;var t}function $n(e){return!!e&&1===e.nodeType}function On(e,t){return!!e&&!!e.tagName&&e.tagName.toLowerCase()===t.toLowerCase()}function Mn(e){return!!e&&3===e.nodeType}function An(e){return!!e&&11===e.nodeType}var Ln=[\"a\",\"button\",\"form\",\"input\",\"select\",\"textarea\",\"label\"];function Dn(e){var t=e.parentNode;return!(!t||!$n(t))&&t}function Nn(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,s=arguments.length>4?arguments[4]:void 0;if(!e||!t||On(t,\"html\")||!$n(t))return!1;if(null!=i&&i.url_allowlist&&!Fn(i.url_allowlist))return!1;if(null!=i&&i.url_ignorelist&&Fn(i.url_ignorelist))return!1;if(null!=i&&i.dom_event_allowlist){var o=i.dom_event_allowlist;if(o&&!o.some((function(e){return n.type===e})))return!1}for(var a=!1,u=[t],l=!0,c=t;c.parentNode&&!On(c,\"body\");)if(An(c.parentNode))u.push(c.parentNode.host),c=c.parentNode.host;else{if(!(l=Dn(c)))break;if(r||Ln.indexOf(l.tagName.toLowerCase())>-1)a=!0;else{var d=e.getComputedStyle(l);d&&\"pointer\"===d.getPropertyValue(\"cursor\")&&(a=!0)}u.push(l),c=l}if(!function(e,t){var n=null==t?void 0:t.element_allowlist;if(w(n))return!0;var i,r=z(e);try{var s=function(){var e=i.value;if(n.some((function(t){return e.tagName.toLowerCase()===t})))return{v:!0}};for(r.s();!(i=r.n()).done;){var o=s();if(\"object\"===A(o))return o.v}}catch(e){r.e(e)}finally{r.f()}return!1}(u,i))return!1;if(!function(e,t){var n=null==t?void 0:t.css_selector_allowlist;if(w(n))return!0;var i,r=z(e);try{var s=function(){var e=i.value;if(n.some((function(t){return e.matches(t)})))return{v:!0}};for(r.s();!(i=r.n()).done;){var o=s();if(\"object\"===A(o))return o.v}}catch(e){r.e(e)}finally{r.f()}return!1}(u,i))return!1;var h=e.getComputedStyle(t);if(h&&\"pointer\"===h.getPropertyValue(\"cursor\")&&\"click\"===n.type)return!0;var f=t.tagName.toLowerCase();switch(f){case\"html\":return!1;case\"form\":return(s||[\"submit\"]).indexOf(n.type)>=0;case\"input\":case\"select\":case\"textarea\":return(s||[\"change\",\"click\"]).indexOf(n.type)>=0;default:return a?(s||[\"click\"]).indexOf(n.type)>=0:(s||[\"click\"]).indexOf(n.type)>=0&&(Ln.indexOf(f)>-1||\"true\"===t.getAttribute(\"contenteditable\"))}}function qn(e){for(var t=e;t.parentNode&&!On(t,\"body\");t=t.parentNode){var n=Pn(t);if(X(n,\"ph-sensitive\")||X(n,\"ph-no-capture\"))return!1}if(X(Pn(e),\"ph-include\"))return!0;var i=e.type||\"\";if(S(i))switch(i.toLowerCase()){case\"hidden\":case\"password\":return!1}var r=e.name||e.id||\"\";if(S(r)){if(/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(r.replace(/[^a-zA-Z0-9]/g,\"\")))return!1}return!0}function Bn(e){return!!(On(e,\"input\")&&![\"button\",\"checkbox\",\"submit\",\"reset\"].includes(e.type)||On(e,\"select\")||On(e,\"textarea\")||\"true\"===e.getAttribute(\"contenteditable\"))}var Hn=\"(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})\",Un=new RegExp(\"^(?:\".concat(Hn,\")$\")),jn=new RegExp(Hn),Wn=\"\\\\d{3}-?\\\\d{2}-?\\\\d{4}\",zn=new RegExp(\"^(\".concat(Wn,\")$\")),Vn=new RegExp(\"(\".concat(Wn,\")\"));function Gn(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(I(e))return!1;if(S(e)){if(e=G(e),(t?Un:jn).test((e||\"\").replace(/[- ]/g,\"\")))return!1;if((t?zn:Vn).test(e))return!1}return!0}function Qn(e){var t=Cn(e);return Gn(t=\"\".concat(t,\" \").concat(Jn(e)).trim())?t:\"\"}function Jn(e){var t=\"\";return e&&e.childNodes&&e.childNodes.length&&J(e.childNodes,(function(e){var n;if(e&&\"span\"===(null===(n=e.tagName)||void 0===n?void 0:n.toLowerCase()))try{var i=Cn(e);t=\"\".concat(t,\" \").concat(i).trim(),e.childNodes&&e.childNodes.length&&(t=\"\".concat(t,\" \").concat(Jn(e)).trim())}catch(e){T.error(e)}})),t}function Yn(e){return function(e){var t=e.map((function(e){var t,n,i=\"\";if(e.tag_name&&(i+=e.tag_name),e.attr_class){e.attr_class.sort();var r,s=z(e.attr_class);try{for(s.s();!(r=s.n()).done;){var o=r.value;i+=\".\".concat(o.replace(/\"/g,\"\"))}}catch(e){s.e(e)}finally{s.f()}}var a=M(M(M(M({},e.text?{text:e.text}:{}),{},{\"nth-child\":null!==(t=e.nth_child)&&void 0!==t?t:0,\"nth-of-type\":null!==(n=e.nth_of_type)&&void 0!==n?n:0},e.href?{href:e.href}:{}),e.attr_id?{attr_id:e.attr_id}:{}),e.attributes),u={};return K(a).sort((function(e,t){var n=H(e,1)[0],i=H(t,1)[0];return n.localeCompare(i)})).forEach((function(e){var t=H(e,2),n=t[0],i=t[1];return u[Xn(n.toString())]=Xn(i.toString())})),i+=\":\",i+=K(a).map((function(e){var t=H(e,2),n=t[0],i=t[1];return\"\".concat(n,'=\"').concat(i,'\"')})).join(\"\")}));return t.join(\";\")}(function(e){return e.map((function(e){var t,n,i={text:null===(t=e.$el_text)||void 0===t?void 0:t.slice(0,400),tag_name:e.tag_name,href:null===(n=e.attr__href)||void 0===n?void 0:n.slice(0,2048),attr_class:Kn(e),attr_id:e.attr__id,nth_child:e.nth_child,nth_of_type:e.nth_of_type,attributes:{}};return K(e).filter((function(e){return 0===H(e,1)[0].indexOf(\"attr__\")})).forEach((function(e){var t=H(e,2),n=t[0],r=t[1];return i.attributes[n]=r})),i}))}(e))}function Xn(e){return e.replace(/\"|\\\\\"/g,'\\\\\"')}function Kn(e){var t=e.attr__class;return t?m(t)?t:In(t):void 0}var Zn=\"[SessionRecording]\",ei=\"redacted\",ti={initiatorTypes:[\"audio\",\"beacon\",\"body\",\"css\",\"early-hint\",\"embed\",\"fetch\",\"frame\",\"iframe\",\"icon\",\"image\",\"img\",\"input\",\"link\",\"navigation\",\"object\",\"ping\",\"script\",\"track\",\"video\",\"xmlhttprequest\"],maskRequestFn:function(e){return e},recordHeaders:!1,recordBody:!1,recordInitialRequests:!1,recordPerformance:!1,performanceEntryTypeToObserve:[\"first-input\",\"navigation\",\"paint\",\"resource\"],payloadSizeLimitBytes:1e6,payloadHostDenyList:[\".lr-ingest.io\",\".ingest.sentry.io\"]},ni=[\"authorization\",\"x-forwarded-for\",\"authorization\",\"cookie\",\"set-cookie\",\"x-api-key\",\"x-real-ip\",\"remote-addr\",\"forwarded\",\"proxy-authorization\",\"x-csrf-token\",\"x-csrftoken\",\"x-xsrf-token\"],ii=[\"password\",\"secret\",\"passwd\",\"api_key\",\"apikey\",\"auth\",\"credentials\",\"mysql_pwd\",\"privatekey\",\"private_key\",\"token\"],ri=[\"/s/\",\"/e/\",\"/i/\"];function si(e,t,n,i){if(I(e))return e;var r=(null==t?void 0:t[\"content-length\"])||function(e){return new Blob([e]).size}(e);return S(r)&&(r=parseInt(r)),r>n?Zn+\" \".concat(i,\" body too large to record (\").concat(r,\" bytes)\"):e}function oi(e,t){if(I(e))return e;var n=e;return Gn(n,!1)||(n=Zn+\" \"+t+\" body \"+ei),J(ii,(function(e){var i,r;null!==(i=n)&&void 0!==i&&i.length&&-1!==(null===(r=n)||void 0===r?void 0:r.indexOf(e))&&(n=Zn+\" \"+t+\" body \"+ei+\" as might contain: \"+e)})),n}var ai=function(e,t){var n,i,r,s={payloadSizeLimitBytes:ti.payloadSizeLimitBytes,performanceEntryTypeToObserve:U(ti.performanceEntryTypeToObserve),payloadHostDenyList:[].concat(U(t.payloadHostDenyList||[]),U(ti.payloadHostDenyList))},o=!1!==e.session_recording.recordHeaders&&t.recordHeaders,a=!1!==e.session_recording.recordBody&&t.recordBody,u=!1!==e.capture_performance&&t.recordPerformance,l=(n=s,r=Math.min(1e6,null!==(i=n.payloadSizeLimitBytes)&&void 0!==i?i:1e6),function(e){return null!=e&&e.requestBody&&(e.requestBody=si(e.requestBody,e.requestHeaders,r,\"Request\")),null!=e&&e.responseBody&&(e.responseBody=si(e.responseBody,e.responseHeaders,r,\"Response\")),e}),c=function(e){return l(function(e){var t=gt(e.name);if(!(t&&t.pathname&&ri.some((function(e){return 0===t.pathname.indexOf(e)}))))return e}((n=(t=e).requestHeaders,I(n)||J(Object.keys(null!=n?n:{}),(function(e){ni.includes(e.toLowerCase())&&(n[e]=ei)})),t)));var t,n},d=y(e.session_recording.maskNetworkRequestFn);return d&&y(e.session_recording.maskCapturedNetworkRequestFn)&&T.warn(\"Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.\"),d&&(e.session_recording.maskCapturedNetworkRequestFn=function(t){var n=e.session_recording.maskNetworkRequestFn({url:t.name});return M(M({},t),{},{name:null==n?void 0:n.url})}),s.maskRequestFn=y(e.session_recording.maskCapturedNetworkRequestFn)?function(t){var n,i,r,s=c(t);return s&&null!==(n=null===(i=(r=e.session_recording).maskCapturedNetworkRequestFn)||void 0===i?void 0:i.call(r,s))&&void 0!==n?n:void 0}:function(e){return function(e){if(!w(e))return e.requestBody=oi(e.requestBody,\"Request\"),e.responseBody=oi(e.responseBody,\"Response\"),e}(c(e))},M(M(M({},ti),s),{},{recordHeaders:o,recordBody:a,recordPerformance:u,recordInitialRequests:u})},ui=N((function e(t){var n,i,r=this,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};L(this,e),q(this,\"bucketSize\",100),q(this,\"refillRate\",10),q(this,\"mutationBuckets\",{}),q(this,\"loggedTracker\",{}),q(this,\"refillBuckets\",(function(){Object.keys(r.mutationBuckets).forEach((function(e){r.mutationBuckets[e]=r.mutationBuckets[e]+r.refillRate,r.mutationBuckets[e]>=r.bucketSize&&delete r.mutationBuckets[e]}))})),q(this,\"getNodeOrRelevantParent\",(function(e){var t=r.rrweb.mirror.getNode(e);if(\"svg\"!==(null==t?void 0:t.nodeName)&&t instanceof Element){var n=t.closest(\"svg\");if(n)return[r.rrweb.mirror.getId(n),n]}return[e,t]})),q(this,\"numberOfChanges\",(function(e){var t,n,i,r,s,o,a,u;return(null!==(t=null===(n=e.removes)||void 0===n?void 0:n.length)&&void 0!==t?t:0)+(null!==(i=null===(r=e.attributes)||void 0===r?void 0:r.length)&&void 0!==i?i:0)+(null!==(s=null===(o=e.texts)||void 0===o?void 0:o.length)&&void 0!==s?s:0)+(null!==(a=null===(u=e.adds)||void 0===u?void 0:u.length)&&void 0!==a?a:0)})),q(this,\"throttleMutations\",(function(e){if(3!==e.type||0!==e.data.source)return e;var t=e.data,n=r.numberOfChanges(t);t.attributes&&(t.attributes=t.attributes.filter((function(e){var t,n,i,s=H(r.getNodeOrRelevantParent(e.id),2),o=s[0],a=s[1];if(0===r.mutationBuckets[o])return!1;(r.mutationBuckets[o]=null!==(t=r.mutationBuckets[o])&&void 0!==t?t:r.bucketSize,r.mutationBuckets[o]=Math.max(r.mutationBuckets[o]-1,0),0===r.mutationBuckets[o])&&(r.loggedTracker[o]||(r.loggedTracker[o]=!0,null===(n=(i=r.options).onBlockedNode)||void 0===n||n.call(i,o,a)));return e})));var i=r.numberOfChanges(t);return 0!==i||n===i?e:void 0})),this.rrweb=t,this.options=s,this.refillRate=null!==(n=this.options.refillRate)&&void 0!==n?n:this.refillRate,this.bucketSize=null!==(i=this.options.bucketSize)&&void 0!==i?i:this.bucketSize,setInterval((function(){r.refillBuckets()}),1e3)})),li=Uint8Array,ci=Uint16Array,di=Uint32Array,hi=new li([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),fi=new li([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),vi=new li([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),pi=function(e,t){for(var n=new ci(31),i=0;i<31;++i)n[i]=t+=1<>>1|(21845&ki)<<1;wi=(61680&(wi=(52428&wi)>>>2|(13107&wi)<<2))>>>4|(3855&wi)<<4,bi[ki]=((65280&wi)>>>8|(255&wi)<<8)>>>1}var Si=function(e,t,n){for(var i=e.length,r=0,s=new ci(t);r>>u]=l}else for(o=new ci(i),r=0;r>>15-e[r];return o},Ei=new li(288);for(ki=0;ki<144;++ki)Ei[ki]=8;for(ki=144;ki<256;++ki)Ei[ki]=9;for(ki=256;ki<280;++ki)Ei[ki]=7;for(ki=280;ki<288;++ki)Ei[ki]=8;var xi=new li(32);for(ki=0;ki<32;++ki)xi[ki]=5;var Ii=Si(Ei,9,0),Fi=Si(xi,5,0),Pi=function(e){return(e/8>>0)+(7&e&&1)},Ri=function(e,t,n){(null==t||t<0)&&(t=0),(null==n||n>e.length)&&(n=e.length);var i=new(e instanceof ci?ci:e instanceof di?di:li)(n-t);return i.set(e.subarray(t,n)),i},Ci=function(e,t,n){n<<=7&t;var i=t/8>>0;e[i]|=n,e[i+1]|=n>>>8},Ti=function(e,t,n){n<<=7&t;var i=t/8>>0;e[i]|=n,e[i+1]|=n>>>8,e[i+2]|=n>>>16},$i=function(e,t){for(var n=[],i=0;ih&&(h=s[i].s);var f=new ci(h+1),v=Oi(n[c-1],f,0);if(v>t){i=0;var p=0,g=v-t,_=1<t))break;p+=_-(1<>>=g;p>0;){var y=s[i].s;f[y]=0&&p;--i){var b=s[i].s;f[b]==t&&(--f[b],++p)}v=t}return[new li(f),v]},Oi=function e(t,n,i){return-1==t.s?Math.max(e(t.l,n,i+1),e(t.r,n,i+1)):n[t.s]=i},Mi=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new ci(++t),i=0,r=e[0],s=1,o=function(e){n[i++]=e},a=1;a<=t;++a)if(e[a]==r&&a!=t)++s;else{if(!r&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(r),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(r);s=1,r=e[a]}return[n.subarray(0,i),t]},Ai=function(e,t){for(var n=0,i=0;i>>8,e[r+2]=255^e[r],e[r+3]=255^e[r+1];for(var s=0;s4&&!I[vi[P-1]];--P);var R,C,T,$,O=l+5<<3,M=Ai(r,Ei)+Ai(s,xi)+o,A=Ai(r,h)+Ai(s,p)+o+14+3*P+Ai(S,I)+(2*S[16]+3*S[17]+7*S[18]);if(O<=M&&O<=A)return Li(t,c,e.subarray(u,u+l));if(Ci(t,c,1+(A15&&(Ci(t,c,q[E]>>>5&127),c+=q[E]>>>12)}}}else R=Ii,C=Ei,T=Fi,$=xi;for(E=0;E255){B=i[E]>>>18&31;Ti(t,c,R[B+257]),c+=C[B+257],B>7&&(Ci(t,c,i[E]>>>23&31),c+=hi[B]);var H=31&i[E];Ti(t,c,T[H]),c+=$[H],H>3&&(Ti(t,c,i[E]>>>5&8191),c+=fi[H])}else Ti(t,c,R[i[E]]),c+=C[i[E]];return Ti(t,c,R[256]),c+C[256]},Ni=new di([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),qi=new li(0),Bi=function(){for(var e=new di(256),t=0;t<256;++t){for(var n=t,i=9;--i;)n=(1&n&&3988292384)^n>>>1;e[t]=n}return e}(),Hi=function(){var e=4294967295;return{p:function(t){for(var n=e,i=0;i>>8;e=n},d:function(){return 4294967295^e}}},Ui=function(e,t,n,i,r){return function(e,t,n,i,r,s){var o=e.length,a=new li(i+o+5*(1+Math.floor(o/7e3))+r),u=a.subarray(i,a.length-r),l=0;if(!t||o<8)for(var c=0;c<=o;c+=65535){var d=c+65535;d>>13,v=8191&h,p=(1<7e3||I>24576)&&$>423){l=Di(e,u,0,k,w,S,x,I,P,c-P,l),I=E=x=0,P=c;for(var O=0;O<286;++O)w[O]=0;for(O=0;O<30;++O)S[O]=0}var M=2,A=0,L=v,D=C-T&32767;if($>2&&R==b(c-D))for(var N=Math.min(f,$)-1,q=Math.min(32767,c),B=Math.min(258,$);D<=q&&--L&&C!=T;){if(e[c+M]==e[c+M-D]){for(var H=0;HM){if(M=H,A=D,H>N)break;var U=Math.min(D,H-2),j=0;for(O=0;Oj&&(j=z,T=W)}}}D+=(C=T)-(T=g[C])+32768&32767}if(A){k[I++]=268435456|mi[M]<<18|yi[A];var V=31&mi[M],G=31&yi[A];x+=hi[V]+fi[G],++w[257+V],++S[G],F=c+M,++E}else k[I++]=e[c],++w[e[c]]}}l=Di(e,u,s,k,w,S,x,I,P,c-P,l),s||(l=Li(u,l,qi))}return Ri(a,0,i+Pi(l)+r)}(e,null==t.level?6:t.level,null==t.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):12+t.mem,n,i,!r)},ji=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},Wi=function(e,t){var n=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:9==t.level?2:0,e[9]=3,0!=t.mtime&&ji(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),n){e[3]=8;for(var i=0;i<=n.length;++i)e[i+10]=n.charCodeAt(i)}},zi=function(e){return 10+(e.filename&&e.filename.length+1||0)};function Vi(e,t){void 0===t&&(t={});var n=Hi(),i=e.length;n.p(e);var r=Ui(e,t,zi(t),8),s=r.length;return Wi(r,t),ji(r,s-8,n.d()),ji(r,s-4,i),r}function Gi(e,t){var n=e.length;if(!t&&\"undefined\"!=typeof TextEncoder)return(new TextEncoder).encode(e);for(var i=new li(e.length+(e.length>>>1)),r=0,s=function(e){i[r++]=e},o=0;oi.length){var a=new li(r+8+(n-o<<1));a.set(i),i=a}var u=e.charCodeAt(o);u<128||t?s(u):u<2048?(s(192|u>>>6),s(128|63&u)):u>55295&&u<57344?(s(240|(u=65536+(1047552&u)|1023&e.charCodeAt(++o))>>>18),s(128|u>>>12&63),s(128|u>>>6&63),s(128|63&u)):(s(224|u>>>12),s(128|u>>>6&63),s(128|63&u))}return Ri(i,0,r)}var Qi=3e5,Ji=Qi,Yi=[xn.MouseMove,xn.MouseInteraction,xn.Scroll,xn.ViewportResize,xn.Input,xn.TouchMove,xn.MediaInteraction,xn.Drag],Xi=function(e){return{rrwebMethod:e,enqueuedAt:Date.now(),attempt:1}},Ki=\"[SessionRecording]\";function Zi(e){return function(e,t){var n=\"\";if(!t&&\"undefined\"!=typeof TextDecoder)return(new TextDecoder).decode(e);for(var i=0;i>10,56320|1023&r))}return n}(Vi(Gi(JSON.stringify(e))),!0)}var er,tr=function(){function t(e){var n=this;if(L(this,t),q(this,\"queuedRRWebEvents\",[]),q(this,\"isIdle\",!1),q(this,\"_linkedFlagSeen\",!1),q(this,\"_lastActivityTimestamp\",Date.now()),q(this,\"_linkedFlag\",null),q(this,\"_removePageViewCaptureHook\",void 0),q(this,\"_onSessionIdListener\",void 0),q(this,\"_persistDecideOnSessionListener\",void 0),q(this,\"_samplingSessionListener\",void 0),q(this,\"_forceAllowLocalhostNetworkCapture\",!1),q(this,\"_onBeforeUnload\",(function(){n._flushBuffer()})),q(this,\"_onOffline\",(function(){n._tryAddCustomEvent(\"browser offline\",{})})),q(this,\"_onOnline\",(function(){n._tryAddCustomEvent(\"browser online\",{})})),q(this,\"_onVisibilityChange\",(function(){if(null!=o&&o.visibilityState){var e=\"window \"+o.visibilityState;n._tryAddCustomEvent(e,{})}})),this.instance=e,this._captureStarted=!1,this._endpoint=\"/s/\",this.stopRrweb=void 0,this.receivedDecide=!1,!this.instance.sessionManager)throw T.error(Ki+\" started without valid sessionManager\"),new Error(Ki+\" started without valid sessionManager. This is a bug.\");var i=this.sessionManager.checkAndGetSessionAndWindowId(),r=i.sessionId,s=i.windowId;this.sessionId=r,this.windowId=s,this.buffer=this.clearBuffer()}return N(t,[{key:\"rrwebRecord\",get:function(){var e,t;return null==h||null===(e=h.__PosthogExtensions__)||void 0===e||null===(t=e.rrweb)||void 0===t?void 0:t.record}},{key:\"started\",get:function(){return this._captureStarted}},{key:\"sessionManager\",get:function(){if(!this.instance.sessionManager)throw new Error(Ki+\" must be started with a valid sessionManager.\");return this.instance.sessionManager}},{key:\"fullSnapshotIntervalMillis\",get:function(){var e;return(null===(e=this.instance.config.session_recording)||void 0===e?void 0:e.full_snapshot_interval_millis)||Qi}},{key:\"isSampled\",get:function(){var e=this.instance.get_property(xe);return P(e)?e:null}},{key:\"sessionDuration\",get:function(){var e,t,n=null===(e=this.buffer)||void 0===e?void 0:e.data[(null===(t=this.buffer)||void 0===t?void 0:t.data.length)-1],i=this.sessionManager.checkAndGetSessionAndWindowId(!0).sessionStartTimestamp;return n?n.timestamp-i:null}},{key:\"isRecordingEnabled\",get:function(){var t=!!this.instance.get_property(me),n=!this.instance.config.disable_session_recording;return e&&t&&n}},{key:\"isConsoleLogCaptureEnabled\",get:function(){var e=!!this.instance.get_property(ye),t=this.instance.config.enable_recording_console_log;return null!=t?t:e}},{key:\"canvasRecording\",get:function(){var e=this.instance.get_property(ke);return e&&e.fps&&e.quality?{enabled:e.enabled,fps:e.fps,quality:e.quality}:void 0}},{key:\"networkPayloadCapture\",get:function(){var e,t,n=this.instance.get_property(be),i={recordHeaders:null===(e=this.instance.config.session_recording)||void 0===e?void 0:e.recordHeaders,recordBody:null===(t=this.instance.config.session_recording)||void 0===t?void 0:t.recordBody},r=(null==i?void 0:i.recordHeaders)||(null==n?void 0:n.recordHeaders),s=(null==i?void 0:i.recordBody)||(null==n?void 0:n.recordBody),o=b(this.instance.config.capture_performance)?this.instance.config.capture_performance.network_timing:this.instance.config.capture_performance,a=!!(P(o)?o:null==n?void 0:n.capturePerformance);return r||s||a?{recordHeaders:r,recordBody:s,recordPerformance:a}:void 0}},{key:\"sampleRate\",get:function(){var e=this.instance.get_property(we);return F(e)?e:null}},{key:\"minimumDuration\",get:function(){var e=this.instance.get_property(Se);return F(e)?e:null}},{key:\"status\",get:function(){return this.receivedDecide?this.isRecordingEnabled?I(this._linkedFlag)||this._linkedFlagSeen?P(this.isSampled)?this.isSampled?\"sampled\":\"disabled\":\"active\":\"buffering\":\"disabled\":\"buffering\"}},{key:\"startIfEnabledOrStop\",value:function(){var t=this;this.isRecordingEnabled?(this._startCapture(),null==e||e.addEventListener(\"beforeunload\",this._onBeforeUnload),null==e||e.addEventListener(\"offline\",this._onOffline),null==e||e.addEventListener(\"online\",this._onOnline),null==e||e.addEventListener(\"visibilitychange\",this._onVisibilityChange),this._setupSampling(),I(this._removePageViewCaptureHook)&&(this._removePageViewCaptureHook=this.instance._addCaptureHook((function(n){try{if(\"$pageview\"===n){var i=e?t._maskUrl(e.location.href):\"\";if(!i)return;t._tryAddCustomEvent(\"$pageview\",{href:i})}}catch(e){T.error(\"Could not add $pageview to rrweb session\",e)}}))),this._onSessionIdListener||(this._onSessionIdListener=this.sessionManager.onSessionId((function(e,n,i){i&&t._tryAddCustomEvent(\"$session_id_change\",{sessionId:e,windowId:n,changeReason:i})}))),T.info(Ki+\" started\")):this.stopRecording()}},{key:\"stopRecording\",value:function(){var t,n,i;this._captureStarted&&this.stopRrweb&&(this.stopRrweb(),this.stopRrweb=void 0,this._captureStarted=!1,null==e||e.removeEventListener(\"beforeunload\",this._onBeforeUnload),null==e||e.removeEventListener(\"offline\",this._onOffline),null==e||e.removeEventListener(\"online\",this._onOnline),null==e||e.removeEventListener(\"visibilitychange\",this._onVisibilityChange),this.clearBuffer(),clearInterval(this._fullSnapshotTimer),null===(t=this._removePageViewCaptureHook)||void 0===t||t.call(this),this._removePageViewCaptureHook=void 0,null===(n=this._onSessionIdListener)||void 0===n||n.call(this),this._onSessionIdListener=void 0,null===(i=this._samplingSessionListener)||void 0===i||i.call(this),this._samplingSessionListener=void 0,T.info(Ki+\" stopped\"))}},{key:\"makeSamplingDecision\",value:function(e){var t,n=this.sessionId!==e,i=this.sampleRate;if(F(i)){var r,s=this.isSampled,o=n||!P(s);if(o)r=Math.random()1&&void 0!==arguments[1]?arguments[1]:\"log\";null===(t=this.instance.sessionRecording)||void 0===t||t.onRRwebEmit({type:6,data:{plugin:\"rrweb/console@1\",payload:{level:n,trace:[],payload:[JSON.stringify(e)]}},timestamp:Date.now()})}},{key:\"_startCapture\",value:function(){var e,t,n=this;w(Object.assign)||(this._captureStarted||this.instance.config.disable_session_recording||this.instance.consent.isOptedOut()||(this._captureStarted=!0,this.sessionManager.checkAndGetSessionAndWindowId(),this.rrwebRecord?this._onScriptLoaded():null===(e=h.__PosthogExtensions__)||void 0===e||null===(t=e.loadExternalDependency)||void 0===t||t.call(e,this.instance,\"recorder\",(function(e){if(e)return T.error(Ki+\" could not load recorder\",e);n._onScriptLoaded()}))))}},{key:\"isInteractiveEvent\",value:function(e){var t;return 3===e.type&&-1!==Yi.indexOf(null===(t=e.data)||void 0===t?void 0:t.source)}},{key:\"_updateWindowAndSessionIds\",value:function(e){var t=this.isInteractiveEvent(e);t||this.isIdle||e.timestamp-this._lastActivityTimestamp>Ji&&(this.isIdle=!0,clearInterval(this._fullSnapshotTimer),this._tryAddCustomEvent(\"sessionIdle\",{eventTimestamp:e.timestamp,lastActivityTimestamp:this._lastActivityTimestamp,threshold:Ji,bufferLength:this.buffer.data.length,bufferSize:this.buffer.size}),this._flushBuffer());var n=!1;if(t&&(this._lastActivityTimestamp=e.timestamp,this.isIdle&&(this.isIdle=!1,this._tryAddCustomEvent(\"sessionNoLongerIdle\",{reason:\"user activity\",type:e.type}),n=!0)),!this.isIdle){var i=this.sessionManager.checkAndGetSessionAndWindowId(!t,e.timestamp),r=i.windowId,s=i.sessionId,o=this.sessionId!==s,a=this.windowId!==r;this.windowId=r,this.sessionId=s,o||a?(this.stopRecording(),this.startIfEnabledOrStop()):n&&this._scheduleFullSnapshot()}}},{key:\"_tryRRWebMethod\",value:function(e){try{return e.rrwebMethod(),!0}catch(t){return this.queuedRRWebEvents.length<10?this.queuedRRWebEvents.push({enqueuedAt:e.enqueuedAt||Date.now(),attempt:e.attempt++,rrwebMethod:e.rrwebMethod}):T.warn(Ki+\" could not emit queued rrweb event.\",t,e),!1}}},{key:\"_tryAddCustomEvent\",value:function(e,t){var n=this;return this._tryRRWebMethod(Xi((function(){return n.rrwebRecord.addCustomEvent(e,t)})))}},{key:\"_tryTakeFullSnapshot\",value:function(){var e=this;return this._tryRRWebMethod(Xi((function(){return e.rrwebRecord.takeFullSnapshot()})))}},{key:\"_onScriptLoaded\",value:function(){for(var e,t=this,n={blockClass:\"ph-no-capture\",blockSelector:void 0,ignoreClass:\"ph-ignore-input\",maskTextClass:\"ph-mask\",maskTextSelector:void 0,maskTextFn:void 0,maskAllInputs:!0,maskInputOptions:{password:!0},maskInputFn:void 0,slimDOMOptions:{},collectFonts:!1,inlineStylesheet:!0,recordCrossOriginIframes:!1},i=this.instance.config.session_recording,r=0,s=Object.entries(i||{});r10&&(t.data.payload.payload=t.data.payload.payload.slice(0,10),t.data.payload.payload.push(\"...[truncated]\"));for(var n=[],i=0;i2e3?n.push(t.data.payload.payload[i].slice(0,2e3)+\"...[truncated]\"):n.push(t.data.payload.payload[i]);return t.data.payload.payload=n,e}return e}(n);if(this._updateWindowAndSessionIds(i),!this.isIdle||i.type===En.Custom){if(i.type===En.Custom&&\"sessionIdle\"===i.data.tag){var r=i.data.payload;if(r){var s=r.lastActivityTimestamp,o=r.threshold;i.timestamp=s+o}}var a=this.instance.config.session_recording.compress_events?function(e,t){try{if(e.type===En.FullSnapshot)return M(M({},e),{},{data:Zi(e.data),cv:\"2024-10\"});if(e.type===En.IncrementalSnapshot&&e.data.source===xn.Mutation)return M(M({},e),{},{cv:\"2024-10\",data:M(M({},e.data),{},{texts:Zi(e.data.texts),attributes:Zi(e.data.attributes),removes:Zi(e.data.removes),adds:Zi(e.data.adds)})});if(e.type===En.IncrementalSnapshot&&e.data.source===xn.StyleSheetRule)return M(M({},e),{},{cv:\"2024-10\",data:M(M({},e.data),{},{adds:Zi(e.data.adds),removes:Zi(e.data.removes)})})}catch(n){T.error(Ki+\" could not compress event\",n),t.captureException(n||\"e was not an error\",{attempted_event_type:(null==e?void 0:e.type)||\"no event type\"})}return e}(i,this.instance):i,u={$snapshot_bytes:wn(a),$snapshot_data:a,$session_id:this.sessionId,$window_id:this.windowId};\"disabled\"!==this.status?this._captureSnapshotBuffered(u):this.clearBuffer()}}}}},{key:\"_pageViewFallBack\",value:function(){if(!this.instance.config.capture_pageview&&e){var t=this._maskUrl(e.location.href);this._lastHref!==t&&(this._tryAddCustomEvent(\"$url_changed\",{href:t}),this._lastHref=t)}}},{key:\"_processQueuedEvents\",value:function(){var e=this;if(this.queuedRRWebEvents.length){var t=U(this.queuedRRWebEvents);this.queuedRRWebEvents=[],t.forEach((function(t){Date.now()-t.enqueuedAt<=2e3&&e._tryRRWebMethod(t)}))}}},{key:\"_maskUrl\",value:function(e){var t=this.instance.config.session_recording;if(t.maskNetworkRequestFn){var n,i={url:e};return null===(n=i=t.maskNetworkRequestFn(i))||void 0===n?void 0:n.url}return e}},{key:\"clearBuffer\",value:function(){return this.buffer={size:0,data:[],sessionId:this.sessionId,windowId:this.windowId},this.buffer}},{key:\"_flushBuffer\",value:function(){var e=this;this.flushBufferTimer&&(clearTimeout(this.flushBufferTimer),this.flushBufferTimer=void 0);var t=this.minimumDuration,n=this.sessionDuration,i=F(n)&&n>=0,r=F(t)&&i&&n0&&Sn(this.buffer).forEach((function(t){e._captureSnapshot({$snapshot_bytes:t.size,$snapshot_data:t.data,$session_id:t.sessionId,$window_id:t.windowId})}));return this.clearBuffer()}},{key:\"_captureSnapshotBuffered\",value:function(e){var t,n=this,i=2+((null===(t=this.buffer)||void 0===t?void 0:t.data.length)||0);!this.isIdle&&(this.buffer.size+e.$snapshot_bytes+i>943718.4||this.buffer.sessionId!==this.sessionId)&&(this.buffer=this._flushBuffer()),this.buffer.size+=e.$snapshot_bytes,this.buffer.data.push(e.$snapshot_data),this.flushBufferTimer||this.isIdle||(this.flushBufferTimer=setTimeout((function(){n._flushBuffer()}),2e3))}},{key:\"_captureSnapshot\",value:function(e){this.instance.capture(\"$snapshot\",e,{_url:this.instance.requestRouter.endpointFor(\"api\",this._endpoint),_noTruncate:!0,_batchKey:\"recordings\",skip_client_rate_limiting:!0})}},{key:\"overrideLinkedFlag\",value:function(){this._linkedFlagSeen=!0}}]),t}(),nr=function(){function e(t){L(this,e),this.instance=t,this.instance.decideEndpointWasHit=this.instance._hasBootstrappedFeatureFlags()}return N(e,[{key:\"call\",value:function(){var e=this,t={token:this.instance.config.token,distinct_id:this.instance.get_distinct_id(),groups:this.instance.getGroups(),person_properties:this.instance.get_property(Pe),group_properties:this.instance.get_property(Re),disable_flags:this.instance.config.advanced_disable_feature_flags||this.instance.config.advanced_disable_feature_flags_on_first_load||void 0};this.instance._send_request({method:\"POST\",url:this.instance.requestRouter.endpointFor(\"api\",\"/decide/?v=3\"),data:t,compression:this.instance.config.disable_compression?void 0:re.Base64,timeout:this.instance.config.feature_flag_request_timeout_ms,callback:function(t){return e.parseDecideResponse(t.json)}})}},{key:\"parseDecideResponse\",value:function(e){var t=this;this.instance.featureFlags.setReloadingPaused(!1),this.instance.featureFlags._startReloadTimer();var n=!e;if(this.instance.config.advanced_disable_feature_flags_on_first_load||this.instance.config.advanced_disable_feature_flags||this.instance.featureFlags.receivedFeatureFlags(null!=e?e:{},n),n)T.error(\"Failed to fetch feature flags from PostHog.\");else{if(!o||!o.body)return T.info(\"document not ready yet, trying again in 500 milliseconds...\"),void setTimeout((function(){t.parseDecideResponse(e)}),500);if(this.instance._afterDecideResponse(e),e.siteApps)if(this.instance.config.opt_in_site_apps){var i,r=z(e.siteApps);try{var s=function(){var e,n,r=i.value,s=r.id,o=r.url;h[\"__$$ph_site_app_\".concat(s)]=t.instance,null===(e=h.__PosthogExtensions__)||void 0===e||null===(n=e.loadSiteApp)||void 0===n||n.call(e,t.instance,o,(function(e){if(e)return T.error(\"Error while initializing PostHog app with config id \".concat(s),e)}))};for(r.s();!(i=r.n()).done;)s()}catch(e){r.e(e)}finally{r.f()}}else e.siteApps.length>0&&T.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.')}}}]),e}(),ir=null!=e&&e.location?bt(e.location.hash,\"__posthog\")||bt(location.hash,\"state\"):null,rr=\"_postHogToolbarParams\";!function(e){e[e.UNINITIALIZED=0]=\"UNINITIALIZED\",e[e.LOADING=1]=\"LOADING\",e[e.LOADED=2]=\"LOADED\"}(er||(er={}));var sr=function(){function t(e){L(this,t),this.instance=e}return N(t,[{key:\"setToolbarState\",value:function(e){h.ph_toolbar_state=e}},{key:\"getToolbarState\",value:function(){var e;return null!==(e=h.ph_toolbar_state)&&void 0!==e?e:er.UNINITIALIZED}},{key:\"maybeLoadToolbar\",value:function(){var t,n,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(!e||!o)return!1;i=null!==(t=i)&&void 0!==t?t:e.location,s=null!==(n=s)&&void 0!==n?n:e.history;try{if(!r){try{e.localStorage.setItem(\"test\",\"test\"),e.localStorage.removeItem(\"test\")}catch(e){return!1}r=null==e?void 0:e.localStorage}var a,u=ir||bt(i.hash,\"__posthog\")||bt(i.hash,\"state\"),l=u?Z((function(){return JSON.parse(atob(decodeURIComponent(u)))}))||Z((function(){return JSON.parse(decodeURIComponent(u))})):null;return l&&\"ph_authorize\"===l.action?((a=l).source=\"url\",a&&Object.keys(a).length>0&&(l.desiredHash?i.hash=l.desiredHash:s?s.replaceState(s.state,\"\",i.pathname+i.search):i.hash=\"\")):((a=JSON.parse(r.getItem(rr)||\"{}\")).source=\"localstorage\",delete a.userIntent),!(!a.token||this.instance.config.token!==a.token)&&(this.loadToolbar(a),!0)}catch(e){return!1}}},{key:\"_callLoadToolbar\",value:function(e){(h.ph_load_toolbar||h.ph_load_editor)(e,this.instance)}},{key:\"loadToolbar\",value:function(t){var n=this,i=!(null==o||!o.getElementById(Be));if(!e||i)return!1;var r=\"custom\"===this.instance.requestRouter.region&&this.instance.config.advanced_disable_toolbar_metrics,s=M(M({token:this.instance.config.token},t),{},{apiURL:this.instance.requestRouter.endpointFor(\"ui\")},r?{instrument:!1}:{});if(e.localStorage.setItem(rr,JSON.stringify(M(M({},s),{},{source:void 0}))),this.getToolbarState()===er.LOADED)this._callLoadToolbar(s);else if(this.getToolbarState()===er.UNINITIALIZED){var a,u;this.setToolbarState(er.LOADING),null===(a=h.__PosthogExtensions__)||void 0===a||null===(u=a.loadExternalDependency)||void 0===u||u.call(a,this.instance,\"toolbar\",(function(e){if(e)return T.error(\"Failed to load toolbar\",e),void n.setToolbarState(er.UNINITIALIZED);n.setToolbarState(er.LOADED),n._callLoadToolbar(s)})),oe(e,\"turbolinks:load\",(function(){n.setToolbarState(er.UNINITIALIZED),n.loadToolbar(s)}))}return!0}},{key:\"_loadEditor\",value:function(e){return this.loadToolbar(e)}},{key:\"maybeLoadEditor\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return this.maybeLoadToolbar(e,t,n)}}]),t}(),or=function(){function e(t){L(this,e),q(this,\"isPaused\",!0),q(this,\"queue\",[]),q(this,\"flushTimeoutMs\",3e3),this.sendRequest=t}return N(e,[{key:\"enqueue\",value:function(e){this.queue.push(e),this.flushTimeout||this.setFlushTimeout()}},{key:\"unload\",value:function(){var e=this;this.clearFlushTimeout();var t=this.queue.length>0?this.formatQueue():{},n=Object.values(t);[].concat(U(n.filter((function(e){return 0===e.url.indexOf(\"/e\")}))),U(n.filter((function(e){return 0!==e.url.indexOf(\"/e\")})))).map((function(t){e.sendRequest(M(M({},t),{},{transport:\"sendBeacon\"}))}))}},{key:\"enable\",value:function(){this.isPaused=!1,this.setFlushTimeout()}},{key:\"setFlushTimeout\",value:function(){var e=this;this.isPaused||(this.flushTimeout=setTimeout((function(){if(e.clearFlushTimeout(),e.queue.length>0){var t=e.formatQueue(),n=function(n){var i=t[n],r=(new Date).getTime();i.data&&m(i.data)&&J(i.data,(function(e){e.offset=Math.abs(e.timestamp-r),delete e.timestamp})),e.sendRequest(i)};for(var i in t)n(i)}}),this.flushTimeoutMs))}},{key:\"clearFlushTimeout\",value:function(){clearTimeout(this.flushTimeout),this.flushTimeout=void 0}},{key:\"formatQueue\",value:function(){var e={};return J(this.queue,(function(t){var n,i=t,r=(i?i.batchKey:null)||i.url;w(e[r])&&(e[r]=M(M({},i),{},{data:[]})),null===(n=e[r].data)||void 0===n||n.push(i.data)})),this.queue=[],e}}]),e}(),ar=!!l||!!u,ur=\"text/plain\",lr=function(e,t){var n=H(e.split(\"?\"),2),i=n[0],r=n[1],s=M({},t);null==r||r.split(\"&\").forEach((function(e){var t=H(e.split(\"=\"),1)[0];delete s[t]}));var o=mt(s);return o=o?(r?r+\"&\":\"\")+o:r,\"\".concat(i,\"?\").concat(o)},cr=function(e){var t=e.data,n=e.compression;if(t){if(n===re.GZipJS){var i=Vi(Gi(JSON.stringify(t)),{mtime:0}),r=new Blob([i],{type:ur});return{contentType:ur,body:r,estimatedSize:r.size}}if(n===re.Base64){var s=function(e){var t,n,i,r,s,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",a=0,u=0,l=\"\",c=[];if(!e)return e;e=se(e);do{t=(s=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,n=s>>12&63,i=s>>6&63,r=63&s,c[u++]=o.charAt(t)+o.charAt(n)+o.charAt(i)+o.charAt(r)}while(a0&&(i.url=lr(i.url,{retry_count:n})),this.instance._send_request(M(M({},i),{},{callback:function(e){var r;200!==e.statusCode&&(e.statusCode<400||e.statusCode>=500)&&(null!=n?n:0)<10?t.enqueue(M({retriesPerformedSoFar:n},i)):null===(r=i.callback)||void 0===r||r.call(i,e)}}))}},{key:\"enqueue\",value:function(e){var t=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=t+1;var n=function(e){var t=3e3*Math.pow(2,e),n=t/2,i=Math.min(18e5,t),r=(Math.random()-.5)*(i-n);return Math.ceil(i+r)}(t),i=Date.now()+n;this.queue.push({retryAt:i,requestOptions:e});var r=\"Enqueued failed request for retry in \".concat(n);navigator.onLine||(r+=\" (Browser is offline)\"),T.warn(r),this.isPolling||(this.isPolling=!0,this.poll())}},{key:\"poll\",value:function(){var e=this;this.poller&&clearTimeout(this.poller),this.poller=setTimeout((function(){e.areWeOnline&&e.queue.length>0&&e.flush(),e.poll()}),this.pollIntervalMs)}},{key:\"flush\",value:function(){var e=Date.now(),t=[],n=this.queue.filter((function(n){return n.retryAt0){var i,r=z(n);try{for(r.s();!(i=r.n()).done;){var s=i.value.requestOptions;this.retriableRequest(s)}}catch(e){r.e(e)}finally{r.f()}}}},{key:\"unload\",value:function(){this.poller&&(clearTimeout(this.poller),this.poller=void 0);var e,t=z(this.queue);try{for(t.s();!(e=t.n()).done;){var n=e.value.requestOptions;try{this.instance._send_request(M(M({},n),{},{transport:\"sendBeacon\"}))}catch(e){T.error(e)}}}catch(e){t.e(e)}finally{t.f()}this.queue=[]}}]),t}(),pr=1800,gr=function(){function t(e,n,i,r){var s;L(this,t),q(this,\"_sessionIdChangedHandlers\",[]),this.config=e,this.persistence=n,this._windowId=void 0,this._sessionId=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this._sessionIdGenerator=i||Ze,this._windowIdGenerator=r||Ze;var o=e.persistence_name||e.token,a=e.session_idle_timeout_seconds||pr;if(F(a)?a>pr?T.warn(\"session_idle_timeout_seconds cannot be greater than 30 minutes. Using 30 minutes instead.\"):a<60&&T.warn(\"session_idle_timeout_seconds cannot be less than 60 seconds. Using 60 seconds instead.\"):(T.warn(\"session_idle_timeout_seconds must be a number. Defaulting to 30 minutes.\"),a=pr),this._sessionTimeoutMs=1e3*Math.min(Math.max(a,60),pr),this._window_id_storage_key=\"ph_\"+o+\"_window_id\",this._primary_window_exists_storage_key=\"ph_\"+o+\"_primary_window_exists\",this._canUseSessionStorage()){var u=vt.parse(this._window_id_storage_key),l=vt.parse(this._primary_window_exists_storage_key);u&&!l?this._windowId=u:vt.remove(this._window_id_storage_key),vt.set(this._primary_window_exists_storage_key,!0)}if(null!==(s=this.config.bootstrap)&&void 0!==s&&s.sessionID)try{var c=function(e){var t=e.replace(/-/g,\"\");if(32!==t.length)throw new Error(\"Not a valid UUID\");if(\"7\"!==t[12])throw new Error(\"Not a UUIDv7\");return parseInt(t.substring(0,12),16)}(this.config.bootstrap.sessionID);this._setSessionId(this.config.bootstrap.sessionID,(new Date).getTime(),c)}catch(e){T.error(\"Invalid sessionID in bootstrap\",e)}this._listenToReloadWindow()}return N(t,[{key:\"onSessionId\",value:function(e){var t=this;return w(this._sessionIdChangedHandlers)&&(this._sessionIdChangedHandlers=[]),this._sessionIdChangedHandlers.push(e),this._sessionId&&e(this._sessionId,this._windowId),function(){t._sessionIdChangedHandlers=t._sessionIdChangedHandlers.filter((function(t){return t!==e}))}}},{key:\"_canUseSessionStorage\",value:function(){return\"memory\"!==this.config.persistence&&!this.persistence.disabled&&vt.is_supported()}},{key:\"_setWindowId\",value:function(e){e!==this._windowId&&(this._windowId=e,this._canUseSessionStorage()&&vt.set(this._window_id_storage_key,e))}},{key:\"_getWindowId\",value:function(){return this._windowId?this._windowId:this._canUseSessionStorage()?vt.parse(this._window_id_storage_key):null}},{key:\"_setSessionId\",value:function(e,t,n){e===this._sessionId&&t===this._sessionActivityTimestamp&&n===this._sessionStartTimestamp||(this._sessionStartTimestamp=n,this._sessionActivityTimestamp=t,this._sessionId=e,this.persistence.register(q({},Ee,[t,e,n])))}},{key:\"_getSessionId\",value:function(){if(this._sessionId&&this._sessionActivityTimestamp&&this._sessionStartTimestamp)return[this._sessionActivityTimestamp,this._sessionId,this._sessionStartTimestamp];var e=this.persistence.props[Ee];return m(e)&&2===e.length&&e.push(e[0]),e||[0,null,0]}},{key:\"resetSessionId\",value:function(){this._setSessionId(null,null,null)}},{key:\"_listenToReloadWindow\",value:function(){var t=this;null==e||e.addEventListener(\"beforeunload\",(function(){t._canUseSessionStorage()&&vt.remove(t._primary_window_exists_storage_key)}))}},{key:\"checkAndGetSessionAndWindowId\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:null)||(new Date).getTime(),n=H(this._getSessionId(),3),i=n[0],r=n[1],s=n[2],o=this._getWindowId(),a=F(s)&&s>0&&Math.abs(t-s)>864e5,u=!1,l=!r,c=!e&&Math.abs(t-i)>this._sessionTimeoutMs;l||c||a?(r=this._sessionIdGenerator(),o=this._windowIdGenerator(),T.info(\"[SessionId] new session ID generated\",{sessionId:r,windowId:o,changeReason:{noSessionId:l,activityTimeout:c,sessionPastMaximumLength:a}}),s=t,u=!0):o||(o=this._windowIdGenerator(),u=!0);var d=0===i||!e||a?t:i,h=0===s?(new Date).getTime():s;return this._setWindowId(o),this._setSessionId(r,d,h),u&&this._sessionIdChangedHandlers.forEach((function(e){return e(r,o,u?{noSessionId:l,activityTimeout:c,sessionPastMaximumLength:a}:void 0)})),{sessionId:r,windowId:o,sessionStartTimestamp:h,changeReason:u?{noSessionId:l,activityTimeout:c,sessionPastMaximumLength:a}:void 0}}}]),t}();!function(e){e.US=\"us\",e.EU=\"eu\",e.CUSTOM=\"custom\"}(fr||(fr={}));var _r=\"i.posthog.com\",mr=function(){function e(t){L(this,e),q(this,\"_regionCache\",{}),this.instance=t}return N(e,[{key:\"apiHost\",get:function(){var e=this.instance.config.api_host.trim().replace(/\\/$/,\"\");return\"https://app.posthog.com\"===e?\"https://us.i.posthog.com\":e}},{key:\"uiHost\",get:function(){var e,t=null===(e=this.instance.config.ui_host)||void 0===e?void 0:e.replace(/\\/$/,\"\");return t||(t=this.apiHost.replace(\".\".concat(_r),\".posthog.com\")),\"https://app.posthog.com\"===t?\"https://us.posthog.com\":t}},{key:\"region\",get:function(){return this._regionCache[this.apiHost]||(/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this._regionCache[this.apiHost]=fr.US:/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)?this._regionCache[this.apiHost]=fr.EU:this._regionCache[this.apiHost]=fr.CUSTOM),this._regionCache[this.apiHost]}},{key:\"endpointFor\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\";if(t&&(t=\"/\"===t[0]?t:\"/\".concat(t)),\"ui\"===e)return this.uiHost+t;if(this.region===fr.CUSTOM)return this.apiHost+t;var n=_r+t;switch(e){case\"assets\":return\"https://\".concat(this.region,\"-assets.\").concat(n);case\"api\":return\"https://\".concat(this.region,\".\").concat(n)}}}]),e}(),yr=\"posthog-js\";function br(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.organization,i=t.projectId,r=t.prefix,s=t.severityAllowList,o=void 0===s?[\"error\"]:s;return function(t){var s,a,u,l,c;if(!(\"*\"===o||o.includes(t.level))||!e.__loaded)return t;t.tags||(t.tags={});var d=e.requestRouter.endpointFor(\"ui\",\"/project/\".concat(e.config.token,\"/person/\").concat(e.get_distinct_id()));t.tags[\"PostHog Person URL\"]=d,e.sessionRecordingStarted()&&(t.tags[\"PostHog Recording URL\"]=e.get_session_replay_url({withTimestamp:!0}));var h=(null===(s=t.exception)||void 0===s?void 0:s.values)||[],f={$exception_message:(null===(a=h[0])||void 0===a?void 0:a.value)||t.message,$exception_type:null===(u=h[0])||void 0===u?void 0:u.type,$exception_personURL:d,$exception_level:t.level,$sentry_event_id:t.event_id,$sentry_exception:t.exception,$sentry_exception_message:(null===(l=h[0])||void 0===l?void 0:l.value)||t.message,$sentry_exception_type:null===(c=h[0])||void 0===c?void 0:c.type,$sentry_tags:t.tags,$level:t.level};return n&&i&&(f.$sentry_url=(r||\"https://sentry.io/organizations/\")+n+\"/issues/?project=\"+i+\"&query=\"+t.event_id),e.exceptions.sendExceptionEvent(f),t}}var kr=N((function e(t,n,i,r,s){L(this,e),this.name=yr,this.setupOnce=function(e){e(br(t,{organization:n,projectId:i,prefix:r,severityAllowList:s}))}}));function wr(e,t){var n=e.config.segment;if(!n)return t();!function(e,t){var n=e.config.segment;if(!n)return t();var i=function(n){var i=function(){return n.anonymousId()||Ze()};e.config.get_device_id=i,n.id()&&(e.register({distinct_id:n.id(),$device_id:i()}),e.persistence.set_property(Oe,\"identified\")),t()},r=n.user();\"then\"in r&&y(r.then)?r.then((function(e){return i(e)})):i(r)}(e,(function(){n.register(function(e){Promise&&Promise.resolve||T.warn(\"This browser does not have Promise support, and can not use the segment integration\");var t=function(t,n){var i;if(!n)return t;t.event.userId||t.event.anonymousId===e.get_distinct_id()||(T.info(\"Segment integration does not have a userId set, resetting PostHog\"),e.reset()),t.event.userId&&t.event.userId!==e.get_distinct_id()&&(T.info(\"Segment integration has a userId set, identifying with PostHog\"),e.identify(t.event.userId));var r=e._calculate_event_properties(n,null!==(i=t.event.properties)&&void 0!==i?i:{},new Date);return t.event.properties=Object.assign({},r,t.event.properties),t};return{name:\"PostHog JS\",type:\"enrichment\",version:\"1.0.0\",isLoaded:function(){return!0},load:function(){return Promise.resolve()},track:function(e){return t(e,e.event.event)},page:function(e){return t(e,\"$pageview\")},identify:function(e){return t(e,\"$identify\")},screen:function(e){return t(e,\"$screen\")}}}(e)).then((function(){t()}))}))}var Sr,Er,xr,Ir=function(){function t(e){L(this,t),this._instance=e}return N(t,[{key:\"doPageView\",value:function(t){var n,i=this._previousPageViewProperties(t);return this._currentPath=null!==(n=null==e?void 0:e.location.pathname)&&void 0!==n?n:\"\",this._instance.scrollManager.resetContext(),this._prevPageviewTimestamp=t,i}},{key:\"doPageLeave\",value:function(e){return this._previousPageViewProperties(e)}},{key:\"_previousPageViewProperties\",value:function(e){var t=this._currentPath,n=this._prevPageviewTimestamp,i=this._instance.scrollManager.getContext();if(!n)return{};var r={};if(i){var s=i.maxScrollHeight,o=i.lastScrollY,a=i.maxScrollY,u=i.maxContentHeight,l=i.lastContentY,c=i.maxContentY;if(!(w(s)||w(o)||w(a)||w(u)||w(l)||w(c)))s=Math.ceil(s),o=Math.ceil(o),a=Math.ceil(a),u=Math.ceil(u),l=Math.ceil(l),c=Math.ceil(c),r={$prev_pageview_last_scroll:o,$prev_pageview_last_scroll_percentage:s<=1?1:Fr(o/s,0,1),$prev_pageview_max_scroll:a,$prev_pageview_max_scroll_percentage:s<=1?1:Fr(a/s,0,1),$prev_pageview_last_content:l,$prev_pageview_last_content_percentage:u<=1?1:Fr(l/u,0,1),$prev_pageview_max_content:c,$prev_pageview_max_content_percentage:u<=1?1:Fr(c/u,0,1)}}return t&&(r.$prev_pageview_pathname=t),n&&(r.$prev_pageview_duration=(e.getTime()-n.getTime())/1e3),r}}]),t}();function Fr(e,t,n){return Math.max(t,Math.min(e,n))}!function(e){e.Popover=\"popover\",e.API=\"api\",e.Widget=\"widget\"}(Sr||(Sr={})),function(e){e.Open=\"open\",e.MultipleChoice=\"multiple_choice\",e.SingleChoice=\"single_choice\",e.Rating=\"rating\",e.Link=\"link\"}(Er||(Er={})),function(e){e.NextQuestion=\"next_question\",e.End=\"end\",e.ResponseBased=\"response_based\",e.SpecificQuestion=\"specific_question\"}(xr||(xr={}));var Pr=function(){function e(){L(this,e),q(this,\"events\",{}),this.events={}}return N(e,[{key:\"on\",value:function(e,t){var n=this;return this.events[e]||(this.events[e]=[]),this.events[e].push(t),function(){n.events[e]=n.events[e].filter((function(e){return e!==t}))}}},{key:\"emit\",value:function(e,t){var n,i=z(this.events[e]||[]);try{for(i.s();!(n=i.n()).done;){(0,n.value)(t)}}catch(e){i.e(e)}finally{i.f()}var r,s=z(this.events[\"*\"]||[]);try{for(s.s();!(r=s.n()).done;){(0,r.value)(e,t)}}catch(e){s.e(e)}finally{s.f()}}}]),e}(),Rr=function(){function t(e){var n=this;L(this,t),q(this,\"_debugEventEmitter\",new Pr),q(this,\"checkStep\",(function(e,t){return n.checkStepEvent(e,t)&&n.checkStepUrl(e,t)&&n.checkStepElement(e,t)})),q(this,\"checkStepEvent\",(function(e,t){return null==t||!t.event||(null==e?void 0:e.event)===(null==t?void 0:t.event)})),this.instance=e,this.actionEvents=new Set,this.actionRegistry=new Set}return N(t,[{key:\"init\",value:function(){var e,t=this;if(!w(null===(e=this.instance)||void 0===e?void 0:e._addCaptureHook)){var n;null===(n=this.instance)||void 0===n||n._addCaptureHook((function(e,n){t.on(e,n)}))}}},{key:\"register\",value:function(e){var t,n,i=this;if(!w(null===(t=this.instance)||void 0===t?void 0:t._addCaptureHook)&&(e.forEach((function(e){var t,n;null===(t=i.actionRegistry)||void 0===t||t.add(e),null===(n=e.steps)||void 0===n||n.forEach((function(e){var t;null===(t=i.actionEvents)||void 0===t||t.add((null==e?void 0:e.event)||\"\")}))})),null!==(n=this.instance)&&void 0!==n&&n.autocapture)){var r,s=new Set;e.forEach((function(e){var t;null===(t=e.steps)||void 0===t||t.forEach((function(e){null!=e&&e.selector&&s.add(null==e?void 0:e.selector)}))})),null===(r=this.instance)||void 0===r||r.autocapture.setElementSelectors(s)}}},{key:\"on\",value:function(e,t){var n,i=this;null!=t&&0!=e.length&&(this.actionEvents.has(e)||this.actionEvents.has(null==t?void 0:t.event))&&this.actionRegistry&&(null===(n=this.actionRegistry)||void 0===n?void 0:n.size)>0&&this.actionRegistry.forEach((function(e){i.checkAction(t,e)&&i._debugEventEmitter.emit(\"actionCaptured\",e.name)}))}},{key:\"_addActionHook\",value:function(e){this.onAction(\"actionCaptured\",(function(t){return e(t)}))}},{key:\"checkAction\",value:function(e,t){if(null==(null==t?void 0:t.steps))return!1;var n,i=z(t.steps);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(this.checkStep(e,r))return!0}}catch(e){i.e(e)}finally{i.f()}return!1}},{key:\"onAction\",value:function(e,t){return this._debugEventEmitter.on(e,t)}},{key:\"checkStepUrl\",value:function(e,n){if(null!=n&&n.url){var i,r=null==e||null===(i=e.properties)||void 0===i?void 0:i.$current_url;if(!r||\"string\"!=typeof r)return!1;if(!t.matchString(r,null==n?void 0:n.url,(null==n?void 0:n.url_matching)||\"contains\"))return!1}return!0}},{key:\"checkStepElement\",value:function(e,n){if((null!=n&&n.href||null!=n&&n.tag_name||null!=n&&n.text)&&!this.getElementsList(e).some((function(e){return!(null!=n&&n.href&&!t.matchString(e.href||\"\",null==n?void 0:n.href,(null==n?void 0:n.href_matching)||\"exact\"))&&((null==n||!n.tag_name||e.tag_name===(null==n?void 0:n.tag_name))&&!(null!=n&&n.text&&!t.matchString(e.text||\"\",null==n?void 0:n.text,(null==n?void 0:n.text_matching)||\"exact\")&&!t.matchString(e.$el_text||\"\",null==n?void 0:n.text,(null==n?void 0:n.text_matching)||\"exact\")))})))return!1;if(null!=n&&n.selector){var i,r=null==e||null===(i=e.properties)||void 0===i?void 0:i.$element_selectors;if(!r)return!1;if(!r.includes(null==n?void 0:n.selector))return!1}return!0}},{key:\"getElementsList\",value:function(e){return null==(null==e?void 0:e.properties.$elements)?[]:null==e?void 0:e.properties.$elements}}],[{key:\"matchString\",value:function(n,i,r){switch(r){case\"regex\":return!!e&&_t(n,i);case\"exact\":return i===n;case\"contains\":var s=t.escapeStringRegexp(i).replace(/_/g,\".\").replace(/%/g,\".*\");return _t(n,s);default:return!1}}},{key:\"escapeStringRegexp\",value:function(e){return e.replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\").replace(/-/g,\"\\\\x2d\")}}]),t}(),Cr=function(){function e(t){L(this,e),this.instance=t,this.eventToSurveys=new Map,this.actionToSurveys=new Map}return N(e,[{key:\"register\",value:function(e){var t;w(null===(t=this.instance)||void 0===t?void 0:t._addCaptureHook)||(this.setupEventBasedSurveys(e),this.setupActionBasedSurveys(e))}},{key:\"setupActionBasedSurveys\",value:function(e){var t=this,n=e.filter((function(e){var t,n,i,r;return(null===(t=e.conditions)||void 0===t?void 0:t.actions)&&(null===(n=e.conditions)||void 0===n||null===(i=n.actions)||void 0===i||null===(r=i.values)||void 0===r?void 0:r.length)>0}));if(0!==n.length){if(null==this.actionMatcher){this.actionMatcher=new Rr(this.instance),this.actionMatcher.init();this.actionMatcher._addActionHook((function(e){t.onAction(e)}))}n.forEach((function(e){var n,i,r,s,o,a,u,l,c,d;e.conditions&&null!==(n=e.conditions)&&void 0!==n&&n.actions&&null!==(i=e.conditions)&&void 0!==i&&null!==(r=i.actions)&&void 0!==r&&r.values&&(null===(s=e.conditions)||void 0===s||null===(o=s.actions)||void 0===o||null===(a=o.values)||void 0===a?void 0:a.length)>0&&(null===(u=t.actionMatcher)||void 0===u||u.register(e.conditions.actions.values),null===(l=e.conditions)||void 0===l||null===(c=l.actions)||void 0===c||null===(d=c.values)||void 0===d||d.forEach((function(n){if(n&&n.name){var i=t.actionToSurveys.get(n.name);i&&i.push(e.id),t.actionToSurveys.set(n.name,i||[e.id])}})))}))}}},{key:\"setupEventBasedSurveys\",value:function(e){var t,n=this;if(0!==e.filter((function(e){var t,n,i,r;return(null===(t=e.conditions)||void 0===t?void 0:t.events)&&(null===(n=e.conditions)||void 0===n||null===(i=n.events)||void 0===i||null===(r=i.values)||void 0===r?void 0:r.length)>0})).length){null===(t=this.instance)||void 0===t||t._addCaptureHook((function(e,t){n.onEvent(e,t)})),e.forEach((function(e){var t,i,r;null===(t=e.conditions)||void 0===t||null===(i=t.events)||void 0===i||null===(r=i.values)||void 0===r||r.forEach((function(t){if(t&&t.name){var i=n.eventToSurveys.get(t.name);i&&i.push(e.id),n.eventToSurveys.set(t.name,i||[e.id])}}))}))}}},{key:\"onEvent\",value:function(t,n){var i,r,s=(null===(i=this.instance)||void 0===i||null===(r=i.persistence)||void 0===r?void 0:r.props[Te])||[];if(e.SURVEY_SHOWN_EVENT_NAME==t&&n&&s.length>0){var o,a=null==n||null===(o=n.properties)||void 0===o?void 0:o.$survey_id;if(a){var u=s.indexOf(a);u>=0&&(s.splice(u,1),this._updateActivatedSurveys(s))}}else this.eventToSurveys.has(t)&&this._updateActivatedSurveys(s.concat(this.eventToSurveys.get(t)||[]))}},{key:\"onAction\",value:function(e){var t,n,i=(null===(t=this.instance)||void 0===t||null===(n=t.persistence)||void 0===n?void 0:n.props[Te])||[];this.actionToSurveys.has(e)&&this._updateActivatedSurveys(i.concat(this.actionToSurveys.get(e)||[]))}},{key:\"_updateActivatedSurveys\",value:function(e){var t,n;null===(t=this.instance)||void 0===t||null===(n=t.persistence)||void 0===n||n.register(q({},Te,U(new Set(e))))}},{key:\"getSurveys\",value:function(){var e,t,n=null===(e=this.instance)||void 0===e||null===(t=e.persistence)||void 0===t?void 0:t.props[Te];return n||[]}},{key:\"getEventToSurveys\",value:function(){return this.eventToSurveys}},{key:\"_getActionMatcher\",value:function(){return this.actionMatcher}}]),e}();q(Cr,\"SURVEY_SHOWN_EVENT_NAME\",\"survey shown\");var Tr=\"[Surveys]\",$r={icontains:function(t){return!!e&&e.location.href.toLowerCase().indexOf(t.toLowerCase())>-1},not_icontains:function(t){return!!e&&-1===e.location.href.toLowerCase().indexOf(t.toLowerCase())},regex:function(t){return!!e&&_t(e.location.href,t)},not_regex:function(t){return!!e&&!_t(e.location.href,t)},exact:function(t){return(null==e?void 0:e.location.href)===t},is_not:function(t){return(null==e?void 0:e.location.href)!==t}};var Or=function(){function e(t){L(this,e),this.instance=t,this._surveyEventReceiver=null}return N(e,[{key:\"afterDecideResponse\",value:function(e){this._decideServerResponse=!!e.surveys,this.loadIfEnabled()}},{key:\"loadIfEnabled\",value:function(){var e,t,n,i=this,r=null==h||null===(e=h.__PosthogExtensions__)||void 0===e?void 0:e.generateSurveys;this.instance.config.disable_surveys||!this._decideServerResponse||r||(null==this._surveyEventReceiver&&(this._surveyEventReceiver=new Cr(this.instance)),null===(t=h.__PosthogExtensions__)||void 0===t||null===(n=t.loadExternalDependency)||void 0===n||n.call(t,this.instance,\"surveys\",(function(e){var t,n;if(e)return T.error(Tr,\"Could not load surveys script\",e);i._surveyManager=null===(t=h.__PosthogExtensions__)||void 0===t||null===(n=t.generateSurveys)||void 0===n?void 0:n.call(t,i.instance)})))}},{key:\"getSurveys\",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.instance.config.disable_surveys)return e([]);null==this._surveyEventReceiver&&(this._surveyEventReceiver=new Cr(this.instance));var i=this.instance.get_property(Ce);if(i&&!n)return e(i);this.instance._send_request({url:this.instance.requestRouter.endpointFor(\"api\",\"/api/surveys/?token=\".concat(this.instance.config.token)),method:\"GET\",transport:\"XHR\",callback:function(n){var i;if(200!==n.statusCode||!n.json)return e([]);var r,s=n.json.surveys||[],o=s.filter((function(e){var t,n,i,r,s,o,a,u,l,c,d,h;return(null===(t=e.conditions)||void 0===t?void 0:t.events)&&(null===(n=e.conditions)||void 0===n||null===(i=n.events)||void 0===i?void 0:i.values)&&(null===(r=e.conditions)||void 0===r||null===(s=r.events)||void 0===s||null===(o=s.values)||void 0===o?void 0:o.length)>0||(null===(a=e.conditions)||void 0===a?void 0:a.actions)&&(null===(u=e.conditions)||void 0===u||null===(l=u.actions)||void 0===l?void 0:l.values)&&(null===(c=e.conditions)||void 0===c||null===(d=c.actions)||void 0===d||null===(h=d.values)||void 0===h?void 0:h.length)>0}));o.length>0&&(null===(r=t._surveyEventReceiver)||void 0===r||r.register(o));return null===(i=t.instance.persistence)||void 0===i||i.register(q({},Ce,s)),e(s)}})}},{key:\"getActiveMatchingSurveys\",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.getSurveys((function(n){var i,r=n.filter((function(e){return!(!e.start_date||e.end_date)})).filter((function(e){var t,n,i,r;if(!e.conditions)return!0;var s=null===(t=e.conditions)||void 0===t||!t.url||$r[null!==(n=null===(i=e.conditions)||void 0===i?void 0:i.urlMatchType)&&void 0!==n?n:\"icontains\"](e.conditions.url),a=null===(r=e.conditions)||void 0===r||!r.selector||(null==o?void 0:o.querySelector(e.conditions.selector));return s&&a})),s=null===(i=t._surveyEventReceiver)||void 0===i?void 0:i.getSurveys(),a=r.filter((function(e){var n,i,r,o,a,u,l,c,d,h;if(!e.linked_flag_key&&!e.targeting_flag_key&&!e.internal_targeting_flag_key)return!0;var f=!e.linked_flag_key||t.instance.featureFlags.isFeatureEnabled(e.linked_flag_key),v=!e.targeting_flag_key||t.instance.featureFlags.isFeatureEnabled(e.targeting_flag_key),p=(null===(n=e.conditions)||void 0===n?void 0:n.events)&&(null===(i=e.conditions)||void 0===i||null===(r=i.events)||void 0===r?void 0:r.values)&&(null===(o=e.conditions)||void 0===o||null===(a=o.events)||void 0===a?void 0:a.values.length)>0,g=(null===(u=e.conditions)||void 0===u?void 0:u.actions)&&(null===(l=e.conditions)||void 0===l||null===(c=l.actions)||void 0===c?void 0:c.values)&&(null===(d=e.conditions)||void 0===d||null===(h=d.actions)||void 0===h?void 0:h.values.length)>0,_=!p&&!g||(null==s?void 0:s.includes(e.id)),m=t._canActivateRepeatedly(e),y=!(e.internal_targeting_flag_key&&!m)||t.instance.featureFlags.isFeatureEnabled(e.internal_targeting_flag_key);return f&&v&&y&&_}));return e(a)}),n)}},{key:\"getNextSurveyStep\",value:function(e,t,n){var i,r=e.questions[t],s=t+1;if(null===(i=r.branching)||void 0===i||!i.type)return t===e.questions.length-1?xr.End:s;if(r.branching.type===xr.End)return xr.End;if(r.branching.type===xr.SpecificQuestion){if(Number.isInteger(r.branching.index))return r.branching.index}else if(r.branching.type===xr.ResponseBased){if(r.type===Er.SingleChoice){var o,a,u=r.choices.indexOf(\"\".concat(n));if(null!==(o=r.branching)&&void 0!==o&&null!==(a=o.responseValues)&&void 0!==a&&a.hasOwnProperty(u)){var l=r.branching.responseValues[u];return Number.isInteger(l)?l:l===xr.End?xr.End:s}}else if(r.type===Er.Rating){var c,d;if(\"number\"!=typeof n||!Number.isInteger(n))throw new Error(\"The response type must be an integer\");var h=function(e,t){if(3===t){if(e<1||e>3)throw new Error(\"The response must be in range 1-3\");return 1===e?\"negative\":2===e?\"neutral\":\"positive\"}if(5===t){if(e<1||e>5)throw new Error(\"The response must be in range 1-5\");return e<=2?\"negative\":3===e?\"neutral\":\"positive\"}if(7===t){if(e<1||e>7)throw new Error(\"The response must be in range 1-7\");return e<=3?\"negative\":4===e?\"neutral\":\"positive\"}if(10===t){if(e<0||e>10)throw new Error(\"The response must be in range 0-10\");return e<=6?\"detractors\":e<=8?\"passives\":\"promoters\"}throw new Error(\"The scale must be one of: 3, 5, 7, 10\")}(n,r.scale);if(null!==(c=r.branching)&&void 0!==c&&null!==(d=c.responseValues)&&void 0!==d&&d.hasOwnProperty(h)){var f=r.branching.responseValues[h];return Number.isInteger(f)?f:f===xr.End?xr.End:s}}return s}return T.warn(Tr,\"Falling back to next question index due to unexpected branching type\"),s}},{key:\"_canActivateRepeatedly\",value:function(e){var t;return I(null===(t=h.__PosthogExtensions__)||void 0===t?void 0:t.canActivateRepeatedly)?(T.warn(Tr,\"canActivateRepeatedly is not defined, must init before calling\"),!1):h.__PosthogExtensions__.canActivateRepeatedly(e)}},{key:\"canRenderSurvey\",value:function(e){var t=this;I(this._surveyManager)?T.warn(Tr,\"canActivateRepeatedly is not defined, must init before calling\"):this.getSurveys((function(n){var i=n.filter((function(t){return t.id===e}))[0];t._surveyManager.canRenderSurvey(i)}))}},{key:\"renderSurvey\",value:function(e,t){var n=this;I(this._surveyManager)?T.warn(Tr,\"canActivateRepeatedly is not defined, must init before calling\"):this.getSurveys((function(i){var r=i.filter((function(t){return t.id===e}))[0];n._surveyManager.renderSurvey(r,null==o?void 0:o.querySelector(t))}))}}]),e}(),Mr=function(){function e(t){var n,i,r=this;L(this,e),q(this,\"serverLimits\",{}),q(this,\"lastEventRateLimited\",!1),q(this,\"checkForLimiting\",(function(e){var t=e.text;if(t&&t.length)try{(JSON.parse(t).quota_limited||[]).forEach((function(e){T.info(\"[RateLimiter] \".concat(e||\"events\",\" is quota limited.\")),r.serverLimits[e]=(new Date).getTime()+6e4}))}catch(e){return void T.warn('[RateLimiter] could not rate limit - continuing. Error: \"'.concat(null==e?void 0:e.message,'\"'),{text:t})}})),this.instance=t,this.captureEventsPerSecond=(null===(n=t.config.rate_limiting)||void 0===n?void 0:n.events_per_second)||10,this.captureEventsBurstLimit=Math.max((null===(i=t.config.rate_limiting)||void 0===i?void 0:i.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond),this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}return N(e,[{key:\"clientRateLimitContext\",value:function(){var e,t,n,i=arguments.length>0&&void 0!==arguments[0]&&arguments[0],r=(new Date).getTime(),s=null!==(e=null===(t=this.instance.persistence)||void 0===t?void 0:t.get_property(Ae))&&void 0!==e?e:{tokens:this.captureEventsBurstLimit,last:r};s.tokens+=(r-s.last)/1e3*this.captureEventsPerSecond,s.last=r,s.tokens>this.captureEventsBurstLimit&&(s.tokens=this.captureEventsBurstLimit);var o=s.tokens<1;return o||i||(s.tokens=Math.max(0,s.tokens-1)),!o||this.lastEventRateLimited||i||this.instance.capture(\"$$client_ingestion_warning\",{$$client_ingestion_warning_message:\"posthog-js client rate limited. Config is set to \".concat(this.captureEventsPerSecond,\" events per second and \").concat(this.captureEventsBurstLimit,\" events burst limit.\")},{skip_client_rate_limiting:!0}),this.lastEventRateLimited=o,null===(n=this.instance.persistence)||void 0===n||n.set_property(Ae,s),{isRateLimited:o,remainingTokens:s.tokens}}},{key:\"isServerRateLimited\",value:function(e){var t=this.serverLimits[e||\"events\"]||!1;return!1!==t&&(new Date).getTime()e?t.slice(0,e)+\"...\":t}var zr,Vr=function(){function t(e){L(this,t),q(this,\"_initialized\",!1),q(this,\"_isDisabledServerSide\",null),q(this,\"rageclicks\",new qr),q(this,\"_elementsChainAsString\",!1),this.instance=e,this._elementSelectors=null}return N(t,[{key:\"config\",get:function(){var e,t,n=b(this.instance.config.autocapture)?this.instance.config.autocapture:{};return n.url_allowlist=null===(e=n.url_allowlist)||void 0===e?void 0:e.map((function(e){return new RegExp(e)})),n.url_ignorelist=null===(t=n.url_ignorelist)||void 0===t?void 0:t.map((function(e){return new RegExp(e)})),n}},{key:\"_addDomEventHandlers\",value:function(){var t=this;if(this.isBrowserSupported()){if(e&&o){var n=function(n){n=n||(null==e?void 0:e.event);try{t._captureEvent(n)}catch(e){T.error(\"Failed to capture event\",e)}},i=function(n){n=n||(null==e?void 0:e.event),t._captureEvent(n,jr)};oe(o,\"submit\",n,!1,!0),oe(o,\"change\",n,!1,!0),oe(o,\"click\",n,!1,!0),this.config.capture_copied_text&&(oe(o,\"copy\",i,!1,!0),oe(o,\"cut\",i,!1,!0))}}else T.info(\"Disabling Automatic Event Collection because this browser is not supported\")}},{key:\"startIfEnabled\",value:function(){this.isEnabled&&!this._initialized&&(this._addDomEventHandlers(),this._initialized=!0)}},{key:\"afterDecideResponse\",value:function(e){e.elementsChainAsString&&(this._elementsChainAsString=e.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register(q({},he,!!e.autocapture_opt_out)),this._isDisabledServerSide=!!e.autocapture_opt_out,this.startIfEnabled()}},{key:\"setElementSelectors\",value:function(e){this._elementSelectors=e}},{key:\"getElementSelectors\",value:function(e){var t,n=[];return null===(t=this._elementSelectors)||void 0===t||t.forEach((function(t){var i=null==o?void 0:o.querySelectorAll(t);null==i||i.forEach((function(i){e===i&&n.push(t)}))})),n}},{key:\"isEnabled\",get:function(){var e,t,n=null===(e=this.instance.persistence)||void 0===e?void 0:e.props[he],i=this._isDisabledServerSide;if(x(i)&&!P(n)&&!this.instance.config.advanced_disable_decide)return!1;var r=null!==(t=this._isDisabledServerSide)&&void 0!==t?t:!!n;return!!this.instance.config.autocapture&&!r}},{key:\"_previousElementSibling\",value:function(e){if(e.previousElementSibling)return e.previousElementSibling;var t=e;do{t=t.previousSibling}while(t&&!$n(t));return t}},{key:\"_getAugmentPropertiesFromElement\",value:function(e){if(!qn(e))return{};var t={};return J(e.attributes,(function(e){if(e.name&&0===e.name.indexOf(\"data-ph-capture-attribute\")){var n=e.name.replace(\"data-ph-capture-attribute-\",\"\"),i=e.value;n&&i&&Gn(i)&&(t[n]=i)}})),t}},{key:\"_getPropertiesFromElement\",value:function(e,t,n){var i,r=e.tagName.toLowerCase(),s={tag_name:r};Ln.indexOf(r)>-1&&!n&&(\"a\"===r.toLowerCase()||\"button\"===r.toLowerCase()?s.$el_text=Wr(1024,Qn(e)):s.$el_text=Wr(1024,Cn(e)));var o=Pn(e);o.length>0&&(s.classes=o.filter((function(e){return\"\"!==e})));var a=null===(i=this.config)||void 0===i?void 0:i.element_attribute_ignorelist;J(e.attributes,(function(n){var i;if((!Bn(e)||-1!==[\"name\",\"id\",\"class\",\"aria-label\"].indexOf(n.name))&&((null==a||!a.includes(n.name))&&!t&&Gn(n.value)&&(i=n.name,!S(i)||\"_ngcontent\"!==i.substring(0,10)&&\"_nghost\"!==i.substring(0,7)))){var r=n.value;\"class\"===n.name&&(r=In(r).join(\" \")),s[\"attr__\"+n.name]=Wr(1024,r)}}));for(var u=1,l=1,c=e;c=this._previousElementSibling(c);)u++,c.tagName===e.tagName&&l++;return s.nth_child=u,s.nth_of_type=l,s}},{key:\"_getDefaultProperties\",value:function(e){return{$event_type:e,$ce_version:1}}},{key:\"_captureEvent\",value:function(t){var n=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"$autocapture\";if(this.isEnabled){var r,s=Tn(t);if(Mn(s)&&(s=s.parentNode||null),\"$autocapture\"===i&&\"click\"===t.type&&t instanceof MouseEvent)this.instance.config.rageclick&&null!==(r=this.rageclicks)&&void 0!==r&&r.isRageClick(t.clientX,t.clientY,(new Date).getTime())&&this._captureEvent(t,\"$rageclick\");var o=i===jr;if(s&&Nn(s,t,this.config,o,o?[\"copy\",\"cut\"]:void 0)){for(var a,u,l=[s],c=s;c.parentNode&&!On(c,\"body\");)An(c.parentNode)?(l.push(c.parentNode.host),c=c.parentNode.host):(l.push(c.parentNode),c=c.parentNode);var d,h,f=[],v={},p=!1;if(J(l,(function(e){var t=qn(e);\"a\"===e.tagName.toLowerCase()&&(d=e.getAttribute(\"href\"),d=t&&Gn(d)&&d),X(Pn(e),\"ph-no-capture\")&&(p=!0),f.push(n._getPropertiesFromElement(e,n.instance.config.mask_all_element_attributes,n.instance.config.mask_all_text));var i=n._getAugmentPropertiesFromElement(e);Y(v,i)})),this.instance.config.mask_all_text||(\"a\"===s.tagName.toLowerCase()||\"button\"===s.tagName.toLowerCase()?f[0].$el_text=Qn(s):f[0].$el_text=Cn(s)),d){var g,_;f[0].attr__href=d;var m=null===(g=gt(d))||void 0===g?void 0:g.host,y=null==e||null===(_=e.location)||void 0===_?void 0:_.host;m&&y&&m!==y&&(h=d)}if(p)return!1;var b=Y(this._getDefaultProperties(t.type),this._elementsChainAsString?{$elements_chain:Yn(f)}:{$elements:f},null!==(a=f[0])&&void 0!==a&&a.$el_text?{$el_text:null===(u=f[0])||void 0===u?void 0:u.$el_text}:{},h&&\"click\"===t.type?{$external_click_url:h}:{},v),k=this.getElementSelectors(s);if(k&&k.length>0&&(b.$element_selectors=k),i===jr){var w,S=Rn(null==e||null===(w=e.getSelection())||void 0===w?void 0:w.toString()),E=t.type||\"clipboard\";if(!S)return!1;b.$selected_content=S,b.$copy_type=E}return this.instance.capture(i,b),!0}}}},{key:\"isBrowserSupported\",value:function(){return y(null==o?void 0:o.querySelectorAll)}}]),t}(),Gr=function(){function e(t){var n=this;L(this,e),q(this,\"_restoreXHRPatch\",void 0),q(this,\"_restoreFetchPatch\",void 0),q(this,\"_startCapturing\",(function(){var e,t,i,r;w(n._restoreXHRPatch)&&(null===(e=h.__PosthogExtensions__)||void 0===e||null===(t=e.tracingHeadersPatchFns)||void 0===t||t._patchXHR(n.instance.sessionManager));w(n._restoreFetchPatch)&&(null===(i=h.__PosthogExtensions__)||void 0===i||null===(r=i.tracingHeadersPatchFns)||void 0===r||r._patchFetch(n.instance.sessionManager))})),this.instance=t}return N(e,[{key:\"_loadScript\",value:function(e){var t,n,i;null!==(t=h.__PosthogExtensions__)&&void 0!==t&&t.tracingHeadersPatchFns&&e(),null===(n=h.__PosthogExtensions__)||void 0===n||null===(i=n.loadExternalDependency)||void 0===i||i.call(n,this.instance,\"tracing-headers\",(function(t){if(t)return T.error(\"[TRACING-HEADERS] failed to load script\",t);e()}))}},{key:\"startIfEnabledOrStop\",value:function(){var e,t;this.instance.config.__add_tracing_headers?this._loadScript(this._startCapturing):(null===(e=this._restoreXHRPatch)||void 0===e||e.call(this),null===(t=this._restoreFetchPatch)||void 0===t||t.call(this),this._restoreXHRPatch=void 0,this._restoreFetchPatch=void 0)}}]),e}();!function(e){e[e.PENDING=-1]=\"PENDING\",e[e.DENIED=0]=\"DENIED\",e[e.GRANTED=1]=\"GRANTED\"}(zr||(zr={}));var Qr=function(){function e(t){L(this,e),this.instance=t}return N(e,[{key:\"config\",get:function(){return this.instance.config}},{key:\"consent\",get:function(){return this.getDnt()?zr.DENIED:this.storedConsent}},{key:\"isOptedOut\",value:function(){return this.consent===zr.DENIED||this.consent===zr.PENDING&&this.config.opt_out_capturing_by_default}},{key:\"isOptedIn\",value:function(){return!this.isOptedOut()}},{key:\"optInOut\",value:function(e){this.storage.set(this.storageKey,e?1:0,this.config.cookie_expiration,this.config.cross_subdomain_cookie,this.config.secure_cookie)}},{key:\"reset\",value:function(){this.storage.remove(this.storageKey,this.config.cross_subdomain_cookie)}},{key:\"storageKey\",get:function(){var e=this.instance.config,t=e.token;return(e.opt_out_capturing_cookie_prefix||\"__ph_opt_in_out_\")+t}},{key:\"storedConsent\",get:function(){var e=this.storage.get(this.storageKey);return\"1\"===e?zr.GRANTED:\"0\"===e?zr.DENIED:zr.PENDING}},{key:\"storage\",get:function(){if(!this._storage){var e=this.config.opt_out_capturing_persistence_type;this._storage=\"localStorage\"===e?ut:ot;var t=\"localStorage\"===e?ot:ut;t.get(this.storageKey)&&(this._storage.get(this.storageKey)||this.optInOut(\"1\"===t.get(this.storageKey)),t.remove(this.storageKey,this.config.cross_subdomain_cookie))}return this._storage}},{key:\"getDnt\",value:function(){return!!this.config.respect_dnt&&!!ae([null==s?void 0:s.doNotTrack,null==s?void 0:s.msDoNotTrack,h.doNotTrack],(function(e){return X([!0,1,\"1\",\"yes\"],e)}))}}]),e}(),Jr=\"[Exception Autocapture]\",Yr=function(){function t(n){var i,r=this;L(this,t),q(this,\"originalOnUnhandledRejectionHandler\",void 0),q(this,\"startCapturing\",(function(){var t,n,i,s;if(e&&r.isEnabled&&!r.hasHandlers&&!r.isCapturing){var o=null===(t=h.__PosthogExtensions__)||void 0===t||null===(n=t.errorWrappingFunctions)||void 0===n?void 0:n.wrapOnError,a=null===(i=h.__PosthogExtensions__)||void 0===i||null===(s=i.errorWrappingFunctions)||void 0===s?void 0:s.wrapUnhandledRejection;if(o&&a)try{r.unwrapOnError=o(r.captureException.bind(r)),r.unwrapUnhandledRejection=a(r.captureException.bind(r))}catch(e){T.error(Jr+\" failed to start\",e),r.stopCapturing()}else T.error(Jr+\" failed to load error wrapping functions - cannot start\")}})),this.instance=n,this.remoteEnabled=!(null===(i=this.instance.persistence)||void 0===i||!i.props[ve]),this.startIfEnabled()}return N(t,[{key:\"isEnabled\",get:function(){var e;return null!==(e=this.remoteEnabled)&&void 0!==e&&e}},{key:\"isCapturing\",get:function(){var t;return!(null==e||null===(t=e.onerror)||void 0===t||!t.__POSTHOG_INSTRUMENTED__)}},{key:\"hasHandlers\",get:function(){return this.originalOnUnhandledRejectionHandler||this.unwrapOnError}},{key:\"startIfEnabled\",value:function(){this.isEnabled&&!this.isCapturing&&(T.info(Jr+\" enabled, starting...\"),this.loadScript(this.startCapturing))}},{key:\"loadScript\",value:function(e){var t,n;this.hasHandlers&&e(),null===(t=h.__PosthogExtensions__)||void 0===t||null===(n=t.loadExternalDependency)||void 0===n||n.call(t,this.instance,\"exception-autocapture\",(function(t){if(t)return T.error(Jr+\" failed to load script\",t);e()}))}},{key:\"stopCapturing\",value:function(){var e,t;null===(e=this.unwrapOnError)||void 0===e||e.call(this),null===(t=this.unwrapUnhandledRejection)||void 0===t||t.call(this)}},{key:\"afterDecideResponse\",value:function(e){var t=e.autocaptureExceptions;this.remoteEnabled=!!t||!1,this.instance.persistence&&this.instance.persistence.register(q({},ve,this.remoteEnabled)),this.startIfEnabled()}},{key:\"captureException\",value:function(e){var t=this.instance.requestRouter.endpointFor(\"ui\");e.$exception_personURL=\"\".concat(t,\"/project/\").concat(this.instance.config.token,\"/person/\").concat(this.instance.get_distinct_id()),this.instance.exceptions.sendExceptionEvent(e)}}]),t}(),Xr=9e5,Kr=\"[Web Vitals]\",Zr=function(){function t(e){var n,i=this;L(this,t),q(this,\"_enabledServerSide\",!1),q(this,\"_initialized\",!1),q(this,\"buffer\",{url:void 0,metrics:[],firstMetricTimestamp:void 0}),q(this,\"_flushToCapture\",(function(){clearTimeout(i._delayedFlushTimer),0!==i.buffer.metrics.length&&(i.instance.capture(\"$web_vitals\",i.buffer.metrics.reduce((function(e,t){var n;return M(M({},e),{},(q(n={},\"$web_vitals_\".concat(t.name,\"_event\"),M({},t)),q(n,\"$web_vitals_\".concat(t.name,\"_value\"),t.value),n))}),{})),i.buffer={url:void 0,metrics:[],firstMetricTimestamp:void 0})})),q(this,\"_addToBuffer\",(function(e){var t,n=null===(t=i.instance.sessionManager)||void 0===t?void 0:t.checkAndGetSessionAndWindowId(!0);if(w(n))T.error(Kr+\"Could not read session ID. Dropping metrics!\");else{i.buffer=i.buffer||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var r=i._currentURL();if(!w(r))if(I(null==e?void 0:e.name)||I(null==e?void 0:e.value))T.error(Kr+\"Invalid metric received\",e);else if(i._maxAllowedValue&&e.value>=i._maxAllowedValue)T.error(Kr+\"Ignoring metric with value >= \"+i._maxAllowedValue,e);else i.buffer.url!==r&&(i._flushToCapture(),i._delayedFlushTimer=setTimeout(i._flushToCapture,8e3)),w(i.buffer.url)&&(i.buffer.url=r),i.buffer.firstMetricTimestamp=w(i.buffer.firstMetricTimestamp)?Date.now():i.buffer.firstMetricTimestamp,i.buffer.metrics.push(M(M({},e),{},{$current_url:r,$session_id:n.sessionId,$window_id:n.windowId,timestamp:Date.now()})),i.buffer.metrics.length===i.allowedMetrics.length&&i._flushToCapture()}})),q(this,\"_startCapturing\",(function(){var e,t,n,r,s=h.__PosthogExtensions__;if(!w(s)&&!w(s.postHogWebVitalsCallbacks)){var o=s.postHogWebVitalsCallbacks;e=o.onLCP,t=o.onCLS,n=o.onFCP,r=o.onINP}e&&t&&n&&r?(i.allowedMetrics.indexOf(\"LCP\")>-1&&e(i._addToBuffer.bind(i)),i.allowedMetrics.indexOf(\"CLS\")>-1&&t(i._addToBuffer.bind(i)),i.allowedMetrics.indexOf(\"FCP\")>-1&&n(i._addToBuffer.bind(i)),i.allowedMetrics.indexOf(\"INP\")>-1&&r(i._addToBuffer.bind(i)),i._initialized=!0):T.error(Kr+\"web vitals callbacks not loaded - not starting\")})),this.instance=e,this._enabledServerSide=!(null===(n=this.instance.persistence)||void 0===n||!n.props[ge]),this.startIfEnabled()}return N(t,[{key:\"allowedMetrics\",get:function(){var e,t,n=b(this.instance.config.capture_performance)?null===(e=this.instance.config.capture_performance)||void 0===e?void 0:e.web_vitals_allowed_metrics:void 0;return w(n)?(null===(t=this.instance.persistence)||void 0===t?void 0:t.props[_e])||[\"CLS\",\"FCP\",\"INP\",\"LCP\"]:n}},{key:\"_maxAllowedValue\",get:function(){var e=b(this.instance.config.capture_performance)&&F(this.instance.config.capture_performance.__web_vitals_max_value)?this.instance.config.capture_performance.__web_vitals_max_value:Xr;return 0-1},not_icontains:function(t,n){return!!e&&-1===n.href.toLowerCase().indexOf(t.toLowerCase())},regex:function(t,n){return!!e&&_t(n.href,t)},not_regex:function(t,n){return!!e&&!_t(n.href,t)},exact:function(e,t){return t.href===e},is_not:function(e,t){return t.href!==e}},ts=function(){function t(e){var n=this;L(this,t),q(this,\"getWebExperimentsAndEvaluateDisplayLogic\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];n.getWebExperiments((function(e){t.logInfo(\"retrieved web experiments from the server\"),n._flagToExperiments=new Map,e.forEach((function(e){if(e.feature_flag_key&&n._featureFlags&&n._featureFlags[e.feature_flag_key]){var i;if(n._flagToExperiments)t.logInfo(\"setting flag key \",e.feature_flag_key,\" to web experiment \",e),null===(i=n._flagToExperiments)||void 0===i||i.set(e.feature_flag_key,e);var r=n._featureFlags[e.feature_flag_key];r&&e.variants[r]&&t.applyTransforms(e.name,r,e.variants[r].transforms)}else if(e.variants)for(var s in e.variants){var o=e.variants[s];t.matchesTestVariant(o)&&t.applyTransforms(e.name,s,o.transforms)}}))}),e)})),this.instance=e;this.instance.onFeatureFlags&&this.instance.onFeatureFlags((function(e){n.applyFeatureFlagChanges(e)})),this._flagToExperiments=new Map}return N(t,[{key:\"applyFeatureFlagChanges\",value:function(e){var n=this;t.logInfo(\"applying feature flags\",e),I(this._flagToExperiments)||this.instance.config.disable_web_experiments||e.forEach((function(e){var i;if(n._flagToExperiments&&null!==(i=n._flagToExperiments)&&void 0!==i&&i.has(e)){var r,s=n.instance.getFeatureFlag(e),o=null===(r=n._flagToExperiments)||void 0===r?void 0:r.get(e);s&&null!=o&&o.variants[s]&&t.applyTransforms(o.name,s,o.variants[s].transforms)}}))}},{key:\"afterDecideResponse\",value:function(e){this._featureFlags=e.featureFlags,this.loadIfEnabled()}},{key:\"loadIfEnabled\",value:function(){this.instance.config.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}},{key:\"getWebExperiments\",value:function(e,t){if(this.instance.config.disable_web_experiments)return e([]);var n=this.instance.get_property(\"$web_experiments\");if(n&&!t)return e(n);this.instance._send_request({url:this.instance.requestRouter.endpointFor(\"api\",\"/api/web_experiments/?token=\".concat(this.instance.config.token)),method:\"GET\",transport:\"XHR\",callback:function(t){if(200!==t.statusCode||!t.json)return e([]);var n=t.json.experiments||[];return e(n)}})}}],[{key:\"matchesTestVariant\",value:function(e){return!I(e.conditions)&&(t.matchUrlConditions(e)&&t.matchUTMConditions(e))}},{key:\"matchUrlConditions\",value:function(e){var n;if(I(e.conditions)||I(null===(n=e.conditions)||void 0===n?void 0:n.url))return!0;var i,r,s,o=t.getWindowLocation();return!!o&&(null===(i=e.conditions)||void 0===i||!i.url||es[null!==(r=null===(s=e.conditions)||void 0===s?void 0:s.urlMatchType)&&void 0!==r?r:\"icontains\"](e.conditions.url,o))}},{key:\"getWindowLocation\",value:function(){return null==e?void 0:e.location}},{key:\"matchUTMConditions\",value:function(e){var t;if(I(e.conditions)||I(null===(t=e.conditions)||void 0===t?void 0:t.utm))return!0;var n=yn.campaignParams();if(n.utm_source){var i,r,s,o,a,u,l,c,d,h,f,v,p,g,_,m,y=null===(i=e.conditions)||void 0===i||null===(r=i.utm)||void 0===r||!r.utm_campaign||(null===(s=e.conditions)||void 0===s||null===(o=s.utm)||void 0===o?void 0:o.utm_campaign)==n.utm_campaign,b=null===(a=e.conditions)||void 0===a||null===(u=a.utm)||void 0===u||!u.utm_source||(null===(l=e.conditions)||void 0===l||null===(c=l.utm)||void 0===c?void 0:c.utm_source)==n.utm_source,k=null===(d=e.conditions)||void 0===d||null===(h=d.utm)||void 0===h||!h.utm_medium||(null===(f=e.conditions)||void 0===f||null===(v=f.utm)||void 0===v?void 0:v.utm_medium)==n.utm_medium,w=null===(p=e.conditions)||void 0===p||null===(g=p.utm)||void 0===g||!g.utm_term||(null===(_=e.conditions)||void 0===_||null===(m=_.utm)||void 0===m?void 0:m.utm_term)==n.utm_term;return y&&k&&w&&b}return!1}},{key:\"logInfo\",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;if(w(t)||E(t))return T.critical(\"PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()\"),this;if(this.__loaded)return T.warn(\"You have already initialized PostHog! Re-initializing is a no-op\"),this;this.__loaded=!0,this.config={},this._triggered_notifs=[],this.set_config(Y({},us(),ls(s),{name:o,token:t})),this.config.on_xhr_error&&T.error(\"[posthog] on_xhr_error is deprecated. Use on_request_error instead\"),this.compression=s.disable_compression?void 0:re.GZipJS,this.persistence=new kn(this.config),this.sessionPersistence=\"sessionStorage\"===this.config.persistence?this.persistence:new kn(M(M({},this.config),{},{persistence:\"sessionStorage\"}));var a=M({},this.persistence.props),u=M({},this.sessionPersistence.props);if(this._requestQueue=new or((function(e){return r._send_retriable_request(e)})),this._retryQueue=new vr(this),this.__request_queue=[],this.sessionManager=new gr(this.config,this.persistence),this.sessionPropsManager=new Lr(this.sessionManager,this.persistence),new Gr(this).startIfEnabledOrStop(),this.sessionRecording=new tr(this),this.sessionRecording.startIfEnabledOrStop(),this.config.disable_scroll_properties||this.scrollManager.startMeasuringScrollPosition(),this.autocapture=new Vr(this),this.autocapture.startIfEnabled(),this.surveys.loadIfEnabled(),this.heatmaps=new Hr(this),this.heatmaps.startIfEnabled(),this.webVitalsAutocapture=new Zr(this),this.exceptionObserver=new Yr(this),this.exceptionObserver.startIfEnabled(),f.DEBUG=f.DEBUG||this.config.debug,f.DEBUG&&T.info(\"Starting in debug mode\",{this:this,config:s,thisC:M({},this.config),p:a,s:u}),this._sync_opt_out_with_persistence(),void 0!==(null===(n=s.bootstrap)||void 0===n?void 0:n.distinctID)){var l,c,d=this.config.get_device_id(Ze()),h=null!==(l=s.bootstrap)&&void 0!==l&&l.isIdentifiedID?d:s.bootstrap.distinctID;this.persistence.set_property(Oe,null!==(c=s.bootstrap)&&void 0!==c&&c.isIdentifiedID?\"identified\":\"anonymous\"),this.register({distinct_id:s.bootstrap.distinctID,$device_id:h})}if(this._hasBootstrappedFeatureFlags()){var v,p,g=Object.keys((null===(v=s.bootstrap)||void 0===v?void 0:v.featureFlags)||{}).filter((function(e){var t,n;return!(null===(t=s.bootstrap)||void 0===t||null===(n=t.featureFlags)||void 0===n||!n[e])})).reduce((function(e,t){var n,i;return e[t]=(null===(n=s.bootstrap)||void 0===n||null===(i=n.featureFlags)||void 0===i?void 0:i[t])||!1,e}),{}),_=Object.keys((null===(p=s.bootstrap)||void 0===p?void 0:p.featureFlagPayloads)||{}).filter((function(e){return g[e]})).reduce((function(e,t){var n,i,r,o;null!==(n=s.bootstrap)&&void 0!==n&&null!==(i=n.featureFlagPayloads)&&void 0!==i&&i[t]&&(e[t]=null===(r=s.bootstrap)||void 0===r||null===(o=r.featureFlagPayloads)||void 0===o?void 0:o[t]);return e}),{});this.featureFlags.receivedFeatureFlags({featureFlags:g,featureFlagPayloads:_})}if(!this.get_distinct_id()){var m=this.config.get_device_id(Ze());this.register_once({distinct_id:m,$device_id:m},\"\"),this.persistence.set_property(Oe,\"anonymous\")}return null==e||null===(i=e.addEventListener)||void 0===i||i.call(e,\"onpagehide\"in self?\"pagehide\":\"unload\",this._handle_unload.bind(this)),this.toolbar.maybeLoadToolbar(),s.segment?wr(this,(function(){return r._loaded()})):this._loaded(),y(this.config._onCapture)&&this.on(\"eventCaptured\",(function(e){return r.config._onCapture(e.event,e)})),this}},{key:\"_afterDecideResponse\",value:function(e){var t,n,i,r,s,o,a,u,l;this.compression=void 0,e.supportedCompression&&!this.config.disable_compression&&(this.compression=X(e.supportedCompression,re.GZipJS)?re.GZipJS:X(e.supportedCompression,re.Base64)?re.Base64:void 0),null!==(t=e.analytics)&&void 0!==t&&t.endpoint&&(this.analyticsDefaultEndpoint=e.analytics.endpoint),null===(n=this.sessionRecording)||void 0===n||n.afterDecideResponse(e),null===(i=this.autocapture)||void 0===i||i.afterDecideResponse(e),null===(r=this.heatmaps)||void 0===r||r.afterDecideResponse(e),null===(s=this.experiments)||void 0===s||s.afterDecideResponse(e),null===(o=this.surveys)||void 0===o||o.afterDecideResponse(e),null===(a=this.webVitalsAutocapture)||void 0===a||a.afterDecideResponse(e),null===(u=this.exceptions)||void 0===u||u.afterDecideResponse(e),null===(l=this.exceptionObserver)||void 0===l||l.afterDecideResponse(e)}},{key:\"_loaded\",value:function(){var e=this,t=this.config.advanced_disable_decide;t||this.featureFlags.setReloadingPaused(!0);try{this.config.loaded(this)}catch(e){T.critical(\"`loaded` function failed\",e)}this._start_queue_if_opted_in(),this.config.capture_pageview&&setTimeout((function(){e.consent.isOptedIn()&&e._captureInitialPageview()}),1),t||(new nr(this).call(),this.featureFlags.resetRequestQueue())}},{key:\"_start_queue_if_opted_in\",value:function(){var e;this.has_opted_out_capturing()||this.config.request_batching&&(null===(e=this._requestQueue)||void 0===e||e.enable())}},{key:\"_dom_loaded\",value:function(){var e=this;this.has_opted_out_capturing()||Q(this.__request_queue,(function(t){return e._send_retriable_request(t)})),this.__request_queue=[],this._start_queue_if_opted_in()}},{key:\"_handle_unload\",value:function(){var e,t;this.config.request_batching?(this._shouldCapturePageleave()&&this.capture(\"$pageleave\"),null===(e=this._requestQueue)||void 0===e||e.unload(),null===(t=this._retryQueue)||void 0===t||t.unload()):this._shouldCapturePageleave()&&this.capture(\"$pageleave\",null,{transport:\"sendBeacon\"})}},{key:\"_send_request\",value:function(e){var t=this;this.__loaded&&(as?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)||(e.transport=e.transport||this.config.api_transport,e.url=lr(e.url,{ip:this.config.ip?1:0}),e.headers=M({},this.config.request_headers),e.compression=\"best-available\"===e.compression?this.compression:e.compression,function(e){var t,n,i,r=M({},e);r.timeout=r.timeout||6e4,r.url=lr(r.url,{_:(new Date).getTime().toString(),ver:f.LIB_VERSION,compression:r.compression});var s=null!==(t=r.transport)&&void 0!==t?t:\"XHR\",o=null!==(n=null===(i=ae(dr,(function(e){return e.transport===s})))||void 0===i?void 0:i.method)&&void 0!==n?n:dr[0].method;if(!o)throw new Error(\"No available transport method\");o(r)}(M(M({},e),{},{callback:function(n){var i,r,s;(t.rateLimiter.checkForLimiting(n),n.statusCode>=400)&&(null===(r=(s=t.config).on_request_error)||void 0===r||r.call(s,n));null===(i=e.callback)||void 0===i||i.call(e,n)}}))))}},{key:\"_send_retriable_request\",value:function(e){this._retryQueue?this._retryQueue.retriableRequest(e):this._send_request(e)}},{key:\"_execute_array\",value:function(e){var t,n=this,i=[],r=[],s=[];Q(e,(function(e){e&&(t=e[0],m(t)?s.push(e):y(e)?e.call(n):m(e)&&\"alias\"===t?i.push(e):m(e)&&-1!==t.indexOf(\"capture\")&&y(n[t])?s.push(e):r.push(e))}));var o=function(e,t){Q(e,(function(e){if(m(e[0])){var n=t;J(e,(function(e){n=n[e[0]].apply(n,e.slice(1))}))}else this[e[0]].apply(this,e.slice(1))}),t)};o(i,this),o(r,this),o(s,this)}},{key:\"_hasBootstrappedFeatureFlags\",value:function(){var e,t;return(null===(e=this.config.bootstrap)||void 0===e?void 0:e.featureFlags)&&Object.keys(null===(t=this.config.bootstrap)||void 0===t?void 0:t.featureFlags).length>0||!1}},{key:\"push\",value:function(e){this._execute_array([e])}},{key:\"capture\",value:function(e,t,n){var i;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this._requestQueue){if(!this.consent.isOptedOut())if(!w(e)&&S(e)){if(this.config.opt_out_useragent_filter||!this._is_bot()){var r=null!=n&&n.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(null==r||!r.isRateLimited){this.sessionPersistence.update_search_keyword(),this.config.store_google&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.store_google||this.config.save_referrer)&&this.persistence.set_initial_person_info();var s=new Date,o=(null==n?void 0:n.timestamp)||s,a={uuid:Ze(),event:e,properties:this._calculate_event_properties(e,t||{},o)};r&&(a.properties.$lib_rate_limit_remaining_tokens=r.remainingTokens),(null==n?void 0:n.$set)&&(a.$set=null==n?void 0:n.$set);var u=this._calculate_set_once_properties(null==n?void 0:n.$set_once);u&&(a.$set_once=u),(a=ie(a,null!=n&&n._noTruncate?null:this.config.properties_string_max_length)).timestamp=o,w(null==n?void 0:n.timestamp)||(a.properties.$event_time_override_provided=!0,a.properties.$event_time_override_system_time=s);var l=M(M({},a.properties.$set),a.$set);k(l)||this.setPersonPropertiesForFlags(l),this._internalEventEmitter.emit(\"eventCaptured\",a);var c={method:\"POST\",url:null!==(i=null==n?void 0:n._url)&&void 0!==i?i:this.requestRouter.endpointFor(\"api\",this.analyticsDefaultEndpoint),data:a,compression:\"best-available\",batchKey:null==n?void 0:n._batchKey};return!this.config.request_batching||n&&(null==n||!n._batchKey)||null!=n&&n.send_instantly?this._send_retriable_request(c):this._requestQueue.enqueue(c),a}T.critical(\"This capture call is ignored due to client rate limiting.\")}}else T.error(\"No event name provided to posthog.capture\")}else T.uninitializedWarning(\"posthog.capture\")}},{key:\"_addCaptureHook\",value:function(e){return this.on(\"eventCaptured\",(function(t){return e(t.event,t)}))}},{key:\"_calculate_event_properties\",value:function(e,t,n){if(n=n||new Date,!this.persistence||!this.sessionPersistence)return t;var i=this.persistence.remove_event_timer(e),r=M({},t);if(r.token=this.config.token,\"$snapshot\"===e){var s=M(M({},this.persistence.properties()),this.sessionPersistence.properties());return r.distinct_id=s.distinct_id,(!S(r.distinct_id)&&!F(r.distinct_id)||E(r.distinct_id))&&T.error(\"Invalid distinct_id for replay event. This indicates a bug in your implementation\"),r}var a=yn.properties();if(this.sessionManager){var u=this.sessionManager.checkAndGetSessionAndWindowId(),l=u.sessionId,c=u.windowId;r.$session_id=l,r.$window_id=c}if(this.requestRouter.region===fr.CUSTOM&&(r.$lib_custom_api_host=this.config.api_host),this.sessionPropsManager&&this.config.__preview_send_client_session_params&&(\"$pageview\"===e||\"$pageleave\"===e||\"$autocapture\"===e)){var h=this.sessionPropsManager.getSessionProps();r=Y(r,h)}if(!this.config.disable_scroll_properties){var f={};\"$pageview\"===e?f=this.pageViewManager.doPageView(n):\"$pageleave\"===e&&(f=this.pageViewManager.doPageLeave(n)),r=Y(r,f)}if(\"$pageview\"===e&&o&&(r.title=o.title),!w(i)){var v=n.getTime()-i;r.$duration=parseFloat((v/1e3).toFixed(3))}d&&this.config.opt_out_useragent_filter&&(r.$browser_type=this._is_bot()?\"bot\":\"browser\"),(r=Y({},a,this.persistence.properties(),this.sessionPersistence.properties(),r)).$is_identified=this._isIdentified(),m(this.config.property_denylist)?J(this.config.property_denylist,(function(e){delete r[e]})):T.error(\"Invalid value for property_denylist config: \"+this.config.property_denylist+\" or property_blacklist config: \"+this.config.property_blacklist);var p=this.config.sanitize_properties;return p&&(r=p(r,e)),r.$process_person_profile=this._hasPersonProcessing(),r}},{key:\"_calculate_set_once_properties\",value:function(e){if(!this.persistence||!this._hasPersonProcessing())return e;var t=Y({},this.persistence.get_initial_props(),e||{});return k(t)?void 0:t}},{key:\"register\",value:function(e,t){var n;null===(n=this.persistence)||void 0===n||n.register(e,t)}},{key:\"register_once\",value:function(e,t,n){var i;null===(i=this.persistence)||void 0===i||i.register_once(e,t,n)}},{key:\"register_for_session\",value:function(e){var t;null===(t=this.sessionPersistence)||void 0===t||t.register(e)}},{key:\"unregister\",value:function(e){var t;null===(t=this.persistence)||void 0===t||t.unregister(e)}},{key:\"unregister_for_session\",value:function(e){var t;null===(t=this.sessionPersistence)||void 0===t||t.unregister(e)}},{key:\"_register_single\",value:function(e,t){this.register(q({},e,t))}},{key:\"getFeatureFlag\",value:function(e,t){return this.featureFlags.getFeatureFlag(e,t)}},{key:\"getFeatureFlagPayload\",value:function(e){var t=this.featureFlags.getFeatureFlagPayload(e);try{return JSON.parse(t)}catch(e){return t}}},{key:\"isFeatureEnabled\",value:function(e,t){return this.featureFlags.isFeatureEnabled(e,t)}},{key:\"reloadFeatureFlags\",value:function(){this.featureFlags.reloadFeatureFlags()}},{key:\"updateEarlyAccessFeatureEnrollment\",value:function(e,t){this.featureFlags.updateEarlyAccessFeatureEnrollment(e,t)}},{key:\"getEarlyAccessFeatures\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.featureFlags.getEarlyAccessFeatures(e,t)}},{key:\"on\",value:function(e,t){return this._internalEventEmitter.on(e,t)}},{key:\"onFeatureFlags\",value:function(e){return this.featureFlags.onFeatureFlags(e)}},{key:\"onSessionId\",value:function(e){var t,n;return null!==(t=null===(n=this.sessionManager)||void 0===n?void 0:n.onSessionId(e))&&void 0!==t?t:function(){}}},{key:\"getSurveys\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.surveys.getSurveys(e,t)}},{key:\"getActiveMatchingSurveys\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.surveys.getActiveMatchingSurveys(e,t)}},{key:\"renderSurvey\",value:function(e,t){this.surveys.renderSurvey(e,t)}},{key:\"canRenderSurvey\",value:function(e){this.surveys.canRenderSurvey(e)}},{key:\"getNextSurveyStep\",value:function(e,t,n){return this.surveys.getNextSurveyStep(e,t,n)}},{key:\"identify\",value:function(e,t,n){if(!this.__loaded||!this.persistence)return T.uninitializedWarning(\"posthog.identify\");if(F(e)&&(e=e.toString(),T.warn(\"The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.\")),e){if([\"distinct_id\",\"distinctid\"].includes(e.toLowerCase()))T.critical('The string \"'.concat(e,'\" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'));else if(this._requirePersonProcessing(\"posthog.identify\")){var i=this.get_distinct_id();if(this.register({$user_id:e}),!this.get_property(\"$device_id\")){var r=i;this.register_once({$had_persisted_distinct_id:!0,$device_id:r},\"\")}e!==i&&e!==this.get_property(ce)&&(this.unregister(ce),this.register({distinct_id:e}));var s=\"anonymous\"===(this.persistence.get_property(Oe)||\"anonymous\");e!==i&&s?(this.persistence.set_property(Oe,\"identified\"),this.setPersonPropertiesForFlags(t||{},!1),this.capture(\"$identify\",{distinct_id:e,$anon_distinct_id:i},{$set:t||{},$set_once:n||{}}),this.featureFlags.setAnonymousDistinctId(i)):(t||n)&&this.setPersonProperties(t,n),e!==i&&(this.reloadFeatureFlags(),this.unregister($e))}}else T.error(\"Unique user id has not been set in posthog.identify\")}},{key:\"setPersonProperties\",value:function(e,t){(e||t)&&this._requirePersonProcessing(\"posthog.setPersonProperties\")&&(this.setPersonPropertiesForFlags(e||{}),this.capture(\"$set\",{$set:e||{},$set_once:t||{}}))}},{key:\"group\",value:function(e,t,n){if(e&&t){if(this._requirePersonProcessing(\"posthog.group\")){var i=this.getGroups();i[e]!==t&&this.resetGroupPropertiesForFlags(e),this.register({$groups:M(M({},i),{},q({},e,t))}),n&&(this.capture(\"$groupidentify\",{$group_type:e,$group_key:t,$group_set:n}),this.setGroupPropertiesForFlags(q({},e,n))),i[e]===t||n||this.reloadFeatureFlags()}}else T.error(\"posthog.group requires a group type and group key\")}},{key:\"resetGroups\",value:function(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}},{key:\"setPersonPropertiesForFlags\",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._requirePersonProcessing(\"posthog.setPersonPropertiesForFlags\")&&this.featureFlags.setPersonPropertiesForFlags(e,t)}},{key:\"resetPersonPropertiesForFlags\",value:function(){this.featureFlags.resetPersonPropertiesForFlags()}},{key:\"setGroupPropertiesForFlags\",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._requirePersonProcessing(\"posthog.setGroupPropertiesForFlags\")&&this.featureFlags.setGroupPropertiesForFlags(e,t)}},{key:\"resetGroupPropertiesForFlags\",value:function(e){this.featureFlags.resetGroupPropertiesForFlags(e)}},{key:\"reset\",value:function(e){var t,n,i,r;if(T.info(\"reset\"),!this.__loaded)return T.uninitializedWarning(\"posthog.reset\");var s=this.get_property(\"$device_id\");this.consent.reset(),null===(t=this.persistence)||void 0===t||t.clear(),null===(n=this.sessionPersistence)||void 0===n||n.clear(),null===(i=this.persistence)||void 0===i||i.set_property(Oe,\"anonymous\"),null===(r=this.sessionManager)||void 0===r||r.resetSessionId();var o=this.config.get_device_id(Ze());this.register_once({distinct_id:o,$device_id:e?o:s},\"\")}},{key:\"get_distinct_id\",value:function(){return this.get_property(\"distinct_id\")}},{key:\"getGroups\",value:function(){return this.get_property(\"$groups\")||{}}},{key:\"get_session_id\",value:function(){var e,t;return null!==(e=null===(t=this.sessionManager)||void 0===t?void 0:t.checkAndGetSessionAndWindowId(!0).sessionId)&&void 0!==e?e:\"\"}},{key:\"get_session_replay_url\",value:function(e){if(!this.sessionManager)return\"\";var t=this.sessionManager.checkAndGetSessionAndWindowId(!0),n=t.sessionId,i=t.sessionStartTimestamp,r=this.requestRouter.endpointFor(\"ui\",\"/project/\".concat(this.config.token,\"/replay/\").concat(n));if(null!=e&&e.withTimestamp&&i){var s,o=null!==(s=e.timestampLookBack)&&void 0!==s?s:10;if(!i)return r;var a=Math.max(Math.floor(((new Date).getTime()-i)/1e3)-o,0);r+=\"?t=\".concat(a)}return r}},{key:\"alias\",value:function(e,t){return e===this.get_property(le)?(T.critical(\"Attempting to create alias for existing People user - aborting.\"),-2):this._requirePersonProcessing(\"posthog.alias\")?(w(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(ce,e),this.capture(\"$create_alias\",{alias:e,distinct_id:t})):(T.warn(\"alias matches current distinct_id - skipping api call.\"),this.identify(e),-1)):void 0}},{key:\"set_config\",value:function(e){var t,n,i,r,s=M({},this.config);b(e)&&(Y(this.config,ls(e)),null===(t=this.persistence)||void 0===t||t.update_config(this.config,s),this.sessionPersistence=\"sessionStorage\"===this.config.persistence?this.persistence:new kn(M(M({},this.config),{},{persistence:\"sessionStorage\"})),ut.is_supported()&&\"true\"===ut.get(\"ph_debug\")&&(this.config.debug=!0),this.config.debug&&(f.DEBUG=!0,T.info(\"set_config\",{config:e,oldConfig:s,newConfig:M({},this.config)})),null===(n=this.sessionRecording)||void 0===n||n.startIfEnabledOrStop(),null===(i=this.autocapture)||void 0===i||i.startIfEnabled(),null===(r=this.heatmaps)||void 0===r||r.startIfEnabled(),this.surveys.loadIfEnabled(),this._sync_opt_out_with_persistence())}},{key:\"startSessionRecording\",value:function(e){var t,n=P(e)&&e;if(n||null!=e&&e.sampling){var i,r,s=null===(i=this.sessionManager)||void 0===i?void 0:i.checkAndGetSessionAndWindowId();null===(r=this.persistence)||void 0===r||r.register(q({},xe,!0)),T.info(\"Session recording started with sampling override for session: \",null==s?void 0:s.sessionId)}(n||null!=e&&e.linked_flag)&&(null===(t=this.sessionRecording)||void 0===t||t.overrideLinkedFlag(),T.info(\"Session recording started with linked_flags override\"));this.set_config({disable_session_recording:!1})}},{key:\"stopSessionRecording\",value:function(){this.set_config({disable_session_recording:!0})}},{key:\"sessionRecordingStarted\",value:function(){var e;return!(null===(e=this.sessionRecording)||void 0===e||!e.started)}},{key:\"captureException\",value:function(e,t){var n,i=y(null===(n=h.__PosthogExtensions__)||void 0===n?void 0:n.parseErrorAsProperties)?h.__PosthogExtensions__.parseErrorAsProperties([e.message,void 0,void 0,void 0,e]):M({$exception_type:e.name,$exception_message:e.message,$exception_level:\"error\"},t);this.exceptions.sendExceptionEvent(i)}},{key:\"loadToolbar\",value:function(e){return this.toolbar.loadToolbar(e)}},{key:\"get_property\",value:function(e){var t;return null===(t=this.persistence)||void 0===t?void 0:t.props[e]}},{key:\"getSessionProperty\",value:function(e){var t;return null===(t=this.sessionPersistence)||void 0===t?void 0:t.props[e]}},{key:\"toString\",value:function(){var e,t=null!==(e=this.config.name)&&void 0!==e?e:os;return t!==os&&(t=os+\".\"+t),t}},{key:\"_isIdentified\",value:function(){var e,t;return\"identified\"===(null===(e=this.persistence)||void 0===e?void 0:e.get_property(Oe))||\"identified\"===(null===(t=this.sessionPersistence)||void 0===t?void 0:t.get_property(Oe))}},{key:\"_hasPersonProcessing\",value:function(){var e,t,n,i;return!(\"never\"===this.config.person_profiles||\"identified_only\"===this.config.person_profiles&&!this._isIdentified()&&k(this.getGroups())&&(null===(e=this.persistence)||void 0===e||null===(t=e.props)||void 0===t||!t[ce])&&(null===(n=this.persistence)||void 0===n||null===(i=n.props)||void 0===i||!i[qe]))}},{key:\"_shouldCapturePageleave\",value:function(){return!0===this.config.capture_pageleave||\"if_capture_pageview\"===this.config.capture_pageleave&&this.config.capture_pageview}},{key:\"createPersonProfile\",value:function(){this._hasPersonProcessing()||this._requirePersonProcessing(\"posthog.createPersonProfile\")&&this.setPersonProperties({},{})}},{key:\"_requirePersonProcessing\",value:function(e){return\"never\"===this.config.person_profiles?(T.error(e+' was called, but process_person is set to \"never\". This call will be ignored.'),!1):(this._register_single(qe,!0),!0)}},{key:\"_sync_opt_out_with_persistence\",value:function(){var e,t,n,i,r=this.consent.isOptedOut(),s=this.config.opt_out_persistence_by_default,o=this.config.disable_persistence||r&&!!s;(null===(e=this.persistence)||void 0===e?void 0:e.disabled)!==o&&(null===(n=this.persistence)||void 0===n||n.set_disabled(o));(null===(t=this.sessionPersistence)||void 0===t?void 0:t.disabled)!==o&&(null===(i=this.sessionPersistence)||void 0===i||i.set_disabled(o))}},{key:\"opt_in_capturing\",value:function(e){var t;(this.consent.optInOut(!0),this._sync_opt_out_with_persistence(),w(null==e?void 0:e.captureEventName)||null!=e&&e.captureEventName)&&this.capture(null!==(t=null==e?void 0:e.captureEventName)&&void 0!==t?t:\"$opt_in\",null==e?void 0:e.captureProperties,{send_instantly:!0});this.config.capture_pageview&&this._captureInitialPageview()}},{key:\"opt_out_capturing\",value:function(){this.consent.optInOut(!1),this._sync_opt_out_with_persistence()}},{key:\"has_opted_in_capturing\",value:function(){return this.consent.isOptedIn()}},{key:\"has_opted_out_capturing\",value:function(){return this.consent.isOptedOut()}},{key:\"clear_opt_in_out_capturing\",value:function(){this.consent.reset(),this._sync_opt_out_with_persistence()}},{key:\"_is_bot\",value:function(){return s?function(e,t){if(!e)return!1;var n=e.userAgent;if(n&&Nr(n,t))return!0;try{var i=null==e?void 0:e.userAgentData;if(null!=i&&i.brands&&i.brands.some((function(e){return Nr(null==e?void 0:e.brand,t)})))return!0}catch(e){}return!!e.webdriver}(s,this.config.custom_blocked_useragents):void 0}},{key:\"_captureInitialPageview\",value:function(){o&&!this._initialPageviewCaptured&&(this._initialPageviewCaptured=!0,this.capture(\"$pageview\",{title:o.title},{send_instantly:!0}))}},{key:\"debug\",value:function(t){!1===t?(null==e||e.console.log(\"You've disabled debug mode.\"),localStorage&&localStorage.removeItem(\"ph_debug\"),this.set_config({debug:!1})):(null==e||e.console.log(\"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\"),localStorage&&localStorage.setItem(\"ph_debug\",\"true\"),this.set_config({debug:!0}))}}]),t}();!function(e,t){for(var n=0;n\n import { onMount } from 'svelte'\n import Honeybadger from '@honeybadger-io/js'\n import posthog from 'posthog-js'\n\n import { set_preferences } from '$lib/stores'\n import { FlashMessages, MetaTags } from '$lib/components'\n\n export let preferences\n set_preferences(preferences)\n\n export let config\n\n export let current_user\n\n onMount(() => {\n Honeybadger.configure({\n apiKey: config.honeybadger.api_key,\n environment: config.env\n })\n\n posthog.init(config.posthog.token, {\n api_host: config.posthog.api_host,\n persistence: 'memory',\n bootstrap: current_user ? { distinctID: current_user.id } : {}\n })\n\n if (current_user)\n posthog.identify(current_user.id, { email: current_user.email })\n })\n\n\n\n\n\n\n\n\n\n","\n\n\n\n
\n
\n {#if current_user && experience.is_forkable}\n
\n
\n \n\n
\n
\n \n
\n\n \n
\n
\n
\n {/if}\n\n \n
\n

{$project.name}

\n\n \n
\n \n\n
\n \n
\n
\n
\n\n","\n\n
\n \n\n \n
\n\n
\n © Pogzul { new Date().getFullYear() }\n
\n\n\n\n","\n\n\n\n
\n
\n \n
\n
\n\n","/**\nThe default maximum length of a `TreeBuffer` node.\n*/\nconst DefaultBufferLength = 1024;\nlet nextPropID = 0;\nclass Range {\n constructor(from, to) {\n this.from = from;\n this.to = to;\n }\n}\n/**\nEach [node type](#common.NodeType) or [individual tree](#common.Tree)\ncan have metadata associated with it in props. Instances of this\nclass represent prop names.\n*/\nclass NodeProp {\n /**\n Create a new node prop type.\n */\n constructor(config = {}) {\n this.id = nextPropID++;\n this.perNode = !!config.perNode;\n this.deserialize = config.deserialize || (() => {\n throw new Error(\"This node type doesn't define a deserialize function\");\n });\n }\n /**\n This is meant to be used with\n [`NodeSet.extend`](#common.NodeSet.extend) or\n [`LRParser.configure`](#lr.ParserConfig.props) to compute\n prop values for each node type in the set. Takes a [match\n object](#common.NodeType^match) or function that returns undefined\n if the node type doesn't get this prop, and the prop's value if\n it does.\n */\n add(match) {\n if (this.perNode)\n throw new RangeError(\"Can't add per-node props to node types\");\n if (typeof match != \"function\")\n match = NodeType.match(match);\n return (type) => {\n let result = match(type);\n return result === undefined ? null : [this, result];\n };\n }\n}\n/**\nProp that is used to describe matching delimiters. For opening\ndelimiters, this holds an array of node names (written as a\nspace-separated string when declaring this prop in a grammar)\nfor the node types of closing delimiters that match it.\n*/\nNodeProp.closedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nThe inverse of [`closedBy`](#common.NodeProp^closedBy). This is\nattached to closing delimiters, holding an array of node names\nof types of matching opening delimiters.\n*/\nNodeProp.openedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nUsed to assign node types to groups (for example, all node\ntypes that represent an expression could be tagged with an\n`\"Expression\"` group).\n*/\nNodeProp.group = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nAttached to nodes to indicate these should be\n[displayed](https://codemirror.net/docs/ref/#language.syntaxTree)\nin a bidirectional text isolate, so that direction-neutral\ncharacters on their sides don't incorrectly get associated with\nsurrounding text. You'll generally want to set this for nodes\nthat contain arbitrary text, like strings and comments, and for\nnodes that appear _inside_ arbitrary text, like HTML tags. When\nnot given a value, in a grammar declaration, defaults to\n`\"auto\"`.\n*/\nNodeProp.isolate = new NodeProp({ deserialize: value => {\n if (value && value != \"rtl\" && value != \"ltr\" && value != \"auto\")\n throw new RangeError(\"Invalid value for isolate: \" + value);\n return value || \"auto\";\n } });\n/**\nThe hash of the [context](#lr.ContextTracker.constructor)\nthat the node was parsed in, if any. Used to limit reuse of\ncontextual nodes.\n*/\nNodeProp.contextHash = new NodeProp({ perNode: true });\n/**\nThe distance beyond the end of the node that the tokenizer\nlooked ahead for any of the tokens inside the node. (The LR\nparser only stores this when it is larger than 25, for\nefficiency reasons.)\n*/\nNodeProp.lookAhead = new NodeProp({ perNode: true });\n/**\nThis per-node prop is used to replace a given node, or part of a\nnode, with another tree. This is useful to include trees from\ndifferent languages in mixed-language parsers.\n*/\nNodeProp.mounted = new NodeProp({ perNode: true });\n/**\nA mounted tree, which can be [stored](#common.NodeProp^mounted) on\na tree node to indicate that parts of its content are\nrepresented by another tree.\n*/\nclass MountedTree {\n constructor(\n /**\n The inner tree.\n */\n tree, \n /**\n If this is null, this tree replaces the entire node (it will\n be included in the regular iteration instead of its host\n node). If not, only the given ranges are considered to be\n covered by this tree. This is used for trees that are mixed in\n a way that isn't strictly hierarchical. Such mounted trees are\n only entered by [`resolveInner`](#common.Tree.resolveInner)\n and [`enter`](#common.SyntaxNode.enter).\n */\n overlay, \n /**\n The parser used to create this subtree.\n */\n parser) {\n this.tree = tree;\n this.overlay = overlay;\n this.parser = parser;\n }\n /**\n @internal\n */\n static get(tree) {\n return tree && tree.props && tree.props[NodeProp.mounted.id];\n }\n}\nconst noProps = Object.create(null);\n/**\nEach node in a syntax tree has a node type associated with it.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the node type. Not necessarily unique, but if the\n grammar was written properly, different node types with the\n same name within a node set should play the same semantic\n role.\n */\n name, \n /**\n @internal\n */\n props, \n /**\n The id of this node in its set. Corresponds to the term ids\n used in the parser.\n */\n id, \n /**\n @internal\n */\n flags = 0) {\n this.name = name;\n this.props = props;\n this.id = id;\n this.flags = flags;\n }\n /**\n Define a node type.\n */\n static define(spec) {\n let props = spec.props && spec.props.length ? Object.create(null) : noProps;\n let flags = (spec.top ? 1 /* NodeFlag.Top */ : 0) | (spec.skipped ? 2 /* NodeFlag.Skipped */ : 0) |\n (spec.error ? 4 /* NodeFlag.Error */ : 0) | (spec.name == null ? 8 /* NodeFlag.Anonymous */ : 0);\n let type = new NodeType(spec.name || \"\", props, spec.id, flags);\n if (spec.props)\n for (let src of spec.props) {\n if (!Array.isArray(src))\n src = src(type);\n if (src) {\n if (src[0].perNode)\n throw new RangeError(\"Can't store a per-node prop on a node type\");\n props[src[0].id] = src[1];\n }\n }\n return type;\n }\n /**\n Retrieves a node prop for this type. Will return `undefined` if\n the prop isn't present on this node.\n */\n prop(prop) { return this.props[prop.id]; }\n /**\n True when this is the top node of a grammar.\n */\n get isTop() { return (this.flags & 1 /* NodeFlag.Top */) > 0; }\n /**\n True when this node is produced by a skip rule.\n */\n get isSkipped() { return (this.flags & 2 /* NodeFlag.Skipped */) > 0; }\n /**\n Indicates whether this is an error node.\n */\n get isError() { return (this.flags & 4 /* NodeFlag.Error */) > 0; }\n /**\n When true, this node type doesn't correspond to a user-declared\n named node, for example because it is used to cache repetition.\n */\n get isAnonymous() { return (this.flags & 8 /* NodeFlag.Anonymous */) > 0; }\n /**\n Returns true when this node's name or one of its\n [groups](#common.NodeProp^group) matches the given string.\n */\n is(name) {\n if (typeof name == 'string') {\n if (this.name == name)\n return true;\n let group = this.prop(NodeProp.group);\n return group ? group.indexOf(name) > -1 : false;\n }\n return this.id == name;\n }\n /**\n Create a function from node types to arbitrary values by\n specifying an object whose property names are node or\n [group](#common.NodeProp^group) names. Often useful with\n [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n names, separated by spaces, in a single property name to map\n multiple node names to a single value.\n */\n static match(map) {\n let direct = Object.create(null);\n for (let prop in map)\n for (let name of prop.split(\" \"))\n direct[name] = map[prop];\n return (node) => {\n for (let groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) {\n let found = direct[i < 0 ? node.name : groups[i]];\n if (found)\n return found;\n }\n };\n }\n}\n/**\nAn empty dummy node type to use when no actual type is available.\n*/\nNodeType.none = new NodeType(\"\", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);\n/**\nA node set holds a collection of node types. It is used to\ncompactly represent trees by storing their type ids, rather than a\nfull pointer to the type object, in a numeric array. Each parser\n[has](#lr.LRParser.nodeSet) a node set, and [tree\nbuffers](#common.TreeBuffer) can only store collections of nodes\nfrom the same set. A set can have a maximum of 2**16 (65536) node\ntypes in it, so that the ids fit into 16-bit typed array slots.\n*/\nclass NodeSet {\n /**\n Create a set with the given types. The `id` property of each\n type should correspond to its position within the array.\n */\n constructor(\n /**\n The node types in this set, by id.\n */\n types) {\n this.types = types;\n for (let i = 0; i < types.length; i++)\n if (types[i].id != i)\n throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n }\n /**\n Create a copy of this set with some node properties added. The\n arguments to this method can be created with\n [`NodeProp.add`](#common.NodeProp.add).\n */\n extend(...props) {\n let newTypes = [];\n for (let type of this.types) {\n let newProps = null;\n for (let source of props) {\n let add = source(type);\n if (add) {\n if (!newProps)\n newProps = Object.assign({}, type.props);\n newProps[add[0].id] = add[1];\n }\n }\n newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);\n }\n return new NodeSet(newTypes);\n }\n}\nconst CachedNode = new WeakMap(), CachedInnerNode = new WeakMap();\n/**\nOptions that control iteration. Can be combined with the `|`\noperator to enable multiple ones.\n*/\nvar IterMode;\n(function (IterMode) {\n /**\n When enabled, iteration will only visit [`Tree`](#common.Tree)\n objects, not nodes packed into\n [`TreeBuffer`](#common.TreeBuffer)s.\n */\n IterMode[IterMode[\"ExcludeBuffers\"] = 1] = \"ExcludeBuffers\";\n /**\n Enable this to make iteration include anonymous nodes (such as\n the nodes that wrap repeated grammar constructs into a balanced\n tree).\n */\n IterMode[IterMode[\"IncludeAnonymous\"] = 2] = \"IncludeAnonymous\";\n /**\n By default, regular [mounted](#common.NodeProp^mounted) nodes\n replace their base node in iteration. Enable this to ignore them\n instead.\n */\n IterMode[IterMode[\"IgnoreMounts\"] = 4] = \"IgnoreMounts\";\n /**\n This option only applies in\n [`enter`](#common.SyntaxNode.enter)-style methods. It tells the\n library to not enter mounted overlays if one covers the given\n position.\n */\n IterMode[IterMode[\"IgnoreOverlays\"] = 8] = \"IgnoreOverlays\";\n})(IterMode || (IterMode = {}));\n/**\nA piece of syntax tree. There are two ways to approach these\ntrees: the way they are actually stored in memory, and the\nconvenient way.\n\nSyntax trees are stored as a tree of `Tree` and `TreeBuffer`\nobjects. By packing detail information into `TreeBuffer` leaf\nnodes, the representation is made a lot more memory-efficient.\n\nHowever, when you want to actually work with tree nodes, this\nrepresentation is very awkward, so most client code will want to\nuse the [`TreeCursor`](#common.TreeCursor) or\n[`SyntaxNode`](#common.SyntaxNode) interface instead, which provides\na view on some part of this data structure, and can be used to\nmove around to adjacent nodes.\n*/\nclass Tree {\n /**\n Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n */\n constructor(\n /**\n The type of the top node.\n */\n type, \n /**\n This node's child nodes.\n */\n children, \n /**\n The positions (offsets relative to the start of this tree) of\n the children.\n */\n positions, \n /**\n The total length of this tree\n */\n length, \n /**\n Per-node [node props](#common.NodeProp) to associate with this node.\n */\n props) {\n this.type = type;\n this.children = children;\n this.positions = positions;\n this.length = length;\n /**\n @internal\n */\n this.props = null;\n if (props && props.length) {\n this.props = Object.create(null);\n for (let [prop, value] of props)\n this.props[typeof prop == \"number\" ? prop : prop.id] = value;\n }\n }\n /**\n @internal\n */\n toString() {\n let mounted = MountedTree.get(this);\n if (mounted && !mounted.overlay)\n return mounted.tree.toString();\n let children = \"\";\n for (let ch of this.children) {\n let str = ch.toString();\n if (str) {\n if (children)\n children += \",\";\n children += str;\n }\n }\n return !this.type.name ? children :\n (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) +\n (children.length ? \"(\" + children + \")\" : \"\");\n }\n /**\n Get a [tree cursor](#common.TreeCursor) positioned at the top of\n the tree. Mode can be used to [control](#common.IterMode) which\n nodes the cursor visits.\n */\n cursor(mode = 0) {\n return new TreeCursor(this.topNode, mode);\n }\n /**\n Get a [tree cursor](#common.TreeCursor) pointing into this tree\n at the given position and side (see\n [`moveTo`](#common.TreeCursor.moveTo).\n */\n cursorAt(pos, side = 0, mode = 0) {\n let scope = CachedNode.get(this) || this.topNode;\n let cursor = new TreeCursor(scope);\n cursor.moveTo(pos, side);\n CachedNode.set(this, cursor._tree);\n return cursor;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) object for the top of the\n tree.\n */\n get topNode() {\n return new TreeNode(this, 0, 0, null);\n }\n /**\n Get the [syntax node](#common.SyntaxNode) at the given position.\n If `side` is -1, this will move into nodes that end at the\n position. If 1, it'll move into nodes that start at the\n position. With 0, it'll only enter nodes that cover the position\n from both sides.\n \n Note that this will not enter\n [overlays](#common.MountedTree.overlay), and you often want\n [`resolveInner`](#common.Tree.resolveInner) instead.\n */\n resolve(pos, side = 0) {\n let node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false);\n CachedNode.set(this, node);\n return node;\n }\n /**\n Like [`resolve`](#common.Tree.resolve), but will enter\n [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n pointing into the innermost overlaid tree at the given position\n (with parent links going through all parent structure, including\n the host trees).\n */\n resolveInner(pos, side = 0) {\n let node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true);\n CachedInnerNode.set(this, node);\n return node;\n }\n /**\n In some situations, it can be useful to iterate through all\n nodes around a position, including those in overlays that don't\n directly cover the position. This method gives you an iterator\n that will produce all nodes, from small to big, around the given\n position.\n */\n resolveStack(pos, side = 0) {\n return stackIterator(this, pos, side);\n }\n /**\n Iterate over the tree and its children, calling `enter` for any\n node that touches the `from`/`to` region (if given) before\n running over such a node's children, and `leave` (if given) when\n leaving the node. When `enter` returns `false`, that node will\n not have its children iterated over (or `leave` called).\n */\n iterate(spec) {\n let { enter, leave, from = 0, to = this.length } = spec;\n let mode = spec.mode || 0, anon = (mode & IterMode.IncludeAnonymous) > 0;\n for (let c = this.cursor(mode | IterMode.IncludeAnonymous);;) {\n let entered = false;\n if (c.from <= to && c.to >= from && (!anon && c.type.isAnonymous || enter(c) !== false)) {\n if (c.firstChild())\n continue;\n entered = true;\n }\n for (;;) {\n if (entered && leave && (anon || !c.type.isAnonymous))\n leave(c);\n if (c.nextSibling())\n break;\n if (!c.parent())\n return;\n entered = true;\n }\n }\n }\n /**\n Get the value of the given [node prop](#common.NodeProp) for this\n node. Works with both per-node and per-type props.\n */\n prop(prop) {\n return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : undefined;\n }\n /**\n Returns the node's [per-node props](#common.NodeProp.perNode) in a\n format that can be passed to the [`Tree`](#common.Tree)\n constructor.\n */\n get propValues() {\n let result = [];\n if (this.props)\n for (let id in this.props)\n result.push([+id, this.props[id]]);\n return result;\n }\n /**\n Balance the direct children of this tree, producing a copy of\n which may have children grouped into subtrees with type\n [`NodeType.none`](#common.NodeType^none).\n */\n balance(config = {}) {\n return this.children.length <= 8 /* Balance.BranchFactor */ ? this :\n balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children, positions, length) => new Tree(this.type, children, positions, length, this.propValues), config.makeTree || ((children, positions, length) => new Tree(NodeType.none, children, positions, length)));\n }\n /**\n Build a tree from a postfix-ordered buffer of node information,\n or a cursor over such a buffer.\n */\n static build(data) { return buildTree(data); }\n}\n/**\nThe empty tree\n*/\nTree.empty = new Tree(NodeType.none, [], [], 0);\nclass FlatBufferCursor {\n constructor(buffer, index) {\n this.buffer = buffer;\n this.index = index;\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n get pos() { return this.index; }\n next() { this.index -= 4; }\n fork() { return new FlatBufferCursor(this.buffer, this.index); }\n}\n/**\nTree buffers contain (type, start, end, endIndex) quads for each\nnode. In such a buffer, nodes are stored in prefix order (parents\nbefore children, with the endIndex of the parent indicating which\nchildren belong to it).\n*/\nclass TreeBuffer {\n /**\n Create a tree buffer.\n */\n constructor(\n /**\n The buffer's content.\n */\n buffer, \n /**\n The total length of the group of nodes in the buffer.\n */\n length, \n /**\n The node set used in this buffer.\n */\n set) {\n this.buffer = buffer;\n this.length = length;\n this.set = set;\n }\n /**\n @internal\n */\n get type() { return NodeType.none; }\n /**\n @internal\n */\n toString() {\n let result = [];\n for (let index = 0; index < this.buffer.length;) {\n result.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result.join(\",\");\n }\n /**\n @internal\n */\n childString(index) {\n let id = this.buffer[index], endIndex = this.buffer[index + 3];\n let type = this.set.types[id], result = type.name;\n if (/\\W/.test(result) && !type.isError)\n result = JSON.stringify(result);\n index += 4;\n if (endIndex == index)\n return result;\n let children = [];\n while (index < endIndex) {\n children.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result + \"(\" + children.join(\",\") + \")\";\n }\n /**\n @internal\n */\n findChild(startIndex, endIndex, dir, pos, side) {\n let { buffer } = this, pick = -1;\n for (let i = startIndex; i != endIndex; i = buffer[i + 3]) {\n if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) {\n pick = i;\n if (dir > 0)\n break;\n }\n }\n return pick;\n }\n /**\n @internal\n */\n slice(startI, endI, from) {\n let b = this.buffer;\n let copy = new Uint16Array(endI - startI), len = 0;\n for (let i = startI, j = 0; i < endI;) {\n copy[j++] = b[i++];\n copy[j++] = b[i++] - from;\n let to = copy[j++] = b[i++] - from;\n copy[j++] = b[i++] - startI;\n len = Math.max(len, to);\n }\n return new TreeBuffer(copy, len, this.set);\n }\n}\nfunction checkSide(side, pos, from, to) {\n switch (side) {\n case -2 /* Side.Before */: return from < pos;\n case -1 /* Side.AtOrBefore */: return to >= pos && from < pos;\n case 0 /* Side.Around */: return from < pos && to > pos;\n case 1 /* Side.AtOrAfter */: return from <= pos && to > pos;\n case 2 /* Side.After */: return to > pos;\n case 4 /* Side.DontCare */: return true;\n }\n}\nfunction resolveNode(node, pos, side, overlays) {\n var _a;\n // Move up to a node that actually holds the position, if possible\n while (node.from == node.to ||\n (side < 1 ? node.from >= pos : node.from > pos) ||\n (side > -1 ? node.to <= pos : node.to < pos)) {\n let parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent;\n if (!parent)\n return node;\n node = parent;\n }\n let mode = overlays ? 0 : IterMode.IgnoreOverlays;\n // Must go up out of overlays when those do not overlap with pos\n if (overlays)\n for (let scan = node, parent = scan.parent; parent; scan = parent, parent = scan.parent) {\n if (scan instanceof TreeNode && scan.index < 0 && ((_a = parent.enter(pos, side, mode)) === null || _a === void 0 ? void 0 : _a.from) != scan.from)\n node = parent;\n }\n for (;;) {\n let inner = node.enter(pos, side, mode);\n if (!inner)\n return node;\n node = inner;\n }\n}\nclass BaseNode {\n cursor(mode = 0) { return new TreeCursor(this, mode); }\n getChild(type, before = null, after = null) {\n let r = getChildren(this, type, before, after);\n return r.length ? r[0] : null;\n }\n getChildren(type, before = null, after = null) {\n return getChildren(this, type, before, after);\n }\n resolve(pos, side = 0) {\n return resolveNode(this, pos, side, false);\n }\n resolveInner(pos, side = 0) {\n return resolveNode(this, pos, side, true);\n }\n matchContext(context) {\n return matchNodeContext(this, context);\n }\n enterUnfinishedNodesBefore(pos) {\n let scan = this.childBefore(pos), node = this;\n while (scan) {\n let last = scan.lastChild;\n if (!last || last.to != scan.to)\n break;\n if (last.type.isError && last.from == last.to) {\n node = scan;\n scan = last.prevSibling;\n }\n else {\n scan = last;\n }\n }\n return node;\n }\n get node() { return this; }\n get next() { return this.parent; }\n}\nclass TreeNode extends BaseNode {\n constructor(_tree, from, \n // Index in parent node, set to -1 if the node is not a direct child of _parent.node (overlay)\n index, _parent) {\n super();\n this._tree = _tree;\n this.from = from;\n this.index = index;\n this._parent = _parent;\n }\n get type() { return this._tree.type; }\n get name() { return this._tree.type.name; }\n get to() { return this.from + this._tree.length; }\n nextChild(i, dir, pos, side, mode = 0) {\n for (let parent = this;;) {\n for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {\n let next = children[i], start = positions[i] + parent.from;\n if (!checkSide(side, pos, start, start + next.length))\n continue;\n if (next instanceof TreeBuffer) {\n if (mode & IterMode.ExcludeBuffers)\n continue;\n let index = next.findChild(0, next.buffer.length, dir, pos - start, side);\n if (index > -1)\n return new BufferNode(new BufferContext(parent, next, i, start), null, index);\n }\n else if ((mode & IterMode.IncludeAnonymous) || (!next.type.isAnonymous || hasChild(next))) {\n let mounted;\n if (!(mode & IterMode.IgnoreMounts) && (mounted = MountedTree.get(next)) && !mounted.overlay)\n return new TreeNode(mounted.tree, start, i, parent);\n let inner = new TreeNode(next, start, i, parent);\n return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner\n : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);\n }\n }\n if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)\n return null;\n if (parent.index >= 0)\n i = parent.index + dir;\n else\n i = dir < 0 ? -1 : parent._parent._tree.children.length;\n parent = parent._parent;\n if (!parent)\n return null;\n }\n }\n get firstChild() { return this.nextChild(0, 1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }\n enter(pos, side, mode = 0) {\n let mounted;\n if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {\n let rPos = pos - this.from;\n for (let { from, to } of mounted.overlay) {\n if ((side > 0 ? from <= rPos : from < rPos) &&\n (side < 0 ? to >= rPos : to > rPos))\n return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);\n }\n }\n return this.nextChild(0, 1, pos, side, mode);\n }\n nextSignificantParent() {\n let val = this;\n while (val.type.isAnonymous && val._parent)\n val = val._parent;\n return val;\n }\n get parent() {\n return this._parent ? this._parent.nextSignificantParent() : null;\n }\n get nextSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index + 1, 1, 0, 4 /* Side.DontCare */) : null;\n }\n get prevSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4 /* Side.DontCare */) : null;\n }\n get tree() { return this._tree; }\n toTree() { return this._tree; }\n /**\n @internal\n */\n toString() { return this._tree.toString(); }\n}\nfunction getChildren(node, type, before, after) {\n let cur = node.cursor(), result = [];\n if (!cur.firstChild())\n return result;\n if (before != null)\n for (let found = false; !found;) {\n found = cur.type.is(before);\n if (!cur.nextSibling())\n return result;\n }\n for (;;) {\n if (after != null && cur.type.is(after))\n return result;\n if (cur.type.is(type))\n result.push(cur.node);\n if (!cur.nextSibling())\n return after == null ? result : [];\n }\n}\nfunction matchNodeContext(node, context, i = context.length - 1) {\n for (let p = node.parent; i >= 0; p = p.parent) {\n if (!p)\n return false;\n if (!p.type.isAnonymous) {\n if (context[i] && context[i] != p.name)\n return false;\n i--;\n }\n }\n return true;\n}\nclass BufferContext {\n constructor(parent, buffer, index, start) {\n this.parent = parent;\n this.buffer = buffer;\n this.index = index;\n this.start = start;\n }\n}\nclass BufferNode extends BaseNode {\n get name() { return this.type.name; }\n get from() { return this.context.start + this.context.buffer.buffer[this.index + 1]; }\n get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; }\n constructor(context, _parent, index) {\n super();\n this.context = context;\n this._parent = _parent;\n this.index = index;\n this.type = context.buffer.set.types[context.buffer.buffer[index]];\n }\n child(dir, pos, side) {\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get firstChild() { return this.child(1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }\n enter(pos, side, mode = 0) {\n if (mode & IterMode.ExcludeBuffers)\n return null;\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get parent() {\n return this._parent || this.context.parent.nextSignificantParent();\n }\n externalSibling(dir) {\n return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4 /* Side.DontCare */);\n }\n get nextSibling() {\n let { buffer } = this.context;\n let after = buffer.buffer[this.index + 3];\n if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length))\n return new BufferNode(this.context, this._parent, after);\n return this.externalSibling(1);\n }\n get prevSibling() {\n let { buffer } = this.context;\n let parentStart = this._parent ? this._parent.index + 4 : 0;\n if (this.index == parentStart)\n return this.externalSibling(-1);\n return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n get tree() { return null; }\n toTree() {\n let children = [], positions = [];\n let { buffer } = this.context;\n let startI = this.index + 4, endI = buffer.buffer[this.index + 3];\n if (endI > startI) {\n let from = buffer.buffer[this.index + 1];\n children.push(buffer.slice(startI, endI, from));\n positions.push(0);\n }\n return new Tree(this.type, children, positions, this.to - this.from);\n }\n /**\n @internal\n */\n toString() { return this.context.buffer.childString(this.index); }\n}\nfunction iterStack(heads) {\n if (!heads.length)\n return null;\n let pick = 0, picked = heads[0];\n for (let i = 1; i < heads.length; i++) {\n let node = heads[i];\n if (node.from > picked.from || node.to < picked.to) {\n picked = node;\n pick = i;\n }\n }\n let next = picked instanceof TreeNode && picked.index < 0 ? null : picked.parent;\n let newHeads = heads.slice();\n if (next)\n newHeads[pick] = next;\n else\n newHeads.splice(pick, 1);\n return new StackIterator(newHeads, picked);\n}\nclass StackIterator {\n constructor(heads, node) {\n this.heads = heads;\n this.node = node;\n }\n get next() { return iterStack(this.heads); }\n}\nfunction stackIterator(tree, pos, side) {\n let inner = tree.resolveInner(pos, side), layers = null;\n for (let scan = inner instanceof TreeNode ? inner : inner.context.parent; scan; scan = scan.parent) {\n if (scan.index < 0) { // This is an overlay root\n let parent = scan.parent;\n (layers || (layers = [inner])).push(parent.resolve(pos, side));\n scan = parent;\n }\n else {\n let mount = MountedTree.get(scan.tree);\n // Relevant overlay branching off\n if (mount && mount.overlay && mount.overlay[0].from <= pos && mount.overlay[mount.overlay.length - 1].to >= pos) {\n let root = new TreeNode(mount.tree, mount.overlay[0].from + scan.from, -1, scan);\n (layers || (layers = [inner])).push(resolveNode(root, pos, side, false));\n }\n }\n }\n return layers ? iterStack(layers) : inner;\n}\n/**\nA tree cursor object focuses on a given node in a syntax tree, and\nallows you to move to adjacent nodes.\n*/\nclass TreeCursor {\n /**\n Shorthand for `.type.name`.\n */\n get name() { return this.type.name; }\n /**\n @internal\n */\n constructor(node, \n /**\n @internal\n */\n mode = 0) {\n this.mode = mode;\n /**\n @internal\n */\n this.buffer = null;\n this.stack = [];\n /**\n @internal\n */\n this.index = 0;\n this.bufferNode = null;\n if (node instanceof TreeNode) {\n this.yieldNode(node);\n }\n else {\n this._tree = node.context.parent;\n this.buffer = node.context;\n for (let n = node._parent; n; n = n._parent)\n this.stack.unshift(n.index);\n this.bufferNode = node;\n this.yieldBuf(node.index);\n }\n }\n yieldNode(node) {\n if (!node)\n return false;\n this._tree = node;\n this.type = node.type;\n this.from = node.from;\n this.to = node.to;\n return true;\n }\n yieldBuf(index, type) {\n this.index = index;\n let { start, buffer } = this.buffer;\n this.type = type || buffer.set.types[buffer.buffer[index]];\n this.from = start + buffer.buffer[index + 1];\n this.to = start + buffer.buffer[index + 2];\n return true;\n }\n /**\n @internal\n */\n yield(node) {\n if (!node)\n return false;\n if (node instanceof TreeNode) {\n this.buffer = null;\n return this.yieldNode(node);\n }\n this.buffer = node.context;\n return this.yieldBuf(node.index, node.type);\n }\n /**\n @internal\n */\n toString() {\n return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n }\n /**\n @internal\n */\n enterChild(dir, pos, side) {\n if (!this.buffer)\n return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode));\n let { buffer } = this.buffer;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side);\n if (index < 0)\n return false;\n this.stack.push(this.index);\n return this.yieldBuf(index);\n }\n /**\n Move the cursor to this node's first child. When this returns\n false, the node has no child, and the cursor has not been moved.\n */\n firstChild() { return this.enterChild(1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to this node's last child.\n */\n lastChild() { return this.enterChild(-1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to the first child that ends after `pos`.\n */\n childAfter(pos) { return this.enterChild(1, pos, 2 /* Side.After */); }\n /**\n Move to the last child that starts before `pos`.\n */\n childBefore(pos) { return this.enterChild(-1, pos, -2 /* Side.Before */); }\n /**\n Move the cursor to the child around `pos`. If side is -1 the\n child may end at that position, when 1 it may start there. This\n will also enter [overlaid](#common.MountedTree.overlay)\n [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n set to false.\n */\n enter(pos, side, mode = this.mode) {\n if (!this.buffer)\n return this.yield(this._tree.enter(pos, side, mode));\n return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side);\n }\n /**\n Move to the node's parent node, if this isn't the top node.\n */\n parent() {\n if (!this.buffer)\n return this.yieldNode((this.mode & IterMode.IncludeAnonymous) ? this._tree._parent : this._tree.parent);\n if (this.stack.length)\n return this.yieldBuf(this.stack.pop());\n let parent = (this.mode & IterMode.IncludeAnonymous) ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n this.buffer = null;\n return this.yieldNode(parent);\n }\n /**\n @internal\n */\n sibling(dir) {\n if (!this.buffer)\n return !this._tree._parent ? false\n : this.yield(this._tree.index < 0 ? null\n : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode));\n let { buffer } = this.buffer, d = this.stack.length - 1;\n if (dir < 0) {\n let parentStart = d < 0 ? 0 : this.stack[d] + 4;\n if (this.index != parentStart)\n return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n else {\n let after = buffer.buffer[this.index + 3];\n if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3]))\n return this.yieldBuf(after);\n }\n return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode)) : false;\n }\n /**\n Move to this node's next sibling, if any.\n */\n nextSibling() { return this.sibling(1); }\n /**\n Move to this node's previous sibling, if any.\n */\n prevSibling() { return this.sibling(-1); }\n atLastNode(dir) {\n let index, parent, { buffer } = this;\n if (buffer) {\n if (dir > 0) {\n if (this.index < buffer.buffer.buffer.length)\n return false;\n }\n else {\n for (let i = 0; i < this.index; i++)\n if (buffer.buffer.buffer[i + 3] < this.index)\n return false;\n }\n ({ index, parent } = buffer);\n }\n else {\n ({ index, _parent: parent } = this._tree);\n }\n for (; parent; { index, _parent: parent } = parent) {\n if (index > -1)\n for (let i = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i != e; i += dir) {\n let child = parent._tree.children[i];\n if ((this.mode & IterMode.IncludeAnonymous) ||\n child instanceof TreeBuffer ||\n !child.type.isAnonymous ||\n hasChild(child))\n return false;\n }\n }\n return true;\n }\n move(dir, enter) {\n if (enter && this.enterChild(dir, 0, 4 /* Side.DontCare */))\n return true;\n for (;;) {\n if (this.sibling(dir))\n return true;\n if (this.atLastNode(dir) || !this.parent())\n return false;\n }\n }\n /**\n Move to the next node in a\n [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n traversal, going from a node to its first child or, if the\n current node is empty or `enter` is false, its next sibling or\n the next sibling of the first parent node that has one.\n */\n next(enter = true) { return this.move(1, enter); }\n /**\n Move to the next node in a last-to-first pre-order traveral. A\n node is followed by its last child or, if it has none, its\n previous sibling or the previous sibling of the first parent\n node that has one.\n */\n prev(enter = true) { return this.move(-1, enter); }\n /**\n Move the cursor to the innermost node that covers `pos`. If\n `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n it will enter nodes that start at `pos`.\n */\n moveTo(pos, side = 0) {\n // Move up to a node that actually holds the position, if possible\n while (this.from == this.to ||\n (side < 1 ? this.from >= pos : this.from > pos) ||\n (side > -1 ? this.to <= pos : this.to < pos))\n if (!this.parent())\n break;\n // Then scan down into child nodes as far as possible\n while (this.enterChild(1, pos, side)) { }\n return this;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) at the cursor's current\n position.\n */\n get node() {\n if (!this.buffer)\n return this._tree;\n let cache = this.bufferNode, result = null, depth = 0;\n if (cache && cache.context == this.buffer) {\n scan: for (let index = this.index, d = this.stack.length; d >= 0;) {\n for (let c = cache; c; c = c._parent)\n if (c.index == index) {\n if (index == this.index)\n return c;\n result = c;\n depth = d + 1;\n break scan;\n }\n index = this.stack[--d];\n }\n }\n for (let i = depth; i < this.stack.length; i++)\n result = new BufferNode(this.buffer, result, this.stack[i]);\n return this.bufferNode = new BufferNode(this.buffer, result, this.index);\n }\n /**\n Get the [tree](#common.Tree) that represents the current node, if\n any. Will return null when the node is in a [tree\n buffer](#common.TreeBuffer).\n */\n get tree() {\n return this.buffer ? null : this._tree._tree;\n }\n /**\n Iterate over the current node and all its descendants, calling\n `enter` when entering a node and `leave`, if given, when leaving\n one. When `enter` returns `false`, any children of that node are\n skipped, and `leave` isn't called for it.\n */\n iterate(enter, leave) {\n for (let depth = 0;;) {\n let mustLeave = false;\n if (this.type.isAnonymous || enter(this) !== false) {\n if (this.firstChild()) {\n depth++;\n continue;\n }\n if (!this.type.isAnonymous)\n mustLeave = true;\n }\n for (;;) {\n if (mustLeave && leave)\n leave(this);\n mustLeave = this.type.isAnonymous;\n if (this.nextSibling())\n break;\n if (!depth)\n return;\n this.parent();\n depth--;\n mustLeave = true;\n }\n }\n }\n /**\n Test whether the current node matches a given context—a sequence\n of direct parent node names. Empty strings in the context array\n are treated as wildcards.\n */\n matchContext(context) {\n if (!this.buffer)\n return matchNodeContext(this.node, context);\n let { buffer } = this.buffer, { types } = buffer.set;\n for (let i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) {\n if (d < 0)\n return matchNodeContext(this.node, context, i);\n let type = types[buffer.buffer[this.stack[d]]];\n if (!type.isAnonymous) {\n if (context[i] && context[i] != type.name)\n return false;\n i--;\n }\n }\n return true;\n }\n}\nfunction hasChild(tree) {\n return tree.children.some(ch => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch));\n}\nfunction buildTree(data) {\n var _a;\n let { buffer, nodeSet, maxBufferLength = DefaultBufferLength, reused = [], minRepeatType = nodeSet.types.length } = data;\n let cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer;\n let types = nodeSet.types;\n let contextHash = 0, lookAhead = 0;\n function takeNode(parentStart, minPos, children, positions, inRepeat, depth) {\n let { id, start, end, size } = cursor;\n let lookAheadAtStart = lookAhead;\n while (size < 0) {\n cursor.next();\n if (size == -1 /* SpecialRecord.Reuse */) {\n let node = reused[id];\n children.push(node);\n positions.push(start - parentStart);\n return;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) { // Context change\n contextHash = id;\n return;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n return;\n }\n else {\n throw new RangeError(`Unrecognized record size: ${size}`);\n }\n }\n let type = types[id], node, buffer;\n let startPos = start - parentStart;\n if (end - start <= maxBufferLength && (buffer = findBufferSize(cursor.pos - minPos, inRepeat))) {\n // Small enough for a buffer, and no reused nodes inside\n let data = new Uint16Array(buffer.size - buffer.skip);\n let endPos = cursor.pos - buffer.size, index = data.length;\n while (cursor.pos > endPos)\n index = copyToBuffer(buffer.start, data, index);\n node = new TreeBuffer(data, end - buffer.start, nodeSet);\n startPos = buffer.start - parentStart;\n }\n else { // Make it a node\n let endPos = cursor.pos - size;\n cursor.next();\n let localChildren = [], localPositions = [];\n let localInRepeat = id >= minRepeatType ? id : -1;\n let lastGroup = 0, lastEnd = end;\n while (cursor.pos > endPos) {\n if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) {\n if (cursor.end <= lastEnd - maxBufferLength) {\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart);\n lastGroup = localChildren.length;\n lastEnd = cursor.end;\n }\n cursor.next();\n }\n else if (depth > 2500 /* CutOff.Depth */) {\n takeFlatNode(start, endPos, localChildren, localPositions);\n }\n else {\n takeNode(start, endPos, localChildren, localPositions, localInRepeat, depth + 1);\n }\n }\n if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length)\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart);\n localChildren.reverse();\n localPositions.reverse();\n if (localInRepeat > -1 && lastGroup > 0) {\n let make = makeBalanced(type);\n node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make);\n }\n else {\n node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end);\n }\n }\n children.push(node);\n positions.push(startPos);\n }\n function takeFlatNode(parentStart, minPos, children, positions) {\n let nodes = []; // Temporary, inverted array of leaf nodes found, with absolute positions\n let nodeCount = 0, stopAt = -1;\n while (cursor.pos > minPos) {\n let { id, start, end, size } = cursor;\n if (size > 4) { // Not a leaf\n cursor.next();\n }\n else if (stopAt > -1 && start < stopAt) {\n break;\n }\n else {\n if (stopAt < 0)\n stopAt = end - maxBufferLength;\n nodes.push(id, start, end);\n nodeCount++;\n cursor.next();\n }\n }\n if (nodeCount) {\n let buffer = new Uint16Array(nodeCount * 4);\n let start = nodes[nodes.length - 2];\n for (let i = nodes.length - 3, j = 0; i >= 0; i -= 3) {\n buffer[j++] = nodes[i];\n buffer[j++] = nodes[i + 1] - start;\n buffer[j++] = nodes[i + 2] - start;\n buffer[j++] = j;\n }\n children.push(new TreeBuffer(buffer, nodes[2] - start, nodeSet));\n positions.push(start - parentStart);\n }\n }\n function makeBalanced(type) {\n return (children, positions, length) => {\n let lookAhead = 0, lastI = children.length - 1, last, lookAheadProp;\n if (lastI >= 0 && (last = children[lastI]) instanceof Tree) {\n if (!lastI && last.type == type && last.length == length)\n return last;\n if (lookAheadProp = last.prop(NodeProp.lookAhead))\n lookAhead = positions[lastI] + last.length + lookAheadProp;\n }\n return makeTree(type, children, positions, length, lookAhead);\n };\n }\n function makeRepeatLeaf(children, positions, base, i, from, to, type, lookAhead) {\n let localChildren = [], localPositions = [];\n while (children.length > i) {\n localChildren.push(children.pop());\n localPositions.push(positions.pop() + base - from);\n }\n children.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead - to));\n positions.push(from - base);\n }\n function makeTree(type, children, positions, length, lookAhead = 0, props) {\n if (contextHash) {\n let pair = [NodeProp.contextHash, contextHash];\n props = props ? [pair].concat(props) : [pair];\n }\n if (lookAhead > 25) {\n let pair = [NodeProp.lookAhead, lookAhead];\n props = props ? [pair].concat(props) : [pair];\n }\n return new Tree(type, children, positions, length, props);\n }\n function findBufferSize(maxSize, inRepeat) {\n // Scan through the buffer to find previous siblings that fit\n // together in a TreeBuffer, and don't contain any reused nodes\n // (which can't be stored in a buffer).\n // If `inRepeat` is > -1, ignore node boundaries of that type for\n // nesting, but make sure the end falls either at the start\n // (`maxSize`) or before such a node.\n let fork = cursor.fork();\n let size = 0, start = 0, skip = 0, minStart = fork.end - maxBufferLength;\n let result = { size: 0, start: 0, skip: 0 };\n scan: for (let minPos = fork.pos - maxSize; fork.pos > minPos;) {\n let nodeSize = fork.size;\n // Pretend nested repeat nodes of the same type don't exist\n if (fork.id == inRepeat && nodeSize >= 0) {\n // Except that we store the current state as a valid return\n // value.\n result.size = size;\n result.start = start;\n result.skip = skip;\n skip += 4;\n size += 4;\n fork.next();\n continue;\n }\n let startPos = fork.pos - nodeSize;\n if (nodeSize < 0 || startPos < minPos || fork.start < minStart)\n break;\n let localSkipped = fork.id >= minRepeatType ? 4 : 0;\n let nodeStart = fork.start;\n fork.next();\n while (fork.pos > startPos) {\n if (fork.size < 0) {\n if (fork.size == -3 /* SpecialRecord.ContextChange */)\n localSkipped += 4;\n else\n break scan;\n }\n else if (fork.id >= minRepeatType) {\n localSkipped += 4;\n }\n fork.next();\n }\n start = nodeStart;\n size += nodeSize;\n skip += localSkipped;\n }\n if (inRepeat < 0 || size == maxSize) {\n result.size = size;\n result.start = start;\n result.skip = skip;\n }\n return result.size > 4 ? result : undefined;\n }\n function copyToBuffer(bufferStart, buffer, index) {\n let { id, start, end, size } = cursor;\n cursor.next();\n if (size >= 0 && id < minRepeatType) {\n let startIndex = index;\n if (size > 4) {\n let endPos = cursor.pos - (size - 4);\n while (cursor.pos > endPos)\n index = copyToBuffer(bufferStart, buffer, index);\n }\n buffer[--index] = startIndex;\n buffer[--index] = end - bufferStart;\n buffer[--index] = start - bufferStart;\n buffer[--index] = id;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) {\n contextHash = id;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n }\n return index;\n }\n let children = [], positions = [];\n while (cursor.pos > 0)\n takeNode(data.start || 0, data.bufferStart || 0, children, positions, -1, 0);\n let length = (_a = data.length) !== null && _a !== void 0 ? _a : (children.length ? positions[0] + children[0].length : 0);\n return new Tree(types[data.topID], children.reverse(), positions.reverse(), length);\n}\nconst nodeSizeCache = new WeakMap;\nfunction nodeSize(balanceType, node) {\n if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType)\n return 1;\n let size = nodeSizeCache.get(node);\n if (size == null) {\n size = 1;\n for (let child of node.children) {\n if (child.type != balanceType || !(child instanceof Tree)) {\n size = 1;\n break;\n }\n size += nodeSize(balanceType, child);\n }\n nodeSizeCache.set(node, size);\n }\n return size;\n}\nfunction balanceRange(\n// The type the balanced tree's inner nodes.\nbalanceType, \n// The direct children and their positions\nchildren, positions, \n// The index range in children/positions to use\nfrom, to, \n// The start position of the nodes, relative to their parent.\nstart, \n// Length of the outer node\nlength, \n// Function to build the top node of the balanced tree\nmkTop, \n// Function to build internal nodes for the balanced tree\nmkTree) {\n let total = 0;\n for (let i = from; i < to; i++)\n total += nodeSize(balanceType, children[i]);\n let maxChild = Math.ceil((total * 1.5) / 8 /* Balance.BranchFactor */);\n let localChildren = [], localPositions = [];\n function divide(children, positions, from, to, offset) {\n for (let i = from; i < to;) {\n let groupFrom = i, groupStart = positions[i], groupSize = nodeSize(balanceType, children[i]);\n i++;\n for (; i < to; i++) {\n let nextSize = nodeSize(balanceType, children[i]);\n if (groupSize + nextSize >= maxChild)\n break;\n groupSize += nextSize;\n }\n if (i == groupFrom + 1) {\n if (groupSize > maxChild) {\n let only = children[groupFrom]; // Only trees can have a size > 1\n divide(only.children, only.positions, 0, only.children.length, positions[groupFrom] + offset);\n continue;\n }\n localChildren.push(children[groupFrom]);\n }\n else {\n let length = positions[i - 1] + children[i - 1].length - groupStart;\n localChildren.push(balanceRange(balanceType, children, positions, groupFrom, i, groupStart, length, null, mkTree));\n }\n localPositions.push(groupStart + offset - start);\n }\n }\n divide(children, positions, from, to, 0);\n return (mkTop || mkTree)(localChildren, localPositions, length);\n}\n/**\nProvides a way to associate values with pieces of trees. As long\nas that part of the tree is reused, the associated values can be\nretrieved from an updated tree.\n*/\nclass NodeWeakMap {\n constructor() {\n this.map = new WeakMap();\n }\n setBuffer(buffer, index, value) {\n let inner = this.map.get(buffer);\n if (!inner)\n this.map.set(buffer, inner = new Map);\n inner.set(index, value);\n }\n getBuffer(buffer, index) {\n let inner = this.map.get(buffer);\n return inner && inner.get(index);\n }\n /**\n Set the value for this syntax node.\n */\n set(node, value) {\n if (node instanceof BufferNode)\n this.setBuffer(node.context.buffer, node.index, value);\n else if (node instanceof TreeNode)\n this.map.set(node.tree, value);\n }\n /**\n Retrieve value for this syntax node, if it exists in the map.\n */\n get(node) {\n return node instanceof BufferNode ? this.getBuffer(node.context.buffer, node.index)\n : node instanceof TreeNode ? this.map.get(node.tree) : undefined;\n }\n /**\n Set the value for the node that a cursor currently points to.\n */\n cursorSet(cursor, value) {\n if (cursor.buffer)\n this.setBuffer(cursor.buffer.buffer, cursor.index, value);\n else\n this.map.set(cursor.tree, value);\n }\n /**\n Retrieve the value for the node that a cursor currently points\n to.\n */\n cursorGet(cursor) {\n return cursor.buffer ? this.getBuffer(cursor.buffer.buffer, cursor.index) : this.map.get(cursor.tree);\n }\n}\n\n/**\nTree fragments are used during [incremental\nparsing](#common.Parser.startParse) to track parts of old trees\nthat can be reused in a new parse. An array of fragments is used\nto track regions of an old tree whose nodes might be reused in new\nparses. Use the static\n[`applyChanges`](#common.TreeFragment^applyChanges) method to\nupdate fragments for document changes.\n*/\nclass TreeFragment {\n /**\n Construct a tree fragment. You'll usually want to use\n [`addTree`](#common.TreeFragment^addTree) and\n [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n calling this directly.\n */\n constructor(\n /**\n The start of the unchanged range pointed to by this fragment.\n This refers to an offset in the _updated_ document (as opposed\n to the original tree).\n */\n from, \n /**\n The end of the unchanged range.\n */\n to, \n /**\n The tree that this fragment is based on.\n */\n tree, \n /**\n The offset between the fragment's tree and the document that\n this fragment can be used against. Add this when going from\n document to tree positions, subtract it to go from tree to\n document positions.\n */\n offset, openStart = false, openEnd = false) {\n this.from = from;\n this.to = to;\n this.tree = tree;\n this.offset = offset;\n this.open = (openStart ? 1 /* Open.Start */ : 0) | (openEnd ? 2 /* Open.End */ : 0);\n }\n /**\n Whether the start of the fragment represents the start of a\n parse, or the end of a change. (In the second case, it may not\n be safe to reuse some nodes at the start, depending on the\n parsing algorithm.)\n */\n get openStart() { return (this.open & 1 /* Open.Start */) > 0; }\n /**\n Whether the end of the fragment represents the end of a\n full-document parse, or the start of a change.\n */\n get openEnd() { return (this.open & 2 /* Open.End */) > 0; }\n /**\n Create a set of fragments from a freshly parsed tree, or update\n an existing set of fragments by replacing the ones that overlap\n with a tree with content from the new tree. When `partial` is\n true, the parse is treated as incomplete, and the resulting\n fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n true.\n */\n static addTree(tree, fragments = [], partial = false) {\n let result = [new TreeFragment(0, tree.length, tree, 0, false, partial)];\n for (let f of fragments)\n if (f.to > tree.length)\n result.push(f);\n return result;\n }\n /**\n Apply a set of edits to an array of fragments, removing or\n splitting fragments as necessary to remove edited ranges, and\n adjusting offsets for fragments that moved.\n */\n static applyChanges(fragments, changes, minGap = 128) {\n if (!changes.length)\n return fragments;\n let result = [];\n let fI = 1, nextF = fragments.length ? fragments[0] : null;\n for (let cI = 0, pos = 0, off = 0;; cI++) {\n let nextC = cI < changes.length ? changes[cI] : null;\n let nextPos = nextC ? nextC.fromA : 1e9;\n if (nextPos - pos >= minGap)\n while (nextF && nextF.from < nextPos) {\n let cut = nextF;\n if (pos >= cut.from || nextPos <= cut.to || off) {\n let fFrom = Math.max(cut.from, pos) - off, fTo = Math.min(cut.to, nextPos) - off;\n cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC);\n }\n if (cut)\n result.push(cut);\n if (nextF.to > nextPos)\n break;\n nextF = fI < fragments.length ? fragments[fI++] : null;\n }\n if (!nextC)\n break;\n pos = nextC.toA;\n off = nextC.toA - nextC.toB;\n }\n return result;\n }\n}\n/**\nA superclass that parsers should extend.\n*/\nclass Parser {\n /**\n Start a parse, returning a [partial parse](#common.PartialParse)\n object. [`fragments`](#common.TreeFragment) can be passed in to\n make the parse incremental.\n \n By default, the entire input is parsed. You can pass `ranges`,\n which should be a sorted array of non-empty, non-overlapping\n ranges, to parse only those ranges. The tree returned in that\n case will start at `ranges[0].from`.\n */\n startParse(input, fragments, ranges) {\n if (typeof input == \"string\")\n input = new StringInput(input);\n ranges = !ranges ? [new Range(0, input.length)] : ranges.length ? ranges.map(r => new Range(r.from, r.to)) : [new Range(0, 0)];\n return this.createParse(input, fragments || [], ranges);\n }\n /**\n Run a full parse, returning the resulting tree.\n */\n parse(input, fragments, ranges) {\n let parse = this.startParse(input, fragments, ranges);\n for (;;) {\n let done = parse.advance();\n if (done)\n return done;\n }\n }\n}\nclass StringInput {\n constructor(string) {\n this.string = string;\n }\n get length() { return this.string.length; }\n chunk(from) { return this.string.slice(from); }\n get lineChunks() { return false; }\n read(from, to) { return this.string.slice(from, to); }\n}\n\n/**\nCreate a parse wrapper that, after the inner parse completes,\nscans its tree for mixed language regions with the `nest`\nfunction, runs the resulting [inner parses](#common.NestedParse),\nand then [mounts](#common.NodeProp^mounted) their results onto the\ntree.\n*/\nfunction parseMixed(nest) {\n return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);\n}\nclass InnerParse {\n constructor(parser, parse, overlay, target, from) {\n this.parser = parser;\n this.parse = parse;\n this.overlay = overlay;\n this.target = target;\n this.from = from;\n }\n}\nfunction checkRanges(ranges) {\n if (!ranges.length || ranges.some(r => r.from >= r.to))\n throw new RangeError(\"Invalid inner parse ranges given: \" + JSON.stringify(ranges));\n}\nclass ActiveOverlay {\n constructor(parser, predicate, mounts, index, start, target, prev) {\n this.parser = parser;\n this.predicate = predicate;\n this.mounts = mounts;\n this.index = index;\n this.start = start;\n this.target = target;\n this.prev = prev;\n this.depth = 0;\n this.ranges = [];\n }\n}\nconst stoppedInner = new NodeProp({ perNode: true });\nclass MixedParse {\n constructor(base, nest, input, fragments, ranges) {\n this.nest = nest;\n this.input = input;\n this.fragments = fragments;\n this.ranges = ranges;\n this.inner = [];\n this.innerDone = 0;\n this.baseTree = null;\n this.stoppedAt = null;\n this.baseParse = base;\n }\n advance() {\n if (this.baseParse) {\n let done = this.baseParse.advance();\n if (!done)\n return null;\n this.baseParse = null;\n this.baseTree = done;\n this.startInner();\n if (this.stoppedAt != null)\n for (let inner of this.inner)\n inner.parse.stopAt(this.stoppedAt);\n }\n if (this.innerDone == this.inner.length) {\n let result = this.baseTree;\n if (this.stoppedAt != null)\n result = new Tree(result.type, result.children, result.positions, result.length, result.propValues.concat([[stoppedInner, this.stoppedAt]]));\n return result;\n }\n let inner = this.inner[this.innerDone], done = inner.parse.advance();\n if (done) {\n this.innerDone++;\n // This is a somewhat dodgy but super helpful hack where we\n // patch up nodes created by the inner parse (and thus\n // presumably not aliased anywhere else) to hold the information\n // about the inner parse.\n let props = Object.assign(Object.create(null), inner.target.props);\n props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);\n inner.target.props = props;\n }\n return null;\n }\n get parsedPos() {\n if (this.baseParse)\n return 0;\n let pos = this.input.length;\n for (let i = this.innerDone; i < this.inner.length; i++) {\n if (this.inner[i].from < pos)\n pos = Math.min(pos, this.inner[i].parse.parsedPos);\n }\n return pos;\n }\n stopAt(pos) {\n this.stoppedAt = pos;\n if (this.baseParse)\n this.baseParse.stopAt(pos);\n else\n for (let i = this.innerDone; i < this.inner.length; i++)\n this.inner[i].parse.stopAt(pos);\n }\n startInner() {\n let fragmentCursor = new FragmentCursor(this.fragments);\n let overlay = null;\n let covered = null;\n let cursor = new TreeCursor(new TreeNode(this.baseTree, this.ranges[0].from, 0, null), IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n scan: for (let nest, isCovered;;) {\n let enter = true, range;\n if (this.stoppedAt != null && cursor.from >= this.stoppedAt) {\n enter = false;\n }\n else if (fragmentCursor.hasNode(cursor)) {\n if (overlay) {\n let match = overlay.mounts.find(m => m.frag.from <= cursor.from && m.frag.to >= cursor.to && m.mount.overlay);\n if (match)\n for (let r of match.mount.overlay) {\n let from = r.from + match.pos, to = r.to + match.pos;\n if (from >= cursor.from && to <= cursor.to && !overlay.ranges.some(r => r.from < to && r.to > from))\n overlay.ranges.push({ from, to });\n }\n }\n enter = false;\n }\n else if (covered && (isCovered = checkCover(covered.ranges, cursor.from, cursor.to))) {\n enter = isCovered != 2 /* Cover.Full */;\n }\n else if (!cursor.type.isAnonymous && (nest = this.nest(cursor, this.input)) &&\n (cursor.from < cursor.to || !nest.overlay)) {\n if (!cursor.tree)\n materialize(cursor);\n let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);\n if (typeof nest.overlay == \"function\") {\n overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);\n }\n else {\n let ranges = punchRanges(this.ranges, nest.overlay ||\n (cursor.from < cursor.to ? [new Range(cursor.from, cursor.to)] : []));\n if (ranges.length)\n checkRanges(ranges);\n if (ranges.length || !nest.overlay)\n this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)\n : nest.parser.startParse(\"\"), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));\n if (!nest.overlay)\n enter = false;\n else if (ranges.length)\n covered = { ranges, depth: 0, prev: covered };\n }\n }\n else if (overlay && (range = overlay.predicate(cursor))) {\n if (range === true)\n range = new Range(cursor.from, cursor.to);\n if (range.from < range.to)\n overlay.ranges.push(range);\n }\n if (enter && cursor.firstChild()) {\n if (overlay)\n overlay.depth++;\n if (covered)\n covered.depth++;\n }\n else {\n for (;;) {\n if (cursor.nextSibling())\n break;\n if (!cursor.parent())\n break scan;\n if (overlay && !--overlay.depth) {\n let ranges = punchRanges(this.ranges, overlay.ranges);\n if (ranges.length) {\n checkRanges(ranges);\n this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));\n }\n overlay = overlay.prev;\n }\n if (covered && !--covered.depth)\n covered = covered.prev;\n }\n }\n }\n }\n}\nfunction checkCover(covered, from, to) {\n for (let range of covered) {\n if (range.from >= to)\n break;\n if (range.to > from)\n return range.from <= from && range.to >= to ? 2 /* Cover.Full */ : 1 /* Cover.Partial */;\n }\n return 0 /* Cover.None */;\n}\n// Take a piece of buffer and convert it into a stand-alone\n// TreeBuffer.\nfunction sliceBuf(buf, startI, endI, nodes, positions, off) {\n if (startI < endI) {\n let from = buf.buffer[startI + 1];\n nodes.push(buf.slice(startI, endI, from));\n positions.push(from - off);\n }\n}\n// This function takes a node that's in a buffer, and converts it, and\n// its parent buffer nodes, into a Tree. This is again acting on the\n// assumption that the trees and buffers have been constructed by the\n// parse that was ran via the mix parser, and thus aren't shared with\n// any other code, making violations of the immutability safe.\nfunction materialize(cursor) {\n let { node } = cursor, stack = [];\n let buffer = node.context.buffer;\n // Scan up to the nearest tree\n do {\n stack.push(cursor.index);\n cursor.parent();\n } while (!cursor.tree);\n // Find the index of the buffer in that tree\n let base = cursor.tree, i = base.children.indexOf(buffer);\n let buf = base.children[i], b = buf.buffer, newStack = [i];\n // Split a level in the buffer, putting the nodes before and after\n // the child that contains `node` into new buffers.\n function split(startI, endI, type, innerOffset, length, stackPos) {\n let targetI = stack[stackPos];\n let children = [], positions = [];\n sliceBuf(buf, startI, targetI, children, positions, innerOffset);\n let from = b[targetI + 1], to = b[targetI + 2];\n newStack.push(children.length);\n let child = stackPos\n ? split(targetI + 4, b[targetI + 3], buf.set.types[b[targetI]], from, to - from, stackPos - 1)\n : node.toTree();\n children.push(child);\n positions.push(from - innerOffset);\n sliceBuf(buf, b[targetI + 3], endI, children, positions, innerOffset);\n return new Tree(type, children, positions, length);\n }\n base.children[i] = split(0, b.length, NodeType.none, 0, buf.length, stack.length - 1);\n // Move the cursor back to the target node\n for (let index of newStack) {\n let tree = cursor.tree.children[index], pos = cursor.tree.positions[index];\n cursor.yield(new TreeNode(tree, pos + cursor.from, index, cursor._tree));\n }\n}\nclass StructureCursor {\n constructor(root, offset) {\n this.offset = offset;\n this.done = false;\n this.cursor = root.cursor(IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n }\n // Move to the first node (in pre-order) that starts at or after `pos`.\n moveTo(pos) {\n let { cursor } = this, p = pos - this.offset;\n while (!this.done && cursor.from < p) {\n if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;\n else if (!cursor.next(false))\n this.done = true;\n }\n }\n hasNode(cursor) {\n this.moveTo(cursor.from);\n if (!this.done && this.cursor.from + this.offset == cursor.from && this.cursor.tree) {\n for (let tree = this.cursor.tree;;) {\n if (tree == cursor.tree)\n return true;\n if (tree.children.length && tree.positions[0] == 0 && tree.children[0] instanceof Tree)\n tree = tree.children[0];\n else\n break;\n }\n }\n return false;\n }\n}\nclass FragmentCursor {\n constructor(fragments) {\n var _a;\n this.fragments = fragments;\n this.curTo = 0;\n this.fragI = 0;\n if (fragments.length) {\n let first = this.curFrag = fragments[0];\n this.curTo = (_a = first.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : first.to;\n this.inner = new StructureCursor(first.tree, -first.offset);\n }\n else {\n this.curFrag = this.inner = null;\n }\n }\n hasNode(node) {\n while (this.curFrag && node.from >= this.curTo)\n this.nextFrag();\n return this.curFrag && this.curFrag.from <= node.from && this.curTo >= node.to && this.inner.hasNode(node);\n }\n nextFrag() {\n var _a;\n this.fragI++;\n if (this.fragI == this.fragments.length) {\n this.curFrag = this.inner = null;\n }\n else {\n let frag = this.curFrag = this.fragments[this.fragI];\n this.curTo = (_a = frag.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : frag.to;\n this.inner = new StructureCursor(frag.tree, -frag.offset);\n }\n }\n findMounts(pos, parser) {\n var _a;\n let result = [];\n if (this.inner) {\n this.inner.cursor.moveTo(pos, 1);\n for (let pos = this.inner.cursor.node; pos; pos = pos.parent) {\n let mount = (_a = pos.tree) === null || _a === void 0 ? void 0 : _a.prop(NodeProp.mounted);\n if (mount && mount.parser == parser) {\n for (let i = this.fragI; i < this.fragments.length; i++) {\n let frag = this.fragments[i];\n if (frag.from >= pos.to)\n break;\n if (frag.tree == this.curFrag.tree)\n result.push({\n frag,\n pos: pos.from - frag.offset,\n mount\n });\n }\n }\n }\n }\n return result;\n }\n}\nfunction punchRanges(outer, ranges) {\n let copy = null, current = ranges;\n for (let i = 1, j = 0; i < outer.length; i++) {\n let gapFrom = outer[i - 1].to, gapTo = outer[i].from;\n for (; j < current.length; j++) {\n let r = current[j];\n if (r.from >= gapTo)\n break;\n if (r.to <= gapFrom)\n continue;\n if (!copy)\n current = copy = ranges.slice();\n if (r.from < gapFrom) {\n copy[j] = new Range(r.from, gapFrom);\n if (r.to > gapTo)\n copy.splice(j + 1, 0, new Range(gapTo, r.to));\n }\n else if (r.to > gapTo) {\n copy[j--] = new Range(gapTo, r.to);\n }\n else {\n copy.splice(j--, 1);\n }\n }\n }\n return current;\n}\nfunction findCoverChanges(a, b, from, to) {\n let iA = 0, iB = 0, inA = false, inB = false, pos = -1e9;\n let result = [];\n for (;;) {\n let nextA = iA == a.length ? 1e9 : inA ? a[iA].to : a[iA].from;\n let nextB = iB == b.length ? 1e9 : inB ? b[iB].to : b[iB].from;\n if (inA != inB) {\n let start = Math.max(pos, from), end = Math.min(nextA, nextB, to);\n if (start < end)\n result.push(new Range(start, end));\n }\n pos = Math.min(nextA, nextB);\n if (pos == 1e9)\n break;\n if (nextA == pos) {\n if (!inA)\n inA = true;\n else {\n inA = false;\n iA++;\n }\n }\n if (nextB == pos) {\n if (!inB)\n inB = true;\n else {\n inB = false;\n iB++;\n }\n }\n }\n return result;\n}\n// Given a number of fragments for the outer tree, and a set of ranges\n// to parse, find fragments for inner trees mounted around those\n// ranges, if any.\nfunction enterFragments(mounts, ranges) {\n let result = [];\n for (let { pos, mount, frag } of mounts) {\n let startPos = pos + (mount.overlay ? mount.overlay[0].from : 0), endPos = startPos + mount.tree.length;\n let from = Math.max(frag.from, startPos), to = Math.min(frag.to, endPos);\n if (mount.overlay) {\n let overlay = mount.overlay.map(r => new Range(r.from + pos, r.to + pos));\n let changes = findCoverChanges(ranges, overlay, from, to);\n for (let i = 0, pos = from;; i++) {\n let last = i == changes.length, end = last ? to : changes[i].from;\n if (end > pos)\n result.push(new TreeFragment(pos, end, mount.tree, -startPos, frag.from >= pos || frag.openStart, frag.to <= end || frag.openEnd));\n if (last)\n break;\n pos = changes[i].to;\n }\n }\n else {\n result.push(new TreeFragment(from, to, mount.tree, -startPos, frag.from >= startPos || frag.openStart, frag.to <= endPos || frag.openEnd));\n }\n }\n return result;\n}\n\nexport { DefaultBufferLength, IterMode, MountedTree, NodeProp, NodeSet, NodeType, NodeWeakMap, Parser, Tree, TreeBuffer, TreeCursor, TreeFragment, parseMixed };\n","import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */;\n if (lookaheadRecord)\n this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n if (end > this.pos || type <= parser.maxNode) {\n this.pos = end;\n if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n this.reducePos = end;\n }\n this.pushState(nextState, start);\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead > this.lookAhead) {\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n }\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */)\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < stack.score) {\n finished = stack;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { NodeProp } from '@lezer/common';\n\nlet nextTagID = 0;\n/**\nHighlighting tags are markers that denote a highlighting category.\nThey are [associated](#highlight.styleTags) with parts of a syntax\ntree by a language mode, and then mapped to an actual CSS style by\na [highlighter](#highlight.Highlighter).\n\nBecause syntax tree node types and highlight styles have to be\nable to talk the same language, CodeMirror uses a mostly _closed_\n[vocabulary](#highlight.tags) of syntax tags (as opposed to\ntraditional open string-based systems, which make it hard for\nhighlighting themes to cover all the tokens produced by the\nvarious languages).\n\nIt _is_ possible to [define](#highlight.Tag^define) your own\nhighlighting tags for system-internal use (where you control both\nthe language package and the highlighter), but such tags will not\nbe picked up by regular highlighters (though you can derive them\nfrom standard tags to allow highlighters to fall back to those).\n*/\nclass Tag {\n /**\n @internal\n */\n constructor(\n /**\n The optional name of the base tag @internal\n */\n name, \n /**\n The set of this tag and all its parent tags, starting with\n this one itself and sorted in order of decreasing specificity.\n */\n set, \n /**\n The base unmodified tag that this one is based on, if it's\n modified @internal\n */\n base, \n /**\n The modifiers applied to this.base @internal\n */\n modified) {\n this.name = name;\n this.set = set;\n this.base = base;\n this.modified = modified;\n /**\n @internal\n */\n this.id = nextTagID++;\n }\n toString() {\n let { name } = this;\n for (let mod of this.modified)\n if (mod.name)\n name = `${mod.name}(${name})`;\n return name;\n }\n static define(nameOrParent, parent) {\n let name = typeof nameOrParent == \"string\" ? nameOrParent : \"?\";\n if (nameOrParent instanceof Tag)\n parent = nameOrParent;\n if (parent === null || parent === void 0 ? void 0 : parent.base)\n throw new Error(\"Can not derive from a modified tag\");\n let tag = new Tag(name, [], null, []);\n tag.set.push(tag);\n if (parent)\n for (let t of parent.set)\n tag.set.push(t);\n return tag;\n }\n /**\n Define a tag _modifier_, which is a function that, given a tag,\n will return a tag that is a subtag of the original. Applying the\n same modifier to a twice tag will return the same value (`m1(t1)\n == m1(t1)`) and applying multiple modifiers will, regardless or\n order, produce the same tag (`m1(m2(t1)) == m2(m1(t1))`).\n \n When multiple modifiers are applied to a given base tag, each\n smaller set of modifiers is registered as a parent, so that for\n example `m1(m2(m3(t1)))` is a subtype of `m1(m2(t1))`,\n `m1(m3(t1)`, and so on.\n */\n static defineModifier(name) {\n let mod = new Modifier(name);\n return (tag) => {\n if (tag.modified.indexOf(mod) > -1)\n return tag;\n return Modifier.get(tag.base || tag, tag.modified.concat(mod).sort((a, b) => a.id - b.id));\n };\n }\n}\nlet nextModifierID = 0;\nclass Modifier {\n constructor(name) {\n this.name = name;\n this.instances = [];\n this.id = nextModifierID++;\n }\n static get(base, mods) {\n if (!mods.length)\n return base;\n let exists = mods[0].instances.find(t => t.base == base && sameArray(mods, t.modified));\n if (exists)\n return exists;\n let set = [], tag = new Tag(base.name, set, base, mods);\n for (let m of mods)\n m.instances.push(tag);\n let configs = powerSet(mods);\n for (let parent of base.set)\n if (!parent.modified.length)\n for (let config of configs)\n set.push(Modifier.get(parent, config));\n return tag;\n }\n}\nfunction sameArray(a, b) {\n return a.length == b.length && a.every((x, i) => x == b[i]);\n}\nfunction powerSet(array) {\n let sets = [[]];\n for (let i = 0; i < array.length; i++) {\n for (let j = 0, e = sets.length; j < e; j++) {\n sets.push(sets[j].concat(array[i]));\n }\n }\n return sets.sort((a, b) => b.length - a.length);\n}\n/**\nThis function is used to add a set of tags to a language syntax\nvia [`NodeSet.extend`](#common.NodeSet.extend) or\n[`LRParser.configure`](#lr.LRParser.configure).\n\nThe argument object maps node selectors to [highlighting\ntags](#highlight.Tag) or arrays of tags.\n\nNode selectors may hold one or more (space-separated) node paths.\nSuch a path can be a [node name](#common.NodeType.name), or\nmultiple node names (or `*` wildcards) separated by slash\ncharacters, as in `\"Block/Declaration/VariableName\"`. Such a path\nmatches the final node but only if its direct parent nodes are the\nother nodes mentioned. A `*` in such a path matches any parent,\nbut only a single level—wildcards that match multiple parents\naren't supported, both for efficiency reasons and because Lezer\ntrees make it rather hard to reason about what they would match.)\n\nA path can be ended with `/...` to indicate that the tag assigned\nto the node should also apply to all child nodes, even if they\nmatch their own style (by default, only the innermost style is\nused).\n\nWhen a path ends in `!`, as in `Attribute!`, no further matching\nhappens for the node's child nodes, and the entire node gets the\ngiven style.\n\nIn this notation, node names that contain `/`, `!`, `*`, or `...`\nmust be quoted as JSON strings.\n\nFor example:\n\n```javascript\nparser.withProps(\n styleTags({\n // Style Number and BigNumber nodes\n \"Number BigNumber\": tags.number,\n // Style Escape nodes whose parent is String\n \"String/Escape\": tags.escape,\n // Style anything inside Attributes nodes\n \"Attributes!\": tags.meta,\n // Add a style to all content inside Italic nodes\n \"Italic/...\": tags.emphasis,\n // Style InvalidString nodes as both `string` and `invalid`\n \"InvalidString\": [tags.string, tags.invalid],\n // Style the node named \"/\" as punctuation\n '\"/\"': tags.punctuation\n })\n)\n```\n*/\nfunction styleTags(spec) {\n let byName = Object.create(null);\n for (let prop in spec) {\n let tags = spec[prop];\n if (!Array.isArray(tags))\n tags = [tags];\n for (let part of prop.split(\" \"))\n if (part) {\n let pieces = [], mode = 2 /* Mode.Normal */, rest = part;\n for (let pos = 0;;) {\n if (rest == \"...\" && pos > 0 && pos + 3 == part.length) {\n mode = 1 /* Mode.Inherit */;\n break;\n }\n let m = /^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(rest);\n if (!m)\n throw new RangeError(\"Invalid path: \" + part);\n pieces.push(m[0] == \"*\" ? \"\" : m[0][0] == '\"' ? JSON.parse(m[0]) : m[0]);\n pos += m[0].length;\n if (pos == part.length)\n break;\n let next = part[pos++];\n if (pos == part.length && next == \"!\") {\n mode = 0 /* Mode.Opaque */;\n break;\n }\n if (next != \"/\")\n throw new RangeError(\"Invalid path: \" + part);\n rest = part.slice(pos);\n }\n let last = pieces.length - 1, inner = pieces[last];\n if (!inner)\n throw new RangeError(\"Invalid path: \" + part);\n let rule = new Rule(tags, mode, last > 0 ? pieces.slice(0, last) : null);\n byName[inner] = rule.sort(byName[inner]);\n }\n }\n return ruleNodeProp.add(byName);\n}\nconst ruleNodeProp = new NodeProp();\nclass Rule {\n constructor(tags, mode, context, next) {\n this.tags = tags;\n this.mode = mode;\n this.context = context;\n this.next = next;\n }\n get opaque() { return this.mode == 0 /* Mode.Opaque */; }\n get inherit() { return this.mode == 1 /* Mode.Inherit */; }\n sort(other) {\n if (!other || other.depth < this.depth) {\n this.next = other;\n return this;\n }\n other.next = this.sort(other.next);\n return other;\n }\n get depth() { return this.context ? this.context.length : 0; }\n}\nRule.empty = new Rule([], 2 /* Mode.Normal */, null);\n/**\nDefine a [highlighter](#highlight.Highlighter) from an array of\ntag/class pairs. Classes associated with more specific tags will\ntake precedence.\n*/\nfunction tagHighlighter(tags, options) {\n let map = Object.create(null);\n for (let style of tags) {\n if (!Array.isArray(style.tag))\n map[style.tag.id] = style.class;\n else\n for (let tag of style.tag)\n map[tag.id] = style.class;\n }\n let { scope, all = null } = options || {};\n return {\n style: (tags) => {\n let cls = all;\n for (let tag of tags) {\n for (let sub of tag.set) {\n let tagClass = map[sub.id];\n if (tagClass) {\n cls = cls ? cls + \" \" + tagClass : tagClass;\n break;\n }\n }\n }\n return cls;\n },\n scope\n };\n}\nfunction highlightTags(highlighters, tags) {\n let result = null;\n for (let highlighter of highlighters) {\n let value = highlighter.style(tags);\n if (value)\n result = result ? result + \" \" + value : value;\n }\n return result;\n}\n/**\nHighlight the given [tree](#common.Tree) with the given\n[highlighter](#highlight.Highlighter). Often, the higher-level\n[`highlightCode`](#highlight.highlightCode) function is easier to\nuse.\n*/\nfunction highlightTree(tree, highlighter, \n/**\nAssign styling to a region of the text. Will be called, in order\nof position, for any ranges where more than zero classes apply.\n`classes` is a space separated string of CSS classes.\n*/\nputStyle, \n/**\nThe start of the range to highlight.\n*/\nfrom = 0, \n/**\nThe end of the range.\n*/\nto = tree.length) {\n let builder = new HighlightBuilder(from, Array.isArray(highlighter) ? highlighter : [highlighter], putStyle);\n builder.highlightRange(tree.cursor(), from, to, \"\", builder.highlighters);\n builder.flush(to);\n}\n/**\nHighlight the given tree with the given highlighter, calling\n`putText` for every piece of text, either with a set of classes or\nwith the empty string when unstyled, and `putBreak` for every line\nbreak.\n*/\nfunction highlightCode(code, tree, highlighter, putText, putBreak, from = 0, to = code.length) {\n let pos = from;\n function writeTo(p, classes) {\n if (p <= pos)\n return;\n for (let text = code.slice(pos, p), i = 0;;) {\n let nextBreak = text.indexOf(\"\\n\", i);\n let upto = nextBreak < 0 ? text.length : nextBreak;\n if (upto > i)\n putText(text.slice(i, upto), classes);\n if (nextBreak < 0)\n break;\n putBreak();\n i = nextBreak + 1;\n }\n pos = p;\n }\n highlightTree(tree, highlighter, (from, to, classes) => {\n writeTo(from, \"\");\n writeTo(to, classes);\n }, from, to);\n writeTo(to, \"\");\n}\nclass HighlightBuilder {\n constructor(at, highlighters, span) {\n this.at = at;\n this.highlighters = highlighters;\n this.span = span;\n this.class = \"\";\n }\n startSpan(at, cls) {\n if (cls != this.class) {\n this.flush(at);\n if (at > this.at)\n this.at = at;\n this.class = cls;\n }\n }\n flush(to) {\n if (to > this.at && this.class)\n this.span(this.at, to, this.class);\n }\n highlightRange(cursor, from, to, inheritedClass, highlighters) {\n let { type, from: start, to: end } = cursor;\n if (start >= to || end <= from)\n return;\n if (type.isTop)\n highlighters = this.highlighters.filter(h => !h.scope || h.scope(type));\n let cls = inheritedClass;\n let rule = getStyleTags(cursor) || Rule.empty;\n let tagCls = highlightTags(highlighters, rule.tags);\n if (tagCls) {\n if (cls)\n cls += \" \";\n cls += tagCls;\n if (rule.mode == 1 /* Mode.Inherit */)\n inheritedClass += (inheritedClass ? \" \" : \"\") + tagCls;\n }\n this.startSpan(Math.max(from, start), cls);\n if (rule.opaque)\n return;\n let mounted = cursor.tree && cursor.tree.prop(NodeProp.mounted);\n if (mounted && mounted.overlay) {\n let inner = cursor.node.enter(mounted.overlay[0].from + start, 1);\n let innerHighlighters = this.highlighters.filter(h => !h.scope || h.scope(mounted.tree.type));\n let hasChild = cursor.firstChild();\n for (let i = 0, pos = start;; i++) {\n let next = i < mounted.overlay.length ? mounted.overlay[i] : null;\n let nextPos = next ? next.from + start : end;\n let rangeFrom = Math.max(from, pos), rangeTo = Math.min(to, nextPos);\n if (rangeFrom < rangeTo && hasChild) {\n while (cursor.from < rangeTo) {\n this.highlightRange(cursor, rangeFrom, rangeTo, inheritedClass, highlighters);\n this.startSpan(Math.min(rangeTo, cursor.to), cls);\n if (cursor.to >= nextPos || !cursor.nextSibling())\n break;\n }\n }\n if (!next || nextPos > to)\n break;\n pos = next.to + start;\n if (pos > from) {\n this.highlightRange(inner.cursor(), Math.max(from, next.from + start), Math.min(to, pos), \"\", innerHighlighters);\n this.startSpan(Math.min(to, pos), cls);\n }\n }\n if (hasChild)\n cursor.parent();\n }\n else if (cursor.firstChild()) {\n if (mounted)\n inheritedClass = \"\";\n do {\n if (cursor.to <= from)\n continue;\n if (cursor.from >= to)\n break;\n this.highlightRange(cursor, from, to, inheritedClass, highlighters);\n this.startSpan(Math.min(to, cursor.to), cls);\n } while (cursor.nextSibling());\n cursor.parent();\n }\n }\n}\n/**\nMatch a syntax node's [highlight rules](#highlight.styleTags). If\nthere's a match, return its set of tags, and whether it is\nopaque (uses a `!`) or applies to all child nodes (`/...`).\n*/\nfunction getStyleTags(node) {\n let rule = node.type.prop(ruleNodeProp);\n while (rule && rule.context && !node.matchContext(rule.context))\n rule = rule.next;\n return rule || null;\n}\nconst t = Tag.define;\nconst comment = t(), name = t(), typeName = t(name), propertyName = t(name), literal = t(), string = t(literal), number = t(literal), content = t(), heading = t(content), keyword = t(), operator = t(), punctuation = t(), bracket = t(punctuation), meta = t();\n/**\nThe default set of highlighting [tags](#highlight.Tag).\n\nThis collection is heavily biased towards programming languages,\nand necessarily incomplete. A full ontology of syntactic\nconstructs would fill a stack of books, and be impractical to\nwrite themes for. So try to make do with this set. If all else\nfails, [open an\nissue](https://github.com/codemirror/codemirror.next) to propose a\nnew tag, or [define](#highlight.Tag^define) a local custom tag for\nyour use case.\n\nNote that it is not obligatory to always attach the most specific\ntag possible to an element—if your grammar can't easily\ndistinguish a certain type of element (such as a local variable),\nit is okay to style it as its more general variant (a variable).\n\nFor tags that extend some parent tag, the documentation links to\nthe parent.\n*/\nconst tags = {\n /**\n A comment.\n */\n comment,\n /**\n A line [comment](#highlight.tags.comment).\n */\n lineComment: t(comment),\n /**\n A block [comment](#highlight.tags.comment).\n */\n blockComment: t(comment),\n /**\n A documentation [comment](#highlight.tags.comment).\n */\n docComment: t(comment),\n /**\n Any kind of identifier.\n */\n name,\n /**\n The [name](#highlight.tags.name) of a variable.\n */\n variableName: t(name),\n /**\n A type [name](#highlight.tags.name).\n */\n typeName: typeName,\n /**\n A tag name (subtag of [`typeName`](#highlight.tags.typeName)).\n */\n tagName: t(typeName),\n /**\n A property or field [name](#highlight.tags.name).\n */\n propertyName: propertyName,\n /**\n An attribute name (subtag of [`propertyName`](#highlight.tags.propertyName)).\n */\n attributeName: t(propertyName),\n /**\n The [name](#highlight.tags.name) of a class.\n */\n className: t(name),\n /**\n A label [name](#highlight.tags.name).\n */\n labelName: t(name),\n /**\n A namespace [name](#highlight.tags.name).\n */\n namespace: t(name),\n /**\n The [name](#highlight.tags.name) of a macro.\n */\n macroName: t(name),\n /**\n A literal value.\n */\n literal,\n /**\n A string [literal](#highlight.tags.literal).\n */\n string,\n /**\n A documentation [string](#highlight.tags.string).\n */\n docString: t(string),\n /**\n A character literal (subtag of [string](#highlight.tags.string)).\n */\n character: t(string),\n /**\n An attribute value (subtag of [string](#highlight.tags.string)).\n */\n attributeValue: t(string),\n /**\n A number [literal](#highlight.tags.literal).\n */\n number,\n /**\n An integer [number](#highlight.tags.number) literal.\n */\n integer: t(number),\n /**\n A floating-point [number](#highlight.tags.number) literal.\n */\n float: t(number),\n /**\n A boolean [literal](#highlight.tags.literal).\n */\n bool: t(literal),\n /**\n Regular expression [literal](#highlight.tags.literal).\n */\n regexp: t(literal),\n /**\n An escape [literal](#highlight.tags.literal), for example a\n backslash escape in a string.\n */\n escape: t(literal),\n /**\n A color [literal](#highlight.tags.literal).\n */\n color: t(literal),\n /**\n A URL [literal](#highlight.tags.literal).\n */\n url: t(literal),\n /**\n A language keyword.\n */\n keyword,\n /**\n The [keyword](#highlight.tags.keyword) for the self or this\n object.\n */\n self: t(keyword),\n /**\n The [keyword](#highlight.tags.keyword) for null.\n */\n null: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) denoting some atomic value.\n */\n atom: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that represents a unit.\n */\n unit: t(keyword),\n /**\n A modifier [keyword](#highlight.tags.keyword).\n */\n modifier: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that acts as an operator.\n */\n operatorKeyword: t(keyword),\n /**\n A control-flow related [keyword](#highlight.tags.keyword).\n */\n controlKeyword: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that defines something.\n */\n definitionKeyword: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) related to defining or\n interfacing with modules.\n */\n moduleKeyword: t(keyword),\n /**\n An operator.\n */\n operator,\n /**\n An [operator](#highlight.tags.operator) that dereferences something.\n */\n derefOperator: t(operator),\n /**\n Arithmetic-related [operator](#highlight.tags.operator).\n */\n arithmeticOperator: t(operator),\n /**\n Logical [operator](#highlight.tags.operator).\n */\n logicOperator: t(operator),\n /**\n Bit [operator](#highlight.tags.operator).\n */\n bitwiseOperator: t(operator),\n /**\n Comparison [operator](#highlight.tags.operator).\n */\n compareOperator: t(operator),\n /**\n [Operator](#highlight.tags.operator) that updates its operand.\n */\n updateOperator: t(operator),\n /**\n [Operator](#highlight.tags.operator) that defines something.\n */\n definitionOperator: t(operator),\n /**\n Type-related [operator](#highlight.tags.operator).\n */\n typeOperator: t(operator),\n /**\n Control-flow [operator](#highlight.tags.operator).\n */\n controlOperator: t(operator),\n /**\n Program or markup punctuation.\n */\n punctuation,\n /**\n [Punctuation](#highlight.tags.punctuation) that separates\n things.\n */\n separator: t(punctuation),\n /**\n Bracket-style [punctuation](#highlight.tags.punctuation).\n */\n bracket,\n /**\n Angle [brackets](#highlight.tags.bracket) (usually `<` and `>`\n tokens).\n */\n angleBracket: t(bracket),\n /**\n Square [brackets](#highlight.tags.bracket) (usually `[` and `]`\n tokens).\n */\n squareBracket: t(bracket),\n /**\n Parentheses (usually `(` and `)` tokens). Subtag of\n [bracket](#highlight.tags.bracket).\n */\n paren: t(bracket),\n /**\n Braces (usually `{` and `}` tokens). Subtag of\n [bracket](#highlight.tags.bracket).\n */\n brace: t(bracket),\n /**\n Content, for example plain text in XML or markup documents.\n */\n content,\n /**\n [Content](#highlight.tags.content) that represents a heading.\n */\n heading,\n /**\n A level 1 [heading](#highlight.tags.heading).\n */\n heading1: t(heading),\n /**\n A level 2 [heading](#highlight.tags.heading).\n */\n heading2: t(heading),\n /**\n A level 3 [heading](#highlight.tags.heading).\n */\n heading3: t(heading),\n /**\n A level 4 [heading](#highlight.tags.heading).\n */\n heading4: t(heading),\n /**\n A level 5 [heading](#highlight.tags.heading).\n */\n heading5: t(heading),\n /**\n A level 6 [heading](#highlight.tags.heading).\n */\n heading6: t(heading),\n /**\n A prose [content](#highlight.tags.content) separator (such as a horizontal rule).\n */\n contentSeparator: t(content),\n /**\n [Content](#highlight.tags.content) that represents a list.\n */\n list: t(content),\n /**\n [Content](#highlight.tags.content) that represents a quote.\n */\n quote: t(content),\n /**\n [Content](#highlight.tags.content) that is emphasized.\n */\n emphasis: t(content),\n /**\n [Content](#highlight.tags.content) that is styled strong.\n */\n strong: t(content),\n /**\n [Content](#highlight.tags.content) that is part of a link.\n */\n link: t(content),\n /**\n [Content](#highlight.tags.content) that is styled as code or\n monospace.\n */\n monospace: t(content),\n /**\n [Content](#highlight.tags.content) that has a strike-through\n style.\n */\n strikethrough: t(content),\n /**\n Inserted text in a change-tracking format.\n */\n inserted: t(),\n /**\n Deleted text.\n */\n deleted: t(),\n /**\n Changed text.\n */\n changed: t(),\n /**\n An invalid or unsyntactic element.\n */\n invalid: t(),\n /**\n Metadata or meta-instruction.\n */\n meta,\n /**\n [Metadata](#highlight.tags.meta) that applies to the entire\n document.\n */\n documentMeta: t(meta),\n /**\n [Metadata](#highlight.tags.meta) that annotates or adds\n attributes to a given syntactic element.\n */\n annotation: t(meta),\n /**\n Processing instruction or preprocessor directive. Subtag of\n [meta](#highlight.tags.meta).\n */\n processingInstruction: t(meta),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates that a\n given element is being defined. Expected to be used with the\n various [name](#highlight.tags.name) tags.\n */\n definition: Tag.defineModifier(\"definition\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates that\n something is constant. Mostly expected to be used with\n [variable names](#highlight.tags.variableName).\n */\n constant: Tag.defineModifier(\"constant\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) used to indicate that\n a [variable](#highlight.tags.variableName) or [property\n name](#highlight.tags.propertyName) is being called or defined\n as a function.\n */\n function: Tag.defineModifier(\"function\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that can be applied to\n [names](#highlight.tags.name) to indicate that they belong to\n the language's standard environment.\n */\n standard: Tag.defineModifier(\"standard\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates a given\n [names](#highlight.tags.name) is local to some scope.\n */\n local: Tag.defineModifier(\"local\"),\n /**\n A generic variant [modifier](#highlight.Tag^defineModifier) that\n can be used to tag language-specific alternative variants of\n some common tag. It is recommended for themes to define special\n forms of at least the [string](#highlight.tags.string) and\n [variable name](#highlight.tags.variableName) tags, since those\n come up a lot.\n */\n special: Tag.defineModifier(\"special\")\n};\nfor (let name in tags) {\n let val = tags[name];\n if (val instanceof Tag)\n val.name = name;\n}\n/**\nThis is a highlighter that adds stable, predictable classes to\ntokens, for styling with external CSS.\n\nThe following tags are mapped to their name prefixed with `\"tok-\"`\n(for example `\"tok-comment\"`):\n\n* [`link`](#highlight.tags.link)\n* [`heading`](#highlight.tags.heading)\n* [`emphasis`](#highlight.tags.emphasis)\n* [`strong`](#highlight.tags.strong)\n* [`keyword`](#highlight.tags.keyword)\n* [`atom`](#highlight.tags.atom)\n* [`bool`](#highlight.tags.bool)\n* [`url`](#highlight.tags.url)\n* [`labelName`](#highlight.tags.labelName)\n* [`inserted`](#highlight.tags.inserted)\n* [`deleted`](#highlight.tags.deleted)\n* [`literal`](#highlight.tags.literal)\n* [`string`](#highlight.tags.string)\n* [`number`](#highlight.tags.number)\n* [`variableName`](#highlight.tags.variableName)\n* [`typeName`](#highlight.tags.typeName)\n* [`namespace`](#highlight.tags.namespace)\n* [`className`](#highlight.tags.className)\n* [`macroName`](#highlight.tags.macroName)\n* [`propertyName`](#highlight.tags.propertyName)\n* [`operator`](#highlight.tags.operator)\n* [`comment`](#highlight.tags.comment)\n* [`meta`](#highlight.tags.meta)\n* [`punctuation`](#highlight.tags.punctuation)\n* [`invalid`](#highlight.tags.invalid)\n\nIn addition, these mappings are provided:\n\n* [`regexp`](#highlight.tags.regexp),\n [`escape`](#highlight.tags.escape), and\n [`special`](#highlight.tags.special)[`(string)`](#highlight.tags.string)\n are mapped to `\"tok-string2\"`\n* [`special`](#highlight.tags.special)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName2\"`\n* [`local`](#highlight.tags.local)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName tok-local\"`\n* [`definition`](#highlight.tags.definition)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName tok-definition\"`\n* [`definition`](#highlight.tags.definition)[`(propertyName)`](#highlight.tags.propertyName)\n to `\"tok-propertyName tok-definition\"`\n*/\nconst classHighlighter = tagHighlighter([\n { tag: tags.link, class: \"tok-link\" },\n { tag: tags.heading, class: \"tok-heading\" },\n { tag: tags.emphasis, class: \"tok-emphasis\" },\n { tag: tags.strong, class: \"tok-strong\" },\n { tag: tags.keyword, class: \"tok-keyword\" },\n { tag: tags.atom, class: \"tok-atom\" },\n { tag: tags.bool, class: \"tok-bool\" },\n { tag: tags.url, class: \"tok-url\" },\n { tag: tags.labelName, class: \"tok-labelName\" },\n { tag: tags.inserted, class: \"tok-inserted\" },\n { tag: tags.deleted, class: \"tok-deleted\" },\n { tag: tags.literal, class: \"tok-literal\" },\n { tag: tags.string, class: \"tok-string\" },\n { tag: tags.number, class: \"tok-number\" },\n { tag: [tags.regexp, tags.escape, tags.special(tags.string)], class: \"tok-string2\" },\n { tag: tags.variableName, class: \"tok-variableName\" },\n { tag: tags.local(tags.variableName), class: \"tok-variableName tok-local\" },\n { tag: tags.definition(tags.variableName), class: \"tok-variableName tok-definition\" },\n { tag: tags.special(tags.variableName), class: \"tok-variableName2\" },\n { tag: tags.definition(tags.propertyName), class: \"tok-propertyName tok-definition\" },\n { tag: tags.typeName, class: \"tok-typeName\" },\n { tag: tags.namespace, class: \"tok-namespace\" },\n { tag: tags.className, class: \"tok-className\" },\n { tag: tags.macroName, class: \"tok-macroName\" },\n { tag: tags.propertyName, class: \"tok-propertyName\" },\n { tag: tags.operator, class: \"tok-operator\" },\n { tag: tags.comment, class: \"tok-comment\" },\n { tag: tags.meta, class: \"tok-meta\" },\n { tag: tags.invalid, class: \"tok-invalid\" },\n { tag: tags.punctuation, class: \"tok-punctuation\" }\n]);\n\nexport { Tag, classHighlighter, getStyleTags, highlightCode, highlightTree, styleTags, tagHighlighter, tags };\n","import { ContextTracker, ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst noSemi = 312,\n incdec = 1,\n incdecPrefix = 2,\n questionDot = 3,\n JSXStartTag = 4,\n insertSemi = 313,\n spaces = 315,\n newline = 316,\n LineComment = 5,\n BlockComment = 6,\n Dialect_jsx = 0;\n\n/* Hand-written tokenizers for JavaScript tokens that can't be\n expressed by lezer's built-in tokenizer. */\n\nconst space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,\n 8201, 8202, 8232, 8233, 8239, 8287, 12288];\n\nconst braceR = 125, semicolon = 59, slash = 47, star = 42, plus = 43, minus = 45, lt = 60, comma = 44,\n question = 63, dot = 46;\n\nconst trackNewline = new ContextTracker({\n start: false,\n shift(context, term) {\n return term == LineComment || term == BlockComment || term == spaces ? context : term == newline\n },\n strict: false\n});\n\nconst insertSemicolon = new ExternalTokenizer((input, stack) => {\n let {next} = input;\n if (next == braceR || next == -1 || stack.context)\n input.acceptToken(insertSemi);\n}, {contextual: true, fallback: true});\n\nconst noSemicolon = new ExternalTokenizer((input, stack) => {\n let {next} = input, after;\n if (space.indexOf(next) > -1) return\n if (next == slash && ((after = input.peek(1)) == slash || after == star)) return\n if (next != braceR && next != semicolon && next != -1 && !stack.context)\n input.acceptToken(noSemi);\n}, {contextual: true});\n\nconst operatorToken = new ExternalTokenizer((input, stack) => {\n let {next} = input;\n if (next == plus || next == minus) {\n input.advance();\n if (next == input.next) {\n input.advance();\n let mayPostfix = !stack.context && stack.canShift(incdec);\n input.acceptToken(mayPostfix ? incdec : incdecPrefix);\n }\n } else if (next == question && input.peek(1) == dot) {\n input.advance(); input.advance();\n if (input.next < 48 || input.next > 57) // No digit after\n input.acceptToken(questionDot);\n }\n}, {contextual: true});\n\nfunction identifierChar(ch, start) {\n return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||\n !start && ch >= 48 && ch <= 57\n}\n\nconst jsx = new ExternalTokenizer((input, stack) => {\n if (input.next != lt || !stack.dialectEnabled(Dialect_jsx)) return\n input.advance();\n if (input.next == slash) return\n // Scan for an identifier followed by a comma or 'extends', don't\n // treat this as a start tag if present.\n let back = 0;\n while (space.indexOf(input.next) > -1) { input.advance(); back++; }\n if (identifierChar(input.next, true)) {\n input.advance();\n back++;\n while (identifierChar(input.next, false)) { input.advance(); back++; }\n while (space.indexOf(input.next) > -1) { input.advance(); back++; }\n if (input.next == comma) return\n for (let i = 0;; i++) {\n if (i == 7) {\n if (!identifierChar(input.next, true)) return\n break\n }\n if (input.next != \"extends\".charCodeAt(i)) break\n input.advance();\n back++;\n }\n }\n input.acceptToken(JSXStartTag, -back);\n});\n\nconst jsHighlight = styleTags({\n \"get set async static\": tags.modifier,\n \"for while do if else switch try catch finally return throw break continue default case\": tags.controlKeyword,\n \"in of await yield void typeof delete instanceof\": tags.operatorKeyword,\n \"let var const using function class extends\": tags.definitionKeyword,\n \"import export from\": tags.moduleKeyword,\n \"with debugger as new\": tags.keyword,\n TemplateString: tags.special(tags.string),\n super: tags.atom,\n BooleanLiteral: tags.bool,\n this: tags.self,\n null: tags.null,\n Star: tags.modifier,\n VariableName: tags.variableName,\n \"CallExpression/VariableName TaggedTemplateExpression/VariableName\": tags.function(tags.variableName),\n VariableDefinition: tags.definition(tags.variableName),\n Label: tags.labelName,\n PropertyName: tags.propertyName,\n PrivatePropertyName: tags.special(tags.propertyName),\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n \"FunctionDeclaration/VariableDefinition\": tags.function(tags.definition(tags.variableName)),\n \"ClassDeclaration/VariableDefinition\": tags.definition(tags.className),\n PropertyDefinition: tags.definition(tags.propertyName),\n PrivatePropertyDefinition: tags.definition(tags.special(tags.propertyName)),\n UpdateOp: tags.updateOperator,\n \"LineComment Hashbang\": tags.lineComment,\n BlockComment: tags.blockComment,\n Number: tags.number,\n String: tags.string,\n Escape: tags.escape,\n ArithOp: tags.arithmeticOperator,\n LogicOp: tags.logicOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n RegExp: tags.regexp,\n Equals: tags.definitionOperator,\n Arrow: tags.function(tags.punctuation),\n \": Spread\": tags.punctuation,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \"InterpolationStart InterpolationEnd\": tags.special(tags.brace),\n \".\": tags.derefOperator,\n \", ;\": tags.separator,\n \"@\": tags.meta,\n\n TypeName: tags.typeName,\n TypeDefinition: tags.definition(tags.typeName),\n \"type enum interface implements namespace module declare\": tags.definitionKeyword,\n \"abstract global Privacy readonly override\": tags.modifier,\n \"is keyof unique infer\": tags.operatorKeyword,\n\n JSXAttributeValue: tags.attributeValue,\n JSXText: tags.content,\n \"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag\": tags.angleBracket,\n \"JSXIdentifier JSXNameSpacedName\": tags.tagName,\n \"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName\": tags.attributeName,\n \"JSXBuiltin/JSXIdentifier\": tags.standard(tags.tagName)\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,export:20, as:25, from:33, default:36, async:41, function:42, extends:54, this:58, true:66, false:66, null:78, void:82, typeof:86, super:102, new:136, delete:148, yield:157, await:161, class:166, public:229, private:229, protected:229, readonly:231, instanceof:250, satisfies:253, in:254, const:256, import:290, keyof:345, unique:349, infer:355, is:391, abstract:411, implements:413, type:415, let:418, var:420, using:423, interface:429, enum:433, namespace:439, module:441, declare:445, global:449, for:468, of:477, while:480, with:484, do:488, if:492, else:494, switch:498, case:504, try:510, catch:514, finally:518, return:522, throw:526, break:530, continue:534, debugger:538};\nconst spec_word = {__proto__:null,async:123, get:125, set:127, declare:189, public:191, private:191, protected:191, static:193, abstract:195, override:197, readonly:203, accessor:205, new:395};\nconst spec_LessThan = {__proto__:null,\"<\":187};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$BUQ%TQ^OOO%[Q^OOO'_Q`OOP(lOWOOO*zQ?NdO'#CiO+RO!bO'#CjO+aO#tO'#CjO+oO!0LbO'#D^O.QQ^O'#DdO.bQ^O'#DoO%[Q^O'#DwO0fQ^O'#EPOOQ?Mr'#EX'#EXO1PQWO'#EUOOQO'#Em'#EmOOQO'#Ih'#IhO1XQWO'#GpO1dQWO'#ElO1iQWO'#ElO3hQ?NdO'#JmO6[Q?NdO'#JnO6uQWO'#F[O6zQ&jO'#FsOOQ?Mr'#Fe'#FeO7VO,YO'#FeO7eQ7[O'#FzO9RQWO'#FyOOQ?Mr'#Jn'#JnOOQ?Mp'#Jm'#JmO9WQWO'#GtOOQU'#KZ'#KZO9cQWO'#IUO9hQ?MxO'#IVOOQU'#JZ'#JZOOQU'#IZ'#IZQ`Q^OOQ`Q^OOO9pQMnO'#DsO9wQ^O'#D{O:OQ^O'#D}O9^QWO'#GpO:VQ7[O'#CoO:eQWO'#EkO:pQWO'#EvO:uQ7[O'#FdO;dQWO'#GpOOQO'#K['#K[O;iQWO'#K[O;wQWO'#GxO;wQWO'#GyO;wQWO'#G{O9^QWO'#HOOVQWO'#CeO>gQWO'#H_O>oQWO'#HeO>oQWO'#HgO`Q^O'#HiO>oQWO'#HkO>oQWO'#HnO>tQWO'#HtO>yQ?MyO'#HzO%[Q^O'#H|O?UQ?MyO'#IOO?aQ?MyO'#IQO9hQ?MxO'#ISO?lQ?NdO'#CiO@nQ`O'#DiQOQWOOO%[Q^O'#D}OAUQWO'#EQO:VQ7[O'#EkOAaQWO'#EkOAlQpO'#FdOOQU'#Cg'#CgOOQ?Mp'#Dn'#DnOOQ?Mp'#Jq'#JqO%[Q^O'#JqOOQO'#Jt'#JtOOQO'#Id'#IdOBlQ`O'#EdOOQ?Mp'#Ec'#EcOOQ?Mp'#Jx'#JxOChQ?NQO'#EdOCrQ`O'#ETOOQO'#Js'#JsODWQ`O'#JtOEeQ`O'#ETOCrQ`O'#EdPErO#@ItO'#CbPOOO)CDx)CDxOOOO'#I['#I[OE}O!bO,59UOOQ?Mr,59U,59UOOOO'#I]'#I]OF]O#tO,59UOFkQMnO'#D`OOOO'#I_'#I_OFrO!0LbO,59xOOQ?Mr,59x,59xOGQQ^O'#I`OGeQWO'#JoOIdQrO'#JoO+}Q^O'#JoOIkQWO,5:OOJRQWO'#EmOJ`QWO'#KOOJkQWO'#J}OJkQWO'#J}OJsQWO,5;ZOJxQWO'#J|OOQ?Mv,5:Z,5:ZOKPQ^O,5:ZOL}Q?NdO,5:cOMnQWO,5:kONXQ?MxO'#J{ON`QWO'#JzO9WQWO'#JzONtQWO'#JzON|QWO,5;YO! RQWO'#JzO!#WQrO'#JnOOQ?Mr'#Ci'#CiO%[Q^O'#EPO!#vQrO,5:pOOQQ'#Ju'#JuOOQO-EpOOQU'#Jc'#JcOOQU,5>q,5>qOOQU-ERQ?NdO,5:gO%[Q^O,5:gO!@iQ?NdO,5:iOOQO,5@v,5@vO!AYQ7[O,5=[O!AhQ?MxO'#JdO9RQWO'#JdO!AyQ?MxO,59ZO!BUQ`O,59ZO!B^Q7[O,59ZO:VQ7[O,59ZO!BiQWO,5;WO!BqQWO'#H^O!CVQWO'#K`O%[Q^O,5;|O!9]Q`O,5tQWO'#HTO9^QWO'#HVO!DnQWO'#HVO:VQ7[O'#HXO!DsQWO'#HXOOQU,5=m,5=mO!DxQWO'#HYO!EZQWO'#CoO!E`QWO,59PO!EjQWO,59PO!GoQ^O,59POOQU,59P,59PO!HPQ?MxO,59PO%[Q^O,59PO!J[Q^O'#HaOOQU'#Hb'#HbOOQU'#Hc'#HcO`Q^O,5=yO!JrQWO,5=yO`Q^O,5>PO`Q^O,5>RO!JwQWO,5>TO`Q^O,5>VO!J|QWO,5>YO!KRQ^O,5>`OOQU,5>f,5>fO%[Q^O,5>fO9hQ?MxO,5>hOOQU,5>j,5>jO# ]QWO,5>jOOQU,5>l,5>lO# ]QWO,5>lOOQU,5>n,5>nO# yQ`O'#D[O%[Q^O'#JqO#!TQ`O'#JqO#!rQ`O'#DjO##TQ`O'#DjO#%fQ^O'#DjO#%mQWO'#JpO#%uQWO,5:TO#%zQWO'#EqO#&YQWO'#KPO#&bQWO,5;[O#&gQ`O'#DjO#&tQ`O'#ESOOQ?Mr,5:l,5:lO%[Q^O,5:lO#&{QWO,5:lO>tQWO,5;VO!BUQ`O,5;VO!B^Q7[O,5;VO:VQ7[O,5;VO#'TQWO,5@]O#'YQ(CYO,5:pOOQO-EzO+}Q^O,5>zOOQO,5?Q,5?QO#*bQ^O'#I`OOQO-E<^-E<^O#*oQWO,5@ZO#*wQrO,5@ZO#+OQWO,5@iOOQ?Mr1G/j1G/jO%[Q^O,5@jO#+WQWO'#IfOOQO-E|Q?NdO1G0|O#?TQ?NdO1G0|O#AbQ07bO'#CiO#C]Q07bO1G1_O#CdQ07bO'#JnO#CwQ?NdO,5?WOOQ?Mp-EoQWO1G3oO$3eQ^O1G3qO$7iQ^O'#HpOOQU1G3t1G3tO$7vQWO'#HvO>tQWO'#HxOOQU1G3z1G3zO$8OQ^O1G3zO9hQ?MxO1G4QOOQU1G4S1G4SOOQ?Mp'#G]'#G]O9hQ?MxO1G4UO9hQ?MxO1G4WO$tQWO,5:UO!(vQ^O,5:UO!BUQ`O,5:UO$<[Q07bO,5:UOOQO,5;],5;]O$tQWO1G0qO!BUQ`O1G0qO!B^Q7[O1G0qOOQ?Mp1G5w1G5wO!AyQ?MxO1G0ZOOQO1G0j1G0jO%[Q^O1G0jO$=oQ?MxO1G0jO$=zQ?MxO1G0jO!BUQ`O1G0ZOCrQ`O1G0ZO$>YQ?MxO1G0jOOQO1G0Z1G0ZO$>nQ?NdO1G0jPOOO-ExQpO,5zO$?[QWO1G5uO$?dQWO1G6TO$?lQrO1G6UO9WQWO,5?QO$?vQ?NdO1G6RO%[Q^O1G6RO$@WQ?MxO1G6RO$@iQWO1G6QO$@iQWO1G6QO9WQWO1G6QO$@qQWO,5?TO9WQWO,5?TOOQO,5?T,5?TO$AVQWO,5?TO$(_QWO,5?TOOQO-E[OOQU,5>[,5>[O%[Q^O'#HqO%8{QWO'#HsOOQU,5>b,5>bO9WQWO,5>bOOQU,5>d,5>dOOQU7+)f7+)fOOQU7+)l7+)lOOQU7+)p7+)pOOQU7+)r7+)rO%9QQ`O1G5wO%9fQ07bO1G0wO%9pQWO1G0wOOQO1G/p1G/pO%9{Q07bO1G/pO>tQWO1G/pO!(vQ^O'#DjOOQO,5>{,5>{OOQO-E<_-E<_OOQO,5?R,5?ROOQO-EtQWO7+&]O!BUQ`O7+&]OOQO7+%u7+%uO$>nQ?NdO7+&UOOQO7+&U7+&UO%[Q^O7+&UO%:VQ?MxO7+&UO!AyQ?MxO7+%uO!BUQ`O7+%uO%:bQ?MxO7+&UO%:pQ?NdO7++mO%[Q^O7++mO%;QQWO7++lO%;QQWO7++lOOQO1G4o1G4oO9WQWO1G4oO%;YQWO1G4oOOQQ7+%z7+%zO#'OQWO<TQ?NdO,5?_O%@]Q?NdO1G2^O%BkQ?NdO1G2pO%DsQ?NdO1G2rO%F{QrO,5>|O%[Q^O,5>|OOQO-E<`-E<`O%GVQWO1G5xOOQ?Mr<]OOQU,5>_,5>_O&9TQWO1G3|O9WQWO7+&cO!(vQ^O7+&cOOQO7+%[7+%[O&9YQ07bO1G6UO>tQWO7+%[OOQ?Mr<tQWO<nQ?NdO<tQWO7+)hO'(aQWO<nQ?NdOAN?[OOQOAN>{AN>{O%[Q^OAN?[OOQO<nQ?NdOG24vO#'OQWOLD,nOOQULD,nLD,nO!&fQ7[OLD,nO'5iQrOLD,nO'5pQ07bO7+'xO'7cQ07bO,5?]O'9cQ07bO,5?_O';cQ07bO7+'zO'=UQ7[OG27QOOQO<SQ07bO7+*jOOQUG27iG27iO&7fQWOG27iO!&fQ7[OG27iOOQUG27kG27kO9hQ?MxOG27kOOQUG27sG27sO'>^Q07bOG25TOOQOLD*bLD*bOOQU!$(!Y!$(!YO#'OQWO!$(!YO!&fQ7[O!$(!YO'>hQ?NdOG27QOOQ?MpG26uG26uO$(_QWOG26uO'@vQWOG26uOCcQWOG26uO'ARQpOG26uO!&fQ7[OG26uOOQULD-TLD-TO&7fQWOLD-TOOQULD-VLD-VOOQU!)9Et!)9EtO#'OQWO!)9EtOOQ?MpLD,aLD,aO$(_QWOLD,aOCcQWOLD,aO'AYQWOLD,aO'AeQpOLD,aOOQU!$(!o!$(!oOOQU!.K;`!.K;`O'AlQ07bOG27QOOQ?Mp!$( {!$( {O$(_QWO!$( {OCcQWO!$( {O'C_QWO!$( {OOQ?Mp!)9Eg!)9EgO$(_QWO!)9EgOCcQWO!)9EgOOQ?Mp!.K;R!.K;RO$(_QWO!.K;ROOQ?Mp!4/0m!4/0mO!(vQ^O'#DwO1PQWO'#EUO'CjQrO'#JmO'CqQMnO'#DsO'CxQ^O'#D{O'DPQrO'#CiO'FgQrO'#CiO!(vQ^O'#D}O'FwQ^O,5;WO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O,5;bO!(vQ^O'#IlO'HzQWO,5rOh%VOk+bO![']O%f+aO~O!d+dOa(WX![(WX'u(WX!Y(WX~Oa%lO![XO'u%lO~Oh%VO!i%cO~Oh%VO!i%cO(O%eO~O!d#vO#h(uO~Ob+oO%g+pO(O+lO(QTO(TUO!Z)TP~O!Y+qO`)SX~O[+uO~O`+vO~O![%}O(O%eO(P!lO`)SP~Oh%VO#]+{O~Oh%VOk,OO![$|O~O![,QO~O},SO![XO~O%k%tO~O!u,XO~Oe,^O~Ob,_O(O#nO(QTO(TUO!Z)RP~Oe%{O~O%g!QO(O&WO~P=RO[,dO`,cO~OPYOQYOSfOdzOeyOmkOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO!fuO!iZO!lYO!mYO!nYO!pvO!uxO!y]O%e}O(QTO(TUO([VO(j[O(yiO~O![!eO!r!gO$V!kO(O!dO~P!ErO`,cOa%lO'u%lO~OPYOQYOSfOd!jOe!iOmkOoYOpkOqkOwkOyYO{YO!PWO!TkO!UkO![!eO!fuO!iZO!lYO!mYO!nYO!pvO!u!hO$V!kO(O!dO(QTO(TUO([VO(j[O(yiO~Oa,iO!rwO#t!OO%i!OO%j!OO%k!OO~P!H[O!i&lO~O&Y,oO~O![,qO~O&k,sO&m,tOP&haQ&haS&haY&haa&had&hae&ham&hao&hap&haq&haw&hay&ha{&ha!P&ha!T&ha!U&ha![&ha!f&ha!i&ha!l&ha!m&ha!n&ha!p&ha!r&ha!u&ha!y&ha#t&ha$V&ha%e&ha%g&ha%i&ha%j&ha%k&ha%n&ha%p&ha%s&ha%t&ha%v&ha&S&ha&Y&ha&[&ha&^&ha&`&ha&c&ha&i&ha&o&ha&q&ha&s&ha&u&ha&w&ha's&ha(O&ha(Q&ha(T&ha([&ha(j&ha(y&ha!Z&ha&a&hab&ha&f&ha~O(O,yO~Oh!bX!Y!OX!Z!OX!d!OX!d!bX!i!bX#]!OX~O!Y!bX!Z!bX~P# bO!d-OO#],}Oh(eX!Y#eX!Y(eX!Z#eX!Z(eX!d(eX!i(eX~Oh%VO!d-QO!i%cO!Y!^X!Z!^X~Op!nO!P!oO(QTO(TUO(`!mO~OP;aOQ;aOSfOd=[Oe!iOmkOo;aOpkOqkOwkOy;aO{;aO!PWO!TkO!UkO![!eO!f;dO!iZO!l;aO!m;aO!n;aO!p;eO!r;hO!u!hO$V!kO(QTO(TUO([VO(j[O(y=YO~O(O<[O~P##fO!Y-UO!Z(dX~O!Z-WO~O!d-OO#],}O!Y#eX!Z#eX~O!Y-XO!Z(sX~O!Z-ZO~O!`-[O!a-[O(P!lO~P##TO!Z-_O~P'_Ok-bO![']O~O!V-gO~Op!xa!_!xa!`!xa!a!xa#Q!xa#R!xa#S!xa#T!xa#U!xa#X!xa#Y!xa(P!xa(Q!xa(T!xa(`!xa(j!xa~P!#bO!m-lO#]-jO~PCSO!`-nO!a-nO(P!lO~PCrOa%lO#]-jO'u%lO~Oa%lO!d#vO#]-jO'u%lO~Oa%lO!d#vO!m-lO#]-jO'u%lO(m'mO~O'z'uO'{'uO'|-sO~Os-tO~O!V'Sa!Y'Sa~P!9tO!X-xO!V'SX!Y'SX~P%[O!Y(SO!V(ca~O!V(ca~PGmO!Y(ZO!V(qa~O!P%fO!X-|O![%gO(O%eO!V'YX!Y'YX~O#].OO!Y(oa!h(oaa(oa'u(oa~O!d#vO~P#+lO!Y(gO!h(na~O!P%fO![%gO#g.SO(O%eO~Om.XO!P%fO!X.UO![%gO!y]O#f.WO#g.UO(O%eO!Y']X!h']X~OR.]O!i#xO~Oh%VOk.`O![']O%f._O~Oa#`i!Y#`i'u#`i's#`i!V#`i!h#`is#`i![#`i%f#`i!d#`i~P!9tOk=fO}){O!P)|O(t$}O(u%PO~O#h#[aa#[a#]#[a'u#[a!Y#[a!h#[a![#[a!V#[a~P#.hO#h(ZXP(ZXR(ZX[(ZXa(ZXo(ZX!i(ZX!m(ZX#O(ZX#k(ZX#l(ZX#m(ZX#n(ZX#o(ZX#p(ZX#q(ZX#r(ZX#s(ZX#u(ZX#w(ZX#y(ZX#z(ZX'u(ZX([(ZX(m(ZX!h(ZX!V(ZX's(ZXs(ZX![(ZX%f(ZX!d(ZX~P!5|O!Y.mO!h(fX~P!9tO!h.pO~O!V.rO~OP$[OR#zO}#yO!P#{O!i#xO!m$[O([VO[#jia#jio#ji!Y#ji#O#ji#l#ji#m#ji#n#ji#o#ji#p#ji#q#ji#r#ji#s#ji#u#ji#w#ji#y#ji#z#ji'u#ji(m#ji(t#ji(u#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#k#ji~P#2TO#k$OO~P#2TOP$[OR#zOo$aO}#yO!P#{O!i#xO!m$[O#k$OO#l$PO#m$PO#n$PO([VO[#jia#ji!Y#ji#O#ji#p#ji#q#ji#r#ji#s#ji#u#ji#w#ji#y#ji#z#ji'u#ji(m#ji(t#ji(u#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#o#ji~P#4rO#o$QO~P#4rOP$[OR#zO[$cOo$aO}#yO!P#{O!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO([VOa#ji!Y#ji#w#ji#y#ji#z#ji'u#ji(m#ji(t#ji(u#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#u#ji~P#7aOP$[OR#zO[$cOo$aO}#yO!P#{O!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO#u$SO([VO(u#}Oa#ji!Y#ji#y#ji#z#ji'u#ji(m#ji(t#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#w$UO~P#9wO#w#ji~P#9wO#u$SO~P#7aOP$[OR#zO[$cOo$aO}#yO!P#{O!i#xO!m$[O#O$RO#k$OO#l$PO#m$PO#n$PO#o$QO#p$RO#q$RO#r$bO#s$RO#u$SO#w$UO([VO(t#|O(u#}Oa#ji!Y#ji#z#ji'u#ji(m#ji's#ji!V#ji!h#jis#ji![#ji%f#ji!d#ji~O#y#ji~P#rOg'XX!Y'XX~P!+oO!Y.xOg(ka~OSfO![3wO$c3xO~O!Z3|O~Os3}O~P#.hOa$lq!Y$lq'u$lq's$lq!V$lq!h$lqs$lq![$lq%f$lq!d$lq~P!9tO!V4OO~P#.hO}){O!P)|O(u%POk'ea(t'ea!Y'ea#]'ea~Og'ea#}'ea~P%)|O}){O!P)|Ok'ga(t'ga(u'ga!Y'ga#]'ga~Og'ga#}'ga~P%*oO(m$YO~P#.hO!VfX!V$xX!YfX!Y$xX!d%PX#]fX~P!/nO(OV#>i#>o#>u#?T#?j#A]#Ak#Ar#C[#Cj#EY#Eh#En#Et#Ez#FU#F[#Fb#Fl#GO#GUPPPPPPPPPP#G[PPPPPPP#HP#KW#Lg#Ln#LvPPP$$YP$$c$'Z$-s$-v$-y$.f$.i$.p$.xP$/O$/RP$/o$/s$0k$1y$2O$2fPP$2k$2q$2uP$2x$2|$3Q$3v$4_$4v$4z$4}$5Q$5W$5Z$5_$5cR!|RoqOXst!Z#d%k&o&q&r&t,l,q2O2RY!vQ']-^1c5gQ%rvQ%zyQ&R|Q&g!VS'T!e-UQ'c!iS'i!r!yU*f$|*W*kQ+j%{Q+w&TQ,]&aQ-['[Q-f'dQ-n'jQ0T*mQ1m,^R < TypeParamList TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem\",\n maxTerm: 376,\n context: trackNewline,\n nodeProps: [\n [\"isolate\", -8,5,6,14,34,36,48,50,52,\"\"],\n [\"group\", -26,9,17,19,65,204,208,212,213,215,218,221,231,233,239,241,243,245,248,254,260,262,264,266,268,270,271,\"Statement\",-34,13,14,29,32,33,39,48,51,52,54,59,67,69,73,77,79,81,82,107,108,117,118,135,138,140,141,142,143,144,146,147,166,167,169,\"Expression\",-23,28,30,34,38,40,42,171,173,175,176,178,179,180,182,183,184,186,187,188,198,200,202,203,\"Type\",-3,85,100,106,\"ClassItem\"],\n [\"openedBy\", 23,\"<\",35,\"InterpolationStart\",53,\"[\",57,\"{\",70,\"(\",159,\"JSXStartCloseTag\"],\n [\"closedBy\", 24,\">\",37,\"InterpolationEnd\",47,\"]\",58,\"}\",71,\")\",164,\"JSXEndTag\"]\n ],\n propSources: [jsHighlight],\n skippedNodes: [0,5,6,274],\n repeatNodeCount: 37,\n tokenData: \"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$h&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$h&j(U!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(U!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$h&j(RpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(RpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Rp(U!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$h&j(Rp(U!b'w0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(S#S$h&j'x0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$h&j(Rp(U!b'x0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$h&j!m),Q(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#u(Ch$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#u(Ch$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(Q':f$h&j(U!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$h&j(U!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$h&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$c`$h&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$c``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$c`$h&j(U!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(U!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$c`(U!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$h&j(Rp(U!bOY%ZYZ&cZq%Zqr`#P#o`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$h&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(U!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$h&j(RpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(RpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Rp(U!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l^!Q^$h&j!U7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!U7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!U7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c^!Ezl$h&j(U!b!U7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(U!b!U7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(U!b!U7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(U!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$h&j(U!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!^!LYP;=`<%l!KS>^!L`P;=`<%l!_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$h&j(Rp(U!bp'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!d$b$h&j#})Lv(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#O-v$?V_!Z(CdsBr$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!n7`$h&j(Rp(U!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$h&j(Rp(U!b'w0/l$[#t(O,2j(`$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$h&j(Rp(U!b'x0/l$[#t(O,2j(`$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr\",\n tokenizers: [noSemicolon, operatorToken, jsx, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, insertSemicolon, new LocalTokenGroup(\"$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOu~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!R~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(^~~\", 141, 335), new LocalTokenGroup(\"j~RQYZXz{^~^O'{~~aP!P!Qd~iO'|~~\", 25, 318)],\n topRules: {\"Script\":[0,7],\"SingleExpression\":[1,272],\"SingleClassItem\":[2,273]},\n dialects: {jsx: 0, ts: 14791},\n dynamicPrecedences: {\"77\":1,\"79\":1,\"91\":1,\"167\":1,\"196\":1},\n specialized: [{term: 322, get: (value) => spec_identifier[value] || -1},{term: 338, get: (value) => spec_word[value] || -1},{term: 92, get: (value) => spec_LessThan[value] || -1}],\n tokenPrec: 14815\n});\n\nexport { parser };\n","import { NodeProp, IterMode, Tree, TreeFragment, Parser, NodeType, NodeSet } from '@lezer/common';\nimport { StateEffect, StateField, Facet, EditorState, countColumn, combineConfig, RangeSet, RangeSetBuilder, Prec } from '@codemirror/state';\nimport { ViewPlugin, logException, EditorView, Decoration, WidgetType, gutter, GutterMarker, Direction } from '@codemirror/view';\nimport { tags, tagHighlighter, highlightTree, styleTags } from '@lezer/highlight';\nimport { StyleModule } from 'style-mod';\n\nvar _a;\n/**\nNode prop stored in a parser's top syntax node to provide the\nfacet that stores language-specific data for that language.\n*/\nconst languageDataProp = /*@__PURE__*/new NodeProp();\n/**\nHelper function to define a facet (to be added to the top syntax\nnode(s) for a language via\n[`languageDataProp`](https://codemirror.net/6/docs/ref/#language.languageDataProp)), that will be\nused to associate language data with the language. You\nprobably only need this when subclassing\n[`Language`](https://codemirror.net/6/docs/ref/#language.Language).\n*/\nfunction defineLanguageFacet(baseData) {\n return Facet.define({\n combine: baseData ? values => values.concat(baseData) : undefined\n });\n}\n/**\nSyntax node prop used to register sublanguages. Should be added to\nthe top level node type for the language.\n*/\nconst sublanguageProp = /*@__PURE__*/new NodeProp();\n/**\nA language object manages parsing and per-language\n[metadata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt). Parse data is\nmanaged as a [Lezer](https://lezer.codemirror.net) tree. The class\ncan be used directly, via the [`LRLanguage`](https://codemirror.net/6/docs/ref/#language.LRLanguage)\nsubclass for [Lezer](https://lezer.codemirror.net/) LR parsers, or\nvia the [`StreamLanguage`](https://codemirror.net/6/docs/ref/#language.StreamLanguage) subclass\nfor stream parsers.\n*/\nclass Language {\n /**\n Construct a language object. If you need to invoke this\n directly, first define a data facet with\n [`defineLanguageFacet`](https://codemirror.net/6/docs/ref/#language.defineLanguageFacet), and then\n configure your parser to [attach](https://codemirror.net/6/docs/ref/#language.languageDataProp) it\n to the language's outer syntax node.\n */\n constructor(\n /**\n The [language data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) facet\n used for this language.\n */\n data, parser, extraExtensions = [], \n /**\n A language name.\n */\n name = \"\") {\n this.data = data;\n this.name = name;\n // Kludge to define EditorState.tree as a debugging helper,\n // without the EditorState package actually knowing about\n // languages and lezer trees.\n if (!EditorState.prototype.hasOwnProperty(\"tree\"))\n Object.defineProperty(EditorState.prototype, \"tree\", { get() { return syntaxTree(this); } });\n this.parser = parser;\n this.extension = [\n language.of(this),\n EditorState.languageData.of((state, pos, side) => {\n let top = topNodeAt(state, pos, side), data = top.type.prop(languageDataProp);\n if (!data)\n return [];\n let base = state.facet(data), sub = top.type.prop(sublanguageProp);\n if (sub) {\n let innerNode = top.resolve(pos - top.from, side);\n for (let sublang of sub)\n if (sublang.test(innerNode, state)) {\n let data = state.facet(sublang.facet);\n return sublang.type == \"replace\" ? data : data.concat(base);\n }\n }\n return base;\n })\n ].concat(extraExtensions);\n }\n /**\n Query whether this language is active at the given position.\n */\n isActiveAt(state, pos, side = -1) {\n return topNodeAt(state, pos, side).type.prop(languageDataProp) == this.data;\n }\n /**\n Find the document regions that were parsed using this language.\n The returned regions will _include_ any nested languages rooted\n in this language, when those exist.\n */\n findRegions(state) {\n let lang = state.facet(language);\n if ((lang === null || lang === void 0 ? void 0 : lang.data) == this.data)\n return [{ from: 0, to: state.doc.length }];\n if (!lang || !lang.allowsNesting)\n return [];\n let result = [];\n let explore = (tree, from) => {\n if (tree.prop(languageDataProp) == this.data) {\n result.push({ from, to: from + tree.length });\n return;\n }\n let mount = tree.prop(NodeProp.mounted);\n if (mount) {\n if (mount.tree.prop(languageDataProp) == this.data) {\n if (mount.overlay)\n for (let r of mount.overlay)\n result.push({ from: r.from + from, to: r.to + from });\n else\n result.push({ from: from, to: from + tree.length });\n return;\n }\n else if (mount.overlay) {\n let size = result.length;\n explore(mount.tree, mount.overlay[0].from + from);\n if (result.length > size)\n return;\n }\n }\n for (let i = 0; i < tree.children.length; i++) {\n let ch = tree.children[i];\n if (ch instanceof Tree)\n explore(ch, tree.positions[i] + from);\n }\n };\n explore(syntaxTree(state), 0);\n return result;\n }\n /**\n Indicates whether this language allows nested languages. The\n default implementation returns true.\n */\n get allowsNesting() { return true; }\n}\n/**\n@internal\n*/\nLanguage.setState = /*@__PURE__*/StateEffect.define();\nfunction topNodeAt(state, pos, side) {\n let topLang = state.facet(language), tree = syntaxTree(state).topNode;\n if (!topLang || topLang.allowsNesting) {\n for (let node = tree; node; node = node.enter(pos, side, IterMode.ExcludeBuffers))\n if (node.type.isTop)\n tree = node;\n }\n return tree;\n}\n/**\nA subclass of [`Language`](https://codemirror.net/6/docs/ref/#language.Language) for use with Lezer\n[LR parsers](https://lezer.codemirror.net/docs/ref#lr.LRParser)\nparsers.\n*/\nclass LRLanguage extends Language {\n constructor(data, parser, name) {\n super(data, parser, [], name);\n this.parser = parser;\n }\n /**\n Define a language from a parser.\n */\n static define(spec) {\n let data = defineLanguageFacet(spec.languageData);\n return new LRLanguage(data, spec.parser.configure({\n props: [languageDataProp.add(type => type.isTop ? data : undefined)]\n }), spec.name);\n }\n /**\n Create a new instance of this language with a reconfigured\n version of its parser and optionally a new name.\n */\n configure(options, name) {\n return new LRLanguage(this.data, this.parser.configure(options), name || this.name);\n }\n get allowsNesting() { return this.parser.hasWrappers(); }\n}\n/**\nGet the syntax tree for a state, which is the current (possibly\nincomplete) parse tree of the active\n[language](https://codemirror.net/6/docs/ref/#language.Language), or the empty tree if there is no\nlanguage available.\n*/\nfunction syntaxTree(state) {\n let field = state.field(Language.state, false);\n return field ? field.tree : Tree.empty;\n}\n/**\nTry to get a parse tree that spans at least up to `upto`. The\nmethod will do at most `timeout` milliseconds of work to parse\nup to that point if the tree isn't already available.\n*/\nfunction ensureSyntaxTree(state, upto, timeout = 50) {\n var _a;\n let parse = (_a = state.field(Language.state, false)) === null || _a === void 0 ? void 0 : _a.context;\n if (!parse)\n return null;\n let oldVieport = parse.viewport;\n parse.updateViewport({ from: 0, to: upto });\n let result = parse.isDone(upto) || parse.work(timeout, upto) ? parse.tree : null;\n parse.updateViewport(oldVieport);\n return result;\n}\n/**\nQueries whether there is a full syntax tree available up to the\ngiven document position. If there isn't, the background parse\nprocess _might_ still be working and update the tree further, but\nthere is no guarantee of that—the parser will [stop\nworking](https://codemirror.net/6/docs/ref/#language.syntaxParserRunning) when it has spent a\ncertain amount of time or has moved beyond the visible viewport.\nAlways returns false if no language has been enabled.\n*/\nfunction syntaxTreeAvailable(state, upto = state.doc.length) {\n var _a;\n return ((_a = state.field(Language.state, false)) === null || _a === void 0 ? void 0 : _a.context.isDone(upto)) || false;\n}\n/**\nMove parsing forward, and update the editor state afterwards to\nreflect the new tree. Will work for at most `timeout`\nmilliseconds. Returns true if the parser managed get to the given\nposition in that time.\n*/\nfunction forceParsing(view, upto = view.viewport.to, timeout = 100) {\n let success = ensureSyntaxTree(view.state, upto, timeout);\n if (success != syntaxTree(view.state))\n view.dispatch({});\n return !!success;\n}\n/**\nTells you whether the language parser is planning to do more\nparsing work (in a `requestIdleCallback` pseudo-thread) or has\nstopped running, either because it parsed the entire document,\nbecause it spent too much time and was cut off, or because there\nis no language parser enabled.\n*/\nfunction syntaxParserRunning(view) {\n var _a;\n return ((_a = view.plugin(parseWorker)) === null || _a === void 0 ? void 0 : _a.isWorking()) || false;\n}\n/**\nLezer-style\n[`Input`](https://lezer.codemirror.net/docs/ref#common.Input)\nobject for a [`Text`](https://codemirror.net/6/docs/ref/#state.Text) object.\n*/\nclass DocInput {\n /**\n Create an input object for the given document.\n */\n constructor(doc) {\n this.doc = doc;\n this.cursorPos = 0;\n this.string = \"\";\n this.cursor = doc.iter();\n }\n get length() { return this.doc.length; }\n syncTo(pos) {\n this.string = this.cursor.next(pos - this.cursorPos).value;\n this.cursorPos = pos + this.string.length;\n return this.cursorPos - this.string.length;\n }\n chunk(pos) {\n this.syncTo(pos);\n return this.string;\n }\n get lineChunks() { return true; }\n read(from, to) {\n let stringStart = this.cursorPos - this.string.length;\n if (from < stringStart || to >= this.cursorPos)\n return this.doc.sliceString(from, to);\n else\n return this.string.slice(from - stringStart, to - stringStart);\n }\n}\nlet currentContext = null;\n/**\nA parse context provided to parsers working on the editor content.\n*/\nclass ParseContext {\n constructor(parser, \n /**\n The current editor state.\n */\n state, \n /**\n Tree fragments that can be reused by incremental re-parses.\n */\n fragments = [], \n /**\n @internal\n */\n tree, \n /**\n @internal\n */\n treeLen, \n /**\n The current editor viewport (or some overapproximation\n thereof). Intended to be used for opportunistically avoiding\n work (in which case\n [`skipUntilInView`](https://codemirror.net/6/docs/ref/#language.ParseContext.skipUntilInView)\n should be called to make sure the parser is restarted when the\n skipped region becomes visible).\n */\n viewport, \n /**\n @internal\n */\n skipped, \n /**\n This is where skipping parsers can register a promise that,\n when resolved, will schedule a new parse. It is cleared when\n the parse worker picks up the promise. @internal\n */\n scheduleOn) {\n this.parser = parser;\n this.state = state;\n this.fragments = fragments;\n this.tree = tree;\n this.treeLen = treeLen;\n this.viewport = viewport;\n this.skipped = skipped;\n this.scheduleOn = scheduleOn;\n this.parse = null;\n /**\n @internal\n */\n this.tempSkipped = [];\n }\n /**\n @internal\n */\n static create(parser, state, viewport) {\n return new ParseContext(parser, state, [], Tree.empty, 0, viewport, [], null);\n }\n startParse() {\n return this.parser.startParse(new DocInput(this.state.doc), this.fragments);\n }\n /**\n @internal\n */\n work(until, upto) {\n if (upto != null && upto >= this.state.doc.length)\n upto = undefined;\n if (this.tree != Tree.empty && this.isDone(upto !== null && upto !== void 0 ? upto : this.state.doc.length)) {\n this.takeTree();\n return true;\n }\n return this.withContext(() => {\n var _a;\n if (typeof until == \"number\") {\n let endTime = Date.now() + until;\n until = () => Date.now() > endTime;\n }\n if (!this.parse)\n this.parse = this.startParse();\n if (upto != null && (this.parse.stoppedAt == null || this.parse.stoppedAt > upto) &&\n upto < this.state.doc.length)\n this.parse.stopAt(upto);\n for (;;) {\n let done = this.parse.advance();\n if (done) {\n this.fragments = this.withoutTempSkipped(TreeFragment.addTree(done, this.fragments, this.parse.stoppedAt != null));\n this.treeLen = (_a = this.parse.stoppedAt) !== null && _a !== void 0 ? _a : this.state.doc.length;\n this.tree = done;\n this.parse = null;\n if (this.treeLen < (upto !== null && upto !== void 0 ? upto : this.state.doc.length))\n this.parse = this.startParse();\n else\n return true;\n }\n if (until())\n return false;\n }\n });\n }\n /**\n @internal\n */\n takeTree() {\n let pos, tree;\n if (this.parse && (pos = this.parse.parsedPos) >= this.treeLen) {\n if (this.parse.stoppedAt == null || this.parse.stoppedAt > pos)\n this.parse.stopAt(pos);\n this.withContext(() => { while (!(tree = this.parse.advance())) { } });\n this.treeLen = pos;\n this.tree = tree;\n this.fragments = this.withoutTempSkipped(TreeFragment.addTree(this.tree, this.fragments, true));\n this.parse = null;\n }\n }\n withContext(f) {\n let prev = currentContext;\n currentContext = this;\n try {\n return f();\n }\n finally {\n currentContext = prev;\n }\n }\n withoutTempSkipped(fragments) {\n for (let r; r = this.tempSkipped.pop();)\n fragments = cutFragments(fragments, r.from, r.to);\n return fragments;\n }\n /**\n @internal\n */\n changes(changes, newState) {\n let { fragments, tree, treeLen, viewport, skipped } = this;\n this.takeTree();\n if (!changes.empty) {\n let ranges = [];\n changes.iterChangedRanges((fromA, toA, fromB, toB) => ranges.push({ fromA, toA, fromB, toB }));\n fragments = TreeFragment.applyChanges(fragments, ranges);\n tree = Tree.empty;\n treeLen = 0;\n viewport = { from: changes.mapPos(viewport.from, -1), to: changes.mapPos(viewport.to, 1) };\n if (this.skipped.length) {\n skipped = [];\n for (let r of this.skipped) {\n let from = changes.mapPos(r.from, 1), to = changes.mapPos(r.to, -1);\n if (from < to)\n skipped.push({ from, to });\n }\n }\n }\n return new ParseContext(this.parser, newState, fragments, tree, treeLen, viewport, skipped, this.scheduleOn);\n }\n /**\n @internal\n */\n updateViewport(viewport) {\n if (this.viewport.from == viewport.from && this.viewport.to == viewport.to)\n return false;\n this.viewport = viewport;\n let startLen = this.skipped.length;\n for (let i = 0; i < this.skipped.length; i++) {\n let { from, to } = this.skipped[i];\n if (from < viewport.to && to > viewport.from) {\n this.fragments = cutFragments(this.fragments, from, to);\n this.skipped.splice(i--, 1);\n }\n }\n if (this.skipped.length >= startLen)\n return false;\n this.reset();\n return true;\n }\n /**\n @internal\n */\n reset() {\n if (this.parse) {\n this.takeTree();\n this.parse = null;\n }\n }\n /**\n Notify the parse scheduler that the given region was skipped\n because it wasn't in view, and the parse should be restarted\n when it comes into view.\n */\n skipUntilInView(from, to) {\n this.skipped.push({ from, to });\n }\n /**\n Returns a parser intended to be used as placeholder when\n asynchronously loading a nested parser. It'll skip its input and\n mark it as not-really-parsed, so that the next update will parse\n it again.\n \n When `until` is given, a reparse will be scheduled when that\n promise resolves.\n */\n static getSkippingParser(until) {\n return new class extends Parser {\n createParse(input, fragments, ranges) {\n let from = ranges[0].from, to = ranges[ranges.length - 1].to;\n let parser = {\n parsedPos: from,\n advance() {\n let cx = currentContext;\n if (cx) {\n for (let r of ranges)\n cx.tempSkipped.push(r);\n if (until)\n cx.scheduleOn = cx.scheduleOn ? Promise.all([cx.scheduleOn, until]) : until;\n }\n this.parsedPos = to;\n return new Tree(NodeType.none, [], [], to - from);\n },\n stoppedAt: null,\n stopAt() { }\n };\n return parser;\n }\n };\n }\n /**\n @internal\n */\n isDone(upto) {\n upto = Math.min(upto, this.state.doc.length);\n let frags = this.fragments;\n return this.treeLen >= upto && frags.length && frags[0].from == 0 && frags[0].to >= upto;\n }\n /**\n Get the context for the current parse, or `null` if no editor\n parse is in progress.\n */\n static get() { return currentContext; }\n}\nfunction cutFragments(fragments, from, to) {\n return TreeFragment.applyChanges(fragments, [{ fromA: from, toA: to, fromB: from, toB: to }]);\n}\nclass LanguageState {\n constructor(\n // A mutable parse state that is used to preserve work done during\n // the lifetime of a state when moving to the next state.\n context) {\n this.context = context;\n this.tree = context.tree;\n }\n apply(tr) {\n if (!tr.docChanged && this.tree == this.context.tree)\n return this;\n let newCx = this.context.changes(tr.changes, tr.state);\n // If the previous parse wasn't done, go forward only up to its\n // end position or the end of the viewport, to avoid slowing down\n // state updates with parse work beyond the viewport.\n let upto = this.context.treeLen == tr.startState.doc.length ? undefined\n : Math.max(tr.changes.mapPos(this.context.treeLen), newCx.viewport.to);\n if (!newCx.work(20 /* Work.Apply */, upto))\n newCx.takeTree();\n return new LanguageState(newCx);\n }\n static init(state) {\n let vpTo = Math.min(3000 /* Work.InitViewport */, state.doc.length);\n let parseState = ParseContext.create(state.facet(language).parser, state, { from: 0, to: vpTo });\n if (!parseState.work(20 /* Work.Apply */, vpTo))\n parseState.takeTree();\n return new LanguageState(parseState);\n }\n}\nLanguage.state = /*@__PURE__*/StateField.define({\n create: LanguageState.init,\n update(value, tr) {\n for (let e of tr.effects)\n if (e.is(Language.setState))\n return e.value;\n if (tr.startState.facet(language) != tr.state.facet(language))\n return LanguageState.init(tr.state);\n return value.apply(tr);\n }\n});\nlet requestIdle = (callback) => {\n let timeout = setTimeout(() => callback(), 500 /* Work.MaxPause */);\n return () => clearTimeout(timeout);\n};\nif (typeof requestIdleCallback != \"undefined\")\n requestIdle = (callback) => {\n let idle = -1, timeout = setTimeout(() => {\n idle = requestIdleCallback(callback, { timeout: 500 /* Work.MaxPause */ - 100 /* Work.MinPause */ });\n }, 100 /* Work.MinPause */);\n return () => idle < 0 ? clearTimeout(timeout) : cancelIdleCallback(idle);\n };\nconst isInputPending = typeof navigator != \"undefined\" && ((_a = navigator.scheduling) === null || _a === void 0 ? void 0 : _a.isInputPending)\n ? () => navigator.scheduling.isInputPending() : null;\nconst parseWorker = /*@__PURE__*/ViewPlugin.fromClass(class ParseWorker {\n constructor(view) {\n this.view = view;\n this.working = null;\n this.workScheduled = 0;\n // End of the current time chunk\n this.chunkEnd = -1;\n // Milliseconds of budget left for this chunk\n this.chunkBudget = -1;\n this.work = this.work.bind(this);\n this.scheduleWork();\n }\n update(update) {\n let cx = this.view.state.field(Language.state).context;\n if (cx.updateViewport(update.view.viewport) || this.view.viewport.to > cx.treeLen)\n this.scheduleWork();\n if (update.docChanged || update.selectionSet) {\n if (this.view.hasFocus)\n this.chunkBudget += 50 /* Work.ChangeBonus */;\n this.scheduleWork();\n }\n this.checkAsyncSchedule(cx);\n }\n scheduleWork() {\n if (this.working)\n return;\n let { state } = this.view, field = state.field(Language.state);\n if (field.tree != field.context.tree || !field.context.isDone(state.doc.length))\n this.working = requestIdle(this.work);\n }\n work(deadline) {\n this.working = null;\n let now = Date.now();\n if (this.chunkEnd < now && (this.chunkEnd < 0 || this.view.hasFocus)) { // Start a new chunk\n this.chunkEnd = now + 30000 /* Work.ChunkTime */;\n this.chunkBudget = 3000 /* Work.ChunkBudget */;\n }\n if (this.chunkBudget <= 0)\n return; // No more budget\n let { state, viewport: { to: vpTo } } = this.view, field = state.field(Language.state);\n if (field.tree == field.context.tree && field.context.isDone(vpTo + 100000 /* Work.MaxParseAhead */))\n return;\n let endTime = Date.now() + Math.min(this.chunkBudget, 100 /* Work.Slice */, deadline && !isInputPending ? Math.max(25 /* Work.MinSlice */, deadline.timeRemaining() - 5) : 1e9);\n let viewportFirst = field.context.treeLen < vpTo && state.doc.length > vpTo + 1000;\n let done = field.context.work(() => {\n return isInputPending && isInputPending() || Date.now() > endTime;\n }, vpTo + (viewportFirst ? 0 : 100000 /* Work.MaxParseAhead */));\n this.chunkBudget -= Date.now() - now;\n if (done || this.chunkBudget <= 0) {\n field.context.takeTree();\n this.view.dispatch({ effects: Language.setState.of(new LanguageState(field.context)) });\n }\n if (this.chunkBudget > 0 && !(done && !viewportFirst))\n this.scheduleWork();\n this.checkAsyncSchedule(field.context);\n }\n checkAsyncSchedule(cx) {\n if (cx.scheduleOn) {\n this.workScheduled++;\n cx.scheduleOn\n .then(() => this.scheduleWork())\n .catch(err => logException(this.view.state, err))\n .then(() => this.workScheduled--);\n cx.scheduleOn = null;\n }\n }\n destroy() {\n if (this.working)\n this.working();\n }\n isWorking() {\n return !!(this.working || this.workScheduled > 0);\n }\n}, {\n eventHandlers: { focus() { this.scheduleWork(); } }\n});\n/**\nThe facet used to associate a language with an editor state. Used\nby `Language` object's `extension` property (so you don't need to\nmanually wrap your languages in this). Can be used to access the\ncurrent language on a state.\n*/\nconst language = /*@__PURE__*/Facet.define({\n combine(languages) { return languages.length ? languages[0] : null; },\n enables: language => [\n Language.state,\n parseWorker,\n EditorView.contentAttributes.compute([language], state => {\n let lang = state.facet(language);\n return lang && lang.name ? { \"data-language\": lang.name } : {};\n })\n ]\n});\n/**\nThis class bundles a [language](https://codemirror.net/6/docs/ref/#language.Language) with an\noptional set of supporting extensions. Language packages are\nencouraged to export a function that optionally takes a\nconfiguration object and returns a `LanguageSupport` instance, as\nthe main way for client code to use the package.\n*/\nclass LanguageSupport {\n /**\n Create a language support object.\n */\n constructor(\n /**\n The language object.\n */\n language, \n /**\n An optional set of supporting extensions. When nesting a\n language in another language, the outer language is encouraged\n to include the supporting extensions for its inner languages\n in its own set of support extensions.\n */\n support = []) {\n this.language = language;\n this.support = support;\n this.extension = [language, support];\n }\n}\n/**\nLanguage descriptions are used to store metadata about languages\nand to dynamically load them. Their main role is finding the\nappropriate language for a filename or dynamically loading nested\nparsers.\n*/\nclass LanguageDescription {\n constructor(\n /**\n The name of this language.\n */\n name, \n /**\n Alternative names for the mode (lowercased, includes `this.name`).\n */\n alias, \n /**\n File extensions associated with this language.\n */\n extensions, \n /**\n Optional filename pattern that should be associated with this\n language.\n */\n filename, loadFunc, \n /**\n If the language has been loaded, this will hold its value.\n */\n support = undefined) {\n this.name = name;\n this.alias = alias;\n this.extensions = extensions;\n this.filename = filename;\n this.loadFunc = loadFunc;\n this.support = support;\n this.loading = null;\n }\n /**\n Start loading the the language. Will return a promise that\n resolves to a [`LanguageSupport`](https://codemirror.net/6/docs/ref/#language.LanguageSupport)\n object when the language successfully loads.\n */\n load() {\n return this.loading || (this.loading = this.loadFunc().then(support => this.support = support, err => { this.loading = null; throw err; }));\n }\n /**\n Create a language description.\n */\n static of(spec) {\n let { load, support } = spec;\n if (!load) {\n if (!support)\n throw new RangeError(\"Must pass either 'load' or 'support' to LanguageDescription.of\");\n load = () => Promise.resolve(support);\n }\n return new LanguageDescription(spec.name, (spec.alias || []).concat(spec.name).map(s => s.toLowerCase()), spec.extensions || [], spec.filename, load, support);\n }\n /**\n Look for a language in the given array of descriptions that\n matches the filename. Will first match\n [`filename`](https://codemirror.net/6/docs/ref/#language.LanguageDescription.filename) patterns,\n and then [extensions](https://codemirror.net/6/docs/ref/#language.LanguageDescription.extensions),\n and return the first language that matches.\n */\n static matchFilename(descs, filename) {\n for (let d of descs)\n if (d.filename && d.filename.test(filename))\n return d;\n let ext = /\\.([^.]+)$/.exec(filename);\n if (ext)\n for (let d of descs)\n if (d.extensions.indexOf(ext[1]) > -1)\n return d;\n return null;\n }\n /**\n Look for a language whose name or alias matches the the given\n name (case-insensitively). If `fuzzy` is true, and no direct\n matchs is found, this'll also search for a language whose name\n or alias occurs in the string (for names shorter than three\n characters, only when surrounded by non-word characters).\n */\n static matchLanguageName(descs, name, fuzzy = true) {\n name = name.toLowerCase();\n for (let d of descs)\n if (d.alias.some(a => a == name))\n return d;\n if (fuzzy)\n for (let d of descs)\n for (let a of d.alias) {\n let found = name.indexOf(a);\n if (found > -1 && (a.length > 2 || !/\\w/.test(name[found - 1]) && !/\\w/.test(name[found + a.length])))\n return d;\n }\n return null;\n }\n}\n\n/**\nFacet that defines a way to provide a function that computes the\nappropriate indentation depth, as a column number (see\n[`indentString`](https://codemirror.net/6/docs/ref/#language.indentString)), at the start of a given\nline. A return value of `null` indicates no indentation can be\ndetermined, and the line should inherit the indentation of the one\nabove it. A return value of `undefined` defers to the next indent\nservice.\n*/\nconst indentService = /*@__PURE__*/Facet.define();\n/**\nFacet for overriding the unit by which indentation happens. Should\nbe a string consisting either entirely of the same whitespace\ncharacter. When not set, this defaults to 2 spaces.\n*/\nconst indentUnit = /*@__PURE__*/Facet.define({\n combine: values => {\n if (!values.length)\n return \" \";\n let unit = values[0];\n if (!unit || /\\S/.test(unit) || Array.from(unit).some(e => e != unit[0]))\n throw new Error(\"Invalid indent unit: \" + JSON.stringify(values[0]));\n return unit;\n }\n});\n/**\nReturn the _column width_ of an indent unit in the state.\nDetermined by the [`indentUnit`](https://codemirror.net/6/docs/ref/#language.indentUnit)\nfacet, and [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) when that\ncontains tabs.\n*/\nfunction getIndentUnit(state) {\n let unit = state.facet(indentUnit);\n return unit.charCodeAt(0) == 9 ? state.tabSize * unit.length : unit.length;\n}\n/**\nCreate an indentation string that covers columns 0 to `cols`.\nWill use tabs for as much of the columns as possible when the\n[`indentUnit`](https://codemirror.net/6/docs/ref/#language.indentUnit) facet contains\ntabs.\n*/\nfunction indentString(state, cols) {\n let result = \"\", ts = state.tabSize, ch = state.facet(indentUnit)[0];\n if (ch == \"\\t\") {\n while (cols >= ts) {\n result += \"\\t\";\n cols -= ts;\n }\n ch = \" \";\n }\n for (let i = 0; i < cols; i++)\n result += ch;\n return result;\n}\n/**\nGet the indentation, as a column number, at the given position.\nWill first consult any [indent services](https://codemirror.net/6/docs/ref/#language.indentService)\nthat are registered, and if none of those return an indentation,\nthis will check the syntax tree for the [indent node\nprop](https://codemirror.net/6/docs/ref/#language.indentNodeProp) and use that if found. Returns a\nnumber when an indentation could be determined, and null\notherwise.\n*/\nfunction getIndentation(context, pos) {\n if (context instanceof EditorState)\n context = new IndentContext(context);\n for (let service of context.state.facet(indentService)) {\n let result = service(context, pos);\n if (result !== undefined)\n return result;\n }\n let tree = syntaxTree(context.state);\n return tree.length >= pos ? syntaxIndentation(context, tree, pos) : null;\n}\n/**\nCreate a change set that auto-indents all lines touched by the\ngiven document range.\n*/\nfunction indentRange(state, from, to) {\n let updated = Object.create(null);\n let context = new IndentContext(state, { overrideIndentation: start => { var _a; return (_a = updated[start]) !== null && _a !== void 0 ? _a : -1; } });\n let changes = [];\n for (let pos = from; pos <= to;) {\n let line = state.doc.lineAt(pos);\n pos = line.to + 1;\n let indent = getIndentation(context, line.from);\n if (indent == null)\n continue;\n if (!/\\S/.test(line.text))\n indent = 0;\n let cur = /^\\s*/.exec(line.text)[0];\n let norm = indentString(state, indent);\n if (cur != norm) {\n updated[line.from] = indent;\n changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n }\n }\n return state.changes(changes);\n}\n/**\nIndentation contexts are used when calling [indentation\nservices](https://codemirror.net/6/docs/ref/#language.indentService). They provide helper utilities\nuseful in indentation logic, and can selectively override the\nindentation reported for some lines.\n*/\nclass IndentContext {\n /**\n Create an indent context.\n */\n constructor(\n /**\n The editor state.\n */\n state, \n /**\n @internal\n */\n options = {}) {\n this.state = state;\n this.options = options;\n this.unit = getIndentUnit(state);\n }\n /**\n Get a description of the line at the given position, taking\n [simulated line\n breaks](https://codemirror.net/6/docs/ref/#language.IndentContext.constructor^options.simulateBreak)\n into account. If there is such a break at `pos`, the `bias`\n argument determines whether the part of the line line before or\n after the break is used.\n */\n lineAt(pos, bias = 1) {\n let line = this.state.doc.lineAt(pos);\n let { simulateBreak, simulateDoubleBreak } = this.options;\n if (simulateBreak != null && simulateBreak >= line.from && simulateBreak <= line.to) {\n if (simulateDoubleBreak && simulateBreak == pos)\n return { text: \"\", from: pos };\n else if (bias < 0 ? simulateBreak < pos : simulateBreak <= pos)\n return { text: line.text.slice(simulateBreak - line.from), from: simulateBreak };\n else\n return { text: line.text.slice(0, simulateBreak - line.from), from: line.from };\n }\n return line;\n }\n /**\n Get the text directly after `pos`, either the entire line\n or the next 100 characters, whichever is shorter.\n */\n textAfterPos(pos, bias = 1) {\n if (this.options.simulateDoubleBreak && pos == this.options.simulateBreak)\n return \"\";\n let { text, from } = this.lineAt(pos, bias);\n return text.slice(pos - from, Math.min(text.length, pos + 100 - from));\n }\n /**\n Find the column for the given position.\n */\n column(pos, bias = 1) {\n let { text, from } = this.lineAt(pos, bias);\n let result = this.countColumn(text, pos - from);\n let override = this.options.overrideIndentation ? this.options.overrideIndentation(from) : -1;\n if (override > -1)\n result += override - this.countColumn(text, text.search(/\\S|$/));\n return result;\n }\n /**\n Find the column position (taking tabs into account) of the given\n position in the given string.\n */\n countColumn(line, pos = line.length) {\n return countColumn(line, this.state.tabSize, pos);\n }\n /**\n Find the indentation column of the line at the given point.\n */\n lineIndent(pos, bias = 1) {\n let { text, from } = this.lineAt(pos, bias);\n let override = this.options.overrideIndentation;\n if (override) {\n let overriden = override(from);\n if (overriden > -1)\n return overriden;\n }\n return this.countColumn(text, text.search(/\\S|$/));\n }\n /**\n Returns the [simulated line\n break](https://codemirror.net/6/docs/ref/#language.IndentContext.constructor^options.simulateBreak)\n for this context, if any.\n */\n get simulatedBreak() {\n return this.options.simulateBreak || null;\n }\n}\n/**\nA syntax tree node prop used to associate indentation strategies\nwith node types. Such a strategy is a function from an indentation\ncontext to a column number (see also\n[`indentString`](https://codemirror.net/6/docs/ref/#language.indentString)) or null, where null\nindicates that no definitive indentation can be determined.\n*/\nconst indentNodeProp = /*@__PURE__*/new NodeProp();\n// Compute the indentation for a given position from the syntax tree.\nfunction syntaxIndentation(cx, ast, pos) {\n let stack = ast.resolveStack(pos);\n let inner = stack.node.enterUnfinishedNodesBefore(pos);\n if (inner != stack.node) {\n let add = [];\n for (let cur = inner; cur != stack.node; cur = cur.parent)\n add.push(cur);\n for (let i = add.length - 1; i >= 0; i--)\n stack = { node: add[i], next: stack };\n }\n return indentFor(stack, cx, pos);\n}\nfunction indentFor(stack, cx, pos) {\n for (let cur = stack; cur; cur = cur.next) {\n let strategy = indentStrategy(cur.node);\n if (strategy)\n return strategy(TreeIndentContext.create(cx, pos, cur));\n }\n return 0;\n}\nfunction ignoreClosed(cx) {\n return cx.pos == cx.options.simulateBreak && cx.options.simulateDoubleBreak;\n}\nfunction indentStrategy(tree) {\n let strategy = tree.type.prop(indentNodeProp);\n if (strategy)\n return strategy;\n let first = tree.firstChild, close;\n if (first && (close = first.type.prop(NodeProp.closedBy))) {\n let last = tree.lastChild, closed = last && close.indexOf(last.name) > -1;\n return cx => delimitedStrategy(cx, true, 1, undefined, closed && !ignoreClosed(cx) ? last.from : undefined);\n }\n return tree.parent == null ? topIndent : null;\n}\nfunction topIndent() { return 0; }\n/**\nObjects of this type provide context information and helper\nmethods to indentation functions registered on syntax nodes.\n*/\nclass TreeIndentContext extends IndentContext {\n constructor(base, \n /**\n The position at which indentation is being computed.\n */\n pos, \n /**\n @internal\n */\n context) {\n super(base.state, base.options);\n this.base = base;\n this.pos = pos;\n this.context = context;\n }\n /**\n The syntax tree node to which the indentation strategy\n applies.\n */\n get node() { return this.context.node; }\n /**\n @internal\n */\n static create(base, pos, context) {\n return new TreeIndentContext(base, pos, context);\n }\n /**\n Get the text directly after `this.pos`, either the entire line\n or the next 100 characters, whichever is shorter.\n */\n get textAfter() {\n return this.textAfterPos(this.pos);\n }\n /**\n Get the indentation at the reference line for `this.node`, which\n is the line on which it starts, unless there is a node that is\n _not_ a parent of this node covering the start of that line. If\n so, the line at the start of that node is tried, again skipping\n on if it is covered by another such node.\n */\n get baseIndent() {\n return this.baseIndentFor(this.node);\n }\n /**\n Get the indentation for the reference line of the given node\n (see [`baseIndent`](https://codemirror.net/6/docs/ref/#language.TreeIndentContext.baseIndent)).\n */\n baseIndentFor(node) {\n let line = this.state.doc.lineAt(node.from);\n // Skip line starts that are covered by a sibling (or cousin, etc)\n for (;;) {\n let atBreak = node.resolve(line.from);\n while (atBreak.parent && atBreak.parent.from == atBreak.from)\n atBreak = atBreak.parent;\n if (isParent(atBreak, node))\n break;\n line = this.state.doc.lineAt(atBreak.from);\n }\n return this.lineIndent(line.from);\n }\n /**\n Continue looking for indentations in the node's parent nodes,\n and return the result of that.\n */\n continue() {\n return indentFor(this.context.next, this.base, this.pos);\n }\n}\nfunction isParent(parent, of) {\n for (let cur = of; cur; cur = cur.parent)\n if (parent == cur)\n return true;\n return false;\n}\n// Check whether a delimited node is aligned (meaning there are\n// non-skipped nodes on the same line as the opening delimiter). And\n// if so, return the opening token.\nfunction bracketedAligned(context) {\n let tree = context.node;\n let openToken = tree.childAfter(tree.from), last = tree.lastChild;\n if (!openToken)\n return null;\n let sim = context.options.simulateBreak;\n let openLine = context.state.doc.lineAt(openToken.from);\n let lineEnd = sim == null || sim <= openLine.from ? openLine.to : Math.min(openLine.to, sim);\n for (let pos = openToken.to;;) {\n let next = tree.childAfter(pos);\n if (!next || next == last)\n return null;\n if (!next.type.isSkipped) {\n if (next.from >= lineEnd)\n return null;\n let space = /^ */.exec(openLine.text.slice(openToken.to - openLine.from))[0].length;\n return { from: openToken.from, to: openToken.to + space };\n }\n pos = next.to;\n }\n}\n/**\nAn indentation strategy for delimited (usually bracketed) nodes.\nWill, by default, indent one unit more than the parent's base\nindent unless the line starts with a closing token. When `align`\nis true and there are non-skipped nodes on the node's opening\nline, the content of the node will be aligned with the end of the\nopening node, like this:\n\n foo(bar,\n baz)\n*/\nfunction delimitedIndent({ closing, align = true, units = 1 }) {\n return (context) => delimitedStrategy(context, align, units, closing);\n}\nfunction delimitedStrategy(context, align, units, closing, closedAt) {\n let after = context.textAfter, space = after.match(/^\\s*/)[0].length;\n let closed = closing && after.slice(space, space + closing.length) == closing || closedAt == context.pos + space;\n let aligned = align ? bracketedAligned(context) : null;\n if (aligned)\n return closed ? context.column(aligned.from) : context.column(aligned.to);\n return context.baseIndent + (closed ? 0 : context.unit * units);\n}\n/**\nAn indentation strategy that aligns a node's content to its base\nindentation.\n*/\nconst flatIndent = (context) => context.baseIndent;\n/**\nCreates an indentation strategy that, by default, indents\ncontinued lines one unit more than the node's base indentation.\nYou can provide `except` to prevent indentation of lines that\nmatch a pattern (for example `/^else\\b/` in `if`/`else`\nconstructs), and you can change the amount of units used with the\n`units` option.\n*/\nfunction continuedIndent({ except, units = 1 } = {}) {\n return (context) => {\n let matchExcept = except && except.test(context.textAfter);\n return context.baseIndent + (matchExcept ? 0 : units * context.unit);\n };\n}\nconst DontIndentBeyond = 200;\n/**\nEnables reindentation on input. When a language defines an\n`indentOnInput` field in its [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt), which must hold a regular\nexpression, the line at the cursor will be reindented whenever new\ntext is typed and the input from the start of the line up to the\ncursor matches that regexp.\n\nTo avoid unneccesary reindents, it is recommended to start the\nregexp with `^` (usually followed by `\\s*`), and end it with `$`.\nFor example, `/^\\s*\\}$/` will reindent when a closing brace is\nadded at the start of a line.\n*/\nfunction indentOnInput() {\n return EditorState.transactionFilter.of(tr => {\n if (!tr.docChanged || !tr.isUserEvent(\"input.type\") && !tr.isUserEvent(\"input.complete\"))\n return tr;\n let rules = tr.startState.languageDataAt(\"indentOnInput\", tr.startState.selection.main.head);\n if (!rules.length)\n return tr;\n let doc = tr.newDoc, { head } = tr.newSelection.main, line = doc.lineAt(head);\n if (head > line.from + DontIndentBeyond)\n return tr;\n let lineStart = doc.sliceString(line.from, head);\n if (!rules.some(r => r.test(lineStart)))\n return tr;\n let { state } = tr, last = -1, changes = [];\n for (let { head } of state.selection.ranges) {\n let line = state.doc.lineAt(head);\n if (line.from == last)\n continue;\n last = line.from;\n let indent = getIndentation(state, line.from);\n if (indent == null)\n continue;\n let cur = /^\\s*/.exec(line.text)[0];\n let norm = indentString(state, indent);\n if (cur != norm)\n changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n }\n return changes.length ? [tr, { changes, sequential: true }] : tr;\n });\n}\n\n/**\nA facet that registers a code folding service. When called with\nthe extent of a line, such a function should return a foldable\nrange that starts on that line (but continues beyond it), if one\ncan be found.\n*/\nconst foldService = /*@__PURE__*/Facet.define();\n/**\nThis node prop is used to associate folding information with\nsyntax node types. Given a syntax node, it should check whether\nthat tree is foldable and return the range that can be collapsed\nwhen it is.\n*/\nconst foldNodeProp = /*@__PURE__*/new NodeProp();\n/**\n[Fold](https://codemirror.net/6/docs/ref/#language.foldNodeProp) function that folds everything but\nthe first and the last child of a syntax node. Useful for nodes\nthat start and end with delimiters.\n*/\nfunction foldInside(node) {\n let first = node.firstChild, last = node.lastChild;\n return first && first.to < last.from ? { from: first.to, to: last.type.isError ? node.to : last.from } : null;\n}\nfunction syntaxFolding(state, start, end) {\n let tree = syntaxTree(state);\n if (tree.length < end)\n return null;\n let stack = tree.resolveStack(end, 1);\n let found = null;\n for (let iter = stack; iter; iter = iter.next) {\n let cur = iter.node;\n if (cur.to <= end || cur.from > end)\n continue;\n if (found && cur.from < start)\n break;\n let prop = cur.type.prop(foldNodeProp);\n if (prop && (cur.to < tree.length - 50 || tree.length == state.doc.length || !isUnfinished(cur))) {\n let value = prop(cur, state);\n if (value && value.from <= end && value.from >= start && value.to > end)\n found = value;\n }\n }\n return found;\n}\nfunction isUnfinished(node) {\n let ch = node.lastChild;\n return ch && ch.to == node.to && ch.type.isError;\n}\n/**\nCheck whether the given line is foldable. First asks any fold\nservices registered through\n[`foldService`](https://codemirror.net/6/docs/ref/#language.foldService), and if none of them return\na result, tries to query the [fold node\nprop](https://codemirror.net/6/docs/ref/#language.foldNodeProp) of syntax nodes that cover the end\nof the line.\n*/\nfunction foldable(state, lineStart, lineEnd) {\n for (let service of state.facet(foldService)) {\n let result = service(state, lineStart, lineEnd);\n if (result)\n return result;\n }\n return syntaxFolding(state, lineStart, lineEnd);\n}\nfunction mapRange(range, mapping) {\n let from = mapping.mapPos(range.from, 1), to = mapping.mapPos(range.to, -1);\n return from >= to ? undefined : { from, to };\n}\n/**\nState effect that can be attached to a transaction to fold the\ngiven range. (You probably only need this in exceptional\ncircumstances—usually you'll just want to let\n[`foldCode`](https://codemirror.net/6/docs/ref/#language.foldCode) and the [fold\ngutter](https://codemirror.net/6/docs/ref/#language.foldGutter) create the transactions.)\n*/\nconst foldEffect = /*@__PURE__*/StateEffect.define({ map: mapRange });\n/**\nState effect that unfolds the given range (if it was folded).\n*/\nconst unfoldEffect = /*@__PURE__*/StateEffect.define({ map: mapRange });\nfunction selectedLines(view) {\n let lines = [];\n for (let { head } of view.state.selection.ranges) {\n if (lines.some(l => l.from <= head && l.to >= head))\n continue;\n lines.push(view.lineBlockAt(head));\n }\n return lines;\n}\n/**\nThe state field that stores the folded ranges (as a [decoration\nset](https://codemirror.net/6/docs/ref/#view.DecorationSet)). Can be passed to\n[`EditorState.toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) and\n[`fromJSON`](https://codemirror.net/6/docs/ref/#state.EditorState^fromJSON) to serialize the fold\nstate.\n*/\nconst foldState = /*@__PURE__*/StateField.define({\n create() {\n return Decoration.none;\n },\n update(folded, tr) {\n folded = folded.map(tr.changes);\n for (let e of tr.effects) {\n if (e.is(foldEffect) && !foldExists(folded, e.value.from, e.value.to)) {\n let { preparePlaceholder } = tr.state.facet(foldConfig);\n let widget = !preparePlaceholder ? foldWidget :\n Decoration.replace({ widget: new PreparedFoldWidget(preparePlaceholder(tr.state, e.value)) });\n folded = folded.update({ add: [widget.range(e.value.from, e.value.to)] });\n }\n else if (e.is(unfoldEffect)) {\n folded = folded.update({ filter: (from, to) => e.value.from != from || e.value.to != to,\n filterFrom: e.value.from, filterTo: e.value.to });\n }\n }\n // Clear folded ranges that cover the selection head\n if (tr.selection) {\n let onSelection = false, { head } = tr.selection.main;\n folded.between(head, head, (a, b) => { if (a < head && b > head)\n onSelection = true; });\n if (onSelection)\n folded = folded.update({\n filterFrom: head,\n filterTo: head,\n filter: (a, b) => b <= head || a >= head\n });\n }\n return folded;\n },\n provide: f => EditorView.decorations.from(f),\n toJSON(folded, state) {\n let ranges = [];\n folded.between(0, state.doc.length, (from, to) => { ranges.push(from, to); });\n return ranges;\n },\n fromJSON(value) {\n if (!Array.isArray(value) || value.length % 2)\n throw new RangeError(\"Invalid JSON for fold state\");\n let ranges = [];\n for (let i = 0; i < value.length;) {\n let from = value[i++], to = value[i++];\n if (typeof from != \"number\" || typeof to != \"number\")\n throw new RangeError(\"Invalid JSON for fold state\");\n ranges.push(foldWidget.range(from, to));\n }\n return Decoration.set(ranges, true);\n }\n});\n/**\nGet a [range set](https://codemirror.net/6/docs/ref/#state.RangeSet) containing the folded ranges\nin the given state.\n*/\nfunction foldedRanges(state) {\n return state.field(foldState, false) || RangeSet.empty;\n}\nfunction findFold(state, from, to) {\n var _a;\n let found = null;\n (_a = state.field(foldState, false)) === null || _a === void 0 ? void 0 : _a.between(from, to, (from, to) => {\n if (!found || found.from > from)\n found = { from, to };\n });\n return found;\n}\nfunction foldExists(folded, from, to) {\n let found = false;\n folded.between(from, from, (a, b) => { if (a == from && b == to)\n found = true; });\n return found;\n}\nfunction maybeEnable(state, other) {\n return state.field(foldState, false) ? other : other.concat(StateEffect.appendConfig.of(codeFolding()));\n}\n/**\nFold the lines that are selected, if possible.\n*/\nconst foldCode = view => {\n for (let line of selectedLines(view)) {\n let range = foldable(view.state, line.from, line.to);\n if (range) {\n view.dispatch({ effects: maybeEnable(view.state, [foldEffect.of(range), announceFold(view, range)]) });\n return true;\n }\n }\n return false;\n};\n/**\nUnfold folded ranges on selected lines.\n*/\nconst unfoldCode = view => {\n if (!view.state.field(foldState, false))\n return false;\n let effects = [];\n for (let line of selectedLines(view)) {\n let folded = findFold(view.state, line.from, line.to);\n if (folded)\n effects.push(unfoldEffect.of(folded), announceFold(view, folded, false));\n }\n if (effects.length)\n view.dispatch({ effects });\n return effects.length > 0;\n};\nfunction announceFold(view, range, fold = true) {\n let lineFrom = view.state.doc.lineAt(range.from).number, lineTo = view.state.doc.lineAt(range.to).number;\n return EditorView.announce.of(`${view.state.phrase(fold ? \"Folded lines\" : \"Unfolded lines\")} ${lineFrom} ${view.state.phrase(\"to\")} ${lineTo}.`);\n}\n/**\nFold all top-level foldable ranges. Note that, in most cases,\nfolding information will depend on the [syntax\ntree](https://codemirror.net/6/docs/ref/#language.syntaxTree), and folding everything may not work\nreliably when the document hasn't been fully parsed (either\nbecause the editor state was only just initialized, or because the\ndocument is so big that the parser decided not to parse it\nentirely).\n*/\nconst foldAll = view => {\n let { state } = view, effects = [];\n for (let pos = 0; pos < state.doc.length;) {\n let line = view.lineBlockAt(pos), range = foldable(state, line.from, line.to);\n if (range)\n effects.push(foldEffect.of(range));\n pos = (range ? view.lineBlockAt(range.to) : line).to + 1;\n }\n if (effects.length)\n view.dispatch({ effects: maybeEnable(view.state, effects) });\n return !!effects.length;\n};\n/**\nUnfold all folded code.\n*/\nconst unfoldAll = view => {\n let field = view.state.field(foldState, false);\n if (!field || !field.size)\n return false;\n let effects = [];\n field.between(0, view.state.doc.length, (from, to) => { effects.push(unfoldEffect.of({ from, to })); });\n view.dispatch({ effects });\n return true;\n};\n// Find the foldable region containing the given line, if one exists\nfunction foldableContainer(view, lineBlock) {\n // Look backwards through line blocks until we find a foldable region that\n // intersects with the line\n for (let line = lineBlock;;) {\n let foldableRegion = foldable(view.state, line.from, line.to);\n if (foldableRegion && foldableRegion.to > lineBlock.from)\n return foldableRegion;\n if (!line.from)\n return null;\n line = view.lineBlockAt(line.from - 1);\n }\n}\n/**\nToggle folding at cursors. Unfolds if there is an existing fold\nstarting in that line, tries to find a foldable range around it\notherwise.\n*/\nconst toggleFold = (view) => {\n let effects = [];\n for (let line of selectedLines(view)) {\n let folded = findFold(view.state, line.from, line.to);\n if (folded) {\n effects.push(unfoldEffect.of(folded), announceFold(view, folded, false));\n }\n else {\n let foldRange = foldableContainer(view, line);\n if (foldRange)\n effects.push(foldEffect.of(foldRange), announceFold(view, foldRange));\n }\n }\n if (effects.length > 0)\n view.dispatch({ effects: maybeEnable(view.state, effects) });\n return !!effects.length;\n};\n/**\nDefault fold-related key bindings.\n\n - Ctrl-Shift-[ (Cmd-Alt-[ on macOS): [`foldCode`](https://codemirror.net/6/docs/ref/#language.foldCode).\n - Ctrl-Shift-] (Cmd-Alt-] on macOS): [`unfoldCode`](https://codemirror.net/6/docs/ref/#language.unfoldCode).\n - Ctrl-Alt-[: [`foldAll`](https://codemirror.net/6/docs/ref/#language.foldAll).\n - Ctrl-Alt-]: [`unfoldAll`](https://codemirror.net/6/docs/ref/#language.unfoldAll).\n*/\nconst foldKeymap = [\n { key: \"Ctrl-Shift-[\", mac: \"Cmd-Alt-[\", run: foldCode },\n { key: \"Ctrl-Shift-]\", mac: \"Cmd-Alt-]\", run: unfoldCode },\n { key: \"Ctrl-Alt-[\", run: foldAll },\n { key: \"Ctrl-Alt-]\", run: unfoldAll }\n];\nconst defaultConfig = {\n placeholderDOM: null,\n preparePlaceholder: null,\n placeholderText: \"…\"\n};\nconst foldConfig = /*@__PURE__*/Facet.define({\n combine(values) { return combineConfig(values, defaultConfig); }\n});\n/**\nCreate an extension that configures code folding.\n*/\nfunction codeFolding(config) {\n let result = [foldState, baseTheme$1];\n if (config)\n result.push(foldConfig.of(config));\n return result;\n}\nfunction widgetToDOM(view, prepared) {\n let { state } = view, conf = state.facet(foldConfig);\n let onclick = (event) => {\n let line = view.lineBlockAt(view.posAtDOM(event.target));\n let folded = findFold(view.state, line.from, line.to);\n if (folded)\n view.dispatch({ effects: unfoldEffect.of(folded) });\n event.preventDefault();\n };\n if (conf.placeholderDOM)\n return conf.placeholderDOM(view, onclick, prepared);\n let element = document.createElement(\"span\");\n element.textContent = conf.placeholderText;\n element.setAttribute(\"aria-label\", state.phrase(\"folded code\"));\n element.title = state.phrase(\"unfold\");\n element.className = \"cm-foldPlaceholder\";\n element.onclick = onclick;\n return element;\n}\nconst foldWidget = /*@__PURE__*/Decoration.replace({ widget: /*@__PURE__*/new class extends WidgetType {\n toDOM(view) { return widgetToDOM(view, null); }\n } });\nclass PreparedFoldWidget extends WidgetType {\n constructor(value) {\n super();\n this.value = value;\n }\n eq(other) { return this.value == other.value; }\n toDOM(view) { return widgetToDOM(view, this.value); }\n}\nconst foldGutterDefaults = {\n openText: \"⌄\",\n closedText: \"›\",\n markerDOM: null,\n domEventHandlers: {},\n foldingChanged: () => false\n};\nclass FoldMarker extends GutterMarker {\n constructor(config, open) {\n super();\n this.config = config;\n this.open = open;\n }\n eq(other) { return this.config == other.config && this.open == other.open; }\n toDOM(view) {\n if (this.config.markerDOM)\n return this.config.markerDOM(this.open);\n let span = document.createElement(\"span\");\n span.textContent = this.open ? this.config.openText : this.config.closedText;\n span.title = view.state.phrase(this.open ? \"Fold line\" : \"Unfold line\");\n return span;\n }\n}\n/**\nCreate an extension that registers a fold gutter, which shows a\nfold status indicator before foldable lines (which can be clicked\nto fold or unfold the line).\n*/\nfunction foldGutter(config = {}) {\n let fullConfig = Object.assign(Object.assign({}, foldGutterDefaults), config);\n let canFold = new FoldMarker(fullConfig, true), canUnfold = new FoldMarker(fullConfig, false);\n let markers = ViewPlugin.fromClass(class {\n constructor(view) {\n this.from = view.viewport.from;\n this.markers = this.buildMarkers(view);\n }\n update(update) {\n if (update.docChanged || update.viewportChanged ||\n update.startState.facet(language) != update.state.facet(language) ||\n update.startState.field(foldState, false) != update.state.field(foldState, false) ||\n syntaxTree(update.startState) != syntaxTree(update.state) ||\n fullConfig.foldingChanged(update))\n this.markers = this.buildMarkers(update.view);\n }\n buildMarkers(view) {\n let builder = new RangeSetBuilder();\n for (let line of view.viewportLineBlocks) {\n let mark = findFold(view.state, line.from, line.to) ? canUnfold\n : foldable(view.state, line.from, line.to) ? canFold : null;\n if (mark)\n builder.add(line.from, line.from, mark);\n }\n return builder.finish();\n }\n });\n let { domEventHandlers } = fullConfig;\n return [\n markers,\n gutter({\n class: \"cm-foldGutter\",\n markers(view) { var _a; return ((_a = view.plugin(markers)) === null || _a === void 0 ? void 0 : _a.markers) || RangeSet.empty; },\n initialSpacer() {\n return new FoldMarker(fullConfig, false);\n },\n domEventHandlers: Object.assign(Object.assign({}, domEventHandlers), { click: (view, line, event) => {\n if (domEventHandlers.click && domEventHandlers.click(view, line, event))\n return true;\n let folded = findFold(view.state, line.from, line.to);\n if (folded) {\n view.dispatch({ effects: unfoldEffect.of(folded) });\n return true;\n }\n let range = foldable(view.state, line.from, line.to);\n if (range) {\n view.dispatch({ effects: foldEffect.of(range) });\n return true;\n }\n return false;\n } })\n }),\n codeFolding()\n ];\n}\nconst baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({\n \".cm-foldPlaceholder\": {\n backgroundColor: \"#eee\",\n border: \"1px solid #ddd\",\n color: \"#888\",\n borderRadius: \".2em\",\n margin: \"0 1px\",\n padding: \"0 1px\",\n cursor: \"pointer\"\n },\n \".cm-foldGutter span\": {\n padding: \"0 1px\",\n cursor: \"pointer\"\n }\n});\n\n/**\nA highlight style associates CSS styles with higlighting\n[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag).\n*/\nclass HighlightStyle {\n constructor(\n /**\n The tag styles used to create this highlight style.\n */\n specs, options) {\n this.specs = specs;\n let modSpec;\n function def(spec) {\n let cls = StyleModule.newName();\n (modSpec || (modSpec = Object.create(null)))[\".\" + cls] = spec;\n return cls;\n }\n const all = typeof options.all == \"string\" ? options.all : options.all ? def(options.all) : undefined;\n const scopeOpt = options.scope;\n this.scope = scopeOpt instanceof Language ? (type) => type.prop(languageDataProp) == scopeOpt.data\n : scopeOpt ? (type) => type == scopeOpt : undefined;\n this.style = tagHighlighter(specs.map(style => ({\n tag: style.tag,\n class: style.class || def(Object.assign({}, style, { tag: null }))\n })), {\n all,\n }).style;\n this.module = modSpec ? new StyleModule(modSpec) : null;\n this.themeType = options.themeType;\n }\n /**\n Create a highlighter style that associates the given styles to\n the given tags. The specs must be objects that hold a style tag\n or array of tags in their `tag` property, and either a single\n `class` property providing a static CSS class (for highlighter\n that rely on external styling), or a\n [`style-mod`](https://github.com/marijnh/style-mod#documentation)-style\n set of CSS properties (which define the styling for those tags).\n \n The CSS rules created for a highlighter will be emitted in the\n order of the spec's properties. That means that for elements that\n have multiple tags associated with them, styles defined further\n down in the list will have a higher CSS precedence than styles\n defined earlier.\n */\n static define(specs, options) {\n return new HighlightStyle(specs, options || {});\n }\n}\nconst highlighterFacet = /*@__PURE__*/Facet.define();\nconst fallbackHighlighter = /*@__PURE__*/Facet.define({\n combine(values) { return values.length ? [values[0]] : null; }\n});\nfunction getHighlighters(state) {\n let main = state.facet(highlighterFacet);\n return main.length ? main : state.facet(fallbackHighlighter);\n}\n/**\nWrap a highlighter in an editor extension that uses it to apply\nsyntax highlighting to the editor content.\n\nWhen multiple (non-fallback) styles are provided, the styling\napplied is the union of the classes they emit.\n*/\nfunction syntaxHighlighting(highlighter, options) {\n let ext = [treeHighlighter], themeType;\n if (highlighter instanceof HighlightStyle) {\n if (highlighter.module)\n ext.push(EditorView.styleModule.of(highlighter.module));\n themeType = highlighter.themeType;\n }\n if (options === null || options === void 0 ? void 0 : options.fallback)\n ext.push(fallbackHighlighter.of(highlighter));\n else if (themeType)\n ext.push(highlighterFacet.computeN([EditorView.darkTheme], state => {\n return state.facet(EditorView.darkTheme) == (themeType == \"dark\") ? [highlighter] : [];\n }));\n else\n ext.push(highlighterFacet.of(highlighter));\n return ext;\n}\n/**\nReturns the CSS classes (if any) that the highlighters active in\nthe state would assign to the given style\n[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag) and\n(optional) language\n[scope](https://codemirror.net/6/docs/ref/#language.HighlightStyle^define^options.scope).\n*/\nfunction highlightingFor(state, tags, scope) {\n let highlighters = getHighlighters(state);\n let result = null;\n if (highlighters)\n for (let highlighter of highlighters) {\n if (!highlighter.scope || scope && highlighter.scope(scope)) {\n let cls = highlighter.style(tags);\n if (cls)\n result = result ? result + \" \" + cls : cls;\n }\n }\n return result;\n}\nclass TreeHighlighter {\n constructor(view) {\n this.markCache = Object.create(null);\n this.tree = syntaxTree(view.state);\n this.decorations = this.buildDeco(view, getHighlighters(view.state));\n this.decoratedTo = view.viewport.to;\n }\n update(update) {\n let tree = syntaxTree(update.state), highlighters = getHighlighters(update.state);\n let styleChange = highlighters != getHighlighters(update.startState);\n let { viewport } = update.view, decoratedToMapped = update.changes.mapPos(this.decoratedTo, 1);\n if (tree.length < viewport.to && !styleChange && tree.type == this.tree.type && decoratedToMapped >= viewport.to) {\n this.decorations = this.decorations.map(update.changes);\n this.decoratedTo = decoratedToMapped;\n }\n else if (tree != this.tree || update.viewportChanged || styleChange) {\n this.tree = tree;\n this.decorations = this.buildDeco(update.view, highlighters);\n this.decoratedTo = viewport.to;\n }\n }\n buildDeco(view, highlighters) {\n if (!highlighters || !this.tree.length)\n return Decoration.none;\n let builder = new RangeSetBuilder();\n for (let { from, to } of view.visibleRanges) {\n highlightTree(this.tree, highlighters, (from, to, style) => {\n builder.add(from, to, this.markCache[style] || (this.markCache[style] = Decoration.mark({ class: style })));\n }, from, to);\n }\n return builder.finish();\n }\n}\nconst treeHighlighter = /*@__PURE__*/Prec.high(/*@__PURE__*/ViewPlugin.fromClass(TreeHighlighter, {\n decorations: v => v.decorations\n}));\n/**\nA default highlight style (works well with light themes).\n*/\nconst defaultHighlightStyle = /*@__PURE__*/HighlightStyle.define([\n { tag: tags.meta,\n color: \"#404740\" },\n { tag: tags.link,\n textDecoration: \"underline\" },\n { tag: tags.heading,\n textDecoration: \"underline\",\n fontWeight: \"bold\" },\n { tag: tags.emphasis,\n fontStyle: \"italic\" },\n { tag: tags.strong,\n fontWeight: \"bold\" },\n { tag: tags.strikethrough,\n textDecoration: \"line-through\" },\n { tag: tags.keyword,\n color: \"#708\" },\n { tag: [tags.atom, tags.bool, tags.url, tags.contentSeparator, tags.labelName],\n color: \"#219\" },\n { tag: [tags.literal, tags.inserted],\n color: \"#164\" },\n { tag: [tags.string, tags.deleted],\n color: \"#a11\" },\n { tag: [tags.regexp, tags.escape, /*@__PURE__*/tags.special(tags.string)],\n color: \"#e40\" },\n { tag: /*@__PURE__*/tags.definition(tags.variableName),\n color: \"#00f\" },\n { tag: /*@__PURE__*/tags.local(tags.variableName),\n color: \"#30a\" },\n { tag: [tags.typeName, tags.namespace],\n color: \"#085\" },\n { tag: tags.className,\n color: \"#167\" },\n { tag: [/*@__PURE__*/tags.special(tags.variableName), tags.macroName],\n color: \"#256\" },\n { tag: /*@__PURE__*/tags.definition(tags.propertyName),\n color: \"#00c\" },\n { tag: tags.comment,\n color: \"#940\" },\n { tag: tags.invalid,\n color: \"#f00\" }\n]);\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \"&.cm-focused .cm-matchingBracket\": { backgroundColor: \"#328c8252\" },\n \"&.cm-focused .cm-nonmatchingBracket\": { backgroundColor: \"#bb555544\" }\n});\nconst DefaultScanDist = 10000, DefaultBrackets = \"()[]{}\";\nconst bracketMatchingConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n afterCursor: true,\n brackets: DefaultBrackets,\n maxScanDistance: DefaultScanDist,\n renderMatch: defaultRenderMatch\n });\n }\n});\nconst matchingMark = /*@__PURE__*/Decoration.mark({ class: \"cm-matchingBracket\" }), nonmatchingMark = /*@__PURE__*/Decoration.mark({ class: \"cm-nonmatchingBracket\" });\nfunction defaultRenderMatch(match) {\n let decorations = [];\n let mark = match.matched ? matchingMark : nonmatchingMark;\n decorations.push(mark.range(match.start.from, match.start.to));\n if (match.end)\n decorations.push(mark.range(match.end.from, match.end.to));\n return decorations;\n}\nconst bracketMatchingState = /*@__PURE__*/StateField.define({\n create() { return Decoration.none; },\n update(deco, tr) {\n if (!tr.docChanged && !tr.selection)\n return deco;\n let decorations = [];\n let config = tr.state.facet(bracketMatchingConfig);\n for (let range of tr.state.selection.ranges) {\n if (!range.empty)\n continue;\n let match = matchBrackets(tr.state, range.head, -1, config)\n || (range.head > 0 && matchBrackets(tr.state, range.head - 1, 1, config))\n || (config.afterCursor &&\n (matchBrackets(tr.state, range.head, 1, config) ||\n (range.head < tr.state.doc.length && matchBrackets(tr.state, range.head + 1, -1, config))));\n if (match)\n decorations = decorations.concat(config.renderMatch(match, tr.state));\n }\n return Decoration.set(decorations, true);\n },\n provide: f => EditorView.decorations.from(f)\n});\nconst bracketMatchingUnique = [\n bracketMatchingState,\n baseTheme\n];\n/**\nCreate an extension that enables bracket matching. Whenever the\ncursor is next to a bracket, that bracket and the one it matches\nare highlighted. Or, when no matching bracket is found, another\nhighlighting style is used to indicate this.\n*/\nfunction bracketMatching(config = {}) {\n return [bracketMatchingConfig.of(config), bracketMatchingUnique];\n}\n/**\nWhen larger syntax nodes, such as HTML tags, are marked as\nopening/closing, it can be a bit messy to treat the whole node as\na matchable bracket. This node prop allows you to define, for such\na node, a ‘handle’—the part of the node that is highlighted, and\nthat the cursor must be on to activate highlighting in the first\nplace.\n*/\nconst bracketMatchingHandle = /*@__PURE__*/new NodeProp();\nfunction matchingNodes(node, dir, brackets) {\n let byProp = node.prop(dir < 0 ? NodeProp.openedBy : NodeProp.closedBy);\n if (byProp)\n return byProp;\n if (node.name.length == 1) {\n let index = brackets.indexOf(node.name);\n if (index > -1 && index % 2 == (dir < 0 ? 1 : 0))\n return [brackets[index + dir]];\n }\n return null;\n}\nfunction findHandle(node) {\n let hasHandle = node.type.prop(bracketMatchingHandle);\n return hasHandle ? hasHandle(node.node) : node;\n}\n/**\nFind the matching bracket for the token at `pos`, scanning\ndirection `dir`. Only the `brackets` and `maxScanDistance`\nproperties are used from `config`, if given. Returns null if no\nbracket was found at `pos`, or a match result otherwise.\n*/\nfunction matchBrackets(state, pos, dir, config = {}) {\n let maxScanDistance = config.maxScanDistance || DefaultScanDist, brackets = config.brackets || DefaultBrackets;\n let tree = syntaxTree(state), node = tree.resolveInner(pos, dir);\n for (let cur = node; cur; cur = cur.parent) {\n let matches = matchingNodes(cur.type, dir, brackets);\n if (matches && cur.from < cur.to) {\n let handle = findHandle(cur);\n if (handle && (dir > 0 ? pos >= handle.from && pos < handle.to : pos > handle.from && pos <= handle.to))\n return matchMarkedBrackets(state, pos, dir, cur, handle, matches, brackets);\n }\n }\n return matchPlainBrackets(state, pos, dir, tree, node.type, maxScanDistance, brackets);\n}\nfunction matchMarkedBrackets(_state, _pos, dir, token, handle, matching, brackets) {\n let parent = token.parent, firstToken = { from: handle.from, to: handle.to };\n let depth = 0, cursor = parent === null || parent === void 0 ? void 0 : parent.cursor();\n if (cursor && (dir < 0 ? cursor.childBefore(token.from) : cursor.childAfter(token.to)))\n do {\n if (dir < 0 ? cursor.to <= token.from : cursor.from >= token.to) {\n if (depth == 0 && matching.indexOf(cursor.type.name) > -1 && cursor.from < cursor.to) {\n let endHandle = findHandle(cursor);\n return { start: firstToken, end: endHandle ? { from: endHandle.from, to: endHandle.to } : undefined, matched: true };\n }\n else if (matchingNodes(cursor.type, dir, brackets)) {\n depth++;\n }\n else if (matchingNodes(cursor.type, -dir, brackets)) {\n if (depth == 0) {\n let endHandle = findHandle(cursor);\n return {\n start: firstToken,\n end: endHandle && endHandle.from < endHandle.to ? { from: endHandle.from, to: endHandle.to } : undefined,\n matched: false\n };\n }\n depth--;\n }\n }\n } while (dir < 0 ? cursor.prevSibling() : cursor.nextSibling());\n return { start: firstToken, matched: false };\n}\nfunction matchPlainBrackets(state, pos, dir, tree, tokenType, maxScanDistance, brackets) {\n let startCh = dir < 0 ? state.sliceDoc(pos - 1, pos) : state.sliceDoc(pos, pos + 1);\n let bracket = brackets.indexOf(startCh);\n if (bracket < 0 || (bracket % 2 == 0) != (dir > 0))\n return null;\n let startToken = { from: dir < 0 ? pos - 1 : pos, to: dir > 0 ? pos + 1 : pos };\n let iter = state.doc.iterRange(pos, dir > 0 ? state.doc.length : 0), depth = 0;\n for (let distance = 0; !(iter.next()).done && distance <= maxScanDistance;) {\n let text = iter.value;\n if (dir < 0)\n distance += text.length;\n let basePos = pos + distance * dir;\n for (let pos = dir > 0 ? 0 : text.length - 1, end = dir > 0 ? text.length : -1; pos != end; pos += dir) {\n let found = brackets.indexOf(text[pos]);\n if (found < 0 || tree.resolveInner(basePos + pos, 1).type != tokenType)\n continue;\n if ((found % 2 == 0) == (dir > 0)) {\n depth++;\n }\n else if (depth == 1) { // Closing\n return { start: startToken, end: { from: basePos + pos, to: basePos + pos + 1 }, matched: (found >> 1) == (bracket >> 1) };\n }\n else {\n depth--;\n }\n }\n if (dir > 0)\n distance += text.length;\n }\n return iter.done ? { start: startToken, matched: false } : null;\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nfunction countCol(string, end, tabSize, startIndex = 0, startValue = 0) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1)\n end = string.length;\n }\n let n = startValue;\n for (let i = startIndex; i < end; i++) {\n if (string.charCodeAt(i) == 9)\n n += tabSize - (n % tabSize);\n else\n n++;\n }\n return n;\n}\n/**\nEncapsulates a single line of input. Given to stream syntax code,\nwhich uses it to tokenize the content.\n*/\nclass StringStream {\n /**\n Create a stream.\n */\n constructor(\n /**\n The line.\n */\n string, tabSize, \n /**\n The current indent unit size.\n */\n indentUnit, overrideIndent) {\n this.string = string;\n this.tabSize = tabSize;\n this.indentUnit = indentUnit;\n this.overrideIndent = overrideIndent;\n /**\n The current position on the line.\n */\n this.pos = 0;\n /**\n The start position of the current token.\n */\n this.start = 0;\n this.lastColumnPos = 0;\n this.lastColumnValue = 0;\n }\n /**\n True if we are at the end of the line.\n */\n eol() { return this.pos >= this.string.length; }\n /**\n True if we are at the start of the line.\n */\n sol() { return this.pos == 0; }\n /**\n Get the next code unit after the current position, or undefined\n if we're at the end of the line.\n */\n peek() { return this.string.charAt(this.pos) || undefined; }\n /**\n Read the next code unit and advance `this.pos`.\n */\n next() {\n if (this.pos < this.string.length)\n return this.string.charAt(this.pos++);\n }\n /**\n Match the next character against the given string, regular\n expression, or predicate. Consume and return it if it matches.\n */\n eat(match) {\n let ch = this.string.charAt(this.pos);\n let ok;\n if (typeof match == \"string\")\n ok = ch == match;\n else\n ok = ch && (match instanceof RegExp ? match.test(ch) : match(ch));\n if (ok) {\n ++this.pos;\n return ch;\n }\n }\n /**\n Continue matching characters that match the given string,\n regular expression, or predicate function. Return true if any\n characters were consumed.\n */\n eatWhile(match) {\n let start = this.pos;\n while (this.eat(match)) { }\n return this.pos > start;\n }\n /**\n Consume whitespace ahead of `this.pos`. Return true if any was\n found.\n */\n eatSpace() {\n let start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos)))\n ++this.pos;\n return this.pos > start;\n }\n /**\n Move to the end of the line.\n */\n skipToEnd() { this.pos = this.string.length; }\n /**\n Move to directly before the given character, if found on the\n current line.\n */\n skipTo(ch) {\n let found = this.string.indexOf(ch, this.pos);\n if (found > -1) {\n this.pos = found;\n return true;\n }\n }\n /**\n Move back `n` characters.\n */\n backUp(n) { this.pos -= n; }\n /**\n Get the column position at `this.pos`.\n */\n column() {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countCol(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue;\n }\n /**\n Get the indentation column of the current line.\n */\n indentation() {\n var _a;\n return (_a = this.overrideIndent) !== null && _a !== void 0 ? _a : countCol(this.string, null, this.tabSize);\n }\n /**\n Match the input against the given string or regular expression\n (which should start with a `^`). Return true or the regexp match\n if it matches.\n \n Unless `consume` is set to `false`, this will move `this.pos`\n past the matched text.\n \n When matching a string `caseInsensitive` can be set to true to\n make the match case-insensitive.\n */\n match(pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n let cased = (str) => caseInsensitive ? str.toLowerCase() : str;\n let substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false)\n this.pos += pattern.length;\n return true;\n }\n else\n return null;\n }\n else {\n let match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0)\n return null;\n if (match && consume !== false)\n this.pos += match[0].length;\n return match;\n }\n }\n /**\n Get the current token.\n */\n current() { return this.string.slice(this.start, this.pos); }\n}\n\nfunction fullParser(spec) {\n return {\n name: spec.name || \"\",\n token: spec.token,\n blankLine: spec.blankLine || (() => { }),\n startState: spec.startState || (() => true),\n copyState: spec.copyState || defaultCopyState,\n indent: spec.indent || (() => null),\n languageData: spec.languageData || {},\n tokenTable: spec.tokenTable || noTokens\n };\n}\nfunction defaultCopyState(state) {\n if (typeof state != \"object\")\n return state;\n let newState = {};\n for (let prop in state) {\n let val = state[prop];\n newState[prop] = (val instanceof Array ? val.slice() : val);\n }\n return newState;\n}\nconst IndentedFrom = /*@__PURE__*/new WeakMap();\n/**\nA [language](https://codemirror.net/6/docs/ref/#language.Language) class based on a CodeMirror\n5-style [streaming parser](https://codemirror.net/6/docs/ref/#language.StreamParser).\n*/\nclass StreamLanguage extends Language {\n constructor(parser) {\n let data = defineLanguageFacet(parser.languageData);\n let p = fullParser(parser), self;\n let impl = new class extends Parser {\n createParse(input, fragments, ranges) {\n return new Parse(self, input, fragments, ranges);\n }\n };\n super(data, impl, [indentService.of((cx, pos) => this.getIndent(cx, pos))], parser.name);\n this.topNode = docID(data);\n self = this;\n this.streamParser = p;\n this.stateAfter = new NodeProp({ perNode: true });\n this.tokenTable = parser.tokenTable ? new TokenTable(p.tokenTable) : defaultTokenTable;\n }\n /**\n Define a stream language.\n */\n static define(spec) { return new StreamLanguage(spec); }\n getIndent(cx, pos) {\n let tree = syntaxTree(cx.state), at = tree.resolve(pos);\n while (at && at.type != this.topNode)\n at = at.parent;\n if (!at)\n return null;\n let from = undefined;\n let { overrideIndentation } = cx.options;\n if (overrideIndentation) {\n from = IndentedFrom.get(cx.state);\n if (from != null && from < pos - 1e4)\n from = undefined;\n }\n let start = findState(this, tree, 0, at.from, from !== null && from !== void 0 ? from : pos), statePos, state;\n if (start) {\n state = start.state;\n statePos = start.pos + 1;\n }\n else {\n state = this.streamParser.startState(cx.unit);\n statePos = 0;\n }\n if (pos - statePos > 10000 /* C.MaxIndentScanDist */)\n return null;\n while (statePos < pos) {\n let line = cx.state.doc.lineAt(statePos), end = Math.min(pos, line.to);\n if (line.length) {\n let indentation = overrideIndentation ? overrideIndentation(line.from) : -1;\n let stream = new StringStream(line.text, cx.state.tabSize, cx.unit, indentation < 0 ? undefined : indentation);\n while (stream.pos < end - line.from)\n readToken(this.streamParser.token, stream, state);\n }\n else {\n this.streamParser.blankLine(state, cx.unit);\n }\n if (end == pos)\n break;\n statePos = line.to + 1;\n }\n let line = cx.lineAt(pos);\n if (overrideIndentation && from == null)\n IndentedFrom.set(cx.state, line.from);\n return this.streamParser.indent(state, /^\\s*(.*)/.exec(line.text)[1], cx);\n }\n get allowsNesting() { return false; }\n}\nfunction findState(lang, tree, off, startPos, before) {\n let state = off >= startPos && off + tree.length <= before && tree.prop(lang.stateAfter);\n if (state)\n return { state: lang.streamParser.copyState(state), pos: off + tree.length };\n for (let i = tree.children.length - 1; i >= 0; i--) {\n let child = tree.children[i], pos = off + tree.positions[i];\n let found = child instanceof Tree && pos < before && findState(lang, child, pos, startPos, before);\n if (found)\n return found;\n }\n return null;\n}\nfunction cutTree(lang, tree, from, to, inside) {\n if (inside && from <= 0 && to >= tree.length)\n return tree;\n if (!inside && tree.type == lang.topNode)\n inside = true;\n for (let i = tree.children.length - 1; i >= 0; i--) {\n let pos = tree.positions[i], child = tree.children[i], inner;\n if (pos < to && child instanceof Tree) {\n if (!(inner = cutTree(lang, child, from - pos, to - pos, inside)))\n break;\n return !inside ? inner\n : new Tree(tree.type, tree.children.slice(0, i).concat(inner), tree.positions.slice(0, i + 1), pos + inner.length);\n }\n }\n return null;\n}\nfunction findStartInFragments(lang, fragments, startPos, editorState) {\n for (let f of fragments) {\n let from = f.from + (f.openStart ? 25 : 0), to = f.to - (f.openEnd ? 25 : 0);\n let found = from <= startPos && to > startPos && findState(lang, f.tree, 0 - f.offset, startPos, to), tree;\n if (found && (tree = cutTree(lang, f.tree, startPos + f.offset, found.pos + f.offset, false)))\n return { state: found.state, tree };\n }\n return { state: lang.streamParser.startState(editorState ? getIndentUnit(editorState) : 4), tree: Tree.empty };\n}\nclass Parse {\n constructor(lang, input, fragments, ranges) {\n this.lang = lang;\n this.input = input;\n this.fragments = fragments;\n this.ranges = ranges;\n this.stoppedAt = null;\n this.chunks = [];\n this.chunkPos = [];\n this.chunk = [];\n this.chunkReused = undefined;\n this.rangeIndex = 0;\n this.to = ranges[ranges.length - 1].to;\n let context = ParseContext.get(), from = ranges[0].from;\n let { state, tree } = findStartInFragments(lang, fragments, from, context === null || context === void 0 ? void 0 : context.state);\n this.state = state;\n this.parsedPos = this.chunkStart = from + tree.length;\n for (let i = 0; i < tree.children.length; i++) {\n this.chunks.push(tree.children[i]);\n this.chunkPos.push(tree.positions[i]);\n }\n if (context && this.parsedPos < context.viewport.from - 100000 /* C.MaxDistanceBeforeViewport */) {\n this.state = this.lang.streamParser.startState(getIndentUnit(context.state));\n context.skipUntilInView(this.parsedPos, context.viewport.from);\n this.parsedPos = context.viewport.from;\n }\n this.moveRangeIndex();\n }\n advance() {\n let context = ParseContext.get();\n let parseEnd = this.stoppedAt == null ? this.to : Math.min(this.to, this.stoppedAt);\n let end = Math.min(parseEnd, this.chunkStart + 2048 /* C.ChunkSize */);\n if (context)\n end = Math.min(end, context.viewport.to);\n while (this.parsedPos < end)\n this.parseLine(context);\n if (this.chunkStart < this.parsedPos)\n this.finishChunk();\n if (this.parsedPos >= parseEnd)\n return this.finish();\n if (context && this.parsedPos >= context.viewport.to) {\n context.skipUntilInView(this.parsedPos, parseEnd);\n return this.finish();\n }\n return null;\n }\n stopAt(pos) {\n this.stoppedAt = pos;\n }\n lineAfter(pos) {\n let chunk = this.input.chunk(pos);\n if (!this.input.lineChunks) {\n let eol = chunk.indexOf(\"\\n\");\n if (eol > -1)\n chunk = chunk.slice(0, eol);\n }\n else if (chunk == \"\\n\") {\n chunk = \"\";\n }\n return pos + chunk.length <= this.to ? chunk : chunk.slice(0, this.to - pos);\n }\n nextLine() {\n let from = this.parsedPos, line = this.lineAfter(from), end = from + line.length;\n for (let index = this.rangeIndex;;) {\n let rangeEnd = this.ranges[index].to;\n if (rangeEnd >= end)\n break;\n line = line.slice(0, rangeEnd - (end - line.length));\n index++;\n if (index == this.ranges.length)\n break;\n let rangeStart = this.ranges[index].from;\n let after = this.lineAfter(rangeStart);\n line += after;\n end = rangeStart + after.length;\n }\n return { line, end };\n }\n skipGapsTo(pos, offset, side) {\n for (;;) {\n let end = this.ranges[this.rangeIndex].to, offPos = pos + offset;\n if (side > 0 ? end > offPos : end >= offPos)\n break;\n let start = this.ranges[++this.rangeIndex].from;\n offset += start - end;\n }\n return offset;\n }\n moveRangeIndex() {\n while (this.ranges[this.rangeIndex].to < this.parsedPos)\n this.rangeIndex++;\n }\n emitToken(id, from, to, size, offset) {\n if (this.ranges.length > 1) {\n offset = this.skipGapsTo(from, offset, 1);\n from += offset;\n let len0 = this.chunk.length;\n offset = this.skipGapsTo(to, offset, -1);\n to += offset;\n size += this.chunk.length - len0;\n }\n this.chunk.push(id, from, to, size);\n return offset;\n }\n parseLine(context) {\n let { line, end } = this.nextLine(), offset = 0, { streamParser } = this.lang;\n let stream = new StringStream(line, context ? context.state.tabSize : 4, context ? getIndentUnit(context.state) : 2);\n if (stream.eol()) {\n streamParser.blankLine(this.state, stream.indentUnit);\n }\n else {\n while (!stream.eol()) {\n let token = readToken(streamParser.token, stream, this.state);\n if (token)\n offset = this.emitToken(this.lang.tokenTable.resolve(token), this.parsedPos + stream.start, this.parsedPos + stream.pos, 4, offset);\n if (stream.start > 10000 /* C.MaxLineLength */)\n break;\n }\n }\n this.parsedPos = end;\n this.moveRangeIndex();\n if (this.parsedPos < this.to)\n this.parsedPos++;\n }\n finishChunk() {\n let tree = Tree.build({\n buffer: this.chunk,\n start: this.chunkStart,\n length: this.parsedPos - this.chunkStart,\n nodeSet,\n topID: 0,\n maxBufferLength: 2048 /* C.ChunkSize */,\n reused: this.chunkReused\n });\n tree = new Tree(tree.type, tree.children, tree.positions, tree.length, [[this.lang.stateAfter, this.lang.streamParser.copyState(this.state)]]);\n this.chunks.push(tree);\n this.chunkPos.push(this.chunkStart - this.ranges[0].from);\n this.chunk = [];\n this.chunkReused = undefined;\n this.chunkStart = this.parsedPos;\n }\n finish() {\n return new Tree(this.lang.topNode, this.chunks, this.chunkPos, this.parsedPos - this.ranges[0].from).balance();\n }\n}\nfunction readToken(token, stream, state) {\n stream.start = stream.pos;\n for (let i = 0; i < 10; i++) {\n let result = token(stream, state);\n if (stream.pos > stream.start)\n return result;\n }\n throw new Error(\"Stream parser failed to advance stream.\");\n}\nconst noTokens = /*@__PURE__*/Object.create(null);\nconst typeArray = [NodeType.none];\nconst nodeSet = /*@__PURE__*/new NodeSet(typeArray);\nconst warned = [];\n// Cache of node types by name and tags\nconst byTag = /*@__PURE__*/Object.create(null);\nconst defaultTable = /*@__PURE__*/Object.create(null);\nfor (let [legacyName, name] of [\n [\"variable\", \"variableName\"],\n [\"variable-2\", \"variableName.special\"],\n [\"string-2\", \"string.special\"],\n [\"def\", \"variableName.definition\"],\n [\"tag\", \"tagName\"],\n [\"attribute\", \"attributeName\"],\n [\"type\", \"typeName\"],\n [\"builtin\", \"variableName.standard\"],\n [\"qualifier\", \"modifier\"],\n [\"error\", \"invalid\"],\n [\"header\", \"heading\"],\n [\"property\", \"propertyName\"]\n])\n defaultTable[legacyName] = /*@__PURE__*/createTokenType(noTokens, name);\nclass TokenTable {\n constructor(extra) {\n this.extra = extra;\n this.table = Object.assign(Object.create(null), defaultTable);\n }\n resolve(tag) {\n return !tag ? 0 : this.table[tag] || (this.table[tag] = createTokenType(this.extra, tag));\n }\n}\nconst defaultTokenTable = /*@__PURE__*/new TokenTable(noTokens);\nfunction warnForPart(part, msg) {\n if (warned.indexOf(part) > -1)\n return;\n warned.push(part);\n console.warn(msg);\n}\nfunction createTokenType(extra, tagStr) {\n let tags$1 = [];\n for (let name of tagStr.split(\" \")) {\n let found = [];\n for (let part of name.split(\".\")) {\n let value = (extra[part] || tags[part]);\n if (!value) {\n warnForPart(part, `Unknown highlighting tag ${part}`);\n }\n else if (typeof value == \"function\") {\n if (!found.length)\n warnForPart(part, `Modifier ${part} used at start of tag`);\n else\n found = found.map(value);\n }\n else {\n if (found.length)\n warnForPart(part, `Tag ${part} used as modifier`);\n else\n found = Array.isArray(value) ? value : [value];\n }\n }\n for (let tag of found)\n tags$1.push(tag);\n }\n if (!tags$1.length)\n return 0;\n let name = tagStr.replace(/ /g, \"_\"), key = name + \" \" + tags$1.map(t => t.id);\n let known = byTag[key];\n if (known)\n return known.id;\n let type = byTag[key] = NodeType.define({\n id: typeArray.length,\n name,\n props: [styleTags({ [name]: tags$1 })]\n });\n typeArray.push(type);\n return type.id;\n}\nfunction docID(data) {\n let type = NodeType.define({ id: typeArray.length, name: \"Document\", props: [languageDataProp.add(() => data)], top: true });\n typeArray.push(type);\n return type;\n}\n\nfunction buildForLine(line) {\n return line.length <= 4096 && /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/.test(line);\n}\nfunction textHasRTL(text) {\n for (let i = text.iter(); !i.next().done;)\n if (buildForLine(i.value))\n return true;\n return false;\n}\nfunction changeAddsRTL(change) {\n let added = false;\n change.iterChanges((fA, tA, fB, tB, ins) => {\n if (!added && textHasRTL(ins))\n added = true;\n });\n return added;\n}\nconst alwaysIsolate = /*@__PURE__*/Facet.define({ combine: values => values.some(x => x) });\n/**\nMake sure nodes\n[marked](https://lezer.codemirror.net/docs/ref/#common.NodeProp^isolate)\nas isolating for bidirectional text are rendered in a way that\nisolates them from the surrounding text.\n*/\nfunction bidiIsolates(options = {}) {\n let extensions = [isolateMarks];\n if (options.alwaysIsolate)\n extensions.push(alwaysIsolate.of(true));\n return extensions;\n}\nconst isolateMarks = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.always = view.state.facet(alwaysIsolate) ||\n view.textDirection != Direction.LTR ||\n view.state.facet(EditorView.perLineTextDirection);\n this.hasRTL = !this.always && textHasRTL(view.state.doc);\n this.tree = syntaxTree(view.state);\n this.decorations = this.always || this.hasRTL ? buildDeco(view, this.tree, this.always) : Decoration.none;\n }\n update(update) {\n let always = update.state.facet(alwaysIsolate) ||\n update.view.textDirection != Direction.LTR ||\n update.state.facet(EditorView.perLineTextDirection);\n if (!always && !this.hasRTL && changeAddsRTL(update.changes))\n this.hasRTL = true;\n if (!always && !this.hasRTL)\n return;\n let tree = syntaxTree(update.state);\n if (always != this.always || tree != this.tree || update.docChanged || update.viewportChanged) {\n this.tree = tree;\n this.always = always;\n this.decorations = buildDeco(update.view, tree, always);\n }\n }\n}, {\n provide: plugin => {\n function access(view) {\n var _a, _b;\n return (_b = (_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.decorations) !== null && _b !== void 0 ? _b : Decoration.none;\n }\n return [EditorView.outerDecorations.of(access),\n Prec.lowest(EditorView.bidiIsolatedRanges.of(access))];\n }\n});\nfunction buildDeco(view, tree, always) {\n let deco = new RangeSetBuilder();\n let ranges = view.visibleRanges;\n if (!always)\n ranges = clipRTLLines(ranges, view.state.doc);\n for (let { from, to } of ranges) {\n tree.iterate({\n enter: node => {\n let iso = node.type.prop(NodeProp.isolate);\n if (iso)\n deco.add(node.from, node.to, marks[iso]);\n },\n from, to\n });\n }\n return deco.finish();\n}\nfunction clipRTLLines(ranges, doc) {\n let cur = doc.iter(), pos = 0, result = [], last = null;\n for (let { from, to } of ranges) {\n if (last && last.to > from) {\n from = last.to;\n if (from >= to)\n continue;\n }\n if (pos + cur.value.length < from) {\n cur.next(from - (pos + cur.value.length));\n pos = from;\n }\n for (;;) {\n let start = pos, end = pos + cur.value.length;\n if (!cur.lineBreak && buildForLine(cur.value)) {\n if (last && last.to > start - 10)\n last.to = Math.min(to, end);\n else\n result.push(last = { from: start, to: Math.min(to, end) });\n }\n if (end >= to)\n break;\n pos = end;\n cur.next();\n }\n }\n return result;\n}\nconst marks = {\n rtl: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"rtl\" }, bidiIsolate: Direction.RTL }),\n ltr: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"ltr\" }, bidiIsolate: Direction.LTR }),\n auto: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"auto\" }, bidiIsolate: null })\n};\n\nexport { DocInput, HighlightStyle, IndentContext, LRLanguage, Language, LanguageDescription, LanguageSupport, ParseContext, StreamLanguage, StringStream, TreeIndentContext, bidiIsolates, bracketMatching, bracketMatchingHandle, codeFolding, continuedIndent, defaultHighlightStyle, defineLanguageFacet, delimitedIndent, ensureSyntaxTree, flatIndent, foldAll, foldCode, foldEffect, foldGutter, foldInside, foldKeymap, foldNodeProp, foldService, foldState, foldable, foldedRanges, forceParsing, getIndentUnit, getIndentation, highlightingFor, indentNodeProp, indentOnInput, indentRange, indentService, indentString, indentUnit, language, languageDataProp, matchBrackets, sublanguageProp, syntaxHighlighting, syntaxParserRunning, syntaxTree, syntaxTreeAvailable, toggleFold, unfoldAll, unfoldCode, unfoldEffect };\n","import { Annotation, StateEffect, EditorSelection, codePointAt, codePointSize, fromCodePoint, Facet, combineConfig, StateField, Prec, Text, Transaction, MapMode, RangeValue, RangeSet, CharCategory } from '@codemirror/state';\nimport { Direction, logException, showTooltip, EditorView, ViewPlugin, getTooltip, Decoration, WidgetType, keymap } from '@codemirror/view';\nimport { syntaxTree, indentUnit } from '@codemirror/language';\n\n/**\nAn instance of this is passed to completion source functions.\n*/\nclass CompletionContext {\n /**\n Create a new completion context. (Mostly useful for testing\n completion sources—in the editor, the extension will create\n these for you.)\n */\n constructor(\n /**\n The editor state that the completion happens in.\n */\n state, \n /**\n The position at which the completion is happening.\n */\n pos, \n /**\n Indicates whether completion was activated explicitly, or\n implicitly by typing. The usual way to respond to this is to\n only return completions when either there is part of a\n completable entity before the cursor, or `explicit` is true.\n */\n explicit, \n /**\n The editor view. May be undefined if the context was created\n in a situation where there is no such view available, such as\n in synchronous updates via\n [`CompletionResult.update`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.update)\n or when called by test code.\n */\n view) {\n this.state = state;\n this.pos = pos;\n this.explicit = explicit;\n this.view = view;\n /**\n @internal\n */\n this.abortListeners = [];\n /**\n @internal\n */\n this.abortOnDocChange = false;\n }\n /**\n Get the extent, content, and (if there is a token) type of the\n token before `this.pos`.\n */\n tokenBefore(types) {\n let token = syntaxTree(this.state).resolveInner(this.pos, -1);\n while (token && types.indexOf(token.name) < 0)\n token = token.parent;\n return token ? { from: token.from, to: this.pos,\n text: this.state.sliceDoc(token.from, this.pos),\n type: token.type } : null;\n }\n /**\n Get the match of the given expression directly before the\n cursor.\n */\n matchBefore(expr) {\n let line = this.state.doc.lineAt(this.pos);\n let start = Math.max(line.from, this.pos - 250);\n let str = line.text.slice(start - line.from, this.pos - line.from);\n let found = str.search(ensureAnchor(expr, false));\n return found < 0 ? null : { from: start + found, to: this.pos, text: str.slice(found) };\n }\n /**\n Yields true when the query has been aborted. Can be useful in\n asynchronous queries to avoid doing work that will be ignored.\n */\n get aborted() { return this.abortListeners == null; }\n /**\n Allows you to register abort handlers, which will be called when\n the query is\n [aborted](https://codemirror.net/6/docs/ref/#autocomplete.CompletionContext.aborted).\n \n By default, running queries will not be aborted for regular\n typing or backspacing, on the assumption that they are likely to\n return a result with a\n [`validFor`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.validFor) field that\n allows the result to be used after all. Passing `onDocChange:\n true` will cause this query to be aborted for any document\n change.\n */\n addEventListener(type, listener, options) {\n if (type == \"abort\" && this.abortListeners) {\n this.abortListeners.push(listener);\n if (options && options.onDocChange)\n this.abortOnDocChange = true;\n }\n }\n}\nfunction toSet(chars) {\n let flat = Object.keys(chars).join(\"\");\n let words = /\\w/.test(flat);\n if (words)\n flat = flat.replace(/\\w/g, \"\");\n return `[${words ? \"\\\\w\" : \"\"}${flat.replace(/[^\\w\\s]/g, \"\\\\$&\")}]`;\n}\nfunction prefixMatch(options) {\n let first = Object.create(null), rest = Object.create(null);\n for (let { label } of options) {\n first[label[0]] = true;\n for (let i = 1; i < label.length; i++)\n rest[label[i]] = true;\n }\n let source = toSet(first) + toSet(rest) + \"*$\";\n return [new RegExp(\"^\" + source), new RegExp(source)];\n}\n/**\nGiven a a fixed array of options, return an autocompleter that\ncompletes them.\n*/\nfunction completeFromList(list) {\n let options = list.map(o => typeof o == \"string\" ? { label: o } : o);\n let [validFor, match] = options.every(o => /^\\w+$/.test(o.label)) ? [/\\w*$/, /\\w+$/] : prefixMatch(options);\n return (context) => {\n let token = context.matchBefore(match);\n return token || context.explicit ? { from: token ? token.from : context.pos, options, validFor } : null;\n };\n}\n/**\nWrap the given completion source so that it will only fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return source(context);\n if (pos.type.isTop)\n break;\n }\n return null;\n };\n}\n/**\nWrap the given completion source so that it will not fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifNotIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return null;\n if (pos.type.isTop)\n break;\n }\n return source(context);\n };\n}\nclass Option {\n constructor(completion, source, match, score) {\n this.completion = completion;\n this.source = source;\n this.match = match;\n this.score = score;\n }\n}\nfunction cur(state) { return state.selection.main.from; }\n// Make sure the given regexp has a $ at its end and, if `start` is\n// true, a ^ at its start.\nfunction ensureAnchor(expr, start) {\n var _a;\n let { source } = expr;\n let addStart = start && source[0] != \"^\", addEnd = source[source.length - 1] != \"$\";\n if (!addStart && !addEnd)\n return expr;\n return new RegExp(`${addStart ? \"^\" : \"\"}(?:${source})${addEnd ? \"$\" : \"\"}`, (_a = expr.flags) !== null && _a !== void 0 ? _a : (expr.ignoreCase ? \"i\" : \"\"));\n}\n/**\nThis annotation is added to transactions that are produced by\npicking a completion.\n*/\nconst pickedCompletion = /*@__PURE__*/Annotation.define();\n/**\nHelper function that returns a transaction spec which inserts a\ncompletion's text in the main selection range, and any other\nselection range that has the same text in front of it.\n*/\nfunction insertCompletionText(state, text, from, to) {\n let { main } = state.selection, fromOff = from - main.from, toOff = to - main.from;\n return Object.assign(Object.assign({}, state.changeByRange(range => {\n if (range != main && from != to &&\n state.sliceDoc(range.from + fromOff, range.from + toOff) != state.sliceDoc(from, to))\n return { range };\n let lines = state.toText(text);\n return {\n changes: { from: range.from + fromOff, to: to == main.from ? range.to : range.from + toOff, insert: lines },\n range: EditorSelection.cursor(range.from + fromOff + lines.length)\n };\n })), { scrollIntoView: true, userEvent: \"input.complete\" });\n}\nconst SourceCache = /*@__PURE__*/new WeakMap();\nfunction asSource(source) {\n if (!Array.isArray(source))\n return source;\n let known = SourceCache.get(source);\n if (!known)\n SourceCache.set(source, known = completeFromList(source));\n return known;\n}\nconst startCompletionEffect = /*@__PURE__*/StateEffect.define();\nconst closeCompletionEffect = /*@__PURE__*/StateEffect.define();\n\n// A pattern matcher for fuzzy completion matching. Create an instance\n// once for a pattern, and then use that to match any number of\n// completions.\nclass FuzzyMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.chars = [];\n this.folded = [];\n // Buffers reused by calls to `match` to track matched character\n // positions.\n this.any = [];\n this.precise = [];\n this.byWord = [];\n this.score = 0;\n this.matched = [];\n for (let p = 0; p < pattern.length;) {\n let char = codePointAt(pattern, p), size = codePointSize(char);\n this.chars.push(char);\n let part = pattern.slice(p, p + size), upper = part.toUpperCase();\n this.folded.push(codePointAt(upper == part ? part.toLowerCase() : upper, 0));\n p += size;\n }\n this.astral = pattern.length != this.chars.length;\n }\n ret(score, matched) {\n this.score = score;\n this.matched = matched;\n return this;\n }\n // Matches a given word (completion) against the pattern (input).\n // Will return a boolean indicating whether there was a match and,\n // on success, set `this.score` to the score, `this.matched` to an\n // array of `from, to` pairs indicating the matched parts of `word`.\n //\n // The score is a number that is more negative the worse the match\n // is. See `Penalty` above.\n match(word) {\n if (this.pattern.length == 0)\n return this.ret(-100 /* Penalty.NotFull */, []);\n if (word.length < this.pattern.length)\n return null;\n let { chars, folded, any, precise, byWord } = this;\n // For single-character queries, only match when they occur right\n // at the start\n if (chars.length == 1) {\n let first = codePointAt(word, 0), firstSize = codePointSize(first);\n let score = firstSize == word.length ? 0 : -100 /* Penalty.NotFull */;\n if (first == chars[0]) ;\n else if (first == folded[0])\n score += -200 /* Penalty.CaseFold */;\n else\n return null;\n return this.ret(score, [0, firstSize]);\n }\n let direct = word.indexOf(this.pattern);\n if (direct == 0)\n return this.ret(word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */, [0, this.pattern.length]);\n let len = chars.length, anyTo = 0;\n if (direct < 0) {\n for (let i = 0, e = Math.min(word.length, 200); i < e && anyTo < len;) {\n let next = codePointAt(word, i);\n if (next == chars[anyTo] || next == folded[anyTo])\n any[anyTo++] = i;\n i += codePointSize(next);\n }\n // No match, exit immediately\n if (anyTo < len)\n return null;\n }\n // This tracks the extent of the precise (non-folded, not\n // necessarily adjacent) match\n let preciseTo = 0;\n // Tracks whether there is a match that hits only characters that\n // appear to be starting words. `byWordFolded` is set to true when\n // a case folded character is encountered in such a match\n let byWordTo = 0, byWordFolded = false;\n // If we've found a partial adjacent match, these track its state\n let adjacentTo = 0, adjacentStart = -1, adjacentEnd = -1;\n let hasLower = /[a-z]/.test(word), wordAdjacent = true;\n // Go over the option's text, scanning for the various kinds of matches\n for (let i = 0, e = Math.min(word.length, 200), prevType = 0 /* Tp.NonWord */; i < e && byWordTo < len;) {\n let next = codePointAt(word, i);\n if (direct < 0) {\n if (preciseTo < len && next == chars[preciseTo])\n precise[preciseTo++] = i;\n if (adjacentTo < len) {\n if (next == chars[adjacentTo] || next == folded[adjacentTo]) {\n if (adjacentTo == 0)\n adjacentStart = i;\n adjacentEnd = i + 1;\n adjacentTo++;\n }\n else {\n adjacentTo = 0;\n }\n }\n }\n let ch, type = next < 0xff\n ? (next >= 48 && next <= 57 || next >= 97 && next <= 122 ? 2 /* Tp.Lower */ : next >= 65 && next <= 90 ? 1 /* Tp.Upper */ : 0 /* Tp.NonWord */)\n : ((ch = fromCodePoint(next)) != ch.toLowerCase() ? 1 /* Tp.Upper */ : ch != ch.toUpperCase() ? 2 /* Tp.Lower */ : 0 /* Tp.NonWord */);\n if (!i || type == 1 /* Tp.Upper */ && hasLower || prevType == 0 /* Tp.NonWord */ && type != 0 /* Tp.NonWord */) {\n if (chars[byWordTo] == next || (folded[byWordTo] == next && (byWordFolded = true)))\n byWord[byWordTo++] = i;\n else if (byWord.length)\n wordAdjacent = false;\n }\n prevType = type;\n i += codePointSize(next);\n }\n if (byWordTo == len && byWord[0] == 0 && wordAdjacent)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0), byWord, word);\n if (adjacentTo == len && adjacentStart == 0)\n return this.ret(-200 /* Penalty.CaseFold */ - word.length + (adjacentEnd == word.length ? 0 : -100 /* Penalty.NotFull */), [0, adjacentEnd]);\n if (direct > -1)\n return this.ret(-700 /* Penalty.NotStart */ - word.length, [direct, direct + this.pattern.length]);\n if (adjacentTo == len)\n return this.ret(-200 /* Penalty.CaseFold */ + -700 /* Penalty.NotStart */ - word.length, [adjacentStart, adjacentEnd]);\n if (byWordTo == len)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0) + -700 /* Penalty.NotStart */ +\n (wordAdjacent ? 0 : -1100 /* Penalty.Gap */), byWord, word);\n return chars.length == 2 ? null\n : this.result((any[0] ? -700 /* Penalty.NotStart */ : 0) + -200 /* Penalty.CaseFold */ + -1100 /* Penalty.Gap */, any, word);\n }\n result(score, positions, word) {\n let result = [], i = 0;\n for (let pos of positions) {\n let to = pos + (this.astral ? codePointSize(codePointAt(word, pos)) : 1);\n if (i && result[i - 1] == pos)\n result[i - 1] = to;\n else {\n result[i++] = pos;\n result[i++] = to;\n }\n }\n return this.ret(score - word.length, result);\n }\n}\nclass StrictMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.matched = [];\n this.score = 0;\n this.folded = pattern.toLowerCase();\n }\n match(word) {\n if (word.length < this.pattern.length)\n return null;\n let start = word.slice(0, this.pattern.length);\n let match = start == this.pattern ? 0 : start.toLowerCase() == this.folded ? -200 /* Penalty.CaseFold */ : null;\n if (match == null)\n return null;\n this.matched = [0, start.length];\n this.score = match + (word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */);\n return this;\n }\n}\n\nconst completionConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n activateOnTyping: true,\n activateOnCompletion: () => false,\n activateOnTypingDelay: 100,\n selectOnOpen: true,\n override: null,\n closeOnBlur: true,\n maxRenderedOptions: 100,\n defaultKeymap: true,\n tooltipClass: () => \"\",\n optionClass: () => \"\",\n aboveCursor: false,\n icons: true,\n addToOptions: [],\n positionInfo: defaultPositionInfo,\n filterStrict: false,\n compareCompletions: (a, b) => a.label.localeCompare(b.label),\n interactionDelay: 75,\n updateSyncTime: 100\n }, {\n defaultKeymap: (a, b) => a && b,\n closeOnBlur: (a, b) => a && b,\n icons: (a, b) => a && b,\n tooltipClass: (a, b) => c => joinClass(a(c), b(c)),\n optionClass: (a, b) => c => joinClass(a(c), b(c)),\n addToOptions: (a, b) => a.concat(b),\n filterStrict: (a, b) => a || b,\n });\n }\n});\nfunction joinClass(a, b) {\n return a ? b ? a + \" \" + b : a : b;\n}\nfunction defaultPositionInfo(view, list, option, info, space, tooltip) {\n let rtl = view.textDirection == Direction.RTL, left = rtl, narrow = false;\n let side = \"top\", offset, maxWidth;\n let spaceLeft = list.left - space.left, spaceRight = space.right - list.right;\n let infoWidth = info.right - info.left, infoHeight = info.bottom - info.top;\n if (left && spaceLeft < Math.min(infoWidth, spaceRight))\n left = false;\n else if (!left && spaceRight < Math.min(infoWidth, spaceLeft))\n left = true;\n if (infoWidth <= (left ? spaceLeft : spaceRight)) {\n offset = Math.max(space.top, Math.min(option.top, space.bottom - infoHeight)) - list.top;\n maxWidth = Math.min(400 /* Info.Width */, left ? spaceLeft : spaceRight);\n }\n else {\n narrow = true;\n maxWidth = Math.min(400 /* Info.Width */, (rtl ? list.right : space.right - list.left) - 30 /* Info.Margin */);\n let spaceBelow = space.bottom - list.bottom;\n if (spaceBelow >= infoHeight || spaceBelow > list.top) { // Below the completion\n offset = option.bottom - list.top;\n }\n else { // Above it\n side = \"bottom\";\n offset = list.bottom - option.top;\n }\n }\n let scaleY = (list.bottom - list.top) / tooltip.offsetHeight;\n let scaleX = (list.right - list.left) / tooltip.offsetWidth;\n return {\n style: `${side}: ${offset / scaleY}px; max-width: ${maxWidth / scaleX}px`,\n class: \"cm-completionInfo-\" + (narrow ? (rtl ? \"left-narrow\" : \"right-narrow\") : left ? \"left\" : \"right\")\n };\n}\n\nfunction optionContent(config) {\n let content = config.addToOptions.slice();\n if (config.icons)\n content.push({\n render(completion) {\n let icon = document.createElement(\"div\");\n icon.classList.add(\"cm-completionIcon\");\n if (completion.type)\n icon.classList.add(...completion.type.split(/\\s+/g).map(cls => \"cm-completionIcon-\" + cls));\n icon.setAttribute(\"aria-hidden\", \"true\");\n return icon;\n },\n position: 20\n });\n content.push({\n render(completion, _s, _v, match) {\n let labelElt = document.createElement(\"span\");\n labelElt.className = \"cm-completionLabel\";\n let label = completion.displayLabel || completion.label, off = 0;\n for (let j = 0; j < match.length;) {\n let from = match[j++], to = match[j++];\n if (from > off)\n labelElt.appendChild(document.createTextNode(label.slice(off, from)));\n let span = labelElt.appendChild(document.createElement(\"span\"));\n span.appendChild(document.createTextNode(label.slice(from, to)));\n span.className = \"cm-completionMatchedText\";\n off = to;\n }\n if (off < label.length)\n labelElt.appendChild(document.createTextNode(label.slice(off)));\n return labelElt;\n },\n position: 50\n }, {\n render(completion) {\n if (!completion.detail)\n return null;\n let detailElt = document.createElement(\"span\");\n detailElt.className = \"cm-completionDetail\";\n detailElt.textContent = completion.detail;\n return detailElt;\n },\n position: 80\n });\n return content.sort((a, b) => a.position - b.position).map(a => a.render);\n}\nfunction rangeAroundSelected(total, selected, max) {\n if (total <= max)\n return { from: 0, to: total };\n if (selected < 0)\n selected = 0;\n if (selected <= (total >> 1)) {\n let off = Math.floor(selected / max);\n return { from: off * max, to: (off + 1) * max };\n }\n let off = Math.floor((total - selected) / max);\n return { from: total - (off + 1) * max, to: total - off * max };\n}\nclass CompletionTooltip {\n constructor(view, stateField, applyCompletion) {\n this.view = view;\n this.stateField = stateField;\n this.applyCompletion = applyCompletion;\n this.info = null;\n this.infoDestroy = null;\n this.placeInfoReq = {\n read: () => this.measureInfo(),\n write: (pos) => this.placeInfo(pos),\n key: this\n };\n this.space = null;\n this.currentClass = \"\";\n let cState = view.state.field(stateField);\n let { options, selected } = cState.open;\n let config = view.state.facet(completionConfig);\n this.optionContent = optionContent(config);\n this.optionClass = config.optionClass;\n this.tooltipClass = config.tooltipClass;\n this.range = rangeAroundSelected(options.length, selected, config.maxRenderedOptions);\n this.dom = document.createElement(\"div\");\n this.dom.className = \"cm-tooltip-autocomplete\";\n this.updateTooltipClass(view.state);\n this.dom.addEventListener(\"mousedown\", (e) => {\n let { options } = view.state.field(stateField).open;\n for (let dom = e.target, match; dom && dom != this.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"LI\" && (match = /-(\\d+)$/.exec(dom.id)) && +match[1] < options.length) {\n this.applyCompletion(view, options[+match[1]]);\n e.preventDefault();\n return;\n }\n }\n });\n this.dom.addEventListener(\"focusout\", (e) => {\n let state = view.state.field(this.stateField, false);\n if (state && state.tooltip && view.state.facet(completionConfig).closeOnBlur &&\n e.relatedTarget != view.contentDOM)\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n });\n this.showOptions(options, cState.id);\n }\n mount() { this.updateSel(); }\n showOptions(options, id) {\n if (this.list)\n this.list.remove();\n this.list = this.dom.appendChild(this.createListBox(options, id, this.range));\n this.list.addEventListener(\"scroll\", () => {\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n });\n }\n update(update) {\n var _a;\n let cState = update.state.field(this.stateField);\n let prevState = update.startState.field(this.stateField);\n this.updateTooltipClass(update.state);\n if (cState != prevState) {\n let { options, selected, disabled } = cState.open;\n if (!prevState.open || prevState.open.options != options) {\n this.range = rangeAroundSelected(options.length, selected, update.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(options, cState.id);\n }\n this.updateSel();\n if (disabled != ((_a = prevState.open) === null || _a === void 0 ? void 0 : _a.disabled))\n this.dom.classList.toggle(\"cm-tooltip-autocomplete-disabled\", !!disabled);\n }\n }\n updateTooltipClass(state) {\n let cls = this.tooltipClass(state);\n if (cls != this.currentClass) {\n for (let c of this.currentClass.split(\" \"))\n if (c)\n this.dom.classList.remove(c);\n for (let c of cls.split(\" \"))\n if (c)\n this.dom.classList.add(c);\n this.currentClass = cls;\n }\n }\n positioned(space) {\n this.space = space;\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSel() {\n let cState = this.view.state.field(this.stateField), open = cState.open;\n if (open.selected > -1 && open.selected < this.range.from || open.selected >= this.range.to) {\n this.range = rangeAroundSelected(open.options.length, open.selected, this.view.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(open.options, cState.id);\n }\n if (this.updateSelectedOption(open.selected)) {\n this.destroyInfo();\n let { completion } = open.options[open.selected];\n let { info } = completion;\n if (!info)\n return;\n let infoResult = typeof info === \"string\" ? document.createTextNode(info) : info(completion);\n if (!infoResult)\n return;\n if (\"then\" in infoResult) {\n infoResult.then(obj => {\n if (obj && this.view.state.field(this.stateField, false) == cState)\n this.addInfoPane(obj, completion);\n }).catch(e => logException(this.view.state, e, \"completion info\"));\n }\n else {\n this.addInfoPane(infoResult, completion);\n }\n }\n }\n addInfoPane(content, completion) {\n this.destroyInfo();\n let wrap = this.info = document.createElement(\"div\");\n wrap.className = \"cm-tooltip cm-completionInfo\";\n if (content.nodeType != null) {\n wrap.appendChild(content);\n this.infoDestroy = null;\n }\n else {\n let { dom, destroy } = content;\n wrap.appendChild(dom);\n this.infoDestroy = destroy || null;\n }\n this.dom.appendChild(wrap);\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSelectedOption(selected) {\n let set = null;\n for (let opt = this.list.firstChild, i = this.range.from; opt; opt = opt.nextSibling, i++) {\n if (opt.nodeName != \"LI\" || !opt.id) {\n i--; // A section header\n }\n else if (i == selected) {\n if (!opt.hasAttribute(\"aria-selected\")) {\n opt.setAttribute(\"aria-selected\", \"true\");\n set = opt;\n }\n }\n else {\n if (opt.hasAttribute(\"aria-selected\"))\n opt.removeAttribute(\"aria-selected\");\n }\n }\n if (set)\n scrollIntoView(this.list, set);\n return set;\n }\n measureInfo() {\n let sel = this.dom.querySelector(\"[aria-selected]\");\n if (!sel || !this.info)\n return null;\n let listRect = this.dom.getBoundingClientRect();\n let infoRect = this.info.getBoundingClientRect();\n let selRect = sel.getBoundingClientRect();\n let space = this.space;\n if (!space) {\n let win = this.dom.ownerDocument.defaultView || window;\n space = { left: 0, top: 0, right: win.innerWidth, bottom: win.innerHeight };\n }\n if (selRect.top > Math.min(space.bottom, listRect.bottom) - 10 ||\n selRect.bottom < Math.max(space.top, listRect.top) + 10)\n return null;\n return this.view.state.facet(completionConfig).positionInfo(this.view, listRect, selRect, infoRect, space, this.dom);\n }\n placeInfo(pos) {\n if (this.info) {\n if (pos) {\n if (pos.style)\n this.info.style.cssText = pos.style;\n this.info.className = \"cm-tooltip cm-completionInfo \" + (pos.class || \"\");\n }\n else {\n this.info.style.cssText = \"top: -1e6px\";\n }\n }\n }\n createListBox(options, id, range) {\n const ul = document.createElement(\"ul\");\n ul.id = id;\n ul.setAttribute(\"role\", \"listbox\");\n ul.setAttribute(\"aria-expanded\", \"true\");\n ul.setAttribute(\"aria-label\", this.view.state.phrase(\"Completions\"));\n let curSection = null;\n for (let i = range.from; i < range.to; i++) {\n let { completion, match } = options[i], { section } = completion;\n if (section) {\n let name = typeof section == \"string\" ? section : section.name;\n if (name != curSection && (i > range.from || range.from == 0)) {\n curSection = name;\n if (typeof section != \"string\" && section.header) {\n ul.appendChild(section.header(section));\n }\n else {\n let header = ul.appendChild(document.createElement(\"completion-section\"));\n header.textContent = name;\n }\n }\n }\n const li = ul.appendChild(document.createElement(\"li\"));\n li.id = id + \"-\" + i;\n li.setAttribute(\"role\", \"option\");\n let cls = this.optionClass(completion);\n if (cls)\n li.className = cls;\n for (let source of this.optionContent) {\n let node = source(completion, this.view.state, this.view, match);\n if (node)\n li.appendChild(node);\n }\n }\n if (range.from)\n ul.classList.add(\"cm-completionListIncompleteTop\");\n if (range.to < options.length)\n ul.classList.add(\"cm-completionListIncompleteBottom\");\n return ul;\n }\n destroyInfo() {\n if (this.info) {\n if (this.infoDestroy)\n this.infoDestroy();\n this.info.remove();\n this.info = null;\n }\n }\n destroy() {\n this.destroyInfo();\n }\n}\nfunction completionTooltip(stateField, applyCompletion) {\n return (view) => new CompletionTooltip(view, stateField, applyCompletion);\n}\nfunction scrollIntoView(container, element) {\n let parent = container.getBoundingClientRect();\n let self = element.getBoundingClientRect();\n let scaleY = parent.height / container.offsetHeight;\n if (self.top < parent.top)\n container.scrollTop -= (parent.top - self.top) / scaleY;\n else if (self.bottom > parent.bottom)\n container.scrollTop += (self.bottom - parent.bottom) / scaleY;\n}\n\n// Used to pick a preferred option when two options with the same\n// label occur in the result.\nfunction score(option) {\n return (option.boost || 0) * 100 + (option.apply ? 10 : 0) + (option.info ? 5 : 0) +\n (option.type ? 1 : 0);\n}\nfunction sortOptions(active, state) {\n let options = [];\n let sections = null;\n let addOption = (option) => {\n options.push(option);\n let { section } = option.completion;\n if (section) {\n if (!sections)\n sections = [];\n let name = typeof section == \"string\" ? section : section.name;\n if (!sections.some(s => s.name == name))\n sections.push(typeof section == \"string\" ? { name } : section);\n }\n };\n let conf = state.facet(completionConfig);\n for (let a of active)\n if (a.hasResult()) {\n let getMatch = a.result.getMatch;\n if (a.result.filter === false) {\n for (let option of a.result.options) {\n addOption(new Option(option, a.source, getMatch ? getMatch(option) : [], 1e9 - options.length));\n }\n }\n else {\n let pattern = state.sliceDoc(a.from, a.to), match;\n let matcher = conf.filterStrict ? new StrictMatcher(pattern) : new FuzzyMatcher(pattern);\n for (let option of a.result.options)\n if (match = matcher.match(option.label)) {\n let matched = !option.displayLabel ? match.matched : getMatch ? getMatch(option, match.matched) : [];\n addOption(new Option(option, a.source, matched, match.score + (option.boost || 0)));\n }\n }\n }\n if (sections) {\n let sectionOrder = Object.create(null), pos = 0;\n let cmp = (a, b) => { var _a, _b; return ((_a = a.rank) !== null && _a !== void 0 ? _a : 1e9) - ((_b = b.rank) !== null && _b !== void 0 ? _b : 1e9) || (a.name < b.name ? -1 : 1); };\n for (let s of sections.sort(cmp)) {\n pos -= 1e5;\n sectionOrder[s.name] = pos;\n }\n for (let option of options) {\n let { section } = option.completion;\n if (section)\n option.score += sectionOrder[typeof section == \"string\" ? section : section.name];\n }\n }\n let result = [], prev = null;\n let compare = conf.compareCompletions;\n for (let opt of options.sort((a, b) => (b.score - a.score) || compare(a.completion, b.completion))) {\n let cur = opt.completion;\n if (!prev || prev.label != cur.label || prev.detail != cur.detail ||\n (prev.type != null && cur.type != null && prev.type != cur.type) ||\n prev.apply != cur.apply || prev.boost != cur.boost)\n result.push(opt);\n else if (score(opt.completion) > score(prev))\n result[result.length - 1] = opt;\n prev = opt.completion;\n }\n return result;\n}\nclass CompletionDialog {\n constructor(options, attrs, tooltip, timestamp, selected, disabled) {\n this.options = options;\n this.attrs = attrs;\n this.tooltip = tooltip;\n this.timestamp = timestamp;\n this.selected = selected;\n this.disabled = disabled;\n }\n setSelected(selected, id) {\n return selected == this.selected || selected >= this.options.length ? this\n : new CompletionDialog(this.options, makeAttrs(id, selected), this.tooltip, this.timestamp, selected, this.disabled);\n }\n static build(active, state, id, prev, conf) {\n let options = sortOptions(active, state);\n if (!options.length) {\n return prev && active.some(a => a.state == 1 /* State.Pending */) ?\n new CompletionDialog(prev.options, prev.attrs, prev.tooltip, prev.timestamp, prev.selected, true) : null;\n }\n let selected = state.facet(completionConfig).selectOnOpen ? 0 : -1;\n if (prev && prev.selected != selected && prev.selected != -1) {\n let selectedValue = prev.options[prev.selected].completion;\n for (let i = 0; i < options.length; i++)\n if (options[i].completion == selectedValue) {\n selected = i;\n break;\n }\n }\n return new CompletionDialog(options, makeAttrs(id, selected), {\n pos: active.reduce((a, b) => b.hasResult() ? Math.min(a, b.from) : a, 1e8),\n create: createTooltip,\n above: conf.aboveCursor,\n }, prev ? prev.timestamp : Date.now(), selected, false);\n }\n map(changes) {\n return new CompletionDialog(this.options, this.attrs, Object.assign(Object.assign({}, this.tooltip), { pos: changes.mapPos(this.tooltip.pos) }), this.timestamp, this.selected, this.disabled);\n }\n}\nclass CompletionState {\n constructor(active, id, open) {\n this.active = active;\n this.id = id;\n this.open = open;\n }\n static start() {\n return new CompletionState(none, \"cm-ac-\" + Math.floor(Math.random() * 2e6).toString(36), null);\n }\n update(tr) {\n let { state } = tr, conf = state.facet(completionConfig);\n let sources = conf.override ||\n state.languageDataAt(\"autocomplete\", cur(state)).map(asSource);\n let active = sources.map(source => {\n let value = this.active.find(s => s.source == source) ||\n new ActiveSource(source, this.active.some(a => a.state != 0 /* State.Inactive */) ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n return value.update(tr, conf);\n });\n if (active.length == this.active.length && active.every((a, i) => a == this.active[i]))\n active = this.active;\n let open = this.open;\n if (open && tr.docChanged)\n open = open.map(tr.changes);\n if (tr.selection || active.some(a => a.hasResult() && tr.changes.touchesRange(a.from, a.to)) ||\n !sameResults(active, this.active))\n open = CompletionDialog.build(active, state, this.id, open, conf);\n else if (open && open.disabled && !active.some(a => a.state == 1 /* State.Pending */))\n open = null;\n if (!open && active.every(a => a.state != 1 /* State.Pending */) && active.some(a => a.hasResult()))\n active = active.map(a => a.hasResult() ? new ActiveSource(a.source, 0 /* State.Inactive */) : a);\n for (let effect of tr.effects)\n if (effect.is(setSelectedEffect))\n open = open && open.setSelected(effect.value, this.id);\n return active == this.active && open == this.open ? this : new CompletionState(active, this.id, open);\n }\n get tooltip() { return this.open ? this.open.tooltip : null; }\n get attrs() { return this.open ? this.open.attrs : this.active.length ? baseAttrs : noAttrs; }\n}\nfunction sameResults(a, b) {\n if (a == b)\n return true;\n for (let iA = 0, iB = 0;;) {\n while (iA < a.length && !a[iA].hasResult)\n iA++;\n while (iB < b.length && !b[iB].hasResult)\n iB++;\n let endA = iA == a.length, endB = iB == b.length;\n if (endA || endB)\n return endA == endB;\n if (a[iA++].result != b[iB++].result)\n return false;\n }\n}\nconst baseAttrs = {\n \"aria-autocomplete\": \"list\"\n};\nconst noAttrs = {};\nfunction makeAttrs(id, selected) {\n let result = {\n \"aria-autocomplete\": \"list\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": id\n };\n if (selected > -1)\n result[\"aria-activedescendant\"] = id + \"-\" + selected;\n return result;\n}\nconst none = [];\nfunction getUpdateType(tr, conf) {\n if (tr.isUserEvent(\"input.complete\")) {\n let completion = tr.annotation(pickedCompletion);\n if (completion && conf.activateOnCompletion(completion))\n return 4 /* UpdateType.Activate */ | 8 /* UpdateType.Reset */;\n }\n let typing = tr.isUserEvent(\"input.type\");\n return typing && conf.activateOnTyping ? 4 /* UpdateType.Activate */ | 1 /* UpdateType.Typing */\n : typing ? 1 /* UpdateType.Typing */\n : tr.isUserEvent(\"delete.backward\") ? 2 /* UpdateType.Backspacing */\n : tr.selection ? 8 /* UpdateType.Reset */\n : tr.docChanged ? 16 /* UpdateType.ResetIfTouching */ : 0 /* UpdateType.None */;\n}\nclass ActiveSource {\n constructor(source, state, explicitPos = -1) {\n this.source = source;\n this.state = state;\n this.explicitPos = explicitPos;\n }\n hasResult() { return false; }\n update(tr, conf) {\n let type = getUpdateType(tr, conf), value = this;\n if ((type & 8 /* UpdateType.Reset */) || (type & 16 /* UpdateType.ResetIfTouching */) && this.touches(tr))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n if ((type & 4 /* UpdateType.Activate */) && value.state == 0 /* State.Inactive */)\n value = new ActiveSource(this.source, 1 /* State.Pending */);\n value = value.updateFor(tr, type);\n for (let effect of tr.effects) {\n if (effect.is(startCompletionEffect))\n value = new ActiveSource(value.source, 1 /* State.Pending */, effect.value ? cur(tr.state) : -1);\n else if (effect.is(closeCompletionEffect))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n else if (effect.is(setActiveEffect))\n for (let active of effect.value)\n if (active.source == value.source)\n value = active;\n }\n return value;\n }\n updateFor(tr, type) { return this.map(tr.changes); }\n map(changes) {\n return changes.empty || this.explicitPos < 0 ? this : new ActiveSource(this.source, this.state, changes.mapPos(this.explicitPos));\n }\n touches(tr) {\n return tr.changes.touchesRange(cur(tr.state));\n }\n}\nclass ActiveResult extends ActiveSource {\n constructor(source, explicitPos, result, from, to) {\n super(source, 2 /* State.Result */, explicitPos);\n this.result = result;\n this.from = from;\n this.to = to;\n }\n hasResult() { return true; }\n updateFor(tr, type) {\n var _a;\n if (!(type & 3 /* UpdateType.SimpleInteraction */))\n return this.map(tr.changes);\n let result = this.result;\n if (result.map && !tr.changes.empty)\n result = result.map(result, tr.changes);\n let from = tr.changes.mapPos(this.from), to = tr.changes.mapPos(this.to, 1);\n let pos = cur(tr.state);\n if ((this.explicitPos < 0 ? pos <= from : pos < this.from) ||\n pos > to || !result ||\n (type & 2 /* UpdateType.Backspacing */) && cur(tr.startState) == this.from)\n return new ActiveSource(this.source, type & 4 /* UpdateType.Activate */ ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n let explicitPos = this.explicitPos < 0 ? -1 : tr.changes.mapPos(this.explicitPos);\n if (checkValid(result.validFor, tr.state, from, to))\n return new ActiveResult(this.source, explicitPos, result, from, to);\n if (result.update &&\n (result = result.update(result, from, to, new CompletionContext(tr.state, pos, explicitPos >= 0))))\n return new ActiveResult(this.source, explicitPos, result, result.from, (_a = result.to) !== null && _a !== void 0 ? _a : cur(tr.state));\n return new ActiveSource(this.source, 1 /* State.Pending */, explicitPos);\n }\n map(mapping) {\n if (mapping.empty)\n return this;\n let result = this.result.map ? this.result.map(this.result, mapping) : this.result;\n if (!result)\n return new ActiveSource(this.source, 0 /* State.Inactive */);\n return new ActiveResult(this.source, this.explicitPos < 0 ? -1 : mapping.mapPos(this.explicitPos), this.result, mapping.mapPos(this.from), mapping.mapPos(this.to, 1));\n }\n touches(tr) {\n return tr.changes.touchesRange(this.from, this.to);\n }\n}\nfunction checkValid(validFor, state, from, to) {\n if (!validFor)\n return false;\n let text = state.sliceDoc(from, to);\n return typeof validFor == \"function\" ? validFor(text, from, to, state) : ensureAnchor(validFor, true).test(text);\n}\nconst setActiveEffect = /*@__PURE__*/StateEffect.define({\n map(sources, mapping) { return sources.map(s => s.map(mapping)); }\n});\nconst setSelectedEffect = /*@__PURE__*/StateEffect.define();\nconst completionState = /*@__PURE__*/StateField.define({\n create() { return CompletionState.start(); },\n update(value, tr) { return value.update(tr); },\n provide: f => [\n showTooltip.from(f, val => val.tooltip),\n EditorView.contentAttributes.from(f, state => state.attrs)\n ]\n});\nfunction applyCompletion(view, option) {\n const apply = option.completion.apply || option.completion.label;\n let result = view.state.field(completionState).active.find(a => a.source == option.source);\n if (!(result instanceof ActiveResult))\n return false;\n if (typeof apply == \"string\")\n view.dispatch(Object.assign(Object.assign({}, insertCompletionText(view.state, apply, result.from, result.to)), { annotations: pickedCompletion.of(option.completion) }));\n else\n apply(view, option.completion, result.from, result.to);\n return true;\n}\nconst createTooltip = /*@__PURE__*/completionTooltip(completionState, applyCompletion);\n\n/**\nReturns a command that moves the completion selection forward or\nbackward by the given amount.\n*/\nfunction moveCompletionSelection(forward, by = \"option\") {\n return (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.open || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n let step = 1, tooltip;\n if (by == \"page\" && (tooltip = getTooltip(view, cState.open.tooltip)))\n step = Math.max(2, Math.floor(tooltip.dom.offsetHeight /\n tooltip.dom.querySelector(\"li\").offsetHeight) - 1);\n let { length } = cState.open.options;\n let selected = cState.open.selected > -1 ? cState.open.selected + step * (forward ? 1 : -1) : forward ? 0 : length - 1;\n if (selected < 0)\n selected = by == \"page\" ? 0 : length - 1;\n else if (selected >= length)\n selected = by == \"page\" ? length - 1 : 0;\n view.dispatch({ effects: setSelectedEffect.of(selected) });\n return true;\n };\n}\n/**\nAccept the current completion.\n*/\nconst acceptCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (view.state.readOnly || !cState || !cState.open || cState.open.selected < 0 || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n return applyCompletion(view, cState.open.options[cState.open.selected]);\n};\n/**\nExplicitly start autocompletion.\n*/\nconst startCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState)\n return false;\n view.dispatch({ effects: startCompletionEffect.of(true) });\n return true;\n};\n/**\nClose the currently active completion.\n*/\nconst closeCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.active.some(a => a.state != 0 /* State.Inactive */))\n return false;\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n return true;\n};\nclass RunningQuery {\n constructor(active, context) {\n this.active = active;\n this.context = context;\n this.time = Date.now();\n this.updates = [];\n // Note that 'undefined' means 'not done yet', whereas 'null' means\n // 'query returned null'.\n this.done = undefined;\n }\n}\nconst MaxUpdateCount = 50, MinAbortTime = 1000;\nconst completionPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.debounceUpdate = -1;\n this.running = [];\n this.debounceAccept = -1;\n this.pendingStart = false;\n this.composing = 0 /* CompositionState.None */;\n for (let active of view.state.field(completionState).active)\n if (active.state == 1 /* State.Pending */)\n this.startQuery(active);\n }\n update(update) {\n let cState = update.state.field(completionState);\n let conf = update.state.facet(completionConfig);\n if (!update.selectionSet && !update.docChanged && update.startState.field(completionState) == cState)\n return;\n let doesReset = update.transactions.some(tr => {\n let type = getUpdateType(tr, conf);\n return (type & 8 /* UpdateType.Reset */) || (tr.selection || tr.docChanged) && !(type & 3 /* UpdateType.SimpleInteraction */);\n });\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (doesReset ||\n query.context.abortOnDocChange && update.docChanged ||\n query.updates.length + update.transactions.length > MaxUpdateCount && Date.now() - query.time > MinAbortTime) {\n for (let handler of query.context.abortListeners) {\n try {\n handler();\n }\n catch (e) {\n logException(this.view.state, e);\n }\n }\n query.context.abortListeners = null;\n this.running.splice(i--, 1);\n }\n else {\n query.updates.push(...update.transactions);\n }\n }\n if (this.debounceUpdate > -1)\n clearTimeout(this.debounceUpdate);\n if (update.transactions.some(tr => tr.effects.some(e => e.is(startCompletionEffect))))\n this.pendingStart = true;\n let delay = this.pendingStart ? 50 : conf.activateOnTypingDelay;\n this.debounceUpdate = cState.active.some(a => a.state == 1 /* State.Pending */ && !this.running.some(q => q.active.source == a.source))\n ? setTimeout(() => this.startUpdate(), delay) : -1;\n if (this.composing != 0 /* CompositionState.None */)\n for (let tr of update.transactions) {\n if (tr.isUserEvent(\"input.type\"))\n this.composing = 2 /* CompositionState.Changed */;\n else if (this.composing == 2 /* CompositionState.Changed */ && tr.selection)\n this.composing = 3 /* CompositionState.ChangedAndMoved */;\n }\n }\n startUpdate() {\n this.debounceUpdate = -1;\n this.pendingStart = false;\n let { state } = this.view, cState = state.field(completionState);\n for (let active of cState.active) {\n if (active.state == 1 /* State.Pending */ && !this.running.some(r => r.active.source == active.source))\n this.startQuery(active);\n }\n }\n startQuery(active) {\n let { state } = this.view, pos = cur(state);\n let context = new CompletionContext(state, pos, active.explicitPos == pos, this.view);\n let pending = new RunningQuery(active, context);\n this.running.push(pending);\n Promise.resolve(active.source(context)).then(result => {\n if (!pending.context.aborted) {\n pending.done = result || null;\n this.scheduleAccept();\n }\n }, err => {\n this.view.dispatch({ effects: closeCompletionEffect.of(null) });\n logException(this.view.state, err);\n });\n }\n scheduleAccept() {\n if (this.running.every(q => q.done !== undefined))\n this.accept();\n else if (this.debounceAccept < 0)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n // For each finished query in this.running, try to create a result\n // or, if appropriate, restart the query.\n accept() {\n var _a;\n if (this.debounceAccept > -1)\n clearTimeout(this.debounceAccept);\n this.debounceAccept = -1;\n let updated = [];\n let conf = this.view.state.facet(completionConfig);\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (query.done === undefined)\n continue;\n this.running.splice(i--, 1);\n if (query.done) {\n let active = new ActiveResult(query.active.source, query.active.explicitPos, query.done, query.done.from, (_a = query.done.to) !== null && _a !== void 0 ? _a : cur(query.updates.length ? query.updates[0].startState : this.view.state));\n // Replay the transactions that happened since the start of\n // the request and see if that preserves the result\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (active.hasResult()) {\n updated.push(active);\n continue;\n }\n }\n let current = this.view.state.field(completionState).active.find(a => a.source == query.active.source);\n if (current && current.state == 1 /* State.Pending */) {\n if (query.done == null) {\n // Explicitly failed. Should clear the pending status if it\n // hasn't been re-set in the meantime.\n let active = new ActiveSource(query.active.source, 0 /* State.Inactive */);\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (active.state != 1 /* State.Pending */)\n updated.push(active);\n }\n else {\n // Cleared by subsequent transactions. Restart.\n this.startQuery(current);\n }\n }\n }\n if (updated.length)\n this.view.dispatch({ effects: setActiveEffect.of(updated) });\n }\n}, {\n eventHandlers: {\n blur(event) {\n let state = this.view.state.field(completionState, false);\n if (state && state.tooltip && this.view.state.facet(completionConfig).closeOnBlur) {\n let dialog = state.open && getTooltip(this.view, state.open.tooltip);\n if (!dialog || !dialog.dom.contains(event.relatedTarget))\n setTimeout(() => this.view.dispatch({ effects: closeCompletionEffect.of(null) }), 10);\n }\n },\n compositionstart() {\n this.composing = 1 /* CompositionState.Started */;\n },\n compositionend() {\n if (this.composing == 3 /* CompositionState.ChangedAndMoved */) {\n // Safari fires compositionend events synchronously, possibly\n // from inside an update, so dispatch asynchronously to avoid reentrancy\n setTimeout(() => this.view.dispatch({ effects: startCompletionEffect.of(false) }), 20);\n }\n this.composing = 0 /* CompositionState.None */;\n }\n }\n});\nconst windows = typeof navigator == \"object\" && /*@__PURE__*//Win/.test(navigator.platform);\nconst commitCharacters = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.domEventHandlers({\n keydown(event, view) {\n let field = view.state.field(completionState, false);\n if (!field || !field.open || field.open.disabled || field.open.selected < 0 ||\n event.key.length > 1 || event.ctrlKey && !(windows && event.altKey) || event.metaKey)\n return false;\n let option = field.open.options[field.open.selected];\n let result = field.active.find(a => a.source == option.source);\n let commitChars = option.completion.commitCharacters || result.result.commitCharacters;\n if (commitChars && commitChars.indexOf(event.key) > -1)\n applyCompletion(view, option);\n return false;\n }\n}));\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-tooltip.cm-tooltip-autocomplete\": {\n \"& > ul\": {\n fontFamily: \"monospace\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden auto\",\n maxWidth_fallback: \"700px\",\n maxWidth: \"min(700px, 95vw)\",\n minWidth: \"250px\",\n maxHeight: \"10em\",\n height: \"100%\",\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n \"& > li, & > completion-section\": {\n padding: \"1px 3px\",\n lineHeight: 1.2\n },\n \"& > li\": {\n overflowX: \"hidden\",\n textOverflow: \"ellipsis\",\n cursor: \"pointer\"\n },\n \"& > completion-section\": {\n display: \"list-item\",\n borderBottom: \"1px solid silver\",\n paddingLeft: \"0.5em\",\n opacity: 0.7\n }\n }\n },\n \"&light .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#17c\",\n color: \"white\",\n },\n \"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#777\",\n },\n \"&dark .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#347\",\n color: \"white\",\n },\n \"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#444\",\n },\n \".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\": {\n content: '\"···\"',\n opacity: 0.5,\n display: \"block\",\n textAlign: \"center\"\n },\n \".cm-tooltip.cm-completionInfo\": {\n position: \"absolute\",\n padding: \"3px 9px\",\n width: \"max-content\",\n maxWidth: `${400 /* Info.Width */}px`,\n boxSizing: \"border-box\",\n whiteSpace: \"pre-line\"\n },\n \".cm-completionInfo.cm-completionInfo-left\": { right: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-right\": { left: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-left-narrow\": { right: `${30 /* Info.Margin */}px` },\n \".cm-completionInfo.cm-completionInfo-right-narrow\": { left: `${30 /* Info.Margin */}px` },\n \"&light .cm-snippetField\": { backgroundColor: \"#00000022\" },\n \"&dark .cm-snippetField\": { backgroundColor: \"#ffffff22\" },\n \".cm-snippetFieldPosition\": {\n verticalAlign: \"text-top\",\n width: 0,\n height: \"1.15em\",\n display: \"inline-block\",\n margin: \"0 -0.7px -.7em\",\n borderLeft: \"1.4px dotted #888\"\n },\n \".cm-completionMatchedText\": {\n textDecoration: \"underline\"\n },\n \".cm-completionDetail\": {\n marginLeft: \"0.5em\",\n fontStyle: \"italic\"\n },\n \".cm-completionIcon\": {\n fontSize: \"90%\",\n width: \".8em\",\n display: \"inline-block\",\n textAlign: \"center\",\n paddingRight: \".6em\",\n opacity: \"0.6\",\n boxSizing: \"content-box\"\n },\n \".cm-completionIcon-function, .cm-completionIcon-method\": {\n \"&:after\": { content: \"'ƒ'\" }\n },\n \".cm-completionIcon-class\": {\n \"&:after\": { content: \"'○'\" }\n },\n \".cm-completionIcon-interface\": {\n \"&:after\": { content: \"'◌'\" }\n },\n \".cm-completionIcon-variable\": {\n \"&:after\": { content: \"'𝑥'\" }\n },\n \".cm-completionIcon-constant\": {\n \"&:after\": { content: \"'𝐶'\" }\n },\n \".cm-completionIcon-type\": {\n \"&:after\": { content: \"'𝑡'\" }\n },\n \".cm-completionIcon-enum\": {\n \"&:after\": { content: \"'∪'\" }\n },\n \".cm-completionIcon-property\": {\n \"&:after\": { content: \"'□'\" }\n },\n \".cm-completionIcon-keyword\": {\n \"&:after\": { content: \"'🔑\\uFE0E'\" } // Disable emoji rendering\n },\n \".cm-completionIcon-namespace\": {\n \"&:after\": { content: \"'▢'\" }\n },\n \".cm-completionIcon-text\": {\n \"&:after\": { content: \"'abc'\", fontSize: \"50%\", verticalAlign: \"middle\" }\n }\n});\n\nclass FieldPos {\n constructor(field, line, from, to) {\n this.field = field;\n this.line = line;\n this.from = from;\n this.to = to;\n }\n}\nclass FieldRange {\n constructor(field, from, to) {\n this.field = field;\n this.from = from;\n this.to = to;\n }\n map(changes) {\n let from = changes.mapPos(this.from, -1, MapMode.TrackDel);\n let to = changes.mapPos(this.to, 1, MapMode.TrackDel);\n return from == null || to == null ? null : new FieldRange(this.field, from, to);\n }\n}\nclass Snippet {\n constructor(lines, fieldPositions) {\n this.lines = lines;\n this.fieldPositions = fieldPositions;\n }\n instantiate(state, pos) {\n let text = [], lineStart = [pos];\n let lineObj = state.doc.lineAt(pos), baseIndent = /^\\s*/.exec(lineObj.text)[0];\n for (let line of this.lines) {\n if (text.length) {\n let indent = baseIndent, tabs = /^\\t*/.exec(line)[0].length;\n for (let i = 0; i < tabs; i++)\n indent += state.facet(indentUnit);\n lineStart.push(pos + indent.length - tabs);\n line = indent + line.slice(tabs);\n }\n text.push(line);\n pos += line.length + 1;\n }\n let ranges = this.fieldPositions.map(pos => new FieldRange(pos.field, lineStart[pos.line] + pos.from, lineStart[pos.line] + pos.to));\n return { text, ranges };\n }\n static parse(template) {\n let fields = [];\n let lines = [], positions = [], m;\n for (let line of template.split(/\\r\\n?|\\n/)) {\n while (m = /[#$]\\{(?:(\\d+)(?::([^}]*))?|((?:\\\\[{}]|[^}])*))\\}/.exec(line)) {\n let seq = m[1] ? +m[1] : null, rawName = m[2] || m[3] || \"\", found = -1;\n let name = rawName.replace(/\\\\[{}]/g, m => m[1]);\n for (let i = 0; i < fields.length; i++) {\n if (seq != null ? fields[i].seq == seq : name ? fields[i].name == name : false)\n found = i;\n }\n if (found < 0) {\n let i = 0;\n while (i < fields.length && (seq == null || (fields[i].seq != null && fields[i].seq < seq)))\n i++;\n fields.splice(i, 0, { seq, name });\n found = i;\n for (let pos of positions)\n if (pos.field >= found)\n pos.field++;\n }\n positions.push(new FieldPos(found, lines.length, m.index, m.index + name.length));\n line = line.slice(0, m.index) + rawName + line.slice(m.index + m[0].length);\n }\n line = line.replace(/\\\\([{}])/g, (_, brace, index) => {\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > index) {\n pos.from--;\n pos.to--;\n }\n return brace;\n });\n lines.push(line);\n }\n return new Snippet(lines, positions);\n }\n}\nlet fieldMarker = /*@__PURE__*/Decoration.widget({ widget: /*@__PURE__*/new class extends WidgetType {\n toDOM() {\n let span = document.createElement(\"span\");\n span.className = \"cm-snippetFieldPosition\";\n return span;\n }\n ignoreEvent() { return false; }\n } });\nlet fieldRange = /*@__PURE__*/Decoration.mark({ class: \"cm-snippetField\" });\nclass ActiveSnippet {\n constructor(ranges, active) {\n this.ranges = ranges;\n this.active = active;\n this.deco = Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)));\n }\n map(changes) {\n let ranges = [];\n for (let r of this.ranges) {\n let mapped = r.map(changes);\n if (!mapped)\n return null;\n ranges.push(mapped);\n }\n return new ActiveSnippet(ranges, this.active);\n }\n selectionInsideField(sel) {\n return sel.ranges.every(range => this.ranges.some(r => r.field == this.active && r.from <= range.from && r.to >= range.to));\n }\n}\nconst setActive = /*@__PURE__*/StateEffect.define({\n map(value, changes) { return value && value.map(changes); }\n});\nconst moveToField = /*@__PURE__*/StateEffect.define();\nconst snippetState = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setActive))\n return effect.value;\n if (effect.is(moveToField) && value)\n return new ActiveSnippet(value.ranges, effect.value);\n }\n if (value && tr.docChanged)\n value = value.map(tr.changes);\n if (value && tr.selection && !value.selectionInsideField(tr.selection))\n value = null;\n return value;\n },\n provide: f => EditorView.decorations.from(f, val => val ? val.deco : Decoration.none)\n});\nfunction fieldSelection(ranges, field) {\n return EditorSelection.create(ranges.filter(r => r.field == field).map(r => EditorSelection.range(r.from, r.to)));\n}\n/**\nConvert a snippet template to a function that can\n[apply](https://codemirror.net/6/docs/ref/#autocomplete.Completion.apply) it. Snippets are written\nusing syntax like this:\n\n \"for (let ${index} = 0; ${index} < ${end}; ${index}++) {\\n\\t${}\\n}\"\n\nEach `${}` placeholder (you may also use `#{}`) indicates a field\nthat the user can fill in. Its name, if any, will be the default\ncontent for the field.\n\nWhen the snippet is activated by calling the returned function,\nthe code is inserted at the given position. Newlines in the\ntemplate are indented by the indentation of the start line, plus\none [indent unit](https://codemirror.net/6/docs/ref/#language.indentUnit) per tab character after\nthe newline.\n\nOn activation, (all instances of) the first field are selected.\nThe user can move between fields with Tab and Shift-Tab as long as\nthe fields are active. Moving to the last field or moving the\ncursor out of the current field deactivates the fields.\n\nThe order of fields defaults to textual order, but you can add\nnumbers to placeholders (`${1}` or `${1:defaultText}`) to provide\na custom order.\n\nTo include a literal `{` or `}` in your template, put a backslash\nin front of it. This will be removed and the brace will not be\ninterpreted as indicating a placeholder.\n*/\nfunction snippet(template) {\n let snippet = Snippet.parse(template);\n return (editor, completion, from, to) => {\n let { text, ranges } = snippet.instantiate(editor.state, from);\n let spec = {\n changes: { from, to, insert: Text.of(text) },\n scrollIntoView: true,\n annotations: completion ? [pickedCompletion.of(completion), Transaction.userEvent.of(\"input.complete\")] : undefined\n };\n if (ranges.length)\n spec.selection = fieldSelection(ranges, 0);\n if (ranges.some(r => r.field > 0)) {\n let active = new ActiveSnippet(ranges, 0);\n let effects = spec.effects = [setActive.of(active)];\n if (editor.state.field(snippetState, false) === undefined)\n effects.push(StateEffect.appendConfig.of([snippetState, addSnippetKeymap, snippetPointerHandler, baseTheme]));\n }\n editor.dispatch(editor.state.update(spec));\n };\n}\nfunction moveField(dir) {\n return ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active || dir < 0 && active.active == 0)\n return false;\n let next = active.active + dir, last = dir > 0 && !active.ranges.some(r => r.field == next + dir);\n dispatch(state.update({\n selection: fieldSelection(active.ranges, next),\n effects: setActive.of(last ? null : new ActiveSnippet(active.ranges, next)),\n scrollIntoView: true\n }));\n return true;\n };\n}\n/**\nA command that clears the active snippet, if any.\n*/\nconst clearSnippet = ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active)\n return false;\n dispatch(state.update({ effects: setActive.of(null) }));\n return true;\n};\n/**\nMove to the next snippet field, if available.\n*/\nconst nextSnippetField = /*@__PURE__*/moveField(1);\n/**\nMove to the previous snippet field, if available.\n*/\nconst prevSnippetField = /*@__PURE__*/moveField(-1);\n/**\nCheck if there is an active snippet with a next field for\n`nextSnippetField` to move to.\n*/\nfunction hasNextSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.ranges.some(r => r.field == active.active + 1));\n}\n/**\nReturns true if there is an active snippet and a previous field\nfor `prevSnippetField` to move to.\n*/\nfunction hasPrevSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.active > 0);\n}\nconst defaultSnippetKeymap = [\n { key: \"Tab\", run: nextSnippetField, shift: prevSnippetField },\n { key: \"Escape\", run: clearSnippet }\n];\n/**\nA facet that can be used to configure the key bindings used by\nsnippets. The default binds Tab to\n[`nextSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.nextSnippetField), Shift-Tab to\n[`prevSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.prevSnippetField), and Escape\nto [`clearSnippet`](https://codemirror.net/6/docs/ref/#autocomplete.clearSnippet).\n*/\nconst snippetKeymap = /*@__PURE__*/Facet.define({\n combine(maps) { return maps.length ? maps[0] : defaultSnippetKeymap; }\n});\nconst addSnippetKeymap = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.compute([snippetKeymap], state => state.facet(snippetKeymap)));\n/**\nCreate a completion from a snippet. Returns an object with the\nproperties from `completion`, plus an `apply` function that\napplies the snippet.\n*/\nfunction snippetCompletion(template, completion) {\n return Object.assign(Object.assign({}, completion), { apply: snippet(template) });\n}\nconst snippetPointerHandler = /*@__PURE__*/EditorView.domEventHandlers({\n mousedown(event, view) {\n let active = view.state.field(snippetState, false), pos;\n if (!active || (pos = view.posAtCoords({ x: event.clientX, y: event.clientY })) == null)\n return false;\n let match = active.ranges.find(r => r.from <= pos && r.to >= pos);\n if (!match || match.field == active.active)\n return false;\n view.dispatch({\n selection: fieldSelection(active.ranges, match.field),\n effects: setActive.of(active.ranges.some(r => r.field > match.field)\n ? new ActiveSnippet(active.ranges, match.field) : null),\n scrollIntoView: true\n });\n return true;\n }\n});\n\nfunction wordRE(wordChars) {\n let escaped = wordChars.replace(/[\\]\\-\\\\]/g, \"\\\\$&\");\n try {\n return new RegExp(`[\\\\p{Alphabetic}\\\\p{Number}_${escaped}]+`, \"ug\");\n }\n catch (_a) {\n return new RegExp(`[\\w${escaped}]`, \"g\");\n }\n}\nfunction mapRE(re, f) {\n return new RegExp(f(re.source), re.unicode ? \"u\" : \"\");\n}\nconst wordCaches = /*@__PURE__*/Object.create(null);\nfunction wordCache(wordChars) {\n return wordCaches[wordChars] || (wordCaches[wordChars] = new WeakMap);\n}\nfunction storeWords(doc, wordRE, result, seen, ignoreAt) {\n for (let lines = doc.iterLines(), pos = 0; !lines.next().done;) {\n let { value } = lines, m;\n wordRE.lastIndex = 0;\n while (m = wordRE.exec(value)) {\n if (!seen[m[0]] && pos + m.index != ignoreAt) {\n result.push({ type: \"text\", label: m[0] });\n seen[m[0]] = true;\n if (result.length >= 2000 /* C.MaxList */)\n return;\n }\n }\n pos += value.length + 1;\n }\n}\nfunction collectWords(doc, cache, wordRE, to, ignoreAt) {\n let big = doc.length >= 1000 /* C.MinCacheLen */;\n let cached = big && cache.get(doc);\n if (cached)\n return cached;\n let result = [], seen = Object.create(null);\n if (doc.children) {\n let pos = 0;\n for (let ch of doc.children) {\n if (ch.length >= 1000 /* C.MinCacheLen */) {\n for (let c of collectWords(ch, cache, wordRE, to - pos, ignoreAt - pos)) {\n if (!seen[c.label]) {\n seen[c.label] = true;\n result.push(c);\n }\n }\n }\n else {\n storeWords(ch, wordRE, result, seen, ignoreAt - pos);\n }\n pos += ch.length + 1;\n }\n }\n else {\n storeWords(doc, wordRE, result, seen, ignoreAt);\n }\n if (big && result.length < 2000 /* C.MaxList */)\n cache.set(doc, result);\n return result;\n}\n/**\nA completion source that will scan the document for words (using a\n[character categorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer)), and\nreturn those as completions.\n*/\nconst completeAnyWord = context => {\n let wordChars = context.state.languageDataAt(\"wordChars\", context.pos).join(\"\");\n let re = wordRE(wordChars);\n let token = context.matchBefore(mapRE(re, s => s + \"$\"));\n if (!token && !context.explicit)\n return null;\n let from = token ? token.from : context.pos;\n let options = collectWords(context.state.doc, wordCache(wordChars), re, 50000 /* C.Range */, from);\n return { from, options, validFor: mapRE(re, s => \"^\" + s) };\n};\n\nconst defaults = {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"'],\n before: \")]}:;>\",\n stringPrefixes: []\n};\nconst closeBracketEffect = /*@__PURE__*/StateEffect.define({\n map(value, mapping) {\n let mapped = mapping.mapPos(value, -1, MapMode.TrackAfter);\n return mapped == null ? undefined : mapped;\n }\n});\nconst closedBracket = /*@__PURE__*/new class extends RangeValue {\n};\nclosedBracket.startSide = 1;\nclosedBracket.endSide = -1;\nconst bracketState = /*@__PURE__*/StateField.define({\n create() { return RangeSet.empty; },\n update(value, tr) {\n value = value.map(tr.changes);\n if (tr.selection) {\n let line = tr.state.doc.lineAt(tr.selection.main.head);\n value = value.update({ filter: from => from >= line.from && from <= line.to });\n }\n for (let effect of tr.effects)\n if (effect.is(closeBracketEffect))\n value = value.update({ add: [closedBracket.range(effect.value, effect.value + 1)] });\n return value;\n }\n});\n/**\nExtension to enable bracket-closing behavior. When a closeable\nbracket is typed, its closing bracket is immediately inserted\nafter the cursor. When closing a bracket directly in front of a\nclosing bracket inserted by the extension, the cursor moves over\nthat bracket.\n*/\nfunction closeBrackets() {\n return [inputHandler, bracketState];\n}\nconst definedClosing = \"()[]{}<>\";\nfunction closing(ch) {\n for (let i = 0; i < definedClosing.length; i += 2)\n if (definedClosing.charCodeAt(i) == ch)\n return definedClosing.charAt(i + 1);\n return fromCodePoint(ch < 128 ? ch : ch + 1);\n}\nfunction config(state, pos) {\n return state.languageDataAt(\"closeBrackets\", pos)[0] || defaults;\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\nconst inputHandler = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, insert) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly)\n return false;\n let sel = view.state.selection.main;\n if (insert.length > 2 || insert.length == 2 && codePointSize(codePointAt(insert, 0)) == 1 ||\n from != sel.from || to != sel.to)\n return false;\n let tr = insertBracket(view.state, insert);\n if (!tr)\n return false;\n view.dispatch(tr);\n return true;\n});\n/**\nCommand that implements deleting a pair of matching brackets when\nthe cursor is between them.\n*/\nconst deleteBracketPair = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty) {\n let before = prevChar(state.doc, range.head);\n for (let token of tokens) {\n if (token == before && nextChar(state.doc, range.head) == closing(codePointAt(token, 0)))\n return { changes: { from: range.head - token.length, to: range.head + token.length },\n range: EditorSelection.cursor(range.head - token.length) };\n }\n }\n return { range: dont = range };\n });\n if (!dont)\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete.backward\" }));\n return !dont;\n};\n/**\nClose-brackets related key bindings. Binds Backspace to\n[`deleteBracketPair`](https://codemirror.net/6/docs/ref/#autocomplete.deleteBracketPair).\n*/\nconst closeBracketsKeymap = [\n { key: \"Backspace\", run: deleteBracketPair }\n];\n/**\nImplements the extension's behavior on text insertion. If the\ngiven string counts as a bracket in the language around the\nselection, and replacing the selection with it requires custom\nbehavior (inserting a closing version or skipping past a\npreviously-closed bracket), this function returns a transaction\nrepresenting that custom behavior. (You only need this if you want\nto programmatically insert brackets—the\n[`closeBrackets`](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets) extension will\ntake care of running this for user input.)\n*/\nfunction insertBracket(state, bracket) {\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n for (let tok of tokens) {\n let closed = closing(codePointAt(tok, 0));\n if (bracket == tok)\n return closed == tok ? handleSame(state, tok, tokens.indexOf(tok + tok + tok) > -1, conf)\n : handleOpen(state, tok, closed, conf.before || defaults.before);\n if (bracket == closed && closedBracketAt(state, state.selection.main.from))\n return handleClose(state, tok, closed);\n }\n return null;\n}\nfunction closedBracketAt(state, pos) {\n let found = false;\n state.field(bracketState).between(0, state.doc.length, from => {\n if (from == pos)\n found = true;\n });\n return found;\n}\nfunction nextChar(doc, pos) {\n let next = doc.sliceString(pos, pos + 2);\n return next.slice(0, codePointSize(codePointAt(next, 0)));\n}\nfunction prevChar(doc, pos) {\n let prev = doc.sliceString(pos - 2, pos);\n return codePointSize(codePointAt(prev, 0)) == prev.length ? prev : prev.slice(1);\n}\nfunction handleOpen(state, open, close, closeBefore) {\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: open, from: range.from }, { insert: close, from: range.to }],\n effects: closeBracketEffect.of(range.to + open.length),\n range: EditorSelection.range(range.anchor + open.length, range.head + open.length) };\n let next = nextChar(state.doc, range.head);\n if (!next || /\\s/.test(next) || closeBefore.indexOf(next) > -1)\n return { changes: { insert: open + close, from: range.head },\n effects: closeBracketEffect.of(range.head + open.length),\n range: EditorSelection.cursor(range.head + open.length) };\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction handleClose(state, _open, close) {\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty && nextChar(state.doc, range.head) == close)\n return { changes: { from: range.head, to: range.head + close.length, insert: close },\n range: EditorSelection.cursor(range.head + close.length) };\n return dont = { range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\n// Handles cases where the open and close token are the same, and\n// possibly triple quotes (as in `\"\"\"abc\"\"\"`-style quoting).\nfunction handleSame(state, token, allowTriple, config) {\n let stringPrefixes = config.stringPrefixes || defaults.stringPrefixes;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: token, from: range.from }, { insert: token, from: range.to }],\n effects: closeBracketEffect.of(range.to + token.length),\n range: EditorSelection.range(range.anchor + token.length, range.head + token.length) };\n let pos = range.head, next = nextChar(state.doc, pos), start;\n if (next == token) {\n if (nodeStart(state, pos)) {\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (closedBracketAt(state, pos)) {\n let isTriple = allowTriple && state.sliceDoc(pos, pos + token.length * 3) == token + token + token;\n let content = isTriple ? token + token + token : token;\n return { changes: { from: pos, to: pos + content.length, insert: content },\n range: EditorSelection.cursor(pos + content.length) };\n }\n }\n else if (allowTriple && state.sliceDoc(pos - 2 * token.length, pos) == token + token &&\n (start = canStartStringAt(state, pos - 2 * token.length, stringPrefixes)) > -1 &&\n nodeStart(state, start)) {\n return { changes: { insert: token + token + token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (state.charCategorizer(pos)(next) != CharCategory.Word) {\n if (canStartStringAt(state, pos, stringPrefixes) > -1 && !probablyInString(state, pos, token, stringPrefixes))\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction nodeStart(state, pos) {\n let tree = syntaxTree(state).resolveInner(pos + 1);\n return tree.parent && tree.from == pos;\n}\nfunction probablyInString(state, pos, quoteToken, prefixes) {\n let node = syntaxTree(state).resolveInner(pos, -1);\n let maxPrefix = prefixes.reduce((m, p) => Math.max(m, p.length), 0);\n for (let i = 0; i < 5; i++) {\n let start = state.sliceDoc(node.from, Math.min(node.to, node.from + quoteToken.length + maxPrefix));\n let quotePos = start.indexOf(quoteToken);\n if (!quotePos || quotePos > -1 && prefixes.indexOf(start.slice(0, quotePos)) > -1) {\n let first = node.firstChild;\n while (first && first.from == node.from && first.to - first.from > quoteToken.length + quotePos) {\n if (state.sliceDoc(first.to - quoteToken.length, first.to) == quoteToken)\n return false;\n first = first.firstChild;\n }\n return true;\n }\n let parent = node.to == pos && node.parent;\n if (!parent)\n break;\n node = parent;\n }\n return false;\n}\nfunction canStartStringAt(state, pos, prefixes) {\n let charCat = state.charCategorizer(pos);\n if (charCat(state.sliceDoc(pos - 1, pos)) != CharCategory.Word)\n return pos;\n for (let prefix of prefixes) {\n let start = pos - prefix.length;\n if (state.sliceDoc(start, pos) == prefix && charCat(state.sliceDoc(start - 1, start)) != CharCategory.Word)\n return start;\n }\n return -1;\n}\n\n/**\nReturns an extension that enables autocompletion.\n*/\nfunction autocompletion(config = {}) {\n return [\n commitCharacters,\n completionState,\n completionConfig.of(config),\n completionPlugin,\n completionKeymapExt,\n baseTheme\n ];\n}\n/**\nBasic keybindings for autocompletion.\n\n - Ctrl-Space (and Alt-\\` on macOS): [`startCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.startCompletion)\n - Escape: [`closeCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.closeCompletion)\n - ArrowDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true)`\n - ArrowUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false)`\n - PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, \"page\")`\n - PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, \"page\")`\n - Enter: [`acceptCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.acceptCompletion)\n*/\nconst completionKeymap = [\n { key: \"Ctrl-Space\", run: startCompletion },\n { mac: \"Alt-`\", run: startCompletion },\n { key: \"Escape\", run: closeCompletion },\n { key: \"ArrowDown\", run: /*@__PURE__*/moveCompletionSelection(true) },\n { key: \"ArrowUp\", run: /*@__PURE__*/moveCompletionSelection(false) },\n { key: \"PageDown\", run: /*@__PURE__*/moveCompletionSelection(true, \"page\") },\n { key: \"PageUp\", run: /*@__PURE__*/moveCompletionSelection(false, \"page\") },\n { key: \"Enter\", run: acceptCompletion }\n];\nconst completionKeymapExt = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.computeN([completionConfig], state => state.facet(completionConfig).defaultKeymap ? [completionKeymap] : []));\n/**\nGet the current completion status. When completions are available,\nthis will return `\"active\"`. When completions are pending (in the\nprocess of being queried), this returns `\"pending\"`. Otherwise, it\nreturns `null`.\n*/\nfunction completionStatus(state) {\n let cState = state.field(completionState, false);\n return cState && cState.active.some(a => a.state == 1 /* State.Pending */) ? \"pending\"\n : cState && cState.active.some(a => a.state != 0 /* State.Inactive */) ? \"active\" : null;\n}\nconst completionArrayCache = /*@__PURE__*/new WeakMap;\n/**\nReturns the available completions as an array.\n*/\nfunction currentCompletions(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n if (!open || open.disabled)\n return [];\n let completions = completionArrayCache.get(open.options);\n if (!completions)\n completionArrayCache.set(open.options, completions = open.options.map(o => o.completion));\n return completions;\n}\n/**\nReturn the currently selected completion, if any.\n*/\nfunction selectedCompletion(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.options[open.selected].completion : null;\n}\n/**\nReturns the currently selected position in the active completion\nlist, or null if no completions are active.\n*/\nfunction selectedCompletionIndex(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.selected : null;\n}\n/**\nCreate an effect that can be attached to a transaction to change\nthe currently selected completion.\n*/\nfunction setSelectedCompletion(index) {\n return setSelectedEffect.of(index);\n}\n\nexport { CompletionContext, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, hasNextSnippetField, hasPrevSnippetField, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };\n","import { parser } from '@lezer/javascript';\nimport { syntaxTree, LRLanguage, indentNodeProp, continuedIndent, flatIndent, delimitedIndent, foldNodeProp, foldInside, defineLanguageFacet, sublanguageProp, LanguageSupport } from '@codemirror/language';\nimport { EditorSelection } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\n\n/**\nA collection of JavaScript-related\n[snippets](https://codemirror.net/6/docs/ref/#autocomplete.snippet).\n*/\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"function ${name}(${params}) {\\n\\t${}\\n}\", {\n label: \"function\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\\n\\t${}\\n}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for (let ${name} of ${collection}) {\\n\\t${}\\n}\", {\n label: \"for\",\n detail: \"of loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"do {\\n\\t${}\\n} while (${})\", {\n label: \"do\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while (${}) {\\n\\t${}\\n}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try {\\n\\t${}\\n} catch (${error}) {\\n\\t${}\\n}\", {\n label: \"try\",\n detail: \"/ catch block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n}\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n} else {\\n\\t${}\\n}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name} {\\n\\tconstructor(${params}) {\\n\\t\\t${}\\n\\t}\\n}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import {${names}} from \\\"${module}\\\"\\n${}\", {\n label: \"import\",\n detail: \"named\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${name} from \\\"${module}\\\"\\n${}\", {\n label: \"import\",\n detail: \"default\",\n type: \"keyword\"\n })\n];\n/**\nA collection of snippet completions for TypeScript. Includes the\nJavaScript [snippets](https://codemirror.net/6/docs/ref/#lang-javascript.snippets).\n*/\nconst typescriptSnippets = /*@__PURE__*/snippets.concat([\n /*@__PURE__*/snippetCompletion(\"interface ${name} {\\n\\t${}\\n}\", {\n label: \"interface\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"type ${name} = ${type}\", {\n label: \"type\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"enum ${name} {\\n\\t${}\\n}\", {\n label: \"enum\",\n detail: \"definition\",\n type: \"keyword\"\n })\n]);\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Block\",\n \"FunctionExpression\", \"FunctionDeclaration\", \"ArrowFunction\", \"MethodDeclaration\",\n \"ForStatement\"\n]);\nfunction defID(type) {\n return (node, def) => {\n let id = node.node.getChild(\"VariableDefinition\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst functionContext = [\"FunctionDeclaration\"];\nconst gatherCompletions = {\n FunctionDeclaration: /*@__PURE__*/defID(\"function\"),\n ClassDeclaration: /*@__PURE__*/defID(\"class\"),\n ClassExpression: () => true,\n EnumDeclaration: /*@__PURE__*/defID(\"constant\"),\n TypeAliasDeclaration: /*@__PURE__*/defID(\"type\"),\n NamespaceDeclaration: /*@__PURE__*/defID(\"namespace\"),\n VariableDefinition(node, def) { if (!node.matchContext(functionContext))\n def(node, \"variable\"); },\n TypeDefinition(node, def) { def(node, \"type\"); },\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (top) {\n top = false;\n }\n else if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def) || ScopeNodes.has(node.name))\n return false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w$\\xa1-\\uffff][\\w$\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\n \"TemplateString\", \"String\", \"RegExp\",\n \"LineComment\", \"BlockComment\",\n \"VariableDefinition\", \"TypeDefinition\", \"Label\",\n \"PropertyDefinition\", \"PropertyName\",\n \"PrivatePropertyDefinition\", \"PrivatePropertyName\",\n \".\", \"?.\"\n];\n/**\nCompletion source that looks up locally defined names in\nJavaScript code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nfunction pathFor(read, member, name) {\n var _a;\n let path = [];\n for (;;) {\n let obj = member.firstChild, prop;\n if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"VariableName\") {\n path.push(read(obj));\n return { path: path.reverse(), name };\n }\n else if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"MemberExpression\" && ((_a = (prop = obj.lastChild)) === null || _a === void 0 ? void 0 : _a.name) == \"PropertyName\") {\n path.push(read(prop));\n member = obj;\n }\n else {\n return null;\n }\n }\n}\n/**\nHelper function for defining JavaScript completion sources. It\nreturns the completable name and object path for a completion\ncontext, or null if no name/property completion should happen at\nthat position. For example, when completing after `a.b.c` it will\nreturn `{path: [\"a\", \"b\"], name: \"c\"}`. When completing after `x`\nit will return `{path: [], name: \"x\"}`. When not in a property or\nname, it will return null if `context.explicit` is false, and\n`{path: [], name: \"\"}` otherwise.\n*/\nfunction completionPath(context) {\n let read = (node) => context.state.doc.sliceString(node.from, node.to);\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (inner.name == \"PropertyName\") {\n return pathFor(read, inner.parent, read(inner));\n }\n else if ((inner.name == \".\" || inner.name == \"?.\") && inner.parent.name == \"MemberExpression\") {\n return pathFor(read, inner.parent, \"\");\n }\n else if (dontComplete.indexOf(inner.name) > -1) {\n return null;\n }\n else if (inner.name == \"VariableName\" || inner.to - inner.from < 20 && Identifier.test(read(inner))) {\n return { path: [], name: read(inner) };\n }\n else if (inner.name == \"MemberExpression\") {\n return pathFor(read, inner, \"\");\n }\n else {\n return context.explicit ? { path: [], name: \"\" } : null;\n }\n}\nfunction enumeratePropertyCompletions(obj, top) {\n let options = [], seen = new Set;\n for (let depth = 0;; depth++) {\n for (let name of (Object.getOwnPropertyNames || Object.keys)(obj)) {\n if (!/^[a-zA-Z_$\\xaa-\\uffdc][\\w$\\xaa-\\uffdc]*$/.test(name) || seen.has(name))\n continue;\n seen.add(name);\n let value;\n try {\n value = obj[name];\n }\n catch (_) {\n continue;\n }\n options.push({\n label: name,\n type: typeof value == \"function\" ? (/^[A-Z]/.test(name) ? \"class\" : top ? \"function\" : \"method\")\n : top ? \"variable\" : \"property\",\n boost: -depth\n });\n }\n let next = Object.getPrototypeOf(obj);\n if (!next)\n return options;\n obj = next;\n }\n}\n/**\nDefines a [completion source](https://codemirror.net/6/docs/ref/#autocomplete.CompletionSource) that\ncompletes from the given scope object (for example `globalThis`).\nWill enter properties of the object when completing properties on\na directly-named path.\n*/\nfunction scopeCompletionSource(scope) {\n let cache = new Map;\n return (context) => {\n let path = completionPath(context);\n if (!path)\n return null;\n let target = scope;\n for (let step of path.path) {\n target = target[step];\n if (!target)\n return null;\n }\n let options = cache.get(target);\n if (!options)\n cache.set(target, options = enumeratePropertyCompletions(target, !path.path.length));\n return {\n from: context.pos - path.name.length,\n options,\n validFor: Identifier\n };\n };\n}\n\n/**\nA language provider based on the [Lezer JavaScript\nparser](https://github.com/lezer-parser/javascript), extended with\nhighlighting and indentation information.\n*/\nconst javascriptLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"javascript\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n IfStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b)/ }),\n TryStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|catch\\b|finally\\b)/ }),\n LabeledStatement: flatIndent,\n SwitchBody: context => {\n let after = context.textAfter, closed = /^\\s*\\}/.test(after), isCase = /^\\s*(case|default)\\b/.test(after);\n return context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit;\n },\n Block: /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n ArrowFunction: cx => cx.baseIndent + cx.unit,\n \"TemplateString BlockComment\": () => null,\n \"Statement Property\": /*@__PURE__*/continuedIndent({ except: /^{/ }),\n JSXElement(context) {\n let closed = /^\\s*<\\//.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n JSXEscape(context) {\n let closed = /\\s*\\}/.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n \"JSXOpenTag JSXSelfClosingTag\"(context) {\n return context.column(context.node.from) + context.unit;\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType\": foldInside,\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; }\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"] },\n commentTokens: { line: \"//\", block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*(?:case |default:|\\{|\\}|<\\/)$/,\n wordChars: \"$\"\n }\n});\nconst jsxSublanguage = {\n test: node => /^JSX/.test(node.name),\n facet: /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"{/*\", close: \"*/}\" } } })\n};\n/**\nA language provider for TypeScript.\n*/\nconst typescriptLanguage = /*@__PURE__*/javascriptLanguage.configure({ dialect: \"ts\" }, \"typescript\");\n/**\nLanguage provider for JSX.\n*/\nconst jsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n dialect: \"jsx\",\n props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n});\n/**\nLanguage provider for JSX + TypeScript.\n*/\nconst tsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n dialect: \"jsx ts\",\n props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n}, \"typescript\");\nlet kwCompletion = (name) => ({ label: name, type: \"keyword\" });\nconst keywords = /*@__PURE__*/\"break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield\".split(\" \").map(kwCompletion);\nconst typescriptKeywords = /*@__PURE__*/keywords.concat(/*@__PURE__*/[\"declare\", \"implements\", \"private\", \"protected\", \"public\"].map(kwCompletion));\n/**\nJavaScript support. Includes [snippet](https://codemirror.net/6/docs/ref/#lang-javascript.snippets)\nand local variable completion.\n*/\nfunction javascript(config = {}) {\n let lang = config.jsx ? (config.typescript ? tsxLanguage : jsxLanguage)\n : config.typescript ? typescriptLanguage : javascriptLanguage;\n let completions = config.typescript ? typescriptSnippets.concat(typescriptKeywords) : snippets.concat(keywords);\n return new LanguageSupport(lang, [\n javascriptLanguage.data.of({\n autocomplete: ifNotIn(dontComplete, completeFromList(completions))\n }),\n javascriptLanguage.data.of({\n autocomplete: localCompletionSource\n }),\n config.jsx ? autoCloseTags : [],\n ]);\n}\nfunction findOpenTag(node) {\n for (;;) {\n if (node.name == \"JSXOpenTag\" || node.name == \"JSXSelfClosingTag\" || node.name == \"JSXFragmentTag\")\n return node;\n if (node.name == \"JSXEscape\" || !node.parent)\n return null;\n node = node.parent;\n }\n}\nfunction elementName(doc, tree, max = doc.length) {\n for (let ch = tree === null || tree === void 0 ? void 0 : tree.firstChild; ch; ch = ch.nextSibling) {\n if (ch.name == \"JSXIdentifier\" || ch.name == \"JSXBuiltin\" || ch.name == \"JSXNamespacedName\" ||\n ch.name == \"JSXMemberExpression\")\n return doc.sliceString(ch.from, Math.min(ch.to, max));\n }\n return \"\";\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\n/**\nExtension that will automatically insert JSX close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text, defaultInsert) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly ||\n from != to || (text != \">\" && text != \"/\") ||\n !javascriptLanguage.isActiveAt(view.state, from, -1))\n return false;\n let base = defaultInsert(), { state } = base;\n let closeTags = state.changeByRange(range => {\n var _a;\n let { head } = range, around = syntaxTree(state).resolveInner(head - 1, -1), name;\n if (around.name == \"JSXStartTag\")\n around = around.parent;\n if (state.doc.sliceString(head - 1, head) != text || around.name == \"JSXAttributeValue\" && around.to > head) ;\n else if (text == \">\" && around.name == \"JSXFragmentTag\") {\n return { range, changes: { from: head, insert: `` } };\n }\n else if (text == \"/\" && around.name == \"JSXStartCloseTag\") {\n let empty = around.parent, base = empty.parent;\n if (base && empty.from == head - 2 &&\n ((name = elementName(state.doc, base.firstChild, head)) || ((_a = base.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"JSXFragmentTag\")) {\n let insert = `${name}>`;\n return { range: EditorSelection.cursor(head + insert.length, -1), changes: { from: head, insert } };\n }\n }\n else if (text == \">\") {\n let openTag = findOpenTag(around);\n if (openTag && openTag.name == \"JSXOpenTag\" &&\n !/^\\/?>|^<\\//.test(state.doc.sliceString(head, head + 2)) &&\n (name = elementName(state.doc, openTag, head)))\n return { range, changes: { from: head, insert: `` } };\n }\n return { range };\n });\n if (closeTags.changes.empty)\n return false;\n view.dispatch([\n base,\n state.update(closeTags, { userEvent: \"input.complete\", scrollIntoView: true })\n ]);\n return true;\n});\n\n/**\nConnects an [ESLint](https://eslint.org/) linter to CodeMirror's\n[lint](https://codemirror.net/6/docs/ref/#lint) integration. `eslint` should be an instance of the\n[`Linter`](https://eslint.org/docs/developer-guide/nodejs-api#linter)\nclass, and `config` an optional ESLint configuration. The return\nvalue of this function can be passed to [`linter`](https://codemirror.net/6/docs/ref/#lint.linter)\nto create a JavaScript linting extension.\n\nNote that ESLint targets node, and is tricky to run in the\nbrowser. The\n[eslint-linter-browserify](https://github.com/UziTech/eslint-linter-browserify)\npackage may help with that (see\n[example](https://github.com/UziTech/eslint-linter-browserify/blob/master/example/script.js)).\n*/\nfunction esLint(eslint, config) {\n if (!config) {\n config = {\n parserOptions: { ecmaVersion: 2019, sourceType: \"module\" },\n env: { browser: true, node: true, es6: true, es2015: true, es2017: true, es2020: true },\n rules: {}\n };\n eslint.getRules().forEach((desc, name) => {\n if (desc.meta.docs.recommended)\n config.rules[name] = 2;\n });\n }\n return (view) => {\n let { state } = view, found = [];\n for (let { from, to } of javascriptLanguage.findRegions(state)) {\n let fromLine = state.doc.lineAt(from), offset = { line: fromLine.number - 1, col: from - fromLine.from, pos: from };\n for (let d of eslint.verify(state.sliceDoc(from, to), config))\n found.push(translateDiagnostic(d, state.doc, offset));\n }\n return found;\n };\n}\nfunction mapPos(line, col, doc, offset) {\n return doc.line(line + offset.line).from + col + (line == 1 ? offset.col - 1 : -1);\n}\nfunction translateDiagnostic(input, doc, offset) {\n let start = mapPos(input.line, input.column, doc, offset);\n let result = {\n from: start,\n to: input.endLine != null && input.endColumn != 1 ? mapPos(input.endLine, input.endColumn, doc, offset) : start,\n message: input.message,\n source: input.ruleId ? \"eslint:\" + input.ruleId : \"eslint\",\n severity: input.severity == 1 ? \"warning\" : \"error\",\n };\n if (input.fix) {\n let { range, text } = input.fix, from = range[0] + offset.pos - start, to = range[1] + offset.pos - start;\n result.actions = [{\n name: \"fix\",\n apply(view, start) {\n view.dispatch({ changes: { from: start + from, to: start + to, insert: text }, scrollIntoView: true });\n }\n }];\n }\n return result;\n}\n\nexport { autoCloseTags, completionPath, esLint, javascript, javascriptLanguage, jsxLanguage, localCompletionSource, scopeCompletionSource, snippets, tsxLanguage, typescriptLanguage, typescriptSnippets };\n","import { Annotation, Facet, combineConfig, StateField, Transaction, ChangeSet, ChangeDesc, EditorSelection, StateEffect, Text, findClusterBreak, countColumn, CharCategory } from '@codemirror/state';\nimport { EditorView, Direction } from '@codemirror/view';\nimport { IndentContext, getIndentation, indentString, matchBrackets, syntaxTree, getIndentUnit, indentUnit } from '@codemirror/language';\nimport { NodeProp } from '@lezer/common';\n\n/**\nComment or uncomment the current selection. Will use line comments\nif available, otherwise falling back to block comments.\n*/\nconst toggleComment = target => {\n let { state } = target, line = state.doc.lineAt(state.selection.main.from), config = getConfig(target.state, line.from);\n return config.line ? toggleLineComment(target) : config.block ? toggleBlockCommentByLine(target) : false;\n};\nfunction command(f, option) {\n return ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let tr = f(option, state);\n if (!tr)\n return false;\n dispatch(state.update(tr));\n return true;\n };\n}\n/**\nComment or uncomment the current selection using line comments.\nThe line comment syntax is taken from the\n[`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).\n*/\nconst toggleLineComment = /*@__PURE__*/command(changeLineComment, 0 /* CommentOption.Toggle */);\n/**\nComment the current selection using line comments.\n*/\nconst lineComment = /*@__PURE__*/command(changeLineComment, 1 /* CommentOption.Comment */);\n/**\nUncomment the current selection using line comments.\n*/\nconst lineUncomment = /*@__PURE__*/command(changeLineComment, 2 /* CommentOption.Uncomment */);\n/**\nComment or uncomment the current selection using block comments.\nThe block comment syntax is taken from the\n[`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).\n*/\nconst toggleBlockComment = /*@__PURE__*/command(changeBlockComment, 0 /* CommentOption.Toggle */);\n/**\nComment the current selection using block comments.\n*/\nconst blockComment = /*@__PURE__*/command(changeBlockComment, 1 /* CommentOption.Comment */);\n/**\nUncomment the current selection using block comments.\n*/\nconst blockUncomment = /*@__PURE__*/command(changeBlockComment, 2 /* CommentOption.Uncomment */);\n/**\nComment or uncomment the lines around the current selection using\nblock comments.\n*/\nconst toggleBlockCommentByLine = /*@__PURE__*/command((o, s) => changeBlockComment(o, s, selectedLineRanges(s)), 0 /* CommentOption.Toggle */);\nfunction getConfig(state, pos) {\n let data = state.languageDataAt(\"commentTokens\", pos);\n return data.length ? data[0] : {};\n}\nconst SearchMargin = 50;\n/**\nDetermines if the given range is block-commented in the given\nstate.\n*/\nfunction findBlockComment(state, { open, close }, from, to) {\n let textBefore = state.sliceDoc(from - SearchMargin, from);\n let textAfter = state.sliceDoc(to, to + SearchMargin);\n let spaceBefore = /\\s*$/.exec(textBefore)[0].length, spaceAfter = /^\\s*/.exec(textAfter)[0].length;\n let beforeOff = textBefore.length - spaceBefore;\n if (textBefore.slice(beforeOff - open.length, beforeOff) == open &&\n textAfter.slice(spaceAfter, spaceAfter + close.length) == close) {\n return { open: { pos: from - spaceBefore, margin: spaceBefore && 1 },\n close: { pos: to + spaceAfter, margin: spaceAfter && 1 } };\n }\n let startText, endText;\n if (to - from <= 2 * SearchMargin) {\n startText = endText = state.sliceDoc(from, to);\n }\n else {\n startText = state.sliceDoc(from, from + SearchMargin);\n endText = state.sliceDoc(to - SearchMargin, to);\n }\n let startSpace = /^\\s*/.exec(startText)[0].length, endSpace = /\\s*$/.exec(endText)[0].length;\n let endOff = endText.length - endSpace - close.length;\n if (startText.slice(startSpace, startSpace + open.length) == open &&\n endText.slice(endOff, endOff + close.length) == close) {\n return { open: { pos: from + startSpace + open.length,\n margin: /\\s/.test(startText.charAt(startSpace + open.length)) ? 1 : 0 },\n close: { pos: to - endSpace - close.length,\n margin: /\\s/.test(endText.charAt(endOff - 1)) ? 1 : 0 } };\n }\n return null;\n}\nfunction selectedLineRanges(state) {\n let ranges = [];\n for (let r of state.selection.ranges) {\n let fromLine = state.doc.lineAt(r.from);\n let toLine = r.to <= fromLine.to ? fromLine : state.doc.lineAt(r.to);\n let last = ranges.length - 1;\n if (last >= 0 && ranges[last].to > fromLine.from)\n ranges[last].to = toLine.to;\n else\n ranges.push({ from: fromLine.from + /^\\s*/.exec(fromLine.text)[0].length, to: toLine.to });\n }\n return ranges;\n}\n// Performs toggle, comment and uncomment of block comments in\n// languages that support them.\nfunction changeBlockComment(option, state, ranges = state.selection.ranges) {\n let tokens = ranges.map(r => getConfig(state, r.from).block);\n if (!tokens.every(c => c))\n return null;\n let comments = ranges.map((r, i) => findBlockComment(state, tokens[i], r.from, r.to));\n if (option != 2 /* CommentOption.Uncomment */ && !comments.every(c => c)) {\n return { changes: state.changes(ranges.map((range, i) => {\n if (comments[i])\n return [];\n return [{ from: range.from, insert: tokens[i].open + \" \" }, { from: range.to, insert: \" \" + tokens[i].close }];\n })) };\n }\n else if (option != 1 /* CommentOption.Comment */ && comments.some(c => c)) {\n let changes = [];\n for (let i = 0, comment; i < comments.length; i++)\n if (comment = comments[i]) {\n let token = tokens[i], { open, close } = comment;\n changes.push({ from: open.pos - token.open.length, to: open.pos + open.margin }, { from: close.pos - close.margin, to: close.pos + token.close.length });\n }\n return { changes };\n }\n return null;\n}\n// Performs toggle, comment and uncomment of line comments.\nfunction changeLineComment(option, state, ranges = state.selection.ranges) {\n let lines = [];\n let prevLine = -1;\n for (let { from, to } of ranges) {\n let startI = lines.length, minIndent = 1e9;\n let token = getConfig(state, from).line;\n if (!token)\n continue;\n for (let pos = from; pos <= to;) {\n let line = state.doc.lineAt(pos);\n if (line.from > prevLine && (from == to || to > line.from)) {\n prevLine = line.from;\n let indent = /^\\s*/.exec(line.text)[0].length;\n let empty = indent == line.length;\n let comment = line.text.slice(indent, indent + token.length) == token ? indent : -1;\n if (indent < line.text.length && indent < minIndent)\n minIndent = indent;\n lines.push({ line, comment, token, indent, empty, single: false });\n }\n pos = line.to + 1;\n }\n if (minIndent < 1e9)\n for (let i = startI; i < lines.length; i++)\n if (lines[i].indent < lines[i].line.text.length)\n lines[i].indent = minIndent;\n if (lines.length == startI + 1)\n lines[startI].single = true;\n }\n if (option != 2 /* CommentOption.Uncomment */ && lines.some(l => l.comment < 0 && (!l.empty || l.single))) {\n let changes = [];\n for (let { line, token, indent, empty, single } of lines)\n if (single || !empty)\n changes.push({ from: line.from + indent, insert: token + \" \" });\n let changeSet = state.changes(changes);\n return { changes: changeSet, selection: state.selection.map(changeSet, 1) };\n }\n else if (option != 1 /* CommentOption.Comment */ && lines.some(l => l.comment >= 0)) {\n let changes = [];\n for (let { line, comment, token } of lines)\n if (comment >= 0) {\n let from = line.from + comment, to = from + token.length;\n if (line.text[to - line.from] == \" \")\n to++;\n changes.push({ from, to });\n }\n return { changes };\n }\n return null;\n}\n\nconst fromHistory = /*@__PURE__*/Annotation.define();\n/**\nTransaction annotation that will prevent that transaction from\nbeing combined with other transactions in the undo history. Given\n`\"before\"`, it'll prevent merging with previous transactions. With\n`\"after\"`, subsequent transactions won't be combined with this\none. With `\"full\"`, the transaction is isolated on both sides.\n*/\nconst isolateHistory = /*@__PURE__*/Annotation.define();\n/**\nThis facet provides a way to register functions that, given a\ntransaction, provide a set of effects that the history should\nstore when inverting the transaction. This can be used to\nintegrate some kinds of effects in the history, so that they can\nbe undone (and redone again).\n*/\nconst invertedEffects = /*@__PURE__*/Facet.define();\nconst historyConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n minDepth: 100,\n newGroupDelay: 500,\n joinToEvent: (_t, isAdjacent) => isAdjacent,\n }, {\n minDepth: Math.max,\n newGroupDelay: Math.min,\n joinToEvent: (a, b) => (tr, adj) => a(tr, adj) || b(tr, adj)\n });\n }\n});\nconst historyField_ = /*@__PURE__*/StateField.define({\n create() {\n return HistoryState.empty;\n },\n update(state, tr) {\n let config = tr.state.facet(historyConfig);\n let fromHist = tr.annotation(fromHistory);\n if (fromHist) {\n let item = HistEvent.fromTransaction(tr, fromHist.selection), from = fromHist.side;\n let other = from == 0 /* BranchName.Done */ ? state.undone : state.done;\n if (item)\n other = updateBranch(other, other.length, config.minDepth, item);\n else\n other = addSelection(other, tr.startState.selection);\n return new HistoryState(from == 0 /* BranchName.Done */ ? fromHist.rest : other, from == 0 /* BranchName.Done */ ? other : fromHist.rest);\n }\n let isolate = tr.annotation(isolateHistory);\n if (isolate == \"full\" || isolate == \"before\")\n state = state.isolate();\n if (tr.annotation(Transaction.addToHistory) === false)\n return !tr.changes.empty ? state.addMapping(tr.changes.desc) : state;\n let event = HistEvent.fromTransaction(tr);\n let time = tr.annotation(Transaction.time), userEvent = tr.annotation(Transaction.userEvent);\n if (event)\n state = state.addChanges(event, time, userEvent, config, tr);\n else if (tr.selection)\n state = state.addSelection(tr.startState.selection, time, userEvent, config.newGroupDelay);\n if (isolate == \"full\" || isolate == \"after\")\n state = state.isolate();\n return state;\n },\n toJSON(value) {\n return { done: value.done.map(e => e.toJSON()), undone: value.undone.map(e => e.toJSON()) };\n },\n fromJSON(json) {\n return new HistoryState(json.done.map(HistEvent.fromJSON), json.undone.map(HistEvent.fromJSON));\n }\n});\n/**\nCreate a history extension with the given configuration.\n*/\nfunction history(config = {}) {\n return [\n historyField_,\n historyConfig.of(config),\n EditorView.domEventHandlers({\n beforeinput(e, view) {\n let command = e.inputType == \"historyUndo\" ? undo : e.inputType == \"historyRedo\" ? redo : null;\n if (!command)\n return false;\n e.preventDefault();\n return command(view);\n }\n })\n ];\n}\n/**\nThe state field used to store the history data. Should probably\nonly be used when you want to\n[serialize](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) or\n[deserialize](https://codemirror.net/6/docs/ref/#state.EditorState^fromJSON) state objects in a way\nthat preserves history.\n*/\nconst historyField = historyField_;\nfunction cmd(side, selection) {\n return function ({ state, dispatch }) {\n if (!selection && state.readOnly)\n return false;\n let historyState = state.field(historyField_, false);\n if (!historyState)\n return false;\n let tr = historyState.pop(side, state, selection);\n if (!tr)\n return false;\n dispatch(tr);\n return true;\n };\n}\n/**\nUndo a single group of history events. Returns false if no group\nwas available.\n*/\nconst undo = /*@__PURE__*/cmd(0 /* BranchName.Done */, false);\n/**\nRedo a group of history events. Returns false if no group was\navailable.\n*/\nconst redo = /*@__PURE__*/cmd(1 /* BranchName.Undone */, false);\n/**\nUndo a change or selection change.\n*/\nconst undoSelection = /*@__PURE__*/cmd(0 /* BranchName.Done */, true);\n/**\nRedo a change or selection change.\n*/\nconst redoSelection = /*@__PURE__*/cmd(1 /* BranchName.Undone */, true);\nfunction depth(side) {\n return function (state) {\n let histState = state.field(historyField_, false);\n if (!histState)\n return 0;\n let branch = side == 0 /* BranchName.Done */ ? histState.done : histState.undone;\n return branch.length - (branch.length && !branch[0].changes ? 1 : 0);\n };\n}\n/**\nThe amount of undoable change events available in a given state.\n*/\nconst undoDepth = /*@__PURE__*/depth(0 /* BranchName.Done */);\n/**\nThe amount of redoable change events available in a given state.\n*/\nconst redoDepth = /*@__PURE__*/depth(1 /* BranchName.Undone */);\n// History events store groups of changes or effects that need to be\n// undone/redone together.\nclass HistEvent {\n constructor(\n // The changes in this event. Normal events hold at least one\n // change or effect. But it may be necessary to store selection\n // events before the first change, in which case a special type of\n // instance is created which doesn't hold any changes, with\n // changes == startSelection == undefined\n changes, \n // The effects associated with this event\n effects, \n // Accumulated mapping (from addToHistory==false) that should be\n // applied to events below this one.\n mapped, \n // The selection before this event\n startSelection, \n // Stores selection changes after this event, to be used for\n // selection undo/redo.\n selectionsAfter) {\n this.changes = changes;\n this.effects = effects;\n this.mapped = mapped;\n this.startSelection = startSelection;\n this.selectionsAfter = selectionsAfter;\n }\n setSelAfter(after) {\n return new HistEvent(this.changes, this.effects, this.mapped, this.startSelection, after);\n }\n toJSON() {\n var _a, _b, _c;\n return {\n changes: (_a = this.changes) === null || _a === void 0 ? void 0 : _a.toJSON(),\n mapped: (_b = this.mapped) === null || _b === void 0 ? void 0 : _b.toJSON(),\n startSelection: (_c = this.startSelection) === null || _c === void 0 ? void 0 : _c.toJSON(),\n selectionsAfter: this.selectionsAfter.map(s => s.toJSON())\n };\n }\n static fromJSON(json) {\n return new HistEvent(json.changes && ChangeSet.fromJSON(json.changes), [], json.mapped && ChangeDesc.fromJSON(json.mapped), json.startSelection && EditorSelection.fromJSON(json.startSelection), json.selectionsAfter.map(EditorSelection.fromJSON));\n }\n // This does not check `addToHistory` and such, it assumes the\n // transaction needs to be converted to an item. Returns null when\n // there are no changes or effects in the transaction.\n static fromTransaction(tr, selection) {\n let effects = none;\n for (let invert of tr.startState.facet(invertedEffects)) {\n let result = invert(tr);\n if (result.length)\n effects = effects.concat(result);\n }\n if (!effects.length && tr.changes.empty)\n return null;\n return new HistEvent(tr.changes.invert(tr.startState.doc), effects, undefined, selection || tr.startState.selection, none);\n }\n static selection(selections) {\n return new HistEvent(undefined, none, undefined, undefined, selections);\n }\n}\nfunction updateBranch(branch, to, maxLen, newEvent) {\n let start = to + 1 > maxLen + 20 ? to - maxLen - 1 : 0;\n let newBranch = branch.slice(start, to);\n newBranch.push(newEvent);\n return newBranch;\n}\nfunction isAdjacent(a, b) {\n let ranges = [], isAdjacent = false;\n a.iterChangedRanges((f, t) => ranges.push(f, t));\n b.iterChangedRanges((_f, _t, f, t) => {\n for (let i = 0; i < ranges.length;) {\n let from = ranges[i++], to = ranges[i++];\n if (t >= from && f <= to)\n isAdjacent = true;\n }\n });\n return isAdjacent;\n}\nfunction eqSelectionShape(a, b) {\n return a.ranges.length == b.ranges.length &&\n a.ranges.filter((r, i) => r.empty != b.ranges[i].empty).length === 0;\n}\nfunction conc(a, b) {\n return !a.length ? b : !b.length ? a : a.concat(b);\n}\nconst none = [];\nconst MaxSelectionsPerEvent = 200;\nfunction addSelection(branch, selection) {\n if (!branch.length) {\n return [HistEvent.selection([selection])];\n }\n else {\n let lastEvent = branch[branch.length - 1];\n let sels = lastEvent.selectionsAfter.slice(Math.max(0, lastEvent.selectionsAfter.length - MaxSelectionsPerEvent));\n if (sels.length && sels[sels.length - 1].eq(selection))\n return branch;\n sels.push(selection);\n return updateBranch(branch, branch.length - 1, 1e9, lastEvent.setSelAfter(sels));\n }\n}\n// Assumes the top item has one or more selectionAfter values\nfunction popSelection(branch) {\n let last = branch[branch.length - 1];\n let newBranch = branch.slice();\n newBranch[branch.length - 1] = last.setSelAfter(last.selectionsAfter.slice(0, last.selectionsAfter.length - 1));\n return newBranch;\n}\n// Add a mapping to the top event in the given branch. If this maps\n// away all the changes and effects in that item, drop it and\n// propagate the mapping to the next item.\nfunction addMappingToBranch(branch, mapping) {\n if (!branch.length)\n return branch;\n let length = branch.length, selections = none;\n while (length) {\n let event = mapEvent(branch[length - 1], mapping, selections);\n if (event.changes && !event.changes.empty || event.effects.length) { // Event survived mapping\n let result = branch.slice(0, length);\n result[length - 1] = event;\n return result;\n }\n else { // Drop this event, since there's no changes or effects left\n mapping = event.mapped;\n length--;\n selections = event.selectionsAfter;\n }\n }\n return selections.length ? [HistEvent.selection(selections)] : none;\n}\nfunction mapEvent(event, mapping, extraSelections) {\n let selections = conc(event.selectionsAfter.length ? event.selectionsAfter.map(s => s.map(mapping)) : none, extraSelections);\n // Change-less events don't store mappings (they are always the last event in a branch)\n if (!event.changes)\n return HistEvent.selection(selections);\n let mappedChanges = event.changes.map(mapping), before = mapping.mapDesc(event.changes, true);\n let fullMapping = event.mapped ? event.mapped.composeDesc(before) : before;\n return new HistEvent(mappedChanges, StateEffect.mapEffects(event.effects, mapping), fullMapping, event.startSelection.map(before), selections);\n}\nconst joinableUserEvent = /^(input\\.type|delete)($|\\.)/;\nclass HistoryState {\n constructor(done, undone, prevTime = 0, prevUserEvent = undefined) {\n this.done = done;\n this.undone = undone;\n this.prevTime = prevTime;\n this.prevUserEvent = prevUserEvent;\n }\n isolate() {\n return this.prevTime ? new HistoryState(this.done, this.undone) : this;\n }\n addChanges(event, time, userEvent, config, tr) {\n let done = this.done, lastEvent = done[done.length - 1];\n if (lastEvent && lastEvent.changes && !lastEvent.changes.empty && event.changes &&\n (!userEvent || joinableUserEvent.test(userEvent)) &&\n ((!lastEvent.selectionsAfter.length &&\n time - this.prevTime < config.newGroupDelay &&\n config.joinToEvent(tr, isAdjacent(lastEvent.changes, event.changes))) ||\n // For compose (but not compose.start) events, always join with previous event\n userEvent == \"input.type.compose\")) {\n done = updateBranch(done, done.length - 1, config.minDepth, new HistEvent(event.changes.compose(lastEvent.changes), conc(StateEffect.mapEffects(event.effects, lastEvent.changes), lastEvent.effects), lastEvent.mapped, lastEvent.startSelection, none));\n }\n else {\n done = updateBranch(done, done.length, config.minDepth, event);\n }\n return new HistoryState(done, none, time, userEvent);\n }\n addSelection(selection, time, userEvent, newGroupDelay) {\n let last = this.done.length ? this.done[this.done.length - 1].selectionsAfter : none;\n if (last.length > 0 &&\n time - this.prevTime < newGroupDelay &&\n userEvent == this.prevUserEvent && userEvent && /^select($|\\.)/.test(userEvent) &&\n eqSelectionShape(last[last.length - 1], selection))\n return this;\n return new HistoryState(addSelection(this.done, selection), this.undone, time, userEvent);\n }\n addMapping(mapping) {\n return new HistoryState(addMappingToBranch(this.done, mapping), addMappingToBranch(this.undone, mapping), this.prevTime, this.prevUserEvent);\n }\n pop(side, state, onlySelection) {\n let branch = side == 0 /* BranchName.Done */ ? this.done : this.undone;\n if (branch.length == 0)\n return null;\n let event = branch[branch.length - 1], selection = event.selectionsAfter[0] || state.selection;\n if (onlySelection && event.selectionsAfter.length) {\n return state.update({\n selection: event.selectionsAfter[event.selectionsAfter.length - 1],\n annotations: fromHistory.of({ side, rest: popSelection(branch), selection }),\n userEvent: side == 0 /* BranchName.Done */ ? \"select.undo\" : \"select.redo\",\n scrollIntoView: true\n });\n }\n else if (!event.changes) {\n return null;\n }\n else {\n let rest = branch.length == 1 ? none : branch.slice(0, branch.length - 1);\n if (event.mapped)\n rest = addMappingToBranch(rest, event.mapped);\n return state.update({\n changes: event.changes,\n selection: event.startSelection,\n effects: event.effects,\n annotations: fromHistory.of({ side, rest, selection }),\n filter: false,\n userEvent: side == 0 /* BranchName.Done */ ? \"undo\" : \"redo\",\n scrollIntoView: true\n });\n }\n }\n}\nHistoryState.empty = /*@__PURE__*/new HistoryState(none, none);\n/**\nDefault key bindings for the undo history.\n\n- Mod-z: [`undo`](https://codemirror.net/6/docs/ref/#commands.undo).\n- Mod-y (Mod-Shift-z on macOS) + Ctrl-Shift-z on Linux: [`redo`](https://codemirror.net/6/docs/ref/#commands.redo).\n- Mod-u: [`undoSelection`](https://codemirror.net/6/docs/ref/#commands.undoSelection).\n- Alt-u (Mod-Shift-u on macOS): [`redoSelection`](https://codemirror.net/6/docs/ref/#commands.redoSelection).\n*/\nconst historyKeymap = [\n { key: \"Mod-z\", run: undo, preventDefault: true },\n { key: \"Mod-y\", mac: \"Mod-Shift-z\", run: redo, preventDefault: true },\n { linux: \"Ctrl-Shift-z\", run: redo, preventDefault: true },\n { key: \"Mod-u\", run: undoSelection, preventDefault: true },\n { key: \"Alt-u\", mac: \"Mod-Shift-u\", run: redoSelection, preventDefault: true }\n];\n\nfunction updateSel(sel, by) {\n return EditorSelection.create(sel.ranges.map(by), sel.mainIndex);\n}\nfunction setSel(state, selection) {\n return state.update({ selection, scrollIntoView: true, userEvent: \"select\" });\n}\nfunction moveSel({ state, dispatch }, how) {\n let selection = updateSel(state.selection, how);\n if (selection.eq(state.selection, true))\n return false;\n dispatch(setSel(state, selection));\n return true;\n}\nfunction rangeEnd(range, forward) {\n return EditorSelection.cursor(forward ? range.to : range.from);\n}\nfunction cursorByChar(view, forward) {\n return moveSel(view, range => range.empty ? view.moveByChar(range, forward) : rangeEnd(range, forward));\n}\nfunction ltrAtCursor(view) {\n return view.textDirectionAt(view.state.selection.main.head) == Direction.LTR;\n}\n/**\nMove the selection one character to the left (which is backward in\nleft-to-right text, forward in right-to-left text).\n*/\nconst cursorCharLeft = view => cursorByChar(view, !ltrAtCursor(view));\n/**\nMove the selection one character to the right.\n*/\nconst cursorCharRight = view => cursorByChar(view, ltrAtCursor(view));\n/**\nMove the selection one character forward.\n*/\nconst cursorCharForward = view => cursorByChar(view, true);\n/**\nMove the selection one character backward.\n*/\nconst cursorCharBackward = view => cursorByChar(view, false);\nfunction cursorByGroup(view, forward) {\n return moveSel(view, range => range.empty ? view.moveByGroup(range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection to the left across one group of word or\nnon-word (but also non-space) characters.\n*/\nconst cursorGroupLeft = view => cursorByGroup(view, !ltrAtCursor(view));\n/**\nMove the selection one group to the right.\n*/\nconst cursorGroupRight = view => cursorByGroup(view, ltrAtCursor(view));\n/**\nMove the selection one group forward.\n*/\nconst cursorGroupForward = view => cursorByGroup(view, true);\n/**\nMove the selection one group backward.\n*/\nconst cursorGroupBackward = view => cursorByGroup(view, false);\nconst segmenter = typeof Intl != \"undefined\" && Intl.Segmenter ?\n /*@__PURE__*/new (Intl.Segmenter)(undefined, { granularity: \"word\" }) : null;\nfunction moveBySubword(view, range, forward) {\n let categorize = view.state.charCategorizer(range.from);\n let cat = CharCategory.Space, pos = range.from, steps = 0;\n let done = false, sawUpper = false, sawLower = false;\n let step = (next) => {\n if (done)\n return false;\n pos += forward ? next.length : -next.length;\n let nextCat = categorize(next), ahead;\n if (nextCat == CharCategory.Word && next.charCodeAt(0) < 128 && /[\\W_]/.test(next))\n nextCat = -1; // Treat word punctuation specially\n if (cat == CharCategory.Space)\n cat = nextCat;\n if (cat != nextCat)\n return false;\n if (cat == CharCategory.Word) {\n if (next.toLowerCase() == next) {\n if (!forward && sawUpper)\n return false;\n sawLower = true;\n }\n else if (sawLower) {\n if (forward)\n return false;\n done = true;\n }\n else {\n if (sawUpper && forward && categorize(ahead = view.state.sliceDoc(pos, pos + 1)) == CharCategory.Word &&\n ahead.toLowerCase() == ahead)\n return false;\n sawUpper = true;\n }\n }\n steps++;\n return true;\n };\n let end = view.moveByChar(range, forward, start => {\n step(start);\n return step;\n });\n if (segmenter && cat == CharCategory.Word && end.from == range.from + steps * (forward ? 1 : -1)) {\n let from = Math.min(range.head, end.head), to = Math.max(range.head, end.head);\n let skipped = view.state.sliceDoc(from, to);\n if (skipped.length > 1 && /[\\u4E00-\\uffff]/.test(skipped)) {\n let segments = Array.from(segmenter.segment(skipped));\n if (segments.length > 1) {\n if (forward)\n return EditorSelection.cursor(range.head + segments[1].index, -1);\n return EditorSelection.cursor(end.head + segments[segments.length - 1].index, 1);\n }\n }\n }\n return end;\n}\nfunction cursorBySubword(view, forward) {\n return moveSel(view, range => range.empty ? moveBySubword(view, range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection one group or camel-case subword forward.\n*/\nconst cursorSubwordForward = view => cursorBySubword(view, true);\n/**\nMove the selection one group or camel-case subword backward.\n*/\nconst cursorSubwordBackward = view => cursorBySubword(view, false);\nfunction interestingNode(state, node, bracketProp) {\n if (node.type.prop(bracketProp))\n return true;\n let len = node.to - node.from;\n return len && (len > 2 || /[^\\s,.;:]/.test(state.sliceDoc(node.from, node.to))) || node.firstChild;\n}\nfunction moveBySyntax(state, start, forward) {\n let pos = syntaxTree(state).resolveInner(start.head);\n let bracketProp = forward ? NodeProp.closedBy : NodeProp.openedBy;\n // Scan forward through child nodes to see if there's an interesting\n // node ahead.\n for (let at = start.head;;) {\n let next = forward ? pos.childAfter(at) : pos.childBefore(at);\n if (!next)\n break;\n if (interestingNode(state, next, bracketProp))\n pos = next;\n else\n at = forward ? next.to : next.from;\n }\n let bracket = pos.type.prop(bracketProp), match, newPos;\n if (bracket && (match = forward ? matchBrackets(state, pos.from, 1) : matchBrackets(state, pos.to, -1)) && match.matched)\n newPos = forward ? match.end.to : match.end.from;\n else\n newPos = forward ? pos.to : pos.from;\n return EditorSelection.cursor(newPos, forward ? -1 : 1);\n}\n/**\nMove the cursor over the next syntactic element to the left.\n*/\nconst cursorSyntaxLeft = view => moveSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));\n/**\nMove the cursor over the next syntactic element to the right.\n*/\nconst cursorSyntaxRight = view => moveSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));\nfunction cursorByLine(view, forward) {\n return moveSel(view, range => {\n if (!range.empty)\n return rangeEnd(range, forward);\n let moved = view.moveVertically(range, forward);\n return moved.head != range.head ? moved : view.moveToLineBoundary(range, forward);\n });\n}\n/**\nMove the selection one line up.\n*/\nconst cursorLineUp = view => cursorByLine(view, false);\n/**\nMove the selection one line down.\n*/\nconst cursorLineDown = view => cursorByLine(view, true);\nfunction pageInfo(view) {\n let selfScroll = view.scrollDOM.clientHeight < view.scrollDOM.scrollHeight - 2;\n let marginTop = 0, marginBottom = 0, height;\n if (selfScroll) {\n for (let source of view.state.facet(EditorView.scrollMargins)) {\n let margins = source(view);\n if (margins === null || margins === void 0 ? void 0 : margins.top)\n marginTop = Math.max(margins === null || margins === void 0 ? void 0 : margins.top, marginTop);\n if (margins === null || margins === void 0 ? void 0 : margins.bottom)\n marginBottom = Math.max(margins === null || margins === void 0 ? void 0 : margins.bottom, marginBottom);\n }\n height = view.scrollDOM.clientHeight - marginTop - marginBottom;\n }\n else {\n height = (view.dom.ownerDocument.defaultView || window).innerHeight;\n }\n return { marginTop, marginBottom, selfScroll,\n height: Math.max(view.defaultLineHeight, height - 5) };\n}\nfunction cursorByPage(view, forward) {\n let page = pageInfo(view);\n let { state } = view, selection = updateSel(state.selection, range => {\n return range.empty ? view.moveVertically(range, forward, page.height)\n : rangeEnd(range, forward);\n });\n if (selection.eq(state.selection))\n return false;\n let effect;\n if (page.selfScroll) {\n let startPos = view.coordsAtPos(state.selection.main.head);\n let scrollRect = view.scrollDOM.getBoundingClientRect();\n let scrollTop = scrollRect.top + page.marginTop, scrollBottom = scrollRect.bottom - page.marginBottom;\n if (startPos && startPos.top > scrollTop && startPos.bottom < scrollBottom)\n effect = EditorView.scrollIntoView(selection.main.head, { y: \"start\", yMargin: startPos.top - scrollTop });\n }\n view.dispatch(setSel(state, selection), { effects: effect });\n return true;\n}\n/**\nMove the selection one page up.\n*/\nconst cursorPageUp = view => cursorByPage(view, false);\n/**\nMove the selection one page down.\n*/\nconst cursorPageDown = view => cursorByPage(view, true);\nfunction moveByLineBoundary(view, start, forward) {\n let line = view.lineBlockAt(start.head), moved = view.moveToLineBoundary(start, forward);\n if (moved.head == start.head && moved.head != (forward ? line.to : line.from))\n moved = view.moveToLineBoundary(start, forward, false);\n if (!forward && moved.head == line.from && line.length) {\n let space = /^\\s*/.exec(view.state.sliceDoc(line.from, Math.min(line.from + 100, line.to)))[0].length;\n if (space && start.head != line.from + space)\n moved = EditorSelection.cursor(line.from + space);\n }\n return moved;\n}\n/**\nMove the selection to the next line wrap point, or to the end of\nthe line if there isn't one left on this line.\n*/\nconst cursorLineBoundaryForward = view => moveSel(view, range => moveByLineBoundary(view, range, true));\n/**\nMove the selection to previous line wrap point, or failing that to\nthe start of the line. If the line is indented, and the cursor\nisn't already at the end of the indentation, this will move to the\nend of the indentation instead of the start of the line.\n*/\nconst cursorLineBoundaryBackward = view => moveSel(view, range => moveByLineBoundary(view, range, false));\n/**\nMove the selection one line wrap point to the left.\n*/\nconst cursorLineBoundaryLeft = view => moveSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));\n/**\nMove the selection one line wrap point to the right.\n*/\nconst cursorLineBoundaryRight = view => moveSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));\n/**\nMove the selection to the start of the line.\n*/\nconst cursorLineStart = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from, 1));\n/**\nMove the selection to the end of the line.\n*/\nconst cursorLineEnd = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to, -1));\nfunction toMatchingBracket(state, dispatch, extend) {\n let found = false, selection = updateSel(state.selection, range => {\n let matching = matchBrackets(state, range.head, -1)\n || matchBrackets(state, range.head, 1)\n || (range.head > 0 && matchBrackets(state, range.head - 1, 1))\n || (range.head < state.doc.length && matchBrackets(state, range.head + 1, -1));\n if (!matching || !matching.end)\n return range;\n found = true;\n let head = matching.start.from == range.head ? matching.end.to : matching.end.from;\n return extend ? EditorSelection.range(range.anchor, head) : EditorSelection.cursor(head);\n });\n if (!found)\n return false;\n dispatch(setSel(state, selection));\n return true;\n}\n/**\nMove the selection to the bracket matching the one it is currently\non, if any.\n*/\nconst cursorMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, false);\n/**\nExtend the selection to the bracket matching the one the selection\nhead is currently on, if any.\n*/\nconst selectMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, true);\nfunction extendSel(view, how) {\n let selection = updateSel(view.state.selection, range => {\n let head = how(range);\n return EditorSelection.range(range.anchor, head.head, head.goalColumn, head.bidiLevel || undefined);\n });\n if (selection.eq(view.state.selection))\n return false;\n view.dispatch(setSel(view.state, selection));\n return true;\n}\nfunction selectByChar(view, forward) {\n return extendSel(view, range => view.moveByChar(range, forward));\n}\n/**\nMove the selection head one character to the left, while leaving\nthe anchor in place.\n*/\nconst selectCharLeft = view => selectByChar(view, !ltrAtCursor(view));\n/**\nMove the selection head one character to the right.\n*/\nconst selectCharRight = view => selectByChar(view, ltrAtCursor(view));\n/**\nMove the selection head one character forward.\n*/\nconst selectCharForward = view => selectByChar(view, true);\n/**\nMove the selection head one character backward.\n*/\nconst selectCharBackward = view => selectByChar(view, false);\nfunction selectByGroup(view, forward) {\n return extendSel(view, range => view.moveByGroup(range, forward));\n}\n/**\nMove the selection head one [group](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) to\nthe left.\n*/\nconst selectGroupLeft = view => selectByGroup(view, !ltrAtCursor(view));\n/**\nMove the selection head one group to the right.\n*/\nconst selectGroupRight = view => selectByGroup(view, ltrAtCursor(view));\n/**\nMove the selection head one group forward.\n*/\nconst selectGroupForward = view => selectByGroup(view, true);\n/**\nMove the selection head one group backward.\n*/\nconst selectGroupBackward = view => selectByGroup(view, false);\nfunction selectBySubword(view, forward) {\n return extendSel(view, range => moveBySubword(view, range, forward));\n}\n/**\nMove the selection head one group or camel-case subword forward.\n*/\nconst selectSubwordForward = view => selectBySubword(view, true);\n/**\nMove the selection head one group or subword backward.\n*/\nconst selectSubwordBackward = view => selectBySubword(view, false);\n/**\nMove the selection head over the next syntactic element to the left.\n*/\nconst selectSyntaxLeft = view => extendSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));\n/**\nMove the selection head over the next syntactic element to the right.\n*/\nconst selectSyntaxRight = view => extendSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));\nfunction selectByLine(view, forward) {\n return extendSel(view, range => view.moveVertically(range, forward));\n}\n/**\nMove the selection head one line up.\n*/\nconst selectLineUp = view => selectByLine(view, false);\n/**\nMove the selection head one line down.\n*/\nconst selectLineDown = view => selectByLine(view, true);\nfunction selectByPage(view, forward) {\n return extendSel(view, range => view.moveVertically(range, forward, pageInfo(view).height));\n}\n/**\nMove the selection head one page up.\n*/\nconst selectPageUp = view => selectByPage(view, false);\n/**\nMove the selection head one page down.\n*/\nconst selectPageDown = view => selectByPage(view, true);\n/**\nMove the selection head to the next line boundary.\n*/\nconst selectLineBoundaryForward = view => extendSel(view, range => moveByLineBoundary(view, range, true));\n/**\nMove the selection head to the previous line boundary.\n*/\nconst selectLineBoundaryBackward = view => extendSel(view, range => moveByLineBoundary(view, range, false));\n/**\nMove the selection head one line boundary to the left.\n*/\nconst selectLineBoundaryLeft = view => extendSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));\n/**\nMove the selection head one line boundary to the right.\n*/\nconst selectLineBoundaryRight = view => extendSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));\n/**\nMove the selection head to the start of the line.\n*/\nconst selectLineStart = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from));\n/**\nMove the selection head to the end of the line.\n*/\nconst selectLineEnd = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to));\n/**\nMove the selection to the start of the document.\n*/\nconst cursorDocStart = ({ state, dispatch }) => {\n dispatch(setSel(state, { anchor: 0 }));\n return true;\n};\n/**\nMove the selection to the end of the document.\n*/\nconst cursorDocEnd = ({ state, dispatch }) => {\n dispatch(setSel(state, { anchor: state.doc.length }));\n return true;\n};\n/**\nMove the selection head to the start of the document.\n*/\nconst selectDocStart = ({ state, dispatch }) => {\n dispatch(setSel(state, { anchor: state.selection.main.anchor, head: 0 }));\n return true;\n};\n/**\nMove the selection head to the end of the document.\n*/\nconst selectDocEnd = ({ state, dispatch }) => {\n dispatch(setSel(state, { anchor: state.selection.main.anchor, head: state.doc.length }));\n return true;\n};\n/**\nSelect the entire document.\n*/\nconst selectAll = ({ state, dispatch }) => {\n dispatch(state.update({ selection: { anchor: 0, head: state.doc.length }, userEvent: \"select\" }));\n return true;\n};\n/**\nExpand the selection to cover entire lines.\n*/\nconst selectLine = ({ state, dispatch }) => {\n let ranges = selectedLineBlocks(state).map(({ from, to }) => EditorSelection.range(from, Math.min(to + 1, state.doc.length)));\n dispatch(state.update({ selection: EditorSelection.create(ranges), userEvent: \"select\" }));\n return true;\n};\n/**\nSelect the next syntactic construct that is larger than the\nselection. Note that this will only work insofar as the language\n[provider](https://codemirror.net/6/docs/ref/#language.language) you use builds up a full\nsyntax tree.\n*/\nconst selectParentSyntax = ({ state, dispatch }) => {\n let selection = updateSel(state.selection, range => {\n let tree = syntaxTree(state), stack = tree.resolveStack(range.from, 1);\n if (range.empty) {\n let stackBefore = tree.resolveStack(range.from, -1);\n if (stackBefore.node.from >= stack.node.from && stackBefore.node.to <= stack.node.to)\n stack = stackBefore;\n }\n for (let cur = stack; cur; cur = cur.next) {\n let { node } = cur;\n if (((node.from < range.from && node.to >= range.to) ||\n (node.to > range.to && node.from <= range.from)) &&\n cur.next)\n return EditorSelection.range(node.to, node.from);\n }\n return range;\n });\n if (selection.eq(state.selection))\n return false;\n dispatch(setSel(state, selection));\n return true;\n};\n/**\nSimplify the current selection. When multiple ranges are selected,\nreduce it to its main range. Otherwise, if the selection is\nnon-empty, convert it to a cursor selection.\n*/\nconst simplifySelection = ({ state, dispatch }) => {\n let cur = state.selection, selection = null;\n if (cur.ranges.length > 1)\n selection = EditorSelection.create([cur.main]);\n else if (!cur.main.empty)\n selection = EditorSelection.create([EditorSelection.cursor(cur.main.head)]);\n if (!selection)\n return false;\n dispatch(setSel(state, selection));\n return true;\n};\nfunction deleteBy(target, by) {\n if (target.state.readOnly)\n return false;\n let event = \"delete.selection\", { state } = target;\n let changes = state.changeByRange(range => {\n let { from, to } = range;\n if (from == to) {\n let towards = by(range);\n if (towards < from) {\n event = \"delete.backward\";\n towards = skipAtomic(target, towards, false);\n }\n else if (towards > from) {\n event = \"delete.forward\";\n towards = skipAtomic(target, towards, true);\n }\n from = Math.min(from, towards);\n to = Math.max(to, towards);\n }\n else {\n from = skipAtomic(target, from, false);\n to = skipAtomic(target, to, true);\n }\n return from == to ? { range } : { changes: { from, to }, range: EditorSelection.cursor(from, from < range.head ? -1 : 1) };\n });\n if (changes.changes.empty)\n return false;\n target.dispatch(state.update(changes, {\n scrollIntoView: true,\n userEvent: event,\n effects: event == \"delete.selection\" ? EditorView.announce.of(state.phrase(\"Selection deleted\")) : undefined\n }));\n return true;\n}\nfunction skipAtomic(target, pos, forward) {\n if (target instanceof EditorView)\n for (let ranges of target.state.facet(EditorView.atomicRanges).map(f => f(target)))\n ranges.between(pos, pos, (from, to) => {\n if (from < pos && to > pos)\n pos = forward ? to : from;\n });\n return pos;\n}\nconst deleteByChar = (target, forward, byIndentUnit) => deleteBy(target, range => {\n let pos = range.from, { state } = target, line = state.doc.lineAt(pos), before, targetPos;\n if (byIndentUnit && !forward && pos > line.from && pos < line.from + 200 &&\n !/[^ \\t]/.test(before = line.text.slice(0, pos - line.from))) {\n if (before[before.length - 1] == \"\\t\")\n return pos - 1;\n let col = countColumn(before, state.tabSize), drop = col % getIndentUnit(state) || getIndentUnit(state);\n for (let i = 0; i < drop && before[before.length - 1 - i] == \" \"; i++)\n pos--;\n targetPos = pos;\n }\n else {\n targetPos = findClusterBreak(line.text, pos - line.from, forward, forward) + line.from;\n if (targetPos == pos && line.number != (forward ? state.doc.lines : 1))\n targetPos += forward ? 1 : -1;\n else if (!forward && /[\\ufe00-\\ufe0f]/.test(line.text.slice(targetPos - line.from, pos - line.from)))\n targetPos = findClusterBreak(line.text, targetPos - line.from, false, false) + line.from;\n }\n return targetPos;\n});\n/**\nDelete the selection, or, for cursor selections, the character or\nindentation unit before the cursor.\n*/\nconst deleteCharBackward = view => deleteByChar(view, false, true);\n/**\nDelete the selection or the character before the cursor. Does not\nimplement any extended behavior like deleting whole indentation\nunits in one go.\n*/\nconst deleteCharBackwardStrict = view => deleteByChar(view, false, false);\n/**\nDelete the selection or the character after the cursor.\n*/\nconst deleteCharForward = view => deleteByChar(view, true, false);\nconst deleteByGroup = (target, forward) => deleteBy(target, range => {\n let pos = range.head, { state } = target, line = state.doc.lineAt(pos);\n let categorize = state.charCategorizer(pos);\n for (let cat = null;;) {\n if (pos == (forward ? line.to : line.from)) {\n if (pos == range.head && line.number != (forward ? state.doc.lines : 1))\n pos += forward ? 1 : -1;\n break;\n }\n let next = findClusterBreak(line.text, pos - line.from, forward) + line.from;\n let nextChar = line.text.slice(Math.min(pos, next) - line.from, Math.max(pos, next) - line.from);\n let nextCat = categorize(nextChar);\n if (cat != null && nextCat != cat)\n break;\n if (nextChar != \" \" || pos != range.head)\n cat = nextCat;\n pos = next;\n }\n return pos;\n});\n/**\nDelete the selection or backward until the end of the next\n[group](https://codemirror.net/6/docs/ref/#view.EditorView.moveByGroup), only skipping groups of\nwhitespace when they consist of a single space.\n*/\nconst deleteGroupBackward = target => deleteByGroup(target, false);\n/**\nDelete the selection or forward until the end of the next group.\n*/\nconst deleteGroupForward = target => deleteByGroup(target, true);\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe end of the line. If the cursor is directly at the end of the\nline, delete the line break after it.\n*/\nconst deleteToLineEnd = view => deleteBy(view, range => {\n let lineEnd = view.lineBlockAt(range.head).to;\n return range.head < lineEnd ? lineEnd : Math.min(view.state.doc.length, range.head + 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe start of the line. If the cursor is directly at the start of the\nline, delete the line break before it.\n*/\nconst deleteToLineStart = view => deleteBy(view, range => {\n let lineStart = view.lineBlockAt(range.head).from;\n return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe start of the line or the next line wrap before the cursor.\n*/\nconst deleteLineBoundaryBackward = view => deleteBy(view, range => {\n let lineStart = view.moveToLineBoundary(range, false).head;\n return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe end of the line or the next line wrap after the cursor.\n*/\nconst deleteLineBoundaryForward = view => deleteBy(view, range => {\n let lineStart = view.moveToLineBoundary(range, true).head;\n return range.head < lineStart ? lineStart : Math.min(view.state.doc.length, range.head + 1);\n});\n/**\nDelete all whitespace directly before a line end from the\ndocument.\n*/\nconst deleteTrailingWhitespace = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let changes = [];\n for (let pos = 0, prev = \"\", iter = state.doc.iter();;) {\n iter.next();\n if (iter.lineBreak || iter.done) {\n let trailing = prev.search(/\\s+$/);\n if (trailing > -1)\n changes.push({ from: pos - (prev.length - trailing), to: pos });\n if (iter.done)\n break;\n prev = \"\";\n }\n else {\n prev = iter.value;\n }\n pos += iter.value.length;\n }\n if (!changes.length)\n return false;\n dispatch(state.update({ changes, userEvent: \"delete\" }));\n return true;\n};\n/**\nReplace each selection range with a line break, leaving the cursor\non the line before the break.\n*/\nconst splitLine = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let changes = state.changeByRange(range => {\n return { changes: { from: range.from, to: range.to, insert: Text.of([\"\", \"\"]) },\n range: EditorSelection.cursor(range.from) };\n });\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nFlip the characters before and after the cursor(s).\n*/\nconst transposeChars = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let changes = state.changeByRange(range => {\n if (!range.empty || range.from == 0 || range.from == state.doc.length)\n return { range };\n let pos = range.from, line = state.doc.lineAt(pos);\n let from = pos == line.from ? pos - 1 : findClusterBreak(line.text, pos - line.from, false) + line.from;\n let to = pos == line.to ? pos + 1 : findClusterBreak(line.text, pos - line.from, true) + line.from;\n return { changes: { from, to, insert: state.doc.slice(pos, to).append(state.doc.slice(from, pos)) },\n range: EditorSelection.cursor(to) };\n });\n if (changes.changes.empty)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"move.character\" }));\n return true;\n};\nfunction selectedLineBlocks(state) {\n let blocks = [], upto = -1;\n for (let range of state.selection.ranges) {\n let startLine = state.doc.lineAt(range.from), endLine = state.doc.lineAt(range.to);\n if (!range.empty && range.to == endLine.from)\n endLine = state.doc.lineAt(range.to - 1);\n if (upto >= startLine.number) {\n let prev = blocks[blocks.length - 1];\n prev.to = endLine.to;\n prev.ranges.push(range);\n }\n else {\n blocks.push({ from: startLine.from, to: endLine.to, ranges: [range] });\n }\n upto = endLine.number + 1;\n }\n return blocks;\n}\nfunction moveLine(state, dispatch, forward) {\n if (state.readOnly)\n return false;\n let changes = [], ranges = [];\n for (let block of selectedLineBlocks(state)) {\n if (forward ? block.to == state.doc.length : block.from == 0)\n continue;\n let nextLine = state.doc.lineAt(forward ? block.to + 1 : block.from - 1);\n let size = nextLine.length + 1;\n if (forward) {\n changes.push({ from: block.to, to: nextLine.to }, { from: block.from, insert: nextLine.text + state.lineBreak });\n for (let r of block.ranges)\n ranges.push(EditorSelection.range(Math.min(state.doc.length, r.anchor + size), Math.min(state.doc.length, r.head + size)));\n }\n else {\n changes.push({ from: nextLine.from, to: block.from }, { from: block.to, insert: state.lineBreak + nextLine.text });\n for (let r of block.ranges)\n ranges.push(EditorSelection.range(r.anchor - size, r.head - size));\n }\n }\n if (!changes.length)\n return false;\n dispatch(state.update({\n changes,\n scrollIntoView: true,\n selection: EditorSelection.create(ranges, state.selection.mainIndex),\n userEvent: \"move.line\"\n }));\n return true;\n}\n/**\nMove the selected lines up one line.\n*/\nconst moveLineUp = ({ state, dispatch }) => moveLine(state, dispatch, false);\n/**\nMove the selected lines down one line.\n*/\nconst moveLineDown = ({ state, dispatch }) => moveLine(state, dispatch, true);\nfunction copyLine(state, dispatch, forward) {\n if (state.readOnly)\n return false;\n let changes = [];\n for (let block of selectedLineBlocks(state)) {\n if (forward)\n changes.push({ from: block.from, insert: state.doc.slice(block.from, block.to) + state.lineBreak });\n else\n changes.push({ from: block.to, insert: state.lineBreak + state.doc.slice(block.from, block.to) });\n }\n dispatch(state.update({ changes, scrollIntoView: true, userEvent: \"input.copyline\" }));\n return true;\n}\n/**\nCreate a copy of the selected lines. Keep the selection in the top copy.\n*/\nconst copyLineUp = ({ state, dispatch }) => copyLine(state, dispatch, false);\n/**\nCreate a copy of the selected lines. Keep the selection in the bottom copy.\n*/\nconst copyLineDown = ({ state, dispatch }) => copyLine(state, dispatch, true);\n/**\nDelete selected lines.\n*/\nconst deleteLine = view => {\n if (view.state.readOnly)\n return false;\n let { state } = view, changes = state.changes(selectedLineBlocks(state).map(({ from, to }) => {\n if (from > 0)\n from--;\n else if (to < state.doc.length)\n to++;\n return { from, to };\n }));\n let selection = updateSel(state.selection, range => {\n let dist = undefined;\n if (view.lineWrapping) {\n let block = view.lineBlockAt(range.head), pos = view.coordsAtPos(range.head, range.assoc || 1);\n if (pos)\n dist = (block.bottom + view.documentTop) - pos.bottom + view.defaultLineHeight / 2;\n }\n return view.moveVertically(range, true, dist);\n }).map(changes);\n view.dispatch({ changes, selection, scrollIntoView: true, userEvent: \"delete.line\" });\n return true;\n};\n/**\nReplace the selection with a newline.\n*/\nconst insertNewline = ({ state, dispatch }) => {\n dispatch(state.update(state.replaceSelection(state.lineBreak), { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nReplace the selection with a newline and the same amount of\nindentation as the line above.\n*/\nconst insertNewlineKeepIndent = ({ state, dispatch }) => {\n dispatch(state.update(state.changeByRange(range => {\n let indent = /^\\s*/.exec(state.doc.lineAt(range.from).text)[0];\n return {\n changes: { from: range.from, to: range.to, insert: state.lineBreak + indent },\n range: EditorSelection.cursor(range.from + indent.length + 1)\n };\n }), { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\nfunction isBetweenBrackets(state, pos) {\n if (/\\(\\)|\\[\\]|\\{\\}/.test(state.sliceDoc(pos - 1, pos + 1)))\n return { from: pos, to: pos };\n let context = syntaxTree(state).resolveInner(pos);\n let before = context.childBefore(pos), after = context.childAfter(pos), closedBy;\n if (before && after && before.to <= pos && after.from >= pos &&\n (closedBy = before.type.prop(NodeProp.closedBy)) && closedBy.indexOf(after.name) > -1 &&\n state.doc.lineAt(before.to).from == state.doc.lineAt(after.from).from &&\n !/\\S/.test(state.sliceDoc(before.to, after.from)))\n return { from: before.to, to: after.from };\n return null;\n}\n/**\nReplace the selection with a newline and indent the newly created\nline(s). If the current line consists only of whitespace, this\nwill also delete that whitespace. When the cursor is between\nmatching brackets, an additional newline will be inserted after\nthe cursor.\n*/\nconst insertNewlineAndIndent = /*@__PURE__*/newlineAndIndent(false);\n/**\nCreate a blank, indented line below the current line.\n*/\nconst insertBlankLine = /*@__PURE__*/newlineAndIndent(true);\nfunction newlineAndIndent(atEof) {\n return ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let changes = state.changeByRange(range => {\n let { from, to } = range, line = state.doc.lineAt(from);\n let explode = !atEof && from == to && isBetweenBrackets(state, from);\n if (atEof)\n from = to = (to <= line.to ? line : state.doc.lineAt(to)).to;\n let cx = new IndentContext(state, { simulateBreak: from, simulateDoubleBreak: !!explode });\n let indent = getIndentation(cx, from);\n if (indent == null)\n indent = countColumn(/^\\s*/.exec(state.doc.lineAt(from).text)[0], state.tabSize);\n while (to < line.to && /\\s/.test(line.text[to - line.from]))\n to++;\n if (explode)\n ({ from, to } = explode);\n else if (from > line.from && from < line.from + 100 && !/\\S/.test(line.text.slice(0, from)))\n from = line.from;\n let insert = [\"\", indentString(state, indent)];\n if (explode)\n insert.push(indentString(state, cx.lineIndent(line.from, -1)));\n return { changes: { from, to, insert: Text.of(insert) },\n range: EditorSelection.cursor(from + 1 + insert[1].length) };\n });\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n };\n}\nfunction changeBySelectedLine(state, f) {\n let atLine = -1;\n return state.changeByRange(range => {\n let changes = [];\n for (let pos = range.from; pos <= range.to;) {\n let line = state.doc.lineAt(pos);\n if (line.number > atLine && (range.empty || range.to > line.from)) {\n f(line, changes, range);\n atLine = line.number;\n }\n pos = line.to + 1;\n }\n let changeSet = state.changes(changes);\n return { changes,\n range: EditorSelection.range(changeSet.mapPos(range.anchor, 1), changeSet.mapPos(range.head, 1)) };\n });\n}\n/**\nAuto-indent the selected lines. This uses the [indentation service\nfacet](https://codemirror.net/6/docs/ref/#language.indentService) as source for auto-indent\ninformation.\n*/\nconst indentSelection = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let updated = Object.create(null);\n let context = new IndentContext(state, { overrideIndentation: start => {\n let found = updated[start];\n return found == null ? -1 : found;\n } });\n let changes = changeBySelectedLine(state, (line, changes, range) => {\n let indent = getIndentation(context, line.from);\n if (indent == null)\n return;\n if (!/\\S/.test(line.text))\n indent = 0;\n let cur = /^\\s*/.exec(line.text)[0];\n let norm = indentString(state, indent);\n if (cur != norm || range.from < line.from + cur.length) {\n updated[line.from] = indent;\n changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n }\n });\n if (!changes.changes.empty)\n dispatch(state.update(changes, { userEvent: \"indent\" }));\n return true;\n};\n/**\nAdd a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation to all selected\nlines.\n*/\nconst indentMore = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n dispatch(state.update(changeBySelectedLine(state, (line, changes) => {\n changes.push({ from: line.from, insert: state.facet(indentUnit) });\n }), { userEvent: \"input.indent\" }));\n return true;\n};\n/**\nRemove a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation from all\nselected lines.\n*/\nconst indentLess = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n dispatch(state.update(changeBySelectedLine(state, (line, changes) => {\n let space = /^\\s*/.exec(line.text)[0];\n if (!space)\n return;\n let col = countColumn(space, state.tabSize), keep = 0;\n let insert = indentString(state, Math.max(0, col - getIndentUnit(state)));\n while (keep < space.length && keep < insert.length && space.charCodeAt(keep) == insert.charCodeAt(keep))\n keep++;\n changes.push({ from: line.from + keep, to: line.from + space.length, insert: insert.slice(keep) });\n }), { userEvent: \"delete.dedent\" }));\n return true;\n};\n/**\nEnables or disables\n[tab-focus mode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode). While on, this\nprevents the editor's key bindings from capturing Tab or\nShift-Tab, making it possible for the user to move focus out of\nthe editor with the keyboard.\n*/\nconst toggleTabFocusMode = view => {\n view.setTabFocusMode();\n return true;\n};\n/**\nTemporarily enables [tab-focus\nmode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode) for two seconds or until\nanother key is pressed.\n*/\nconst temporarilySetTabFocusMode = view => {\n view.setTabFocusMode(2000);\n return true;\n};\n/**\nInsert a tab character at the cursor or, if something is selected,\nuse [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) to indent the entire\nselection.\n*/\nconst insertTab = ({ state, dispatch }) => {\n if (state.selection.ranges.some(r => !r.empty))\n return indentMore({ state, dispatch });\n dispatch(state.update(state.replaceSelection(\"\\t\"), { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nArray of key bindings containing the Emacs-style bindings that are\navailable on macOS by default.\n\n - Ctrl-b: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)\n - Ctrl-f: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)\n - Ctrl-p: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)\n - Ctrl-n: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)\n - Ctrl-a: [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)\n - Ctrl-e: [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)\n - Ctrl-d: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)\n - Ctrl-h: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)\n - Ctrl-k: [`deleteToLineEnd`](https://codemirror.net/6/docs/ref/#commands.deleteToLineEnd)\n - Ctrl-Alt-h: [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)\n - Ctrl-o: [`splitLine`](https://codemirror.net/6/docs/ref/#commands.splitLine)\n - Ctrl-t: [`transposeChars`](https://codemirror.net/6/docs/ref/#commands.transposeChars)\n - Ctrl-v: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown)\n - Alt-v: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp)\n*/\nconst emacsStyleKeymap = [\n { key: \"Ctrl-b\", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },\n { key: \"Ctrl-f\", run: cursorCharRight, shift: selectCharRight },\n { key: \"Ctrl-p\", run: cursorLineUp, shift: selectLineUp },\n { key: \"Ctrl-n\", run: cursorLineDown, shift: selectLineDown },\n { key: \"Ctrl-a\", run: cursorLineStart, shift: selectLineStart },\n { key: \"Ctrl-e\", run: cursorLineEnd, shift: selectLineEnd },\n { key: \"Ctrl-d\", run: deleteCharForward },\n { key: \"Ctrl-h\", run: deleteCharBackward },\n { key: \"Ctrl-k\", run: deleteToLineEnd },\n { key: \"Ctrl-Alt-h\", run: deleteGroupBackward },\n { key: \"Ctrl-o\", run: splitLine },\n { key: \"Ctrl-t\", run: transposeChars },\n { key: \"Ctrl-v\", run: cursorPageDown },\n];\n/**\nAn array of key bindings closely sticking to platform-standard or\nwidely used bindings. (This includes the bindings from\n[`emacsStyleKeymap`](https://codemirror.net/6/docs/ref/#commands.emacsStyleKeymap), with their `key`\nproperty changed to `mac`.)\n\n - ArrowLeft: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)\n - ArrowRight: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)\n - Ctrl-ArrowLeft (Alt-ArrowLeft on macOS): [`cursorGroupLeft`](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) ([`selectGroupLeft`](https://codemirror.net/6/docs/ref/#commands.selectGroupLeft) with Shift)\n - Ctrl-ArrowRight (Alt-ArrowRight on macOS): [`cursorGroupRight`](https://codemirror.net/6/docs/ref/#commands.cursorGroupRight) ([`selectGroupRight`](https://codemirror.net/6/docs/ref/#commands.selectGroupRight) with Shift)\n - Cmd-ArrowLeft (on macOS): [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)\n - Cmd-ArrowRight (on macOS): [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)\n - ArrowUp: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)\n - ArrowDown: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)\n - Cmd-ArrowUp (on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)\n - Cmd-ArrowDown (on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)\n - Ctrl-ArrowUp (on macOS): [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)\n - Ctrl-ArrowDown (on macOS): [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)\n - PageUp: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)\n - PageDown: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)\n - Home: [`cursorLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryBackward) ([`selectLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryBackward) with Shift)\n - End: [`cursorLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryForward) ([`selectLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryForward) with Shift)\n - Ctrl-Home (Cmd-Home on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)\n - Ctrl-End (Cmd-Home on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)\n - Enter: [`insertNewlineAndIndent`](https://codemirror.net/6/docs/ref/#commands.insertNewlineAndIndent)\n - Ctrl-a (Cmd-a on macOS): [`selectAll`](https://codemirror.net/6/docs/ref/#commands.selectAll)\n - Backspace: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)\n - Delete: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)\n - Ctrl-Backspace (Alt-Backspace on macOS): [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)\n - Ctrl-Delete (Alt-Delete on macOS): [`deleteGroupForward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupForward)\n - Cmd-Backspace (macOS): [`deleteLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryBackward).\n - Cmd-Delete (macOS): [`deleteLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryForward).\n*/\nconst standardKeymap = /*@__PURE__*/[\n { key: \"ArrowLeft\", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },\n { key: \"Mod-ArrowLeft\", mac: \"Alt-ArrowLeft\", run: cursorGroupLeft, shift: selectGroupLeft, preventDefault: true },\n { mac: \"Cmd-ArrowLeft\", run: cursorLineBoundaryLeft, shift: selectLineBoundaryLeft, preventDefault: true },\n { key: \"ArrowRight\", run: cursorCharRight, shift: selectCharRight, preventDefault: true },\n { key: \"Mod-ArrowRight\", mac: \"Alt-ArrowRight\", run: cursorGroupRight, shift: selectGroupRight, preventDefault: true },\n { mac: \"Cmd-ArrowRight\", run: cursorLineBoundaryRight, shift: selectLineBoundaryRight, preventDefault: true },\n { key: \"ArrowUp\", run: cursorLineUp, shift: selectLineUp, preventDefault: true },\n { mac: \"Cmd-ArrowUp\", run: cursorDocStart, shift: selectDocStart },\n { mac: \"Ctrl-ArrowUp\", run: cursorPageUp, shift: selectPageUp },\n { key: \"ArrowDown\", run: cursorLineDown, shift: selectLineDown, preventDefault: true },\n { mac: \"Cmd-ArrowDown\", run: cursorDocEnd, shift: selectDocEnd },\n { mac: \"Ctrl-ArrowDown\", run: cursorPageDown, shift: selectPageDown },\n { key: \"PageUp\", run: cursorPageUp, shift: selectPageUp },\n { key: \"PageDown\", run: cursorPageDown, shift: selectPageDown },\n { key: \"Home\", run: cursorLineBoundaryBackward, shift: selectLineBoundaryBackward, preventDefault: true },\n { key: \"Mod-Home\", run: cursorDocStart, shift: selectDocStart },\n { key: \"End\", run: cursorLineBoundaryForward, shift: selectLineBoundaryForward, preventDefault: true },\n { key: \"Mod-End\", run: cursorDocEnd, shift: selectDocEnd },\n { key: \"Enter\", run: insertNewlineAndIndent },\n { key: \"Mod-a\", run: selectAll },\n { key: \"Backspace\", run: deleteCharBackward, shift: deleteCharBackward },\n { key: \"Delete\", run: deleteCharForward },\n { key: \"Mod-Backspace\", mac: \"Alt-Backspace\", run: deleteGroupBackward },\n { key: \"Mod-Delete\", mac: \"Alt-Delete\", run: deleteGroupForward },\n { mac: \"Mod-Backspace\", run: deleteLineBoundaryBackward },\n { mac: \"Mod-Delete\", run: deleteLineBoundaryForward }\n].concat(/*@__PURE__*/emacsStyleKeymap.map(b => ({ mac: b.key, run: b.run, shift: b.shift })));\n/**\nThe default keymap. Includes all bindings from\n[`standardKeymap`](https://codemirror.net/6/docs/ref/#commands.standardKeymap) plus the following:\n\n- Alt-ArrowLeft (Ctrl-ArrowLeft on macOS): [`cursorSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxLeft) ([`selectSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxLeft) with Shift)\n- Alt-ArrowRight (Ctrl-ArrowRight on macOS): [`cursorSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxRight) ([`selectSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxRight) with Shift)\n- Alt-ArrowUp: [`moveLineUp`](https://codemirror.net/6/docs/ref/#commands.moveLineUp)\n- Alt-ArrowDown: [`moveLineDown`](https://codemirror.net/6/docs/ref/#commands.moveLineDown)\n- Shift-Alt-ArrowUp: [`copyLineUp`](https://codemirror.net/6/docs/ref/#commands.copyLineUp)\n- Shift-Alt-ArrowDown: [`copyLineDown`](https://codemirror.net/6/docs/ref/#commands.copyLineDown)\n- Escape: [`simplifySelection`](https://codemirror.net/6/docs/ref/#commands.simplifySelection)\n- Ctrl-Enter (Cmd-Enter on macOS): [`insertBlankLine`](https://codemirror.net/6/docs/ref/#commands.insertBlankLine)\n- Alt-l (Ctrl-l on macOS): [`selectLine`](https://codemirror.net/6/docs/ref/#commands.selectLine)\n- Ctrl-i (Cmd-i on macOS): [`selectParentSyntax`](https://codemirror.net/6/docs/ref/#commands.selectParentSyntax)\n- Ctrl-[ (Cmd-[ on macOS): [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess)\n- Ctrl-] (Cmd-] on macOS): [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore)\n- Ctrl-Alt-\\\\ (Cmd-Alt-\\\\ on macOS): [`indentSelection`](https://codemirror.net/6/docs/ref/#commands.indentSelection)\n- Shift-Ctrl-k (Shift-Cmd-k on macOS): [`deleteLine`](https://codemirror.net/6/docs/ref/#commands.deleteLine)\n- Shift-Ctrl-\\\\ (Shift-Cmd-\\\\ on macOS): [`cursorMatchingBracket`](https://codemirror.net/6/docs/ref/#commands.cursorMatchingBracket)\n- Ctrl-/ (Cmd-/ on macOS): [`toggleComment`](https://codemirror.net/6/docs/ref/#commands.toggleComment).\n- Shift-Alt-a: [`toggleBlockComment`](https://codemirror.net/6/docs/ref/#commands.toggleBlockComment).\n- Ctrl-m (Alt-Shift-m on macOS): [`toggleTabFocusMode`](https://codemirror.net/6/docs/ref/#commands.toggleTabFocusMode).\n*/\nconst defaultKeymap = /*@__PURE__*/[\n { key: \"Alt-ArrowLeft\", mac: \"Ctrl-ArrowLeft\", run: cursorSyntaxLeft, shift: selectSyntaxLeft },\n { key: \"Alt-ArrowRight\", mac: \"Ctrl-ArrowRight\", run: cursorSyntaxRight, shift: selectSyntaxRight },\n { key: \"Alt-ArrowUp\", run: moveLineUp },\n { key: \"Shift-Alt-ArrowUp\", run: copyLineUp },\n { key: \"Alt-ArrowDown\", run: moveLineDown },\n { key: \"Shift-Alt-ArrowDown\", run: copyLineDown },\n { key: \"Escape\", run: simplifySelection },\n { key: \"Mod-Enter\", run: insertBlankLine },\n { key: \"Alt-l\", mac: \"Ctrl-l\", run: selectLine },\n { key: \"Mod-i\", run: selectParentSyntax, preventDefault: true },\n { key: \"Mod-[\", run: indentLess },\n { key: \"Mod-]\", run: indentMore },\n { key: \"Mod-Alt-\\\\\", run: indentSelection },\n { key: \"Shift-Mod-k\", run: deleteLine },\n { key: \"Shift-Mod-\\\\\", run: cursorMatchingBracket },\n { key: \"Mod-/\", run: toggleComment },\n { key: \"Alt-A\", run: toggleBlockComment },\n { key: \"Ctrl-m\", mac: \"Shift-Alt-m\", run: toggleTabFocusMode },\n].concat(standardKeymap);\n/**\nA binding that binds Tab to [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) and\nShift-Tab to [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess).\nPlease see the [Tab example](../../examples/tab/) before using\nthis.\n*/\nconst indentWithTab = { key: \"Tab\", run: indentMore, shift: indentLess };\n\nexport { blockComment, blockUncomment, copyLineDown, copyLineUp, cursorCharBackward, cursorCharForward, cursorCharLeft, cursorCharRight, cursorDocEnd, cursorDocStart, cursorGroupBackward, cursorGroupForward, cursorGroupLeft, cursorGroupRight, cursorLineBoundaryBackward, cursorLineBoundaryForward, cursorLineBoundaryLeft, cursorLineBoundaryRight, cursorLineDown, cursorLineEnd, cursorLineStart, cursorLineUp, cursorMatchingBracket, cursorPageDown, cursorPageUp, cursorSubwordBackward, cursorSubwordForward, cursorSyntaxLeft, cursorSyntaxRight, defaultKeymap, deleteCharBackward, deleteCharBackwardStrict, deleteCharForward, deleteGroupBackward, deleteGroupForward, deleteLine, deleteLineBoundaryBackward, deleteLineBoundaryForward, deleteToLineEnd, deleteToLineStart, deleteTrailingWhitespace, emacsStyleKeymap, history, historyField, historyKeymap, indentLess, indentMore, indentSelection, indentWithTab, insertBlankLine, insertNewline, insertNewlineAndIndent, insertNewlineKeepIndent, insertTab, invertedEffects, isolateHistory, lineComment, lineUncomment, moveLineDown, moveLineUp, redo, redoDepth, redoSelection, selectAll, selectCharBackward, selectCharForward, selectCharLeft, selectCharRight, selectDocEnd, selectDocStart, selectGroupBackward, selectGroupForward, selectGroupLeft, selectGroupRight, selectLine, selectLineBoundaryBackward, selectLineBoundaryForward, selectLineBoundaryLeft, selectLineBoundaryRight, selectLineDown, selectLineEnd, selectLineStart, selectLineUp, selectMatchingBracket, selectPageDown, selectPageUp, selectParentSyntax, selectSubwordBackward, selectSubwordForward, selectSyntaxLeft, selectSyntaxRight, simplifySelection, splitLine, standardKeymap, temporarilySetTabFocusMode, toggleBlockComment, toggleBlockCommentByLine, toggleComment, toggleLineComment, toggleTabFocusMode, transposeChars, undo, undoDepth, undoSelection };\n","export default function crelt() {\n var elt = arguments[0]\n if (typeof elt == \"string\") elt = document.createElement(elt)\n var i = 1, next = arguments[1]\n if (next && typeof next == \"object\" && next.nodeType == null && !Array.isArray(next)) {\n for (var name in next) if (Object.prototype.hasOwnProperty.call(next, name)) {\n var value = next[name]\n if (typeof value == \"string\") elt.setAttribute(name, value)\n else if (value != null) elt[name] = value\n }\n i++\n }\n for (; i < arguments.length; i++) add(elt, arguments[i])\n return elt\n}\n\nfunction add(elt, child) {\n if (typeof child == \"string\") {\n elt.appendChild(document.createTextNode(child))\n } else if (child == null) {\n } else if (child.nodeType != null) {\n elt.appendChild(child)\n } else if (Array.isArray(child)) {\n for (var i = 0; i < child.length; i++) add(elt, child[i])\n } else {\n throw new RangeError(\"Unsupported child node: \" + child)\n }\n}\n","import { showPanel, EditorView, getPanel, Decoration, ViewPlugin, runScopeHandlers } from '@codemirror/view';\nimport { codePointAt, fromCodePoint, codePointSize, StateEffect, StateField, EditorSelection, Facet, combineConfig, CharCategory, RangeSetBuilder, Prec, EditorState, findClusterBreak } from '@codemirror/state';\nimport elt from 'crelt';\n\nconst basicNormalize = typeof String.prototype.normalize == \"function\"\n ? x => x.normalize(\"NFKD\") : x => x;\n/**\nA search cursor provides an iterator over text matches in a\ndocument.\n*/\nclass SearchCursor {\n /**\n Create a text cursor. The query is the search string, `from` to\n `to` provides the region to search.\n \n When `normalize` is given, it will be called, on both the query\n string and the content it is matched against, before comparing.\n You can, for example, create a case-insensitive search by\n passing `s => s.toLowerCase()`.\n \n Text is always normalized with\n [`.normalize(\"NFKD\")`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)\n (when supported).\n */\n constructor(text, query, from = 0, to = text.length, normalize, test) {\n this.test = test;\n /**\n The current match (only holds a meaningful value after\n [`next`](https://codemirror.net/6/docs/ref/#search.SearchCursor.next) has been called and when\n `done` is false).\n */\n this.value = { from: 0, to: 0 };\n /**\n Whether the end of the iterated region has been reached.\n */\n this.done = false;\n this.matches = [];\n this.buffer = \"\";\n this.bufferPos = 0;\n this.iter = text.iterRange(from, to);\n this.bufferStart = from;\n this.normalize = normalize ? x => normalize(basicNormalize(x)) : basicNormalize;\n this.query = this.normalize(query);\n }\n peek() {\n if (this.bufferPos == this.buffer.length) {\n this.bufferStart += this.buffer.length;\n this.iter.next();\n if (this.iter.done)\n return -1;\n this.bufferPos = 0;\n this.buffer = this.iter.value;\n }\n return codePointAt(this.buffer, this.bufferPos);\n }\n /**\n Look for the next match. Updates the iterator's\n [`value`](https://codemirror.net/6/docs/ref/#search.SearchCursor.value) and\n [`done`](https://codemirror.net/6/docs/ref/#search.SearchCursor.done) properties. Should be called\n at least once before using the cursor.\n */\n next() {\n while (this.matches.length)\n this.matches.pop();\n return this.nextOverlapping();\n }\n /**\n The `next` method will ignore matches that partially overlap a\n previous match. This method behaves like `next`, but includes\n such matches.\n */\n nextOverlapping() {\n for (;;) {\n let next = this.peek();\n if (next < 0) {\n this.done = true;\n return this;\n }\n let str = fromCodePoint(next), start = this.bufferStart + this.bufferPos;\n this.bufferPos += codePointSize(next);\n let norm = this.normalize(str);\n for (let i = 0, pos = start;; i++) {\n let code = norm.charCodeAt(i);\n let match = this.match(code, pos, this.bufferPos + this.bufferStart);\n if (i == norm.length - 1) {\n if (match) {\n this.value = match;\n return this;\n }\n break;\n }\n if (pos == start && i < str.length && str.charCodeAt(i) == code)\n pos++;\n }\n }\n }\n match(code, pos, end) {\n let match = null;\n for (let i = 0; i < this.matches.length; i += 2) {\n let index = this.matches[i], keep = false;\n if (this.query.charCodeAt(index) == code) {\n if (index == this.query.length - 1) {\n match = { from: this.matches[i + 1], to: end };\n }\n else {\n this.matches[i]++;\n keep = true;\n }\n }\n if (!keep) {\n this.matches.splice(i, 2);\n i -= 2;\n }\n }\n if (this.query.charCodeAt(0) == code) {\n if (this.query.length == 1)\n match = { from: pos, to: end };\n else\n this.matches.push(1, pos);\n }\n if (match && this.test && !this.test(match.from, match.to, this.buffer, this.bufferStart))\n match = null;\n return match;\n }\n}\nif (typeof Symbol != \"undefined\")\n SearchCursor.prototype[Symbol.iterator] = function () { return this; };\n\nconst empty = { from: -1, to: -1, match: /*@__PURE__*//.*/.exec(\"\") };\nconst baseFlags = \"gm\" + (/x/.unicode == null ? \"\" : \"u\");\n/**\nThis class is similar to [`SearchCursor`](https://codemirror.net/6/docs/ref/#search.SearchCursor)\nbut searches for a regular expression pattern instead of a plain\nstring.\n*/\nclass RegExpCursor {\n /**\n Create a cursor that will search the given range in the given\n document. `query` should be the raw pattern (as you'd pass it to\n `new RegExp`).\n */\n constructor(text, query, options, from = 0, to = text.length) {\n this.text = text;\n this.to = to;\n this.curLine = \"\";\n /**\n Set to `true` when the cursor has reached the end of the search\n range.\n */\n this.done = false;\n /**\n Will contain an object with the extent of the match and the\n match object when [`next`](https://codemirror.net/6/docs/ref/#search.RegExpCursor.next)\n sucessfully finds a match.\n */\n this.value = empty;\n if (/\\\\[sWDnr]|\\n|\\r|\\[\\^/.test(query))\n return new MultilineRegExpCursor(text, query, options, from, to);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.iter = text.iter();\n let startLine = text.lineAt(from);\n this.curLineStart = startLine.from;\n this.matchPos = toCharEnd(text, from);\n this.getLine(this.curLineStart);\n }\n getLine(skip) {\n this.iter.next(skip);\n if (this.iter.lineBreak) {\n this.curLine = \"\";\n }\n else {\n this.curLine = this.iter.value;\n if (this.curLineStart + this.curLine.length > this.to)\n this.curLine = this.curLine.slice(0, this.to - this.curLineStart);\n this.iter.next();\n }\n }\n nextLine() {\n this.curLineStart = this.curLineStart + this.curLine.length + 1;\n if (this.curLineStart > this.to)\n this.curLine = \"\";\n else\n this.getLine(0);\n }\n /**\n Move to the next match, if there is one.\n */\n next() {\n for (let off = this.matchPos - this.curLineStart;;) {\n this.re.lastIndex = off;\n let match = this.matchPos <= this.to && this.re.exec(this.curLine);\n if (match) {\n let from = this.curLineStart + match.index, to = from + match[0].length;\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n if (from == this.curLineStart + this.curLine.length)\n this.nextLine();\n if ((from < to || from > this.value.to) && (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n return this;\n }\n off = this.matchPos - this.curLineStart;\n }\n else if (this.curLineStart + this.curLine.length < this.to) {\n this.nextLine();\n off = 0;\n }\n else {\n this.done = true;\n return this;\n }\n }\n }\n}\nconst flattened = /*@__PURE__*/new WeakMap();\n// Reusable (partially) flattened document strings\nclass FlattenedDoc {\n constructor(from, text) {\n this.from = from;\n this.text = text;\n }\n get to() { return this.from + this.text.length; }\n static get(doc, from, to) {\n let cached = flattened.get(doc);\n if (!cached || cached.from >= to || cached.to <= from) {\n let flat = new FlattenedDoc(from, doc.sliceString(from, to));\n flattened.set(doc, flat);\n return flat;\n }\n if (cached.from == from && cached.to == to)\n return cached;\n let { text, from: cachedFrom } = cached;\n if (cachedFrom > from) {\n text = doc.sliceString(from, cachedFrom) + text;\n cachedFrom = from;\n }\n if (cached.to < to)\n text += doc.sliceString(cached.to, to);\n flattened.set(doc, new FlattenedDoc(cachedFrom, text));\n return new FlattenedDoc(from, text.slice(from - cachedFrom, to - cachedFrom));\n }\n}\nclass MultilineRegExpCursor {\n constructor(text, query, options, from, to) {\n this.text = text;\n this.to = to;\n this.done = false;\n this.value = empty;\n this.matchPos = toCharEnd(text, from);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.flat = FlattenedDoc.get(text, from, this.chunkEnd(from + 5000 /* Chunk.Base */));\n }\n chunkEnd(pos) {\n return pos >= this.to ? this.to : this.text.lineAt(pos).to;\n }\n next() {\n for (;;) {\n let off = this.re.lastIndex = this.matchPos - this.flat.from;\n let match = this.re.exec(this.flat.text);\n // Skip empty matches directly after the last match\n if (match && !match[0] && match.index == off) {\n this.re.lastIndex = off + 1;\n match = this.re.exec(this.flat.text);\n }\n if (match) {\n let from = this.flat.from + match.index, to = from + match[0].length;\n // If a match goes almost to the end of a noncomplete chunk, try\n // again, since it'll likely be able to match more\n if ((this.flat.to >= this.to || match.index + match[0].length <= this.flat.text.length - 10) &&\n (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n return this;\n }\n }\n if (this.flat.to == this.to) {\n this.done = true;\n return this;\n }\n // Grow the flattened doc\n this.flat = FlattenedDoc.get(this.text, this.flat.from, this.chunkEnd(this.flat.from + this.flat.text.length * 2));\n }\n }\n}\nif (typeof Symbol != \"undefined\") {\n RegExpCursor.prototype[Symbol.iterator] = MultilineRegExpCursor.prototype[Symbol.iterator] =\n function () { return this; };\n}\nfunction validRegExp(source) {\n try {\n new RegExp(source, baseFlags);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction toCharEnd(text, pos) {\n if (pos >= text.length)\n return pos;\n let line = text.lineAt(pos), next;\n while (pos < line.to && (next = line.text.charCodeAt(pos - line.from)) >= 0xDC00 && next < 0xE000)\n pos++;\n return pos;\n}\n\nfunction createLineDialog(view) {\n let line = String(view.state.doc.lineAt(view.state.selection.main.head).number);\n let input = elt(\"input\", { class: \"cm-textfield\", name: \"line\", value: line });\n let dom = elt(\"form\", {\n class: \"cm-gotoLine\",\n onkeydown: (event) => {\n if (event.keyCode == 27) { // Escape\n event.preventDefault();\n view.dispatch({ effects: dialogEffect.of(false) });\n view.focus();\n }\n else if (event.keyCode == 13) { // Enter\n event.preventDefault();\n go();\n }\n },\n onsubmit: (event) => {\n event.preventDefault();\n go();\n }\n }, elt(\"label\", view.state.phrase(\"Go to line\"), \": \", input), \" \", elt(\"button\", { class: \"cm-button\", type: \"submit\" }, view.state.phrase(\"go\")));\n function go() {\n let match = /^([+-])?(\\d+)?(:\\d+)?(%)?$/.exec(input.value);\n if (!match)\n return;\n let { state } = view, startLine = state.doc.lineAt(state.selection.main.head);\n let [, sign, ln, cl, percent] = match;\n let col = cl ? +cl.slice(1) : 0;\n let line = ln ? +ln : startLine.number;\n if (ln && percent) {\n let pc = line / 100;\n if (sign)\n pc = pc * (sign == \"-\" ? -1 : 1) + (startLine.number / state.doc.lines);\n line = Math.round(state.doc.lines * pc);\n }\n else if (ln && sign) {\n line = line * (sign == \"-\" ? -1 : 1) + startLine.number;\n }\n let docLine = state.doc.line(Math.max(1, Math.min(state.doc.lines, line)));\n let selection = EditorSelection.cursor(docLine.from + Math.max(0, Math.min(col, docLine.length)));\n view.dispatch({\n effects: [dialogEffect.of(false), EditorView.scrollIntoView(selection.from, { y: 'center' })],\n selection,\n });\n view.focus();\n }\n return { dom };\n}\nconst dialogEffect = /*@__PURE__*/StateEffect.define();\nconst dialogField = /*@__PURE__*/StateField.define({\n create() { return true; },\n update(value, tr) {\n for (let e of tr.effects)\n if (e.is(dialogEffect))\n value = e.value;\n return value;\n },\n provide: f => showPanel.from(f, val => val ? createLineDialog : null)\n});\n/**\nCommand that shows a dialog asking the user for a line number, and\nwhen a valid position is provided, moves the cursor to that line.\n\nSupports line numbers, relative line offsets prefixed with `+` or\n`-`, document percentages suffixed with `%`, and an optional\ncolumn position by adding `:` and a second number after the line\nnumber.\n*/\nconst gotoLine = view => {\n let panel = getPanel(view, createLineDialog);\n if (!panel) {\n let effects = [dialogEffect.of(true)];\n if (view.state.field(dialogField, false) == null)\n effects.push(StateEffect.appendConfig.of([dialogField, baseTheme$1]));\n view.dispatch({ effects });\n panel = getPanel(view, createLineDialog);\n }\n if (panel)\n panel.dom.querySelector(\"input\").select();\n return true;\n};\nconst baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({\n \".cm-panel.cm-gotoLine\": {\n padding: \"2px 6px 4px\",\n \"& label\": { fontSize: \"80%\" }\n }\n});\n\nconst defaultHighlightOptions = {\n highlightWordAroundCursor: false,\n minSelectionLength: 1,\n maxMatches: 100,\n wholeWords: false\n};\nconst highlightConfig = /*@__PURE__*/Facet.define({\n combine(options) {\n return combineConfig(options, defaultHighlightOptions, {\n highlightWordAroundCursor: (a, b) => a || b,\n minSelectionLength: Math.min,\n maxMatches: Math.min\n });\n }\n});\n/**\nThis extension highlights text that matches the selection. It uses\nthe `\"cm-selectionMatch\"` class for the highlighting. When\n`highlightWordAroundCursor` is enabled, the word at the cursor\nitself will be highlighted with `\"cm-selectionMatch-main\"`.\n*/\nfunction highlightSelectionMatches(options) {\n let ext = [defaultTheme, matchHighlighter];\n if (options)\n ext.push(highlightConfig.of(options));\n return ext;\n}\nconst matchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch\" });\nconst mainMatchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch cm-selectionMatch-main\" });\n// Whether the characters directly outside the given positions are non-word characters\nfunction insideWordBoundaries(check, state, from, to) {\n return (from == 0 || check(state.sliceDoc(from - 1, from)) != CharCategory.Word) &&\n (to == state.doc.length || check(state.sliceDoc(to, to + 1)) != CharCategory.Word);\n}\n// Whether the characters directly at the given positions are word characters\nfunction insideWord(check, state, from, to) {\n return check(state.sliceDoc(from, from + 1)) == CharCategory.Word\n && check(state.sliceDoc(to - 1, to)) == CharCategory.Word;\n}\nconst matchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.decorations = this.getDeco(view);\n }\n update(update) {\n if (update.selectionSet || update.docChanged || update.viewportChanged)\n this.decorations = this.getDeco(update.view);\n }\n getDeco(view) {\n let conf = view.state.facet(highlightConfig);\n let { state } = view, sel = state.selection;\n if (sel.ranges.length > 1)\n return Decoration.none;\n let range = sel.main, query, check = null;\n if (range.empty) {\n if (!conf.highlightWordAroundCursor)\n return Decoration.none;\n let word = state.wordAt(range.head);\n if (!word)\n return Decoration.none;\n check = state.charCategorizer(range.head);\n query = state.sliceDoc(word.from, word.to);\n }\n else {\n let len = range.to - range.from;\n if (len < conf.minSelectionLength || len > 200)\n return Decoration.none;\n if (conf.wholeWords) {\n query = state.sliceDoc(range.from, range.to); // TODO: allow and include leading/trailing space?\n check = state.charCategorizer(range.head);\n if (!(insideWordBoundaries(check, state, range.from, range.to) &&\n insideWord(check, state, range.from, range.to)))\n return Decoration.none;\n }\n else {\n query = state.sliceDoc(range.from, range.to);\n if (!query)\n return Decoration.none;\n }\n }\n let deco = [];\n for (let part of view.visibleRanges) {\n let cursor = new SearchCursor(state.doc, query, part.from, part.to);\n while (!cursor.next().done) {\n let { from, to } = cursor.value;\n if (!check || insideWordBoundaries(check, state, from, to)) {\n if (range.empty && from <= range.from && to >= range.to)\n deco.push(mainMatchDeco.range(from, to));\n else if (from >= range.to || to <= range.from)\n deco.push(matchDeco.range(from, to));\n if (deco.length > conf.maxMatches)\n return Decoration.none;\n }\n }\n }\n return Decoration.set(deco);\n }\n}, {\n decorations: v => v.decorations\n});\nconst defaultTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-selectionMatch\": { backgroundColor: \"#99ff7780\" },\n \".cm-searchMatch .cm-selectionMatch\": { backgroundColor: \"transparent\" }\n});\n// Select the words around the cursors.\nconst selectWord = ({ state, dispatch }) => {\n let { selection } = state;\n let newSel = EditorSelection.create(selection.ranges.map(range => state.wordAt(range.head) || EditorSelection.cursor(range.head)), selection.mainIndex);\n if (newSel.eq(selection))\n return false;\n dispatch(state.update({ selection: newSel }));\n return true;\n};\n// Find next occurrence of query relative to last cursor. Wrap around\n// the document if there are no more matches.\nfunction findNextOccurrence(state, query) {\n let { main, ranges } = state.selection;\n let word = state.wordAt(main.head), fullWord = word && word.from == main.from && word.to == main.to;\n for (let cycled = false, cursor = new SearchCursor(state.doc, query, ranges[ranges.length - 1].to);;) {\n cursor.next();\n if (cursor.done) {\n if (cycled)\n return null;\n cursor = new SearchCursor(state.doc, query, 0, Math.max(0, ranges[ranges.length - 1].from - 1));\n cycled = true;\n }\n else {\n if (cycled && ranges.some(r => r.from == cursor.value.from))\n continue;\n if (fullWord) {\n let word = state.wordAt(cursor.value.from);\n if (!word || word.from != cursor.value.from || word.to != cursor.value.to)\n continue;\n }\n return cursor.value;\n }\n }\n}\n/**\nSelect next occurrence of the current selection. Expand selection\nto the surrounding word when the selection is empty.\n*/\nconst selectNextOccurrence = ({ state, dispatch }) => {\n let { ranges } = state.selection;\n if (ranges.some(sel => sel.from === sel.to))\n return selectWord({ state, dispatch });\n let searchedText = state.sliceDoc(ranges[0].from, ranges[0].to);\n if (state.selection.ranges.some(r => state.sliceDoc(r.from, r.to) != searchedText))\n return false;\n let range = findNextOccurrence(state, searchedText);\n if (!range)\n return false;\n dispatch(state.update({\n selection: state.selection.addRange(EditorSelection.range(range.from, range.to), false),\n effects: EditorView.scrollIntoView(range.to)\n }));\n return true;\n};\n\nconst searchConfigFacet = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n top: false,\n caseSensitive: false,\n literal: false,\n regexp: false,\n wholeWord: false,\n createPanel: view => new SearchPanel(view),\n scrollToMatch: range => EditorView.scrollIntoView(range)\n });\n }\n});\n/**\nAdd search state to the editor configuration, and optionally\nconfigure the search extension.\n([`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) will automatically\nenable this if it isn't already on).\n*/\nfunction search(config) {\n return config ? [searchConfigFacet.of(config), searchExtensions] : searchExtensions;\n}\n/**\nA search query. Part of the editor's search state.\n*/\nclass SearchQuery {\n /**\n Create a query object.\n */\n constructor(config) {\n this.search = config.search;\n this.caseSensitive = !!config.caseSensitive;\n this.literal = !!config.literal;\n this.regexp = !!config.regexp;\n this.replace = config.replace || \"\";\n this.valid = !!this.search && (!this.regexp || validRegExp(this.search));\n this.unquoted = this.unquote(this.search);\n this.wholeWord = !!config.wholeWord;\n }\n /**\n @internal\n */\n unquote(text) {\n return this.literal ? text :\n text.replace(/\\\\([nrt\\\\])/g, (_, ch) => ch == \"n\" ? \"\\n\" : ch == \"r\" ? \"\\r\" : ch == \"t\" ? \"\\t\" : \"\\\\\");\n }\n /**\n Compare this query to another query.\n */\n eq(other) {\n return this.search == other.search && this.replace == other.replace &&\n this.caseSensitive == other.caseSensitive && this.regexp == other.regexp &&\n this.wholeWord == other.wholeWord;\n }\n /**\n @internal\n */\n create() {\n return this.regexp ? new RegExpQuery(this) : new StringQuery(this);\n }\n /**\n Get a search cursor for this query, searching through the given\n range in the given state.\n */\n getCursor(state, from = 0, to) {\n let st = state.doc ? state : EditorState.create({ doc: state });\n if (to == null)\n to = st.doc.length;\n return this.regexp ? regexpCursor(this, st, from, to) : stringCursor(this, st, from, to);\n }\n}\nclass QueryType {\n constructor(spec) {\n this.spec = spec;\n }\n}\nfunction stringCursor(spec, state, from, to) {\n return new SearchCursor(state.doc, spec.unquoted, from, to, spec.caseSensitive ? undefined : x => x.toLowerCase(), spec.wholeWord ? stringWordTest(state.doc, state.charCategorizer(state.selection.main.head)) : undefined);\n}\nfunction stringWordTest(doc, categorizer) {\n return (from, to, buf, bufPos) => {\n if (bufPos > from || bufPos + buf.length < to) {\n bufPos = Math.max(0, from - 2);\n buf = doc.sliceString(bufPos, Math.min(doc.length, to + 2));\n }\n return (categorizer(charBefore(buf, from - bufPos)) != CharCategory.Word ||\n categorizer(charAfter(buf, from - bufPos)) != CharCategory.Word) &&\n (categorizer(charAfter(buf, to - bufPos)) != CharCategory.Word ||\n categorizer(charBefore(buf, to - bufPos)) != CharCategory.Word);\n };\n}\nclass StringQuery extends QueryType {\n constructor(spec) {\n super(spec);\n }\n nextMatch(state, curFrom, curTo) {\n let cursor = stringCursor(this.spec, state, curTo, state.doc.length).nextOverlapping();\n if (cursor.done)\n cursor = stringCursor(this.spec, state, 0, curFrom).nextOverlapping();\n return cursor.done ? null : cursor.value;\n }\n // Searching in reverse is, rather than implementing an inverted search\n // cursor, done by scanning chunk after chunk forward.\n prevMatchInRange(state, from, to) {\n for (let pos = to;;) {\n let start = Math.max(from, pos - 10000 /* FindPrev.ChunkSize */ - this.spec.unquoted.length);\n let cursor = stringCursor(this.spec, state, start, pos), range = null;\n while (!cursor.nextOverlapping().done)\n range = cursor.value;\n if (range)\n return range;\n if (start == from)\n return null;\n pos -= 10000 /* FindPrev.ChunkSize */;\n }\n }\n prevMatch(state, curFrom, curTo) {\n return this.prevMatchInRange(state, 0, curFrom) ||\n this.prevMatchInRange(state, curTo, state.doc.length);\n }\n getReplacement(_result) { return this.spec.unquote(this.spec.replace); }\n matchAll(state, limit) {\n let cursor = stringCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = stringCursor(this.spec, state, Math.max(0, from - this.spec.unquoted.length), Math.min(to + this.spec.unquoted.length, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\nfunction regexpCursor(spec, state, from, to) {\n return new RegExpCursor(state.doc, spec.search, {\n ignoreCase: !spec.caseSensitive,\n test: spec.wholeWord ? regexpWordTest(state.charCategorizer(state.selection.main.head)) : undefined\n }, from, to);\n}\nfunction charBefore(str, index) {\n return str.slice(findClusterBreak(str, index, false), index);\n}\nfunction charAfter(str, index) {\n return str.slice(index, findClusterBreak(str, index));\n}\nfunction regexpWordTest(categorizer) {\n return (_from, _to, match) => !match[0].length ||\n (categorizer(charBefore(match.input, match.index)) != CharCategory.Word ||\n categorizer(charAfter(match.input, match.index)) != CharCategory.Word) &&\n (categorizer(charAfter(match.input, match.index + match[0].length)) != CharCategory.Word ||\n categorizer(charBefore(match.input, match.index + match[0].length)) != CharCategory.Word);\n}\nclass RegExpQuery extends QueryType {\n nextMatch(state, curFrom, curTo) {\n let cursor = regexpCursor(this.spec, state, curTo, state.doc.length).next();\n if (cursor.done)\n cursor = regexpCursor(this.spec, state, 0, curFrom).next();\n return cursor.done ? null : cursor.value;\n }\n prevMatchInRange(state, from, to) {\n for (let size = 1;; size++) {\n let start = Math.max(from, to - size * 10000 /* FindPrev.ChunkSize */);\n let cursor = regexpCursor(this.spec, state, start, to), range = null;\n while (!cursor.next().done)\n range = cursor.value;\n if (range && (start == from || range.from > start + 10))\n return range;\n if (start == from)\n return null;\n }\n }\n prevMatch(state, curFrom, curTo) {\n return this.prevMatchInRange(state, 0, curFrom) ||\n this.prevMatchInRange(state, curTo, state.doc.length);\n }\n getReplacement(result) {\n return this.spec.unquote(this.spec.replace).replace(/\\$([$&\\d+])/g, (m, i) => i == \"$\" ? \"$\"\n : i == \"&\" ? result.match[0]\n : i != \"0\" && +i < result.match.length ? result.match[i]\n : m);\n }\n matchAll(state, limit) {\n let cursor = regexpCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = regexpCursor(this.spec, state, Math.max(0, from - 250 /* RegExp.HighlightMargin */), Math.min(to + 250 /* RegExp.HighlightMargin */, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\n/**\nA state effect that updates the current search query. Note that\nthis only has an effect if the search state has been initialized\n(by including [`search`](https://codemirror.net/6/docs/ref/#search.search) in your configuration or\nby running [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) at least\nonce).\n*/\nconst setSearchQuery = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst searchState = /*@__PURE__*/StateField.define({\n create(state) {\n return new SearchState(defaultQuery(state).create(), null);\n },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery))\n value = new SearchState(effect.value.create(), value.panel);\n else if (effect.is(togglePanel))\n value = new SearchState(value.query, effect.value ? createSearchPanel : null);\n }\n return value;\n },\n provide: f => showPanel.from(f, val => val.panel)\n});\n/**\nGet the current search query from an editor state.\n*/\nfunction getSearchQuery(state) {\n let curState = state.field(searchState, false);\n return curState ? curState.query.spec : defaultQuery(state);\n}\n/**\nQuery whether the search panel is open in the given editor state.\n*/\nfunction searchPanelOpen(state) {\n var _a;\n return ((_a = state.field(searchState, false)) === null || _a === void 0 ? void 0 : _a.panel) != null;\n}\nclass SearchState {\n constructor(query, panel) {\n this.query = query;\n this.panel = panel;\n }\n}\nconst matchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch\" }), selectedMatchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch cm-searchMatch-selected\" });\nconst searchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.decorations = this.highlight(view.state.field(searchState));\n }\n update(update) {\n let state = update.state.field(searchState);\n if (state != update.startState.field(searchState) || update.docChanged || update.selectionSet || update.viewportChanged)\n this.decorations = this.highlight(state);\n }\n highlight({ query, panel }) {\n if (!panel || !query.spec.valid)\n return Decoration.none;\n let { view } = this;\n let builder = new RangeSetBuilder();\n for (let i = 0, ranges = view.visibleRanges, l = ranges.length; i < l; i++) {\n let { from, to } = ranges[i];\n while (i < l - 1 && to > ranges[i + 1].from - 2 * 250 /* RegExp.HighlightMargin */)\n to = ranges[++i].to;\n query.highlight(view.state, from, to, (from, to) => {\n let selected = view.state.selection.ranges.some(r => r.from == from && r.to == to);\n builder.add(from, to, selected ? selectedMatchMark : matchMark);\n });\n }\n return builder.finish();\n }\n}, {\n decorations: v => v.decorations\n});\nfunction searchCommand(f) {\n return view => {\n let state = view.state.field(searchState, false);\n return state && state.query.spec.valid ? f(view, state) : openSearchPanel(view);\n };\n}\n/**\nOpen the search panel if it isn't already open, and move the\nselection to the first match after the current main selection.\nWill wrap around to the start of the document when it reaches the\nend.\n*/\nconst findNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { to } = view.state.selection.main;\n let next = query.nextMatch(view.state, to, to);\n if (!next)\n return false;\n let selection = EditorSelection.single(next.from, next.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, next), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nMove the selection to the previous instance of the search query,\nbefore the current main selection. Will wrap past the start\nof the document to start searching at the end again.\n*/\nconst findPrevious = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from } = state.selection.main;\n let prev = query.prevMatch(state, from, from);\n if (!prev)\n return false;\n let selection = EditorSelection.single(prev.from, prev.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, prev), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nSelect all instances of the search query.\n*/\nconst selectMatches = /*@__PURE__*/searchCommand((view, { query }) => {\n let ranges = query.matchAll(view.state, 1000);\n if (!ranges || !ranges.length)\n return false;\n view.dispatch({\n selection: EditorSelection.create(ranges.map(r => EditorSelection.range(r.from, r.to))),\n userEvent: \"select.search.matches\"\n });\n return true;\n});\n/**\nSelect all instances of the currently selected text.\n*/\nconst selectSelectionMatches = ({ state, dispatch }) => {\n let sel = state.selection;\n if (sel.ranges.length > 1 || sel.main.empty)\n return false;\n let { from, to } = sel.main;\n let ranges = [], main = 0;\n for (let cur = new SearchCursor(state.doc, state.sliceDoc(from, to)); !cur.next().done;) {\n if (ranges.length > 1000)\n return false;\n if (cur.value.from == from)\n main = ranges.length;\n ranges.push(EditorSelection.range(cur.value.from, cur.value.to));\n }\n dispatch(state.update({\n selection: EditorSelection.create(ranges, main),\n userEvent: \"select.search.matches\"\n }));\n return true;\n};\n/**\nReplace the current match of the search query.\n*/\nconst replaceNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from, to } = state.selection.main;\n if (state.readOnly)\n return false;\n let next = query.nextMatch(state, from, from);\n if (!next)\n return false;\n let changes = [], selection, replacement;\n let effects = [];\n if (next.from == from && next.to == to) {\n replacement = state.toText(query.getReplacement(next));\n changes.push({ from: next.from, to: next.to, insert: replacement });\n next = query.nextMatch(state, next.from, next.to);\n effects.push(EditorView.announce.of(state.phrase(\"replaced match on line $\", state.doc.lineAt(from).number) + \".\"));\n }\n if (next) {\n let off = changes.length == 0 || changes[0].from >= next.to ? 0 : next.to - next.from - replacement.length;\n selection = EditorSelection.single(next.from - off, next.to - off);\n effects.push(announceMatch(view, next));\n effects.push(state.facet(searchConfigFacet).scrollToMatch(selection.main, view));\n }\n view.dispatch({\n changes, selection, effects,\n userEvent: \"input.replace\"\n });\n return true;\n});\n/**\nReplace all instances of the search query with the given\nreplacement.\n*/\nconst replaceAll = /*@__PURE__*/searchCommand((view, { query }) => {\n if (view.state.readOnly)\n return false;\n let changes = query.matchAll(view.state, 1e9).map(match => {\n let { from, to } = match;\n return { from, to, insert: query.getReplacement(match) };\n });\n if (!changes.length)\n return false;\n let announceText = view.state.phrase(\"replaced $ matches\", changes.length) + \".\";\n view.dispatch({\n changes,\n effects: EditorView.announce.of(announceText),\n userEvent: \"input.replace.all\"\n });\n return true;\n});\nfunction createSearchPanel(view) {\n return view.state.facet(searchConfigFacet).createPanel(view);\n}\nfunction defaultQuery(state, fallback) {\n var _a, _b, _c, _d, _e;\n let sel = state.selection.main;\n let selText = sel.empty || sel.to > sel.from + 100 ? \"\" : state.sliceDoc(sel.from, sel.to);\n if (fallback && !selText)\n return fallback;\n let config = state.facet(searchConfigFacet);\n return new SearchQuery({\n search: ((_a = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _a !== void 0 ? _a : config.literal) ? selText : selText.replace(/\\n/g, \"\\\\n\"),\n caseSensitive: (_b = fallback === null || fallback === void 0 ? void 0 : fallback.caseSensitive) !== null && _b !== void 0 ? _b : config.caseSensitive,\n literal: (_c = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _c !== void 0 ? _c : config.literal,\n regexp: (_d = fallback === null || fallback === void 0 ? void 0 : fallback.regexp) !== null && _d !== void 0 ? _d : config.regexp,\n wholeWord: (_e = fallback === null || fallback === void 0 ? void 0 : fallback.wholeWord) !== null && _e !== void 0 ? _e : config.wholeWord\n });\n}\nfunction getSearchInput(view) {\n let panel = getPanel(view, createSearchPanel);\n return panel && panel.dom.querySelector(\"[main-field]\");\n}\nfunction selectSearchInput(view) {\n let input = getSearchInput(view);\n if (input && input == view.root.activeElement)\n input.select();\n}\n/**\nMake sure the search panel is open and focused.\n*/\nconst openSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (state && state.panel) {\n let searchInput = getSearchInput(view);\n if (searchInput && searchInput != view.root.activeElement) {\n let query = defaultQuery(view.state, state.query.spec);\n if (query.valid)\n view.dispatch({ effects: setSearchQuery.of(query) });\n searchInput.focus();\n searchInput.select();\n }\n }\n else {\n view.dispatch({ effects: [\n togglePanel.of(true),\n state ? setSearchQuery.of(defaultQuery(view.state, state.query.spec)) : StateEffect.appendConfig.of(searchExtensions)\n ] });\n }\n return true;\n};\n/**\nClose the search panel.\n*/\nconst closeSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (!state || !state.panel)\n return false;\n let panel = getPanel(view, createSearchPanel);\n if (panel && panel.dom.contains(view.root.activeElement))\n view.focus();\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nDefault search-related key bindings.\n\n - Mod-f: [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel)\n - F3, Mod-g: [`findNext`](https://codemirror.net/6/docs/ref/#search.findNext)\n - Shift-F3, Shift-Mod-g: [`findPrevious`](https://codemirror.net/6/docs/ref/#search.findPrevious)\n - Mod-Alt-g: [`gotoLine`](https://codemirror.net/6/docs/ref/#search.gotoLine)\n - Mod-d: [`selectNextOccurrence`](https://codemirror.net/6/docs/ref/#search.selectNextOccurrence)\n*/\nconst searchKeymap = [\n { key: \"Mod-f\", run: openSearchPanel, scope: \"editor search-panel\" },\n { key: \"F3\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Mod-g\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Escape\", run: closeSearchPanel, scope: \"editor search-panel\" },\n { key: \"Mod-Shift-l\", run: selectSelectionMatches },\n { key: \"Mod-Alt-g\", run: gotoLine },\n { key: \"Mod-d\", run: selectNextOccurrence, preventDefault: true },\n];\nclass SearchPanel {\n constructor(view) {\n this.view = view;\n let query = this.query = view.state.field(searchState).query.spec;\n this.commit = this.commit.bind(this);\n this.searchField = elt(\"input\", {\n value: query.search,\n placeholder: phrase(view, \"Find\"),\n \"aria-label\": phrase(view, \"Find\"),\n class: \"cm-textfield\",\n name: \"search\",\n form: \"\",\n \"main-field\": \"true\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.replaceField = elt(\"input\", {\n value: query.replace,\n placeholder: phrase(view, \"Replace\"),\n \"aria-label\": phrase(view, \"Replace\"),\n class: \"cm-textfield\",\n name: \"replace\",\n form: \"\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.caseField = elt(\"input\", {\n type: \"checkbox\",\n name: \"case\",\n form: \"\",\n checked: query.caseSensitive,\n onchange: this.commit\n });\n this.reField = elt(\"input\", {\n type: \"checkbox\",\n name: \"re\",\n form: \"\",\n checked: query.regexp,\n onchange: this.commit\n });\n this.wordField = elt(\"input\", {\n type: \"checkbox\",\n name: \"word\",\n form: \"\",\n checked: query.wholeWord,\n onchange: this.commit\n });\n function button(name, onclick, content) {\n return elt(\"button\", { class: \"cm-button\", name, onclick, type: \"button\" }, content);\n }\n this.dom = elt(\"div\", { onkeydown: (e) => this.keydown(e), class: \"cm-search\" }, [\n this.searchField,\n button(\"next\", () => findNext(view), [phrase(view, \"next\")]),\n button(\"prev\", () => findPrevious(view), [phrase(view, \"previous\")]),\n button(\"select\", () => selectMatches(view), [phrase(view, \"all\")]),\n elt(\"label\", null, [this.caseField, phrase(view, \"match case\")]),\n elt(\"label\", null, [this.reField, phrase(view, \"regexp\")]),\n elt(\"label\", null, [this.wordField, phrase(view, \"by word\")]),\n ...view.state.readOnly ? [] : [\n elt(\"br\"),\n this.replaceField,\n button(\"replace\", () => replaceNext(view), [phrase(view, \"replace\")]),\n button(\"replaceAll\", () => replaceAll(view), [phrase(view, \"replace all\")])\n ],\n elt(\"button\", {\n name: \"close\",\n onclick: () => closeSearchPanel(view),\n \"aria-label\": phrase(view, \"close\"),\n type: \"button\"\n }, [\"×\"])\n ]);\n }\n commit() {\n let query = new SearchQuery({\n search: this.searchField.value,\n caseSensitive: this.caseField.checked,\n regexp: this.reField.checked,\n wholeWord: this.wordField.checked,\n replace: this.replaceField.value,\n });\n if (!query.eq(this.query)) {\n this.query = query;\n this.view.dispatch({ effects: setSearchQuery.of(query) });\n }\n }\n keydown(e) {\n if (runScopeHandlers(this.view, e, \"search-panel\")) {\n e.preventDefault();\n }\n else if (e.keyCode == 13 && e.target == this.searchField) {\n e.preventDefault();\n (e.shiftKey ? findPrevious : findNext)(this.view);\n }\n else if (e.keyCode == 13 && e.target == this.replaceField) {\n e.preventDefault();\n replaceNext(this.view);\n }\n }\n update(update) {\n for (let tr of update.transactions)\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery) && !effect.value.eq(this.query))\n this.setQuery(effect.value);\n }\n }\n setQuery(query) {\n this.query = query;\n this.searchField.value = query.search;\n this.replaceField.value = query.replace;\n this.caseField.checked = query.caseSensitive;\n this.reField.checked = query.regexp;\n this.wordField.checked = query.wholeWord;\n }\n mount() {\n this.searchField.select();\n }\n get pos() { return 80; }\n get top() { return this.view.state.facet(searchConfigFacet).top; }\n}\nfunction phrase(view, phrase) { return view.state.phrase(phrase); }\nconst AnnounceMargin = 30;\nconst Break = /[\\s\\.,:;?!]/;\nfunction announceMatch(view, { from, to }) {\n let line = view.state.doc.lineAt(from), lineEnd = view.state.doc.lineAt(to).to;\n let start = Math.max(line.from, from - AnnounceMargin), end = Math.min(lineEnd, to + AnnounceMargin);\n let text = view.state.sliceDoc(start, end);\n if (start != line.from) {\n for (let i = 0; i < AnnounceMargin; i++)\n if (!Break.test(text[i + 1]) && Break.test(text[i])) {\n text = text.slice(i);\n break;\n }\n }\n if (end != lineEnd) {\n for (let i = text.length - 1; i > text.length - AnnounceMargin; i--)\n if (!Break.test(text[i - 1]) && Break.test(text[i])) {\n text = text.slice(0, i);\n break;\n }\n }\n return EditorView.announce.of(`${view.state.phrase(\"current match\")}. ${text} ${view.state.phrase(\"on line\")} ${line.number}.`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-panel.cm-search\": {\n padding: \"2px 6px 4px\",\n position: \"relative\",\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"4px\",\n backgroundColor: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n },\n \"& input, & button, & label\": {\n margin: \".2em .6em .2em 0\"\n },\n \"& input[type=checkbox]\": {\n marginRight: \".2em\"\n },\n \"& label\": {\n fontSize: \"80%\",\n whiteSpace: \"pre\"\n }\n },\n \"&light .cm-searchMatch\": { backgroundColor: \"#ffff0054\" },\n \"&dark .cm-searchMatch\": { backgroundColor: \"#00ffff8a\" },\n \"&light .cm-searchMatch-selected\": { backgroundColor: \"#ff6a0054\" },\n \"&dark .cm-searchMatch-selected\": { backgroundColor: \"#ff00ff8a\" }\n});\nconst searchExtensions = [\n searchState,\n /*@__PURE__*/Prec.low(searchHighlighter),\n baseTheme\n];\n\nexport { RegExpCursor, SearchCursor, SearchQuery, closeSearchPanel, findNext, findPrevious, getSearchQuery, gotoLine, highlightSelectionMatches, openSearchPanel, replaceAll, replaceNext, search, searchKeymap, searchPanelOpen, selectMatches, selectNextOccurrence, selectSelectionMatches, setSearchQuery };\n","import { javascript } from '@codemirror/lang-javascript'\nimport {\n keymap,\n lineNumbers,\n highlightActiveLineGutter,\n highlightActiveLine,\n drawSelection,\n highlightSpecialChars,\n rectangularSelection,\n dropCursor\n} from '@codemirror/view'\n\nimport {\n syntaxHighlighting,\n bracketMatching,\n foldKeymap,\n foldGutter,\n indentOnInput\n} from '@codemirror/language'\n\nimport { classHighlighter } from '@lezer/highlight'\n\nimport {\n defaultKeymap,\n indentWithTab,\n history,\n historyKeymap\n} from '@codemirror/commands'\n\nimport { searchKeymap, highlightSelectionMatches } from '@codemirror/search'\n\nimport {\n autocompletion,\n acceptCompletion,\n completionKeymap,\n closeBrackets,\n closeBracketsKeymap\n} from '@codemirror/autocomplete'\n\nconst custom_commands = [\n // Tab auto complete\n {\n key: 'Tab',\n run: acceptCompletion\n },\n // Escape to blur the editor\n {\n key: 'Escape',\n run: (view) => view.contentDOM.blur()\n }\n]\n\nexport const extensions = [\n lineNumbers(),\n highlightSpecialChars(),\n drawSelection(),\n highlightActiveLineGutter(),\n // highlightActiveLine(),\n highlightSelectionMatches(),\n autocompletion(),\n closeBrackets(),\n bracketMatching(),\n dropCursor(),\n // foldGutter(),\n // rectangularSelection(),\n history(),\n indentOnInput(),\n syntaxHighlighting(classHighlighter, {\n fallback: true\n }),\n javascript(),\n keymap.of([\n ...custom_commands,\n ...defaultKeymap,\n ...searchKeymap,\n ...completionKeymap,\n ...foldKeymap,\n ...historyKeymap,\n ...closeBracketsKeymap,\n indentWithTab\n ])\n // javascriptLanguage.data.of({\n // autocomplete: jsSnippets,\n // }),\n]\n","\n\n {\n if (evt.key === 'Escape' && $is_running) {\n $is_running = false\n\n if (view.contentDOM.focus) setTimeout(() => view.contentDOM.focus(), 0)\n }\n }}\n/>\n\n\n
\n\n","\n\n
\n \n\n\n
\n\n","\n\n
\n \n\n
\n \n
\n\n \n
","\n\n\n\n
\n \n
\n\n\n\n
\n
\n \n \n \n\n
\n {#if editable}\n \n {/if}\n\n \n
\n\n
\n {#if editable && !current_user.activated_at}\n \n {:else}\n \n {/if}\n\n \n
\n
\n\n
\n \n
\n {#if $has_run && !$is_running}\n \n {/if}\n\n \n
\n \n
\n
\n","\n\n\n\n
\n
\n

\n The programmable artboard\n

\n\n \n
\n
\n\n\n
\n

Draw. Code. Play.

\n\n
\n \"Space\n \n
\n
\n\n","import { createInertiaApp } from '@inertiajs/svelte'\nimport { mount } from 'svelte'\n\nimport BaseLayout from '$views/layouts/BaseLayout.svelte'\nimport Layout from '$views/layouts/Layout.svelte'\n\nconst pages = import.meta.glob('$views/**/*.svelte', { eager: true })\n\nif (import.meta.env.DEV) {\n import('@spotlightjs/spotlight').then((Spotlight) =>\n Spotlight.init({ injectImmediately: true })\n )\n}\n\ncreateInertiaApp({\n resolve: (name) => {\n const page = pages[`../views/${name}.svelte`]\n\n return {\n default: page.default,\n layout: page.layout || [BaseLayout, Layout]\n }\n },\n // page: undefined,\n setup({ el, App }) {\n delete el.dataset.page\n\n mount(App, { target: el })\n }\n})\n"],"names":["PUBLIC_VERSION","noop","run_all","arr","i","subscribe_to_store","store","run","invalidate","unsub","is_array","array_from","object_assign","is_frozen","define_property","get_descriptor","get_descriptors","object_prototype","array_prototype","get_prototype_of","is_function","thing","EACH_ITEM_REACTIVE","EACH_INDEX_REACTIVE","EACH_KEYED","EACH_IS_CONTROLLED","EACH_IS_ANIMATED","EACH_IS_IMMUTABLE","PROPS_IS_IMMUTABLE","PROPS_IS_UPDATED","PROPS_IS_LAZY_INITIAL","DelegatedEvents","PassiveDelegatedEvents","AttributeAliases","namespace_svg","STATE_SYMBOL","proxy","value","immutable","metadata","prototype","state_proxy_handler","init","source","target","prop","descriptor","s","set","boolean","ls","length","UNINITIALIZED","update","receiver","_a","effect_active","updating_derived","mutable_source","get","has","not_has","ROOT_BLOCK","IF_BLOCK","EACH_BLOCK","EACH_ITEM_BLOCK","AWAIT_BLOCK","KEY_BLOCK","HEAD_BLOCK","DYNAMIC_COMPONENT_BLOCK","DYNAMIC_ELEMENT_BLOCK","create_root_block","intro","create_if_block","current_block","create_key_block","create_head_block","create_dynamic_element_block","create_dynamic_component_block","create_each_block","flags","anchor","create_each_item_block","item","index","key","SOURCE","DERIVED","EFFECT","PRE_EFFECT","RENDER_EFFECT","MANAGED","UNOWNED","CLEAN","DIRTY","MAYBE_DIRTY","INERT","DESTROYED","IS_EFFECT","LAZY_PROPERTY","is_micro_task_queued","is_task_queued","is_raf_queued","is_flushing_effect","current_queued_pre_and_render_effects","current_queued_effects","current_queued_tasks","current_raf_tasks","flush_count","current_consumer","current_effect","current_dependencies","current_dependencies_index","current_untracked_writes","current_untracking","ignore_mutation_validation","current_skip_consumer","current_component_context","is_runes","context","component_context","default_equals","a","b","create_source_signal","create_computation_signal","block","push_reference","target_signal","ref_signal","references","is_signal_dirty","signal","dependencies","dependency","set_signal_status","update_derived","execute_signal_fn","previous_dependencies","previous_dependencies_index","previous_untracked_writes","previous_consumer","previous_block","previous_component_context","previous_skip_consumer","is_render_effect","previous_untracking","res","deps_length","full_current_dependencies","full_current_dependencies_set","remove_consumer","consumers","remove_consumers","consumers_length","start_index","active_dependencies","destroy_references","destroy_signal","report_error","error","execute_effect","teardown","previous_effect","possible_teardown","flush_local_pre_effects","infinite_loop_guard","flush_queued_effects","effects","previously_flushing_effect","process_microtask","previous_queued_pre_and_render_effects","previous_queued_effects","schedule_effect","sync","mark_subtree_children_inert","should_append","target_level","target_block","is_pre_effect","is_target_pre_effect","process_task","tasks","process_raf_task","schedule_task","fn","schedule_raf_task","flush_local_render_effects","effect","force_schedule","previous_updating_derived","status","equals","mark_signal_consumers","store_get","store_name","stores","entry","is_new","connect_store_to_signal","v","store_set","unsubscribe_on_destroy","onDestroy","unowned","set_signal_value","mutate","untrack","mutate_store","expression","new_value","inert","visited_blocks","reference","mark_subtree_inert","type","condition_effect","consequent_effect","alternate_effect","items","each_item_effect","to_status","runes","consumer","dirty","update_callbacks","managed","managed_effect","destroy","derived","initial_value","safe_equal","internal_create_effect","schedule","user_effect","apply_component_effect_heuristics","managed_pre_effect","pre_effect","val","render_effect","push_destroy_fn","destroy_fn","STATUS_MASK","is_signal","is_lazy_property","props","initial","setter","prop_value","getter","from_child","inner_current_value","current_value","parent_value","child_value","mutation","current","safe_not_equal","bubble_event","$$props","event","events","callbacks","d","reactive_import","push","pop","accessors","context_stack_item","lazy_property","o","p","unwrap","current_hydration_fragment","set_current_hydration_fragment","fragment","get_hydration_fragment","node","current_node","target_depth","node_type","next_sibling","data","depth","hydrate_block_anchor","anchor_node","is_controlled","target_node","first_child","node_prototype","element_prototype","text_prototype","map_prototype","append_child_method","clone_node_method","map_set_method","map_get_method","first_child_get","next_sibling_get","text_content_set","class_name_set","$window","$document","init_operations","append_child","element","child","map_set","map","map_get","clone_node","deep","text","capture_fragment_from_node","child_frag","is_text","first_node","sibling","set_class_name","class_name","clear_text_content","create_fragment_from_html","html","elem","insert","parent_element","remove","reconcile_html","dom","svg","frag_nodes","content","clone","raf","_","active_tick_animations","DELAY_NEXT_TICK","active_tick_ref","custom_event","detail","bubbles","cancelable","e","dispatch_event","css_style_from_camel_case","style","parts","word","css_to_keyframe","css","keyframe","part","property","formatted_property","_tick_fn","_duration","_current","_delay","_previous","_reversed","_delay_current","_delayed_reverse","_TickAnimation_instances","reverse_fn","TickAnimation","tick_fn","duration","delay","out","__privateAdd","__publicField","__privateSet","__privateGet","handle_raf","__privateMethod","time","diff","is_delayed","cancel","delay_diff","t","animation","create_keyframes","easing_fn","css_fn","direction","reverse","keyframes","max_duration","linear","create_transition","curr_direction","subs","cancelled","create_animation","payload","transition","is_outro","needs_reverse","position","width","height","translate","existing_transform","frame","current_animation","is_transition_block","bind_transition","get_transition_fn","props_fn","global","transition_effect","is_keyed_transition","can_show_intro_on_mount","can_apply_lazy_transitions","transition_block","main","each_item_transition","each_item_animate","if_block_transition","if_block","already_mounted","transition_fn","from","is_intro","show_intro","parent","trigger_transitions","transitions","target_direction","outros","e2","consequent_transitions","c","alternate_transitions","each_block","empty","other","destroy_each_item_block","get_first_element","all_registerd_events","root_event_handles","template","is_fragment","cached_content","open_template","use_clone_node","template_element_fn","open","open_frag","comment_template","comment","close_template","close","close_frag","preventDefault","args","event_name","handler","capture","passive","options","target_handler","handle_event_propagation","class_name_effect","string","prev_class_name","next_class_name","to_class","is_hydrating","text_effect","prev_node_value","next_node_value","stringify","auto_focus","body","class_toggle","class_toggle_effect","bind_value","get_value","is_numberlike_input","to_number","bind_content_editable","non_null_value","get_binding_group_value","group","__value","checked","bind_group","group_index","is_checkbox","binding_group","bind_checked","bind_prop","desc","bind_this","element_or_component","binding","delegate","handler_element","path","current_target","path_idx","handled_at","at_idx","handler_idx","internal_prop_name","delegated","slot","slot_fn","slot_props","fallback_fn","condition_fn","consequent_fn","alternate_fn","previous_hydration_fragment","consequent_dom","alternate_dom","has_mounted","current_branch_effect","if_effect","result","comment_text","head","render_fn","hydration_fragment","head_effect","swap_block_dom","to","tag_fn","is_svg","tag","element_effect","render_effect_signal","ns","next_element","prev_element","has_prev_element","parent_block","component","component_fn","current_render","render","create_render_effect","component_effect","next_component","key_value","mounted","key_effect","prev_key_value","html_dom","animate","action","value_fn","remove_input_attr_defaults","attr","attr_effect","attribute","set_custom_element_data","always_set_through_set_attribute","setters_cache","get_setters","setters","descriptors","spread_attributes","prev","attrs","lowercase_attributes","css_hash","next","has_hash","prefix","opts","name","spread_dynamic_element_attributes_effect","spread_dynamic_element_attributes","rest_props_handler","keys","rest_props","rest","spread_props_handler","spread_props","mount","_b","registered_events","container","bound_event_listener","bound_document_event_listener","event_handle","NEW_BLOCK","MOVED_BLOCK","LIS_BLOCK","no_op","each","collection","key_fn","reconcile_fn","current_fallback","array","fallback","clear_each","maybe_array","each_keyed","reconcile_tracked_array","each_indexed","reconcile_indexed_array","apply_transitions","is_proxied_array","a_blocks","active_transitions","b_blocks","destroy_active_transition_blocks","hydrating_node","each_item_block","insert_each_item_block","update_each_item_block","is_computed_key","a_end","b_end","idx","is_animated","should_update_block","start","outer","get_first_child","pos","b_length","sources","item_index","mark_lis","last_block","last_sibling","should_create","index_length","j","k","lo","hi","index_is_reactive","each_animation","controlled","item_value","index_value","onMount","create_custom_event","createEventDispatcher","init_update_callbacks","called_before","called_after","beforeUpdate","subscriber_queue","readable","writable","stop","subscribers","run_queue","subscriber","subscribe","fns","single","stores_array","auto","started","values","pending","cleanup","unsubscribers","get_store_value","_last_execution","Callback","func","interval_in_secs","KEYMAP","RuntimeEvent","evt","properties","create_layers_proxy","scene","obj","layers_array","layer","class_function_wrapper","klass","Color","color","parse_color","Point","x","y","Vector","angle","radians","sin","cos","x2","y2","magnitude","vec","Velocity","vel","callback","collision_entity_window","entity","window","collision","collision_window_scene","id","is_not_colliding_entity_entity","collision_shape_group","shape","active","Group","collision_shape_shape","collision_shape_scene","Shape","collision_shape_tag","entity_ids","last_positions","last_entity_positions","pixel_size","config","old_x","old_y","old_target_x","old_target_y","dx_shape","dy_shape","dx_target","dy_target","dx","dy","left_collision","x_pos","y_pos","get_pixel","right_collision","top_collision","bottom_collision","row","left","right","top","bottom","collision_group_shape","collision_group_group","shape_id","target_id","target_shape","collision_group_tag","collision_group_scene","collision_tag_shape","collision_tag_group","collision_tag_tag","target_entity_ids","target_entity","collision_tag_window","collision_tag_scene","colliding","new_layer","new_target","collision_fn","cb","colliding_all","colliding_shape","Text","colliding_group","RuntimeWindow","colliding_window","colliding_tag","resolve_collision","entities","target_x","target_y","overlap_x","overlap_y","contain","resolve","neighbour_positions","count_neighbours","grid","count","gameOfLife","pixel_grid","new_grid","RESOLUTION","neighbours","delete_layers","Pixels","sleep","interval_seconds","countdown","seconds","onTick","tick","draw","traits","is_point","is_color","add_shapes","is_velocity","tags","SUPPORTED_EVENTS","addEventListener","listener","removeEventListener","create_keyboard_callback","interval","keypress","keydown","keyup","attachArrowKeys_options","attachArrowKeys","create_wasd_callback","code","attachWasdKeys_options","attachWasdKeys","sample","go","scene_index","PIXEL_DELETE_KEY","_map","pixels","parsePixels","ignore_deletion","col","colors","yColorPair","jsonColor","_index","invert_object","minX","minY","maxX","maxY","parse_pixels_column","parse_pixels_row","_scene","Entity","random_uint_32","pick","json","entity_name_for","update_shape","overide_dimension_accessors","layers","Scene","Project","doc","scenes","parse_scenes","Font","atlas","char_config","max","char","glyph_height","RetroGaming$1","fonts","image","RetroGaming.config","RetroGaming.msdf","INITIAL_STATE","colors_are_equal","hex_to_rgb_i","hex","r","g","web_colors","parse_rgb_string","rgb_array_to_hex","alpha","alpha_blend","rgb_array_to_string","render_pixels_canvas_2d","ctx","grid_coordinate","canvas_coordinate","normalize_mouse_coordinates","mouse_x","mouse_y","offsets","Canvas$1","fake_canvas","TRANSPARENT_PIXEL","is_running","canvases","$.proxy","textures","Active","sort_layers","layer_ids","delta","ids","new_layer_ids","moved_id","group_layers","ungroup_layers","group_ids","group_id","_layer","entities_of_type","pixel","set_color","parsed_color","canvas","Canvas","scene_image","acc","pixel_color","m3","tx","ty","angleInRadians","sx","sy","m","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","quad","w","h","vec2","deep_equal","Texture","gl","src","filter","white_pixel","texture_filter","VERTEX_FORMAT","STRIDE","sum","format","Shader","vertex_source","DEFAULT_VERTEX","fragment_source","DEFAULT_FRAGMENT","vertex_shader_source","VERTEX_TEMPLATE","fragment_shader_source","FRAGMENT_TEMPLATE","vertex_shader","fragment_shader","program","vertex","vert_error","frag_error","uniform","location","MAX_BATCHED_QUAD","MAX_BATCHED_VERTICES","MAX_BATCHED_INDICES","BatchRenderer","index_buffer","vertex_buffer","vertices","indices","texture","shader","index_offset","Graphics","enable_attribute_pointers","verts","rect","matrix","position_matrix","offset","nx","ny","MatrixStack","Context","msdf_fragment_shader","vSkew","hSkew","lineWidth","weight","font","scale","line_height","lines","measure_text","line","words","initializeWebGL","layer_id","normal_pixels","normalize_pixels","shapes","shape_data","deleted_ids","groups","is_group","nX","nY","evaluate","console","AsyncFunction","exception","Console","runtime","createMessage","message","log","warning","StopExecutionError","Scope","engine","Runtime","create_keyboard_callbacks","handle_errors","is_running_initialized","new_is_running","scene_ids","active_scene_id","positions","old_state","script","_elapsed_ms","now","renderLayer","params","renderShape","renderText","OUTLINE_COLOR","HOVER_PADDING","state","is_hovering","is_active","renderShapeOutline","renderScene","renderGroupedLayerBoundary","BOUNDARY_WIDTH","BOUNDARY_PADDING","temp_layer","compute_layers_boundary","first_layer","_x2","_y2","ERASE_COLOR","renderPixels","is_tool","STYLES","CanvasGradient","CanvasPattern","namedEntities","str","randomString","holder","chars","randomstring","createNamedToNumberedLookup","radix","lookup","base10","getTextAnchor","textAlign","mapping","getDominantBaseline","textBaseline","gradientNode","regex","matches","pattern","defaultOptions","elementName","resetFill","styleState","fixNamedEntities","serialized","regexp","xmlns","transform","degrees","f","command","cp1x","cp1y","cp2x","cp2y","cpx","cpy","normalize","vector","len","x1","y1","radius","x0","y0","unit_vec_p1_p0","unit_vec_p1_p2","theta","unit_vec_p1_origin","len_p1_origin","unit_vec_origin_start_tangent","unit_vec_origin_end_tangent","getAngle","startAngle","endAngle","grad","r0","r1","fontPart","textElement","counterClockwise","endX","endY","startX","startY","sweepFlag","largeArcFlag","clipPath","newGroup","dw","dh","sw","sh","defs","currentElement","svgImage","repetition","img","module","create_svg","SvgCanvas","polygons","create_polygons","polygon","create_pixel_groups","create_pixel_group_polygon","filled","coords","filled_coords","pixelFill","target_color","_fill","pixel_coords","edges","get_edges","paths","createPath","path_vertices","last_vertex","next_edge_index","edge","horizontal_edges","get_horizontal_edges","vertical_edges","get_vertical_edges","includes","getPixelVertices","vertexSort","bottomleftPixel","topLeftPixel","bottomPixel","topPixel","lastEdge","Vertex","Edge","vertex_coords","split_coord","coord","first_axis","second_axis","vertex_a","vertex_b","first_sort","Edge$1","finish","first_vertex","canvas_size","import_image","scaling_factor","image_data","pixelize_image_data","firstIndex","posY","mean","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread2","_defineProperty","_typeof","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","version","userAgent","IE11OrLess","FireFox","Safari","IOS","ChromeForAndroid","captureMode","on","el","off","selector","getParentOrHost","closest","includeCTX","R_SPACE","toggleClass","className","selfOnly","appliedTransforms","matrixFn","find","tagName","iterator","list","n","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","includeDragEl","currentChild","children","Sortable","lastChild","last","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","indexOfObject","includeSelf","gotSelf","elemCSS","extend","dst","isRectEqual","rect1","rect2","_throttleTimeout","throttle","ms","_this","cancelThrottle","scrollBy","Polymer","$","getChildContainingRectFromElement","ghostEl","_rect$left","_rect$top","_rect$right","_rect$bottom","childRect","expando","AnimationStateManager","animationStates","animationCallbackId","fromRect","childMatrix","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","translateX","translateY","repaint","plugins","defaults","PluginManager","plugin","option","eventName","sortable","eventNameGlobal","pluginName","initialized","modified","eventProperties","modifiedValue","dispatchEvent","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","allEventProperties","_excluded","pluginEvent","dragEl","parentEl","nextEl","lastDownEl","cloneHidden","moved","_hideGhostForTarget","_unhideGhostForTarget","_dispatchEvent","info","activeGroup","awaitingDragStarted","ignoreNextClick","sortables","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","pastFirstInvertThresh","isCircumstantialInvert","targetMoveDistance","ghostRelativeParent","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","threshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","otherGroup","originalGroup","nearestEmptyInsertDetectEvent","nearest","_checkOutsideTargetEl","dataTransfer","preventOnFilter","touch","originalTarget","_saveInputCheckedState","criteria","ownerDocument","dragStartFn","_disableDraggable","_nextTick","inserted","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","cssMatrix","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","extra","completed","after","_onMove","changed","insertion","elLastChild","_ghostIsLast","_ghostIsFirst","firstChild","targetBeforeFirstSwap","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","dragIndex","nextSibling","moveVector","_unsilent","_cancelNextTick","_globalDragOver","order","_generateId","useAnimation","willInsertAfter","onMoveFn","retVal","firstElRect","childContainingRect","spacer","lastElRect","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","root","inputs","_len","_key","autoScrolls","scrollEl","scrollRootEl","scrolling","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","AutoScrollPlugin","AutoScroll","_ref2","clearPointerElemChangedInterval","clearAutoScrolls","autoScroll","ogElemScroller","newElem","isFallback","sens","speed","scrollThisInstance","scrollCustomFn","layersOut","currentParent","canScrollX","canScrollY","scrollWidth","scrollHeight","scrollPosX","scrollPosY","vx","vy","scrollOffsetY","scrollOffsetX","drop","dispatchSortableEvent","hideGhostForTarget","unhideGhostForTarget","toSortable","Revert","_ref3","Remove","_ref4","parentSortable","onsort","list_el","$.source","$.get","get_key","$.unwrap","icons","_value","Clipboard","clipboard","defaultProps","_Tool_instances","reset_fn","Tool","_evt","is_mouse_down","RESIZE_OUTER_BOUNDARY","RESIZE_INNER_BOUNDARY","_is_selecting_box","_starting_layer_positions","_were_layers_moved","_resizing","_MoveTool_instances","update_selection_box_fn","resize_layers_fn","drag_layers_fn","handle_pointer_fn","resize_cursor_get","MoveTool","active_layer_ids","contained_layer_ids","min_max","new_y","screen_position","new_x","hovering_layer_ids","north","east","south","west","minMaxArr","min","coordinate","_is_dragging","_dragging_color","_BrushTool_instances","draw_fn","BrushTool","active_color","active_layer","initial_color","layer_pixel_color","_RectangleTool_instances","RectangleTool","_LineTool_instances","LineTool","delta_x","delta_y","err2","FILL_DELAY_MS","_FillTool_instances","FillTool","fill","_c","_d","promises","ToolEvent","is_targeting_editor","is_targeting_canvas","editor_offsets","tools","$.prop","editable","$.derived","handle_sort","select_layer","$artboard_state","$.mutate_store","artboard_state","$.class_toggle_effect","div_1","button","img_src","$.event","button_1","$.text_effect","$.attr","div_6","$.stringify","active_layer_id","hex_color","int","HORIZONTAL_ALIGNMENTS","VERTICAL_ALIGNMENTS","$.bind_value","input","$$value","$.bind_checked","input_1","input_2","$.class_name_effect","align","tool","get_text_layer","hovering_layer","$.key","node_1","$$anchor","div_id","$.bind_content_editable","div","canvas_el","canvas_target_el","is_dragging","start_dragging","stop_dragging","handle_drop","file","reader","unsubscribe","watch_canvas_dimensions","initialize_canvas","update_dimensions","resizeObserver","_entries","pixel_ratio","canvasRect","canvasTargetRect","$present_users","$.bind_this","div_2","user","select_visible_layers","_event","current_index","next_index","move_layer","multiplier","handle_group_layers","handle_ungroup_layers","delete_active_layers","change_layers_z_index","set_tool","new_tool","copy","paste","copied_layers","group_boundary","_old_id","same_name_count","new_shapes","undo","redo","flatten_layers","first_id","escape_key","shortcuts","CUSTOM_KEY_NAMES","find_shortcut","createToolEvent","onmousemove","$is_running","onmousedown","onmouseup","is_resolved","onkeydown","is_editable_element","dialog","shortcut","oninput","available_tools","$.mutable_source","tool_key","$.class_toggle","$state","$.text","text_1","sort_scenes","$project","create_scene","delete_scene","old_index","scene_id","next_active_scene_id","div_3","$.attr_effect","project","persist_store","present_users","$.user_effect","div_1_style","div_5","require","l","_dereq_","exports","Mutation","scheduleDrain","called","observer","nextTick","channel","scriptEl","draining","queue","oldQueue","immediate","task","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","Promise","resolver","safelyResolveThenable","onRejected","onFulfilled","promise","QueueItem","returnValue","self","tryCatch","getThen","thenable","then","onError","onSuccess","tryToUnwrap","reject","reason","all","iterable","resolved","allResolver","resolveFromAll","outValue","race","response","_classCallCheck","instance","Constructor","getIDB","idb","isIndexedDBValid","isSafari","hasFetch","createBlob","Builder","builder","Promise$1","executeCallback","executeTwoCallbacks","errorCallback","normalizeKey","getCallback","DETECT_BLOB_SUPPORT_STORE","supportsBlobs","dbContexts","toString","READ_ONLY","READ_WRITE","_binStringToArrayBuffer","bin","buf","_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","base64","_decodeBlob","encodedBlob","arrayBuff","_isEncodedBlob","_fullyReady","_tryReconnect","forages","forage","createTransaction","mode","retries","_initStorage","initPromises","ignoreErrors","getItem","transaction","req","iterate","iterationNumber","cursor","setItem","blobSupport","removeItem","clear","advanced","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","encoded1","encoded2","encoded3","encoded4","buffer","bytes","bufferToString","base64String","serialize","valueType","marker","fileReader","deserialize","blobType","matcher","localforageSerializer","createDbTable","_initStorage$1","dbInfoPromise","tryExecuteSql","sqlStatement","results","getItem$1","iterate$1","rows","_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","searchElement","isArray","arg","DefinedDrivers","DriverSupport","DefaultDrivers","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","DefaultConfig","callWhenReady","localForageInstance","libraryMethod","_args","LocalForage","driverTypeKey","driver","driverName","driverObject","complianceError","driverMethods","driverMethodName","isRequired","configureMissingMethods","methodNotImplementedFactory","methodName","_i","optionalDriverMethod","setDriverSupport","support","getDriverPromise","serializerPromise","drivers","supportedDrivers","setDriverToConfig","extendSelfWithDriver","initDriver","currentDriverIndex","driverPromiseLoop","oldDriverSetDone","libraryMethodsAndProperties","localforage_js","browser","storage","localforage","is_remote_change","new_val","bind","thisArg","getPrototypeOf","kindOf","cache","kindOfTest","typeOfTest","isUndefined","isBuffer","isFunction","isArrayBuffer","isArrayBufferView","isString","isNumber","isObject","isBoolean","isPlainObject","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","allOwnKeys","findKey","_global","isContextDefined","merge","caseless","assignValue","targetKey","stripBOM","inherits","constructor","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","endsWith","searchString","lastIndex","toArray","isTypedArray","TypedArray","forEachEntry","pair","matchAll","regExp","isHTMLForm","toCamelCase","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","freezeMethods","toObjectSet","arrayOrString","delimiter","define","toFiniteNumber","defaultValue","ALPHA","DIGIT","ALPHABET","generateString","size","alphabet","isSpecCompliantForm","toJSONObject","stack","visit","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","asap","utils$4","AxiosError","request","utils","customProps","axiosError","httpAdapter","isVisitable","removeBrackets","renderKey","dots","isFlatArray","predicates","toFormData","formData","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","exposedHelpers","build","encode","charMap","match","AxiosURLSearchParams","encoder","_encode","buildURL","url","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","URLSearchParams","FormData","Blob","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","method","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","buildAccessors","accessorName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","deleted","deleteHeader","normalized","targets","asStrings","first","computed","defineAccessor","mapped","headerValue","transformData","isCancel","CanceledError","settle","validateStatus","parseProtocol","speedometer","samplesCount","timestamps","tail","firstSampleTS","chunkLength","startedAt","bytesCount","passed","freq","timestamp","lastArgs","timer","invoke","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","msie","urlParsingNode","originURL","resolveURL","href","requestURL","cookies$1","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","xsrfValue","cookies","isXHRAdapterSupported","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","onloadend","responseHeaders","timeoutErrorMessage","protocol","composeSignals","signals","timeout","controller","aborted","onabort","streamChunk","chunk","chunkSize","end","readBytes","readStream","stream","trackStream","onProgress","onFinish","_onFinish","loadedBytes","isFetchSupported","isReadableStreamSupported","encodeText","test","supportsRequestStream","duplexAccessed","hasContentType","DEFAULT_CHUNK_SIZE","supportsResponseStream","resolvers","getBodyLength","resolveBodyLength","fetchAdapter","cancelToken","withCredentials","fetchOptions","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","knownAdapters","renderReason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","formatMessage","opt","assertOptions","schema","allowUnknown","Axios","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","fullPath","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","spread","isAxiosError","HttpStatusCode","createInstance","axios","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","deepmerge_1","cjs","esErrors","_eval","range","ref","syntax","uri","shams","symObj","symVal","syms","origSymbol","hasSymbolSham","require$$0","hasSymbols","$Object","hasProto","ERROR_MESSAGE","toStr","funcType","concatty","slicy","arrLike","joiny","joiner","implementation","that","bound","binder","boundLength","boundArgs","Empty","functionBind","call","$hasOwn","hasown","undefined","$Error","$EvalError","require$$1","$RangeError","require$$2","$ReferenceError","require$$3","$SyntaxError","require$$4","$TypeError","require$$5","$URIError","require$$6","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","require$$7","require$$8","getProto","needsEval","INTRINSICS","errorProto","doEval","gen","LEGACY_ALIASES","require$$9","hasOwn","require$$10","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","number","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","getIntrinsic","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","GetIntrinsic","$defineProperty","esDefineProperty","gopd","defineDataProperty","nonEnumerable","nonWritable","nonConfigurable","loose","hasPropertyDescriptors","hasPropertyDescriptors_1","hasDescriptors","gOPD","$floor","setFunctionLength","functionLengthIsConfigurable","functionLengthIsWritable","$apply","$call","$reflectApply","$max","originalFunction","applyBind","callBind","$indexOf","callBound","__viteBrowserExternal","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","sepRegex","intStr","dec","utilInspect","inspectCustom","inspectSymbol","isSymbol","objectInspect","inspect_","seen","customInspect","numericSeparator","inspectString","bigIntStr","maxDepth","indent","getIndent","indexOf","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","isElement","wrapQuotes","xs","singleLineValues","indentedJoin","isError","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","ys","protoTag","stringTag","constructorTag","defaultStyle","quoteChar","remaining","trailer","lowbyte","entries","joinedEntries","baseIndent","lineJoiner","isArr","symMap","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","listGet","objects","listSet","listHas","sideChannel","$wm","$m","$o","replace","percentTwenties","Format","formats","hexTable","compactQueue","compacted","mergeTarget","targetItem","assign","decode","decoder","charset","strWithoutPlus","limit","defaultEncoder","$0","segment","compact","refs","combine","maybeMap","getSideChannel","arrayPrefixGenerators","pushToArray","valueOrArray","toISO","defaultFormat","date","isNonNullishPrimitive","sentinel","generateArrayPrefix","commaRoundTrip","allowEmptyArrays","strictNullHandling","skipNulls","encodeDotInKeys","sort","allowDots","serializeDate","formatter","encodeValuesOnly","tmpSc","step","findFlag","keyValue","objKeys","encodedPrefix","adjustedPrefix","encodedKey","valueSideChannel","normalizeStringifyOptions","arrayFormat","stringify_1","joined","interpretNumericEntities","numberStr","parseArrayValue","isoSentinel","charsetSentinel","parseValues","cleanStr","skipIndex","bracketEqualsPos","encodedVal","existing","parseObject","valuesParsed","leaf","cleanRoot","decodedRoot","parseKeys","givenKey","brackets","normalizeParseOptions","duplicates","parse","tempObj","newObj","lib","factory","this","NProgress","Settings","clamp","progress","bar","ease","barPositionCSS","work","force","amount","$promise","fromStart","addClass","perc","toBarPerc","spinner","removeElement","removeClass","bodyStyle","vendorPrefix","barCSS","cssPrefixes","cssProps","camelCase","letter","getVendorProp","capName","vendorName","getStyleProp","applyCss","hasClass","classList","oldList","newList","L","M","H","N","q","W","X","K","I","A","z","J","B","O.stringify","ne","O.parse","Q","C","T","P","ie","D","U","F","S","R","G","E","V","Z","oe","se","ae","le","u","ce","ee","te","Fe","inertia","hrefAndData","fireEvent","eventOptions","mergeDataIntoQueryString","shouldIntercept","router","page","errors","newOptions","as","preserveScroll","preserveState","only","except","queryStringArrayFormat","$$element","$$restProps","prevComponent","$.set","$store","$$component","layout","components","createInertiaApp","setup","isServer","initialPage","resolveComponent","initialComponent","setupProgress","App","SSR","LARGE_ARRAY_SIZE","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","addMapEntry","addSetEntry","arrayEach","iteratee","arrayPush","arrayReduce","accumulator","initAccum","baseTimes","getValue","isHostObject","mapToArray","overArg","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","uid","funcToString","reIsNative","Buffer","Symbol","Uint8Array","getPrototype","objectCreate","propertyIsEnumerable","splice","nativeGetSymbols","nativeIsBuffer","nativeKeys","DataView","getNative","Map","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArguments","skipIndexes","isIndex","objValue","eq","baseAssign","copyObject","baseClone","isDeep","isFull","customizer","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbols","initCloneByTag","stacked","getAllKeys","subValue","baseCreate","proto","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","baseIsNative","isMasked","baseKeys","isPrototype","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","cloneMap","cloneFunc","cloneRegExp","cloneSet","cloneSymbol","cloneTypedArray","typedArray","newValue","getSymbols","isKeyable","stubArray","Ctor","ctorString","cloneDeep","isArrayLikeObject","isArrayLike","isLength","isObjectLike","stubFalse","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","asyncTag","nullTag","proxyTag","undefinedTag","typedArrayTags","freeProcess","nodeUtil","nodeIsTypedArray","arrayFilter","predicate","resIndex","arraySome","baseUnary","cacheHas","nativeObjectToString","symToStringTag","SetCache","setCacheAdd","setCacheHas","isArg","isBuff","isType","getRawTag","baseIsArguments","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsTypedArray","isPartial","arrLength","othLength","arrValue","othValue","compared","othIndex","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","unmasked","isEqual","useForm","rememberKey","restored","recentlySuccessfulTimeoutId","carry","fields","clonedDefaults","field","_options","form","hasErrors","defaultConverter","converter","defaultAttributes","attributes","stringifiedAttributes","attributeName","jar","found","api","Cookie","default_preferences","PERMANENT_COOKIE_EXPIRES","Preferences","preferences","set_preferences","preferences_initialized","preferences_cookie_key","prefs","artboard_state_initialized","new_state","artboard_state_cookie_key","has_run","create","setIfUndefined","createT","any","appendTo","dest","some","ObservableV2","map.create","map.setIfUndefined","set.create","_f","observers","array.from","Observable$1","floor","abs","isNegativeZero","BIT1","BIT2","BIT3","BIT4","BIT6","BIT7","BIT8","BITS5","BITS6","BITS7","BITS31","isInteger","math.floor","toLowerCase","trimLeftRegex","trimLeft","fromCamelCaseRegex","fromCamelCase","separator","_encodeUtf8Polyfill","encodedString","utf8TextEncoder","_encodeUtf8Native","encodeUtf8","utf8TextDecoder","Encoder$1","createEncoder","Encoder","toUint8Array","uint8arr","curPos","verifyLen","bufferLen","math.max","write","writeUint8","writeVarUint","binary.BITS7","binary.BIT8","writeVarInt","isNegative","math.isNegativeZero","binary.BITS6","binary.BIT7","_strBuffer","_maxStrBSize","_writeVarStringNative","written","string.utf8TextEncoder","writeVarUint8Array","string.encodeUtf8","_writeVarStringPolyfill","writeVarString","writeUint8Array","uint8Array","cpos","leftCopyLen","math.min","rightCopyLen","writeOnDataView","dview","writeFloat32","writeFloat64","writeBigInt64","floatTestBed","isFloat32","writeAny","number.isInteger","math.abs","binary.BITS31","array.isArray","RleEncoder","writer","flushUintOptRleEncoder","UintOptRleEncoder","flushIntDiffOptRleEncoder","encodedDiff","IntDiffOptRleEncoder","StringEncoder","methodUnimplemented","unexpectedCase","errorUnexpectedEndOfArray","error.create","errorIntegerOutOfRange","Decoder$1","createDecoder","Decoder","hasContent","readUint8Array","view","readVarUint8Array","readVarUint","readUint8","mult","number.MAX_SAFE_INTEGER","readVarInt","sign","_readVarStringPolyfill","remainingLen","nextLen","_readVarStringNative","string.utf8TextDecoder","readVarString","readFromDataView","dv","readFloat32","readFloat64","readBigInt64","readAnyLookupTable","readAny","RleDecoder","UintOptRleDecoder","IntDiffOptRleDecoder","hasCount","StringDecoder","getRandomValues","uint32","uuidv4Template","uuidv4","getUnixTime","undefinedToNull","VarStoragePolyfill$1","_localStorage","VarStoragePolyfill","usePolyfill","varStorage","isEmpty","_k","every","hasProperty","equalFlat","callAll","fs","isOneOf","isNode","computeParams","pargs","currParamName","parg","kv","string.fromCamelCase","hasParam","getVariable","conditions.undefinedToNull","define_process_env_default","storage.varStorage","hasConf","forceColor","f.isOneOf","supportsColor","createUint8ArrayFromLen","copyUint8Array","newBuf","Pair","createElement","createDocumentFragment","createTextNode","setAttributes","pair.forEach","appendChild","append","nodes","mapToStyleString","map.map","BOLD","symbol.create","UNBOLD","BLUE","GREY","GREEN","RED","PURPLE","ORANGE","UNCOLOR","computeNoColorLoggingArgs","strBuilder","logArgs","_browserStyleMap","common.BOLD","pair.create","common.UNBOLD","common.BLUE","common.GREEN","common.GREY","common.RED","common.PURPLE","common.ORANGE","common.UNCOLOR","computeBrowserLoggingArgs","styles","currentStyle","dom.mapToStyleString","computeLoggingArgs","env.supportsColor","common.computeNoColorLoggingArgs","print","vconsoles","vc","warn","createIterator","iteratorFilter","iteratorMap","fmap","DeleteItem","clock","DeleteSet","iterateDeletedStructs","ds","deletes","clientid","structs","del","iterateStructs","findIndexDS","dis","midindex","mid","midclock","isDeleted","sortAndMergeDeleteSet","dels","mergeDeleteSets","dss","dssI","delsLeft","client","array.appendTo","addToDeleteSet","createDeleteSet","createDeleteSetFromStructStore","ss","dsitems","struct","writeDeleteSet","encoding.writeVarUint","readDeleteSet","numClients","decoding.readVarUint","numberOfDeletes","dsField","readAndApplyDeleteSet","unappliedDS","getState","clockEnd","findIndexSS","splitItem","UpdateEncoderV2","generateNewClientId","random.uint32","Doc","guid","random.uuidv4","collectionid","gc","gcFilter","meta","autoLoad","shouldLoad","StructStore","promise.create","provideSyncedPromise","eventHandler","isSynced","transact","TypeConstructor","AbstractType","Constr","YArray","YText","YMap","YXmlElement","YXmlFragment","subdoc","DSDecoderV1","UpdateDecoderV1","createID","decoding.readUint8","decoding.readVarString","decoding.readAny","buffer.copyUint8Array","decoding.readVarUint8Array","DSDecoderV2","UpdateDecoderV2","decoding.IntDiffOptRleDecoder","decoding.UintOptRleDecoder","decoding.RleDecoder","decoding.StringDecoder","ID","keyClock","DSEncoderV1","encoding.createEncoder","encoding.toUint8Array","UpdateEncoderV1","encoding.writeUint8","encoding.writeVarString","isYKey","encoding.writeAny","encoding.writeVarUint8Array","embed","DSEncoderV2","error.unexpectedCase","encoding.IntDiffOptRleEncoder","encoding.UintOptRleEncoder","encoding.RleEncoder","encoding.StringEncoder","encoding.writeUint8Array","writeStructs","startNewStructs","firstStruct","writeClientsStructs","_sm","sm","getStateVector","_clock","readClientsStructRefs","clientRefs","numOfStateUpdates","numberOfStructs","binary.BITS5","GC","Skip","cantCopyParentInfo","Item","binary.BIT6","readItemContent","integrateStructs","clientsStructRefs","clientsStructRefsIds","getNextStructTarget","nextStructsTarget","curStructsTarget","restStructs","missingSV","updateMissingSv","mclock","stackHead","addStackToRestSS","unapplicableItems","missing","structRefs","writeStructsFromTransaction","readUpdateV2","ydoc","transactionOrigin","structDecoder","retry","mergeUpdatesV2","dsRest","pendingDSUpdate","decoding.createDecoder","dsRest2","applyUpdateV2","YDecoder","applyUpdate","writeStateAsUpdate","targetStateVector","encodeStateAsUpdateV2","encodedTargetStateVector","decodeStateVector","updates","diffUpdateV2","mergeUpdates","convertUpdateFormatV2ToV1","encodeStateAsUpdate","readStateVector","ssLength","decodedState","writeStateVector","sv","writeDocumentStateVector","encodeStateVectorV2","encodeStateVector","EventHandler","createEventHandler","addEventHandlerListener","removeEventHandlerListener","callEventHandlerListeners","arg0","f.callAll","compareIDs","findRootTypeKey","isParentOf","RelativePosition","tname","assoc","relativePositionToJSON","rpos","createRelativePositionFromJSON","AbsolutePosition","createAbsolutePosition","createRelativePosition","typeid","createRelativePositionFromTypeIndex","createAbsolutePositionFromRelativePosition","followUndoneDeletions","rightID","typeID","followRedone","ContentType","compareRelativePositions","isVisible","snapshot","splitSnapshotAffectedStructs","getItemCleanStart","_item","lastStruct","addStruct","findIndexCleanStart","getItemCleanEnd","replaceStruct","newStruct","clockStart","Transaction$1","local","writeUpdateMessageFromTransaction","map.any","addChangedTypeToTransaction","parentSub","tryToMergeWithLefts","tryGcDeleteSet","deleteItems","di","deleteItem","endDeleteItemClock","si","tryMergeDeleteSet","mostRightIndexToCheck","cleanupTransactions","transactionCleanups","mergeStructs","itemtype","event1","event2","cleanupYTextAfterTransaction","beforeClock","firstChangePos","replacedStructPos","logging.print","logging.ORANGE","logging.BOLD","logging.UNBOLD","logging.RED","subdocsAdded","subdocsLoaded","subdocsRemoved","initialCall","Transaction","finishCleanup","StackItem","deletions","insertions","clearUndoManagerStackItem","tr","um","stackItem","keepItem","popStackItem","undoManager","eventType","_tr","scope","itemsToRedo","itemsToDelete","performedChange","redoItem","subProps","changedParentTypes","UndoManager","typeScope","captureTimeout","captureTransaction","deleteFilter","trackedOrigins","ignoreRemoteMapChanges","undoing","redoing","endClock","startClock","time.getUnixTime","didAdd","lastOp","changeEvent","ytypes","ytype","yt","logging.warn","clearUndoStack","clearRedoStack","lazyStructReaderGenerator","LazyStructReader","filterSkips","LazyStructWriter","sliceStruct","leftItem","YEncoder","updateDecoders","lazyStructDecoders","currWrite","updateEncoder","lazyStructEncoder","dec1","dec2","clockDiff","currDecoder","firstClient","iterated","writeStructToLazyStructWriter","finishLazyStructWriting","lazyStructWriter","currClient","svClock","flushLazyStructWriter","lazyWriter","restEncoder","partStructs","convertUpdateFormat","blockTransformer","updateDecoder","lazyDecoder","f.id","errorComputeChanges","YEvent","getPathTo","oldValue","array.last","changes","added","packOp","maxSearchMarker","globalSearchMarkerTimestamp","ArraySearchMarker","refreshMarkerTimestamp","overwriteMarker","markPosition","searchMarker","pm","findMarker","yarray","pindex","updateMarkerChanges","callTypeObservers","changedType","error.methodUnimplemented","_encoder","_parentSubs","typeListSlice","cs","typeListToArray","typeListForEach","typeListMap","typeListCreateIterator","currentContent","currentContentIndex","typeListGet","typeListInsertGenericsAfter","referenceItem","ownClientId","jsonContent","packJsonContent","ContentAny","ContentBinary","ContentDoc","lengthExceeded","typeListInsertGenerics","startIndex","typeListPushGenerics","maxMarker","currMarker","typeListDelete","startLength","typeMapDelete","typeMapSet","typeMapGet","typeMapGetAll","typeMapHas","typeMapGetAllSnapshot","createMapIterator","iterator.iteratorFilter","YArrayEvent","parentSubs","YArrayRefID","readYArray","_decoder","YMapEvent","ymap","iterator.iteratorMap","YMapRefID","readYMap","equalAttrs","object.equalFlat","ItemTextListPosition","currentAttributes","ContentFormat","updateCurrentAttributes","findNextPosition","findPosition","useSearchMarker","insertNegatedAttributes","currPos","negatedAttributes","nextFormat","minimizeAttributeChanges","insertAttributes","currentVal","insertText","_val","ContentString","ContentEmbed","formatText","iterationLoop","newlines","cleanupFormattingGap","startAttributes","currAttributes","endFormats","cf","cleanups","reachedCurr","startAttrValue","cleanupContextlessFormattingGap","cleanupYTextFormatting","map.copy","needFullCleanup","afterClock","yText","deleteText","startAttrs","YTextEvent","ytext","sub","oldAttributes","retain","deleteLen","addOp","op","object.isEmpty","object.assign","curVal","sanitize","ins","prevSnapshot","computeYChange","ops","packStr","addAttributes","computeDelta","cur","attributeValue","YTextRefID","readYText","YXmlTreeWalker","query","YXmlEvent","xml","_document","hooks","xmlType","refItem","pc","YXmlFragmentRefID","readYXmlFragment","nodeName","object.forEach","stringBuilder","keysLen","attrsString","yxml","YXmlElementRefID","readYXmlElement","YXmlHook","hookName","hook","YXmlHookRefID","readYXmlHook","YXmlText","nestedNodes","YXmlTextRefID","readYXmlText","AbstractStruct","encodingRef","structGCRefNumber","readContentBinary","ContentDeleted","readContentDeleted","createDocFromOpts","readContentDoc","readContentEmbed","_offset","_right","_transaction","readContentFormat","ContentJSON","readContentJSON","readContentAny","firstCharCode","readContentString","typeRefs","readContentType","nextID","keep","rightItem","isDeletedByUndoStack","array.some","redoitems","ownClientID","redone","parentItem","parentType","leftTrace","rightTrace","nextClock","nextId","redoneItem","rightOrigin","binary.BIT2","isMarked","binary.BIT4","binary.BIT1","doKeep","binary.BIT3","doDelete","conflictingItems","itemsBeforeOrigin","parentGCd","ykey","contentRefs","structSkipRefNumber","glo","importIdentifier","rtop","openDB","initDB","deleteDB","createStores","definitions","access","getStore","put","addAutoKey","getAll","queryFirst","iterateKeys","getLastKey","iterateOnRequest","keyrange","createIDBKeyRangeUpperBound","upper","upperOpen","createIDBKeyRangeLowerBound","lower","lowerOpen","customStoreName","updatesStoreName","PREFERRED_TRIM_SIZE","fetchUpdates","idbPersistence","beforeApplyUpdatesCallback","afterApplyUpdatesCallback","updatesStore","idb.transact","idb.getAll","idb.createIDBKeyRangeLowerBound","Y.transact","Y.applyUpdate","idb.getLastKey","lastKey","idb.count","cnt","storeState","forceStore","idb.addAutoKey","Y.encodeStateAsUpdate","idb.del","idb.createIDBKeyRangeUpperBound","IndexeddbPersistence","Observable","idb.openDB","idb.createStores","idb.deleteDB","custom","idb.get","idb.put","AuthMessageType","writeAuthentication","readAuthMessage","permissionDeniedHandler","authenticatedHandler","MessageTooBig","Unauthorized","Forbidden","awarenessStatesToArray","states","WsReadyStates","applyDefaults","defaultCalculateDelay","attemptFunc","attemptOptions","calculateDelay","makeAttempt","initialDelay","create$2","create$1","fromCharCode","onChange","offChange","equalityStrict","equalityDeep","isBrowser","peekVarString","createUint8ArrayViewFromArrayBuffer","byteOffset","createUint8ArrayFromArrayBuffer","toBase64Browser","toBase64Node","fromBase64Browser","fromBase64Node","toBase64","fromBase64","channels","LocalStoragePolyfill","room","BC","getChannel","bc","unsubscribed","publish","createMutex","outdatedTimeout","Awareness","removeAwarenessStates","clientID","currLocalMeta","prevState","updated","filteredUpdated","removed","awareness","clients","curMeta","encodeAwarenessUpdate","applyAwarenessUpdate","clientMeta","currClock","EventEmitter","encodeQueryParams","MessageType","WebSocketStatus","IncomingMessage","HocuspocusProviderWebsocket","configuration","provider","connectPromise","abortableRetry","cancelAttempt","retryPromise","cancelFunc","ws","identifier","onMessageHandler","onCloseHandler","onOpenHandler","onErrorHandler","documentName","encodedParams","messageYjsSyncStep1","messageYjsSyncStep2","messageYjsUpdate","writeSyncStep1","Y.encodeStateVector","writeSyncStep2","encodedStateVector","readSyncStep1","readSyncStep2","writeUpdate","readUpdate","readSyncMessage","messageType","OutgoingMessage","MessageReceiver","emitSynced","emptyMessageLength","syncMessageType","applied","MessageSender","Message","webSocket","AuthenticationMessage","AwarenessMessage","awarenessUpdate","CloseMessage","QueryAwarenessMessage","StatelessMessage","SyncStepOneMessage","SyncStepTwoMessage","UpdateMessage","AwarenessError","HocuspocusProvider","Y.Doc","websocketProviderConfig","changedClients","broadcast","messageSender","Text$1","clip","TextNode","RawTextCursor","skip","dir","PartialTextCursor","inner","LineCursor","TextLeaf","textLength","isLine","Line","sliceText","appendText","newLen","lineSep","endLine","childOpen","totalLines","iA","iB","eA","eB","chA","chB","ch","flat","maxChunk","minChunk","chunked","currentLines","currentLen","currentChunk","add","offsetValue","lineBreak","isExtendingChar","isRegionalIndicator","ZWJ","findClusterBreak","forward","includeExtending","nextClusterBreak","prevClusterBreak","surrogateLow","surrogateHigh","codePointAt","codePointSize","countBefore","code0","code1","fromCodePoint","DefaultSplit","MapMode","ChangeDesc","sections","posA","posB","individual","iterChanges","composeSets","before","mapSet","endA","ChangeSet","fromA","toA","fromB","_toB","ranges","resultSections","resultInserted","filteredSections","iter","SectionIter","addSection","addInsert","process","spec","insText","insLen","forceJoin","endB","setA","setB","mkSet","piece","sectionLen","insB","SelectionRange","level","change","EditorSelection","includeAssoc","mainIndex","which","bidiLevel","goalColumn","checkSelection","selection","docLength","Facet","compareInput","compare","isStatic","enables","sameArray","FacetProvider","deps","facet","addresses","multi","depDoc","depSel","depAddrs","dep","ensureAll","newVal","compareArray","oldState","oldAddr","oldVal","getAddr","StateField","addrs","addr","ensureAddr","dynamicFacetSlot","providers","providerAddrs","providerTypes","dynamic","depChanged","oldProviders","initField","createF","updateF","compareF","Prec_","prec","ext","PrecExtension","Prec","Compartment","CompartmentInstance","compartment","Configuration","base","compartments","dynamicSlots","address","staticValues","facets","newCompartments","flatten","oldFacets","extension","known","languageData","allowMultipleSelections","lineSeparator","changeFilter","transactionFilter","transactionExtender","readOnly","Annotation","AnnotationType","StateEffectType","StateEffect","startState","annotations","scrollIntoView","ann","joinRanges","mergeTransaction","sequential","mapForA","mapForB","resolveTransactionInner","docSize","sel","asArray","resolveTransaction","specs","seq","extendTransaction","filterTransaction","back","filtered","filters","extenders","none","CharCategory","nonASCIISingleCaseWordChar","wordChar","hasWordChar","makeCategorizer","wordChars","EditorState","computeSlot","conf","startValues","result1","newChanges","newMapped","mapBy","fieldInit","phrase","side","at","cat","kA","kB","combineConfig","configs","RangeValue","Range","Range$1","cmpRange","Chunk","maxPoint","startAt","newPos","curFrom","curTo","newFrom","newTo","RangeSet","chunkPos","nextLayer","updateSpec","filterFrom","filterTo","LayerCursor","spill","RangeSetBuilder","chunks","HeapCursor","sets","oldSets","newSets","textDiff","comparator","minPointSize","sharedChunks","findSharedChunks","sideA","SpanCursor","sideB","sameValues","openRanges","openCount","lazySort","newArrays","inA","shared","minPoint","rank","rangeIndex","heap","heapBubble","childIndex","findMinIndex","trackOpen","wasPoint","nextVal","startA","startB","dPos","clipEnd","foundPos","countColumn","tabSize","findColumn","strict","COUNT","SET","StyleModule","splitSelector","selectors","isKeyframes","isAt","modules","nonce","StyleSet","adoptedSet","win","adopted","sheet","mod","shift","mac","keyName","ignoreKey","getSelection","contains","hasSelection","clientRectsFor","textRange","isEquivalentPosition","targetNode","targetOff","scanFor","domIndex","isBlockElement","maxOffset","flattenRect","windowRect","vp","getScale","elt","scrollRectIntoView","xMargin","yMargin","ltr","bounding","moveX","moveY","rectHeight","boundingHeight","movedX","movedY","scrollableParents","DOMSelectionState","domSel","anchorNode","focusNode","anchorOffset","focusOffset","preventScrollSupported","focusPreventScroll","scratchRange","dispatchKey","mods","down","up","getRoot","clearAttributes","atElementStart","isScrolledToBottom","textNodeBefore","startNode","startOffset","textNodeAfter","DOMPos","precise","noChildren","ContentView","track","contentView","rm$1","_dom","bias","fromI","toI","toEnd","prevEnd","andParent","childList","_rec","ChildCursor","hasStart","openStart","openEnd","replaceRange","fromOff","toOff","breakAtStart","breakAtEnd","mergeChildrenInto","dLen","nav","ie_edge","ie_upto10","ie_11up","gecko","chrome","webkit","safari","ios","MaxJoinLen","TextView","textDOM","_from","_to","textCoords","MarkView","mark","_hasStart","detachFrom","inlineDOMAtPos","coordsInChildren","rects","WidgetView","widget","fromBack","WidgetBufferView","joinInlineInto","beforePos","afterPos","scan","fallbackRect","combineAttrs","noAttrs","attrsEq","ignore","keysA","keysB","updateAttrs","getAttrs","WidgetType","BlockType","Decoration","startSide","endSide","MarkDecoration","PointDecoration","getInclusive","LineDecoration","of","isReplace","widgetsEq","addRange","margin","LineView","deco","cls","hack","totalWidth","textHeight","heightOracle","dist","docView","BlockWidgetView","_takeDeco","BlockGapWidget","ContentBuilder","disallowBlockEffectsFor","wrapMarks","take","NullWidget","cursorBefore","cursorAfter","decorations","dynamicDecorationMap","Direction","LTR","RTL","LowTypes","ArabicTypes","Brackets","BracketStack","charType","BidiRE","BidiSpan","maybe","span","isolatesEq","types","computeCharTypes","rFrom","rTo","isolates","outerType","iI","prevType","prevStrong","processBracketPairs","oppositeType","sI","br","sJ","processNeutrals","beforeL","afterL","jI","fromJ","emitSpans","baseLevel","ourType","iCh","sameDir","isNum","recurse","localLevel","iScan","iso","upto","dirSwap","computeSectionOrder","computeOrder","trivialOrder","movedOver","moveVisually","spanI","spanEnd","nextI","nextIndex","nextSpan","autoDirection","clickAddsSelectionRange","dragMovesSelection$1","mouseSelectionStyle","exceptionSink","updateListener","inputHandler","focusChangeEffect","clipboardInputFilter","clipboardOutputFilter","perLineTextDirection","nativeSelectionHidden","scrollHandler","ScrollTarget","isSnapshot","setEditContextFormatting","logException","nextPluginID","viewPlugin","ViewPlugin","domEventHandlers","domEventObservers","buildExtensions","eventHandlers","eventObservers","provide","pluginInst","PluginInstance","editorAttributes","contentAttributes","outerDecorations","atomicRanges","bidiIsolatedRanges","getIsolatedRanges","fromDoc","toDoc","scrollMargins","getScrollMargins","styleModule","ChangedRange","toB","me","dI","rI","ViewUpdate","transactions","changedRanges","DocView","readCompositionAt","touchesComposition","composition","findCompositionRange","prevDeco","decoDiff","findChangedDeco","oldLength","cView","gaps","compLine","fix","mustRead","fromPointer","activeElt","focused","selectionNotFocus","betweenUneditable","inUneditable","rawSel","nextTo","nextToUneditable","lineStart","newRange","domView","best","bestPos","childOff","viewport","contentWidth","isWider","widest","measure","lineHeight","charWidth","vs","allDeco","dynamicOuter","outerDeco","margins","offsetWidth","offsetHeight","findCompositionNode","headPos","textBefore","textAfter","textNode","descAfter","descBefore","inv","marks","parentView","DecorationComparator$1","comp","inside","touched","groupAt","categorize","linePos","getdx","getdy","yOverlap","upTop","upBot","domPosAtCoords","closestRect","closestX","closestY","closestOverlap","above","below","aboveRect","belowRect","domPosInText","clipX","closestOffset","closestDY","generalSide","posAtCoords","docTop","docHeight","yOffset","halfLine","bounced","posAtCoordsImprecise","isSuspiciousSafariCaretResult","isSuspiciousChromeCaretResult","contentRect","into","blockAt","moveToLineBoundary","includeWrap","editorRect","moveByChar","by","spans","check","byGroup","nextCat","moveVertically","distance","startPos","goal","startCoords","resolvedGoal","curY","charRect","skipAtomicRanges","atoms","skipAtoms","oldPos","LineBreakPlaceholder","DOMReader","points","oldLen","nextView","point","re","nextBreak","breakSize","fromView","isAtEnd","DOMPoint","DOMChange","typeOver","iHead","iAnchor","selPoints","selectionPoints","selectionFromPoints","offFrom","offTo","applyDOMChange","domChange","newSel","preferredPos","preferredSide","findDiff","applyDOMChangeInner","userEvent","defaultTr","defaultInsert","applyDefaultInsert","mainSel","replaced","compositionRange","rangeChanges","selOff","minLen","adjust","move","InputState","firefoxCopyCutHack","eventBelongsToEditor","computeHandlers","exists","modifierCodes","PendingKeys","EmacsyPendingKeys","mouseSelection","bindHandler","record","dragScrollMargin","dragScrollSpeed","MouseSelection","startEvent","mustSelect","addsSelectionRange","isInPrimarySelection","getClickType","dragMovesSelection","brokenClipboardAPI","capturePaste","doPaste","textFilter","byLine","lastLinewiseCopy","lastLine","makeStyle","basicMouseSelection","mustFocus","mouseSel","rangeForClick","visual","findPositionSide","queryPos","BadMouseDetail","lastMouseDown","lastMouseDownCount","lastMouseDownTime","lastTime","startSel","multiple","startRange","removeRangeAround","inputState","dropText","direct","dropPos","draggedContent","files","read","finishFile","captureCopy","copiedRange","linewise","isFocusChange","focusChangeTransaction","focus","getEffect","updateForFocusChange","startViewHeight","appliedFirefoxHack","wrappingWhiteSpace","heightChangeFlag","clearHeightChangeFlag","HeightOracle","lineWrapping","whiteSpace","lineHeights","newHeight","lineLength","knownHeights","MeasuredHeights","heights","BlockInfo","_content","QueryType","Epsilon","HeightMap","oldDoc","oracle","NodeBuilder","HeightMapText","split","brk","HeightMapBranch","old","HeightMapBlock","_height","_oracle","_type","_force","measured","HeightMapGap","firstLine","perLine","perChar","totalPerLine","guess","lineTop","linesAbove","singleHeight","rightTop","rightOffset","subQuery","rightStart","mergeGaps","rebalance","around","relevantWidgetHeight","breaks","gap","heightRelevantDecoChanges","DecorationComparator","visiblePixelRange","paddingTop","parentRect","fullPixelRange","LineGap","displaySize","gA","gB","viewState","wrapping","LineGapWidget","ViewState","IdScaler","guessWrapping","viewports","Viewport","scaler","BigScaler","scaleBlock","scrollTarget","contentChanges","heightChanges","prevHeight","scrollAnchor","viewportChange","refresh","domRect","measureContent","paddingBottom","scrollTop","pixelViewport","dTop","dBottom","inView","marginTop","visibleTop","visibleBottom","viewHeight","topPos","mayMeasure","halfMargin","doubleMargin","addGap","structure","avoid","checkLine","lineStructure","viewFrom","viewTo","marginHeight","bot","targetFrac","findFraction","spaceFrac","marginWidth","horizOffset","pxLeft","pxRight","fraction","stateDeco","ratio","counted","heightMap","vpHeight","domBase","bTop","bBottom","theme","strs","darkTheme","baseThemeID","baseLightID","baseDarkID","lightDarkIDs","buildTheme","scopes","baseTheme$1","observeOptions","useCharData","DOMObserver","mutations","mut","EditContextManager","wasChanged","safariSelectionRangeHack","keyCode","records","readSelection","handled","rec","childBefore","findChild","childAfter","curView","buildSelectionRangeFromRange","curAnchor","lineStyle","thickness","_fromB","reverted","contextPos","editorPos","EditorView","dispatch","trs","redrawn","attrsChanged","focusFlag","dispatchFocus","pendingKey","CachedOrder","newState","hadFocus","prevSpecs","newPlugins","sDOM","scrollAnchorPos","scrollAnchorHeight","measuring","BadMeasure","editorAttrs","attrsFromFacet","contentAttrs","changedContent","changedEditor","MaxBidiLine","scrollLeft","fresh","lastDir","currentPlatform","normalizeKeyName","alt","ctrl","modifiers","handleKeyEvents","runHandlers","getKeymap","keymap","Keymaps","bindings","buildKeymap","runScopeHandlers","storedPrefix","PrefixTimeout","isPrefix","checkPrefix","is","stopPropagation","scopeObj","ourObj","full","currentKeyEvent","charCode","isChar","prevented","ran","runFor","cmd","baseName","shiftName","RectangleMarker","getBase","rectanglesForRange","wrappedLine","lineElt","leftSide","rightSide","startBlock","endBlock","visualStart","visualEnd","pieces","drawForLine","drawForWidget","between","horizontal","addSpan","fromOpen","toOpen","fromCoords","toCoords","endPos","docLine","spanFrom","spanTo","sameMarker","LayerView","layerOrder","markers","oldI","CanHidePrimary","selectionConfig","drawSelection","cursorLayer","selectionLayer","hideNativeSelection","configChanged","cursors","prim","confChange","setBlinkRate","themeSpec","setDropCursorPos","dropCursorPos","drawDropCursor","cursorPos","dropCursor","iterMatches","matchRanges","maxLength","MatchDecorator","decoration","decorate","boundary","_view","changeFrom","changeTo","_t","updateFrom","updateTo","fromLine","toLine","UnicodeRegexpSupport","Specials","Names","_supportsTabSize","supportsTabSize","specialCharConfig","highlightSpecialChars","specialCharPlugin","_plugin","TabWidget","SpecialCharWidget","DefaultPlaceholder","placeholder$1","ph","Outside","TooltipViewManager","createTooltipView","removeTooltipView","tooltips","tooltipViews","newAbove","tip","tooltipView","windowSpace","tooltipConfig","knownHeight","tooltipPlugin","showTooltip","tooltip","shouldMeasure","arrow","editor","makeAbsolute","tv","space","others","tView","arrowHeight","noOffset","spaceVert","arrowLeft","baseTheme","getTooltip","panelConfig","topContainer","bottomContainer","getPanel","panel","panelPlugin","showPanel","PanelGroup","panels","curDOM","rm","GutterMarker","gutterLineClass","gutterWidgetClass","activeGutters","unfixGutters","gutters","gutterView","SingleGutterView","gutter","vpA","vpB","vpOverlap","detach","lineClasses","classSet","contexts","UpdateContext","advanceCursor","cx","collect","newElt","GutterElement","extraMarkers","localMarkers","forLine","prevMarkers","sameMarkers","domPos","iNew","iOld","skipTo","matched","lineNumberMarkers","lineNumberWidgetMarker","lineNumberConfig","NumberMarker","formatNumber","lineNumberGutter","maxLineNumber","lineNumbers","activeLineGutterMarker","activeLineGutterHighlighter","highlightActiveLineGutter","YRange","yanchor","yhead","Y.relativePositionToJSON","Y.createRelativePositionFromJSON","YSyncConfig","Y.UndoManager","Y.createRelativePositionFromTypeIndex","Y.createAbsolutePositionFromRelativePosition","yrange","cmState.EditorSelection","ySyncFacet","cmState.Facet","ySyncAnnotation","cmState.Annotation","YSyncPluginValue","adj","ySync","cmView.ViewPlugin","yRemoteSelectionsTheme","cmView.EditorView","yRemoteSelectionsAnnotation","YRemoteCaretWidget","cmView.WidgetType","dom.element","dom.text","YRemoteSelectionsPluginValue","cmState.RangeSet","localAwarenessState","hasFocus","currentAnchor","currentHead","Y.compareRelativePositions","colorLight","startLine","cmView.Decoration","yRemoteSelections","YUndoManagerConfig","yUndoManagerFacet","YUndoManagerPluginValue","yUndoManager","yCollab","ySyncConfig","initialize_document","Y.applyUpdateV2","decode_hex_to_bytes","text_files","update_document","byte","is_local_synced","is_remote_synced","undo_manager","is_yjs_update","update_presence","current_user","hp_token","observe_doc","persist_project","users","previous_json","new_project","new_json","current_has_run","is_running_initiated","is_now_running","div_style","$page","toggle_theme","$$_import_preferences","shortcuts_modal","mod_key","active_element","fork_project","$form","DEFAULT_TAGS","is_meta_tags_called","meta_tags","$is_meta_tags_called","page_title","$tags","meta_content","meta_3_content","meta_6_content","meta_7_content","meta_8_content","cubic_out","split_css_unit","fly","easing","opacity","target_opacity","od","x_value","x_unit","y_value","y_unit","cubicOut","flip","ox","oy","flash_messages","notify","old_value","append_messages","flash","is_mounted","MESSAGE_TIMEOUT_MS","remove_message","$.store_set","$flash_messages","$.out","show","project_to_delete","modal","is_deleting","delete_project","form_1_action","projects","delete_project_modal","show_modal","fetch_projects","copy_to_clipboard","copy_to_clipboard_fallback","handle_submit","project_url","$.bind_group","input_3","button_2","experience","is_publishing","fetch_experience","handle_update","publishing_form","handle_publish","$publishing_form","format_datetime","experience_url","form_2_action","form_2","form_3","$project_store","can_undo","can_redo","sync_undo_manager","create_download","title","link","download_svg","project_store","is_submitting","register_user","sign_in","is_signing_up","$.document","$.html","img_alt","commonjsGlobal","getDefaultExportFromCjs","getAugmentedNamespace","browser$1","util$1","UNKNOWN_FUNCTION","stackString","parseResult","parseChrome","parseWinjs","parseGecko","parseNode","parseJSC","chromeRe","chromeEvalRe","isNative","isEval","submatch","winjsRe","geckoRe","geckoEvalRe","javaScriptCoreRe","nodeRe","stackTraceParser_esm","require$$0$1","__createBinding","k2","__setModuleDefault","__importStar","__awaiter","_arguments","generator","adopt","__generator","verb","stackTraceParser","obj1","obj2","mergeNotice","notice1","notice2","objectIsEmpty","objectIsExtensible","makeBacktrace","filterHbSourceCode","logger","backtrace","calculateBacktraceShift","isFrameFromHbSourceCode","hasHbFile","hasHbMethod","nextFrame","getCauses","notice","causes","cause","getSourceForBacktrace","getSourceFileHandler","trace","fileContent","getSourceCodeSnippet","runBeforeNotifyHandlers","handlerResult","runAfterNotifyHandlers","shallowClone","seenObjects","canSerialize","typeOfObj","safeSerialize","makeNotice","isErrorObject","instrument","replacement","original","_consoleAlreadyInstrumented","listeners","instrumentConsole","_window","endpoint","generateStackTrace","maxStackSize","filterMatch","filterUrl","formatCGIData","vars","formattedVars","formattedKey","fileData","lineNumber","sourceRadius","isBrowserConfig","globalThisOrWindow","_deprecatedMethodCalls","logDeprecatedMethod","oldMethod","newMethod","callCountThreshold","msg","util_1$4","default_1$4","sendEventsToInsights","util_1$3","GlobalStore","contents","breadcrumbsLimit","breadcrumb","throttled_events_logger","NdJson","__assign$2","__awaiter$2","__generator$2","json_nd_1","util_1$2","defaults_1$1","ThrottledEventsLogger","transport","eventsData","_e","__assign$1","__awaiter$1","__generator$1","util_1$1","store_1","throttled_events_logger_1","defaults_1","TAG_SEPARATOR","NOT_BLANK","Client","notifier","pluginsToLoad","noticeable","sourceCodeData","preConditionsResult","_err","applyAfterNotify","partialNotice","originalAfterNotify","objectToOverride","noticeTags","contextTags","configTags","uniqueTags","category","cgiData","preConditionError","beforeNotifyResult","originalBacktrace","sourcePerTrace","uuid","__exportStar","__importDefault","events_1","client_1","util","core_1$7","globalThisOrWindow$7","stringNameOfElement","stringClassNames","attrName","siblings","getSiblings","stringSelectorOfElement","parentName","stringTextOfElement","truncate","nativeFetch","sandbox","parseURL","localURLPathname","parsedDocURL","decodeCookie","encodeCookie","siblings_1","preferCatch","onerror","core_1$6","instrument$4","globalThisOrWindow$6","ignoreOnError","currentTimeout","ignoreNextOnError","onunhandledrejection","core_1$5","instrument$3","globalThisOrWindow$5","default_1$3","promiseRejectionEvent","fileName","stackFallback","breadcrumbs","core_1$4","util_1","sanitize$1","instrument$2","globalThisOrWindow$4","default_1$2","breadcrumbsEnabled","inspectArray","xhr","rawUrl","onreadystatechangeHandler","lastHref","recordUrlChange","historyWrapper","timers","core_1$3","instrument$1","globalThisOrWindow$3","default_1$1","instrumentTimer","wrapOpts","args_1","event_listeners","core_1$2","globalThisOrWindow$2","default_1","useCapture","wantsUntrusted","core_1$1","globalThisOrWindow$1","objectEntries","BrowserTransport","headerArray","requestInit","feedbackForm","__assign","core_1","BrowserFeedbackForm","scriptUrl","lastNoticeId","feedbackScriptUrl","__extends","extendStatics","__","onerror_1","onunhandledrejection_1","breadcrumbs_1","timers_1","event_listeners_1","transport_1","feedback_form_1","getProjectRoot","projectRoot","getUserFeedbackScriptUrl","majorMinorVersion","Honeybadger","_super","_error","_id","cookiesObject","NOTIFIER","singleton","core_2","Y","de","he","fe","ve","pe","ge","ye","be","ke","we","Se","Ee","xe","Ie","Pe","Re","Ce","Te","$e","Oe","Me","Ae","Le","De","Ne","qe","Be","He","Ue","je","We","ze","Ve","Ge","Qe","Je","Ke","Ye","Xe","Ze","et","tt","nt","it","rt","st","ot","ut","lt","ct","dt","ht","ft","vt","pt","gt","mt","bt","kt","wt","St","Et","xt","It","Ft","Pt","Rt","Ct","Tt","$t","Ot","Mt","At","Lt","Dt","Nt","qt","Bt","Ht","Ut","jt","Wt","zt","Vt","Gt","Qt","Jt","Yt","Xt","Kt","Zt","en","tn","nn","rn","sn","an","un","ln","cn","dn","hn","vn","pn","gn","_n","mn","yn","bn","kn","wn","Sn","En","xn","In","Fn","Pn","Rn","Gn","Cn","qn","Bn","Mn","Tn","$n","On","An","Ln","Dn","Nn","Hn","Un","jn","Wn","zn","Vn","Qn","Jn","Yn","Xn","Kn","Zn","ei","ti","ni","ii","ri","oi","ai","ui","li","ci","fi","vi","pi","gi","mi","yi","bi","ki","wi","Si","Ei","xi","Ii","Fi","Pi","Ri","Ci","Ti","$i","Oi","Mi","Ai","Li","Di","Ni","Bi","Hi","Ui","ji","Wi","zi","Vi","Gi","Qi","Ji","Yi","Xi","Ki","Zi","er","nr","ir","rr","sr","or","ar","ur","lr","cr","dr","hr","fr","vr","pr","gr","_r","mr","yr","kr","wr","Sr","Er","xr","Ir","Fr","Pr","Rr","Cr","Tr","$r","Or","Mr","Ar","Lr","Dr","Nr","qr","Br","Hr","Ur","jr","Wr","zr","Vr","Gr","Qr","Jr","Yr","Xr","Kr","Zr","es","ts","rs","os","us","hs","posthog","BaseLayout","DefaultBufferLength","nextPropID","NodeProp","NodeType","MountedTree","tree","overlay","noProps","NodeSet","newTypes","newProps","CachedNode","CachedInnerNode","IterMode","Tree","TreeCursor","TreeNode","resolveNode","stackIterator","enter","leave","anon","entered","balanceRange","buildTree","FlatBufferCursor","TreeBuffer","endIndex","checkSide","startI","endI","overlays","BaseNode","getChildren","matchNodeContext","_tree","_parent","BufferNode","BufferContext","hasChild","rPos","parentStart","iterStack","heads","picked","newHeads","StackIterator","mustLeave","nodeSet","maxBufferLength","reused","minRepeatType","contextHash","lookAhead","takeNode","minPos","inRepeat","lookAheadAtStart","findBufferSize","copyToBuffer","localChildren","localPositions","localInRepeat","lastGroup","lastEnd","makeRepeatLeaf","takeFlatNode","make","makeBalanced","makeTree","nodeCount","stopAt","lastI","lookAheadProp","maxSize","fork","minStart","nodeSize","localSkipped","nodeStart","bufferStart","nodeSizeCache","balanceType","mkTop","mkTree","maxChild","divide","groupFrom","groupStart","groupSize","nextSize","NodeWeakMap","TreeFragment","fragments","partial","minGap","fI","nextF","cI","nextC","nextPos","cut","fFrom","fTo","Parser","StringInput","reducePos","score","bufferBase","curContext","StackContext","lookaheadRecord","dPrec","baseStateID","term","mustSink","mustMove","nextState","nextStart","nextEnd","sim","SimulatedStack","nextStates","reduce","backup","explore","rDepth","dialectID","newCx","tracker","goto","StackBufferCursor","decodeArray","Type","digit","CachedToken","nullToken","InputStream","endOffset","nextChunk","TokenGroup","readToken","LocalTokenGroup","precTable","elseToken","skipped","atEof","ExternalTokenizer","precOffset","groupMask","dialect","accEnd","overrides","low","high","findOffset","tableData","tableOffset","iPrev","verbose","stackIDs","cutAt","FragmentCursor","TokenCache","actionIndex","tokenizers","mask","tokenizer","Parse","stacks","newStacks","stopped","stoppedTokens","tok","finished","findFinished","maxRemaining","strictCx","cxHash","cached","defaultReduce","actions","localStack","pushStackDedup","restarted","tokenEnd","forceBase","Dialect","disabled","ContextTracker","LRParser","nodeNames","topTerms","nodeProps","setProp","nodeID","propSpec","tokenArray","getSpecializer","table","groupTag","terminal","flag","deflt","nextTagID","Tag","nameOrParent","Modifier","nextModifierID","powerSet","styleTags","byName","rule","Rule","ruleNodeProp","tagHighlighter","tagClass","highlightTags","highlighters","highlighter","highlightTree","putStyle","HighlightBuilder","inheritedClass","getStyleTags","tagCls","innerHighlighters","rangeFrom","rangeTo","typeName","propertyName","literal","heading","keyword","operator","punctuation","bracket","classHighlighter","noSemi","incdec","incdecPrefix","questionDot","JSXStartTag","insertSemi","spaces","newline","LineComment","BlockComment","Dialect_jsx","braceR","semicolon","slash","star","plus","minus","comma","question","dot","trackNewline","insertSemicolon","noSemicolon","operatorToken","mayPostfix","identifierChar","jsx","jsHighlight","spec_identifier","spec_word","spec_LessThan","languageDataProp","defineLanguageFacet","baseData","sublanguageProp","Language","extraExtensions","syntaxTree","language","topNodeAt","innerNode","sublang","lang","topLang","LRLanguage","DocInput","stringStart","currentContext","ParseContext","treeLen","scheduleOn","until","endTime","cutFragments","startLen","frags","LanguageState","vpTo","parseState","requestIdle","idle","isInputPending","parseWorker","deadline","viewportFirst","languages","LanguageSupport","indentService","indentUnit","unit","getIndentUnit","indentString","cols","getIndentation","IndentContext","service","syntaxIndentation","simulateBreak","simulateDoubleBreak","override","overriden","indentNodeProp","ast","indentFor","strategy","indentStrategy","TreeIndentContext","ignoreClosed","closed","delimitedStrategy","topIndent","atBreak","isParent","bracketedAligned","openToken","openLine","lineEnd","delimitedIndent","closing","units","closedAt","aligned","flatIndent","continuedIndent","matchExcept","DontIndentBeyond","indentOnInput","rules","norm","foldService","foldNodeProp","foldInside","syntaxFolding","isUnfinished","foldable","mapRange","foldEffect","unfoldEffect","selectedLines","foldState","folded","foldExists","preparePlaceholder","foldConfig","PreparedFoldWidget","foldWidget","onSelection","findFold","maybeEnable","codeFolding","foldCode","announceFold","unfoldCode","fold","lineFrom","lineTo","foldAll","unfoldAll","foldKeymap","widgetToDOM","prepared","onclick","HighlightStyle","modSpec","def","scopeOpt","highlighterFacet","fallbackHighlighter","getHighlighters","syntaxHighlighting","treeHighlighter","themeType","TreeHighlighter","styleChange","decoratedToMapped","DefaultScanDist","DefaultBrackets","bracketMatchingConfig","defaultRenderMatch","matchingMark","nonmatchingMark","bracketMatchingState","matchBrackets","bracketMatchingUnique","bracketMatching","bracketMatchingHandle","matchingNodes","byProp","findHandle","hasHandle","maxScanDistance","handle","matchMarkedBrackets","matchPlainBrackets","_state","_pos","matching","firstToken","endHandle","tokenType","startCh","startToken","basePos","noTokens","typeArray","warned","byTag","defaultTable","legacyName","createTokenType","warnForPart","tagStr","tags$1","CompletionContext","explicit","expr","ensureAnchor","toSet","prefixMatch","label","completeFromList","validFor","ifNotIn","Option","completion","addStart","addEnd","pickedCompletion","insertCompletionText","SourceCache","asSource","startCompletionEffect","closeCompletionEffect","FuzzyMatcher","byWord","firstSize","anyTo","preciseTo","byWordTo","byWordFolded","adjacentTo","adjacentStart","adjacentEnd","hasLower","wordAdjacent","StrictMatcher","completionConfig","defaultPositionInfo","joinClass","rtl","narrow","maxWidth","spaceLeft","spaceRight","infoWidth","infoHeight","spaceBelow","optionContent","icon","_s","_v","labelElt","detailElt","rangeAroundSelected","selected","CompletionTooltip","stateField","applyCompletion","cState","infoResult","wrap","listRect","infoRect","selRect","ul","curSection","section","completionTooltip","sortOptions","addOption","getMatch","sectionOrder","cmp","CompletionDialog","makeAttrs","selectedValue","createTooltip","CompletionState","ActiveSource","sameResults","setSelectedEffect","baseAttrs","getUpdateType","typing","explicitPos","setActiveEffect","ActiveResult","checkValid","completionState","apply","moveCompletionSelection","acceptCompletion","startCompletion","closeCompletion","RunningQuery","MaxUpdateCount","MinAbortTime","completionPlugin","doesReset","windows","commitCharacters","commitChars","FieldPos","FieldRange","Snippet","fieldPositions","lineObj","tabs","rawName","brace","fieldMarker","fieldRange","ActiveSnippet","setActive","moveToField","snippetState","fieldSelection","snippet","addSnippetKeymap","snippetPointerHandler","moveField","clearSnippet","nextSnippetField","prevSnippetField","defaultSnippetKeymap","snippetKeymap","maps","snippetCompletion","closeBracketEffect","closedBracket","bracketState","closeBrackets","definedClosing","android","insertBracket","deleteBracketPair","dont","prevChar","nextChar","closeBracketsKeymap","handleSame","handleOpen","closedBracketAt","handleClose","closeBefore","_open","allowTriple","stringPrefixes","canStartStringAt","probablyInString","quoteToken","prefixes","maxPrefix","quotePos","charCat","autocompletion","completionKeymapExt","completionKeymap","snippets","typescriptSnippets","ScopeNodes","defID","functionContext","gatherCompletions","getScope","completions","gather","Identifier","dontComplete","localCompletionSource","isWord","javascriptLanguage","isCase","jsxSublanguage","typescriptLanguage","jsxLanguage","tsxLanguage","kwCompletion","keywords","typescriptKeywords","javascript","autoCloseTags","findOpenTag","closeTags","openTag","toggleComment","getConfig","toggleLineComment","toggleBlockCommentByLine","changeLineComment","toggleBlockComment","changeBlockComment","selectedLineRanges","SearchMargin","findBlockComment","spaceBefore","spaceAfter","beforeOff","startText","endText","startSpace","endSpace","endOff","comments","prevLine","minIndent","changeSet","fromHistory","isolateHistory","invertedEffects","historyConfig","isAdjacent","historyField_","HistoryState","fromHist","HistEvent","updateBranch","addSelection","isolate","history","historyState","undoSelection","redoSelection","startSelection","selectionsAfter","selections","branch","maxLen","newEvent","newBranch","eqSelectionShape","conc","MaxSelectionsPerEvent","lastEvent","sels","popSelection","addMappingToBranch","mapEvent","extraSelections","mappedChanges","fullMapping","joinableUserEvent","undone","prevTime","prevUserEvent","newGroupDelay","onlySelection","historyKeymap","updateSel","setSel","moveSel","how","rangeEnd","cursorByChar","ltrAtCursor","cursorCharLeft","cursorCharRight","cursorByGroup","cursorGroupLeft","cursorGroupRight","interestingNode","bracketProp","moveBySyntax","cursorSyntaxLeft","cursorSyntaxRight","cursorByLine","cursorLineUp","cursorLineDown","pageInfo","selfScroll","marginBottom","cursorByPage","scrollRect","scrollBottom","cursorPageUp","cursorPageDown","moveByLineBoundary","cursorLineBoundaryForward","cursorLineBoundaryBackward","cursorLineBoundaryLeft","cursorLineBoundaryRight","cursorLineStart","cursorLineEnd","toMatchingBracket","cursorMatchingBracket","extendSel","selectByChar","selectCharLeft","selectCharRight","selectByGroup","selectGroupLeft","selectGroupRight","selectSyntaxLeft","selectSyntaxRight","selectByLine","selectLineUp","selectLineDown","selectByPage","selectPageUp","selectPageDown","selectLineBoundaryForward","selectLineBoundaryBackward","selectLineBoundaryLeft","selectLineBoundaryRight","selectLineStart","selectLineEnd","cursorDocStart","cursorDocEnd","selectDocStart","selectDocEnd","selectAll","selectLine","selectedLineBlocks","selectParentSyntax","stackBefore","simplifySelection","deleteBy","towards","skipAtomic","deleteByChar","byIndentUnit","targetPos","deleteCharBackward","deleteCharForward","deleteByGroup","deleteGroupBackward","deleteGroupForward","deleteToLineEnd","deleteLineBoundaryBackward","deleteLineBoundaryForward","splitLine","transposeChars","blocks","moveLine","nextLine","moveLineUp","moveLineDown","copyLine","copyLineUp","copyLineDown","deleteLine","isBetweenBrackets","closedBy","insertNewlineAndIndent","newlineAndIndent","insertBlankLine","explode","changeBySelectedLine","atLine","indentSelection","indentMore","indentLess","toggleTabFocusMode","emacsStyleKeymap","standardKeymap","defaultKeymap","indentWithTab","crelt","basicNormalize","SearchCursor","baseFlags","RegExpCursor","MultilineRegExpCursor","toCharEnd","flattened","FlattenedDoc","cachedFrom","validRegExp","createLineDialog","dialogEffect","cl","percent","dialogField","gotoLine","defaultHighlightOptions","highlightConfig","highlightSelectionMatches","defaultTheme","matchHighlighter","matchDeco","mainMatchDeco","insideWordBoundaries","insideWord","selectWord","findNextOccurrence","fullWord","cycled","selectNextOccurrence","searchedText","searchConfigFacet","SearchPanel","SearchQuery","RegExpQuery","StringQuery","regexpCursor","stringCursor","stringWordTest","categorizer","bufPos","charBefore","charAfter","_result","regexpWordTest","setSearchQuery","togglePanel","searchState","SearchState","defaultQuery","createSearchPanel","matchMark","selectedMatchMark","searchHighlighter","searchCommand","openSearchPanel","findNext","announceMatch","selectSearchInput","findPrevious","selectMatches","selectSelectionMatches","replaceNext","replaceAll","announceText","selText","getSearchInput","searchInput","searchExtensions","closeSearchPanel","searchKeymap","AnnounceMargin","Break","custom_commands","extensions","text_editor_el","create_state","codemirror_extensions","MAX_TERMINAL_HISTORY","terminal_el","$.mutate","Terminal","node_2","codemirror_extension","screen_size_notice","$has_run","pages","Layout"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,85,88,112,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,263,264,265,280,281,286,287,288,289,290,291,292,293,294,295]}