{"version":3,"file":"ep-file-reference-group-display-DpL5Tzyu.js","sources":["../../../node_modules/@microsoft/fast-element/dist/esm/platform.js","../../../node_modules/@microsoft/fast-element/dist/esm/dom.js","../../../node_modules/@microsoft/fast-element/dist/esm/observation/notifier.js","../../../node_modules/@microsoft/fast-element/dist/esm/observation/observable.js","../../../node_modules/@microsoft/fast-element/dist/esm/styles/element-styles.js","../../../node_modules/@microsoft/fast-element/dist/esm/components/attributes.js","../../../node_modules/@microsoft/fast-element/dist/esm/components/fast-definitions.js","../../../node_modules/@microsoft/fast-element/dist/esm/components/controller.js","../../../node_modules/@microsoft/fast-element/dist/esm/components/fast-element.js","../../../node_modules/@microsoft/fast-element/dist/esm/styles/css-directive.js","../../../node_modules/@microsoft/fast-foundation/node_modules/tslib/tslib.es6.js","../../../node_modules/@microsoft/fast-web-utilities/dist/localization.js","../../../node_modules/@microsoft/fast-foundation/dist/esm/utilities/composed-parent.js","../../../node_modules/@microsoft/fast-foundation/dist/esm/utilities/composed-contains.js","../../../node_modules/@microsoft/fast-foundation/dist/esm/design-token/custom-property-manager.js","../../../node_modules/@microsoft/fast-foundation/dist/esm/design-token/design-token.js","../../../node_modules/@microsoft/fast-colors/dist/math-utilities.js","../../../node_modules/@microsoft/fast-colors/dist/color-hsl.js","../../../node_modules/@microsoft/fast-colors/dist/color-lab.js","../../../node_modules/@microsoft/fast-colors/dist/color-rgba-64.js","../../../node_modules/@microsoft/fast-colors/dist/color-xyz.js","../../../node_modules/@microsoft/fast-colors/dist/color-converters.js","../../../node_modules/@microsoft/fast-colors/dist/color-blending.js","../../../node_modules/@microsoft/fast-colors/dist/color-interpolation.js","../../../node_modules/@microsoft/fast-colors/dist/parse-color.js","../../../node_modules/@fluentui/web-components/dist/esm/color/utilities/relative-luminance.js","../../../node_modules/@fluentui/web-components/dist/esm/color/swatch.js","../../../node_modules/@fluentui/web-components/dist/esm/color/utilities/binary-search.js","../../../node_modules/@fluentui/web-components/dist/esm/color/utilities/is-dark.js","../../../node_modules/@fluentui/web-components/dist/esm/color/utilities/direction-by-is-dark.js","../../../node_modules/@fluentui/web-components/dist/esm/color/palette.js","../../../node_modules/@fluentui/web-components/dist/esm/color/utilities/color-constants.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/foreground-on-accent.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/gradient-swatch.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/gradient-shadow-stroke.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/underline-stroke.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/contrast-swatch.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/contrast-and-delta-swatch-set.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/delta-swatch.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/delta-swatch-set.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/focus-stroke.js","../../../node_modules/@fluentui/web-components/dist/esm/color/utilities/base-layer-luminance.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/neutral-layer-1.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/neutral-layer-floating.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/neutral-layer-2.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/neutral-layer-3.js","../../../node_modules/@fluentui/web-components/dist/esm/color/recipes/neutral-layer-4.js","../../../node_modules/@fluentui/web-components/dist/esm/utilities/type-ramp.js","../../../node_modules/@fluentui/web-components/dist/esm/design-tokens.js","../src/components/ep-chip.ts","../src/components/ep-contents.ts","../src/components/ep-error-message-list.ts","../src/directives/explicitBooleanAttributeConverter.ts","../src/functions/longestCSSTransition.ts","../src/components/ep-fluent-dialog.ts","../src/components/ep-share-url-button.ts","../src/functions/tuple.ts","../src/components/ep-sliding-pages/positions.ts","../src/shared-assets/arrow_hook_left.svg","../src/components/ep-sliding-pages/ep-sliding-pages.ts","../src/components/ep-status-badge/icons.ts","../src/components/ep-status-badge/ep-status-badge.ts","../../../node_modules/@lit-labs/observers/resize-controller.js","../src/components/ep-segmented-picker.ts","../src/components/ep-nav-list/ep-nav-list.ts","../src/components/ep-nav-list/ep-nav-list-item.ts","../src/components/ep-nav-list/ep-nav-list-header.ts","../src/components/ep-nav-list/ep-nav-list-divider.ts","../src/components/ep-nav-list/ep-nav-list-group.ts","../src/components/ep-nav-list/ep-nav-list-box.ts","../src/components/ep-nav-list/ep-nav-list-search.ts","../src/components/ep-button-group.ts","../../../node_modules/magic-bytes.js/dist/model/toHex.js","../../../node_modules/magic-bytes.js/dist/model/tree.js","../../../node_modules/magic-bytes.js/dist/model/pattern-tree.js","../../../node_modules/magic-bytes.js/dist/index.js","../src/components/ep-blob-downloader.ts","../src/components/form-controls/ep-form-control-checkbox.ts","../src/components/form-controls/ep-form-control-textbox.ts","../src/components/form-controls/ep-masked-input.ts","../src/components/form-controls/ep-select-searchable.ts","../src/components/ep-tooltip.ts","../src/components/ep-text/ep-text-form-label.ts","../src/components/ep-text/ep-text.ts","../src/components/ep-text/ep-code.ts","../src/components/ep-dialog.ts","../src/components/ep-session-disclaimer.ts","../src/components/ep-clipboard-copy.ts","../src/components/ep-button.ts","../src/components/ep-absolute-time.ts","../../../node_modules/pretty-bytes/index.js","../src/components/ep-file-size.ts","../src/components/ep-split-layout.ts","../src/components/ep-timeline-comment/ep-timeline.ts","../src/components/ep-timeline-comment/ep-timeline-item.ts","../src/components/ep-timeline-comment/ep-timeline-comment.ts","../src/components/ep-timeline-comment/ep-timeline-comment-header.ts","../src/components/ep-timeline-comment/ep-timeline-user.ts","../src/components/ep-timeline-comment/ep-timeline-divider.ts","../src/components/ep-avatar.ts","../src/components/ep-event-icon/icons.ts","../src/components/ep-event-icon/ep-event-icon.ts","../src/components/ep-progress-stepper.ts","../src/components/ep-file-chip.ts","../../../node_modules/mustache/mustache.mjs","../src/directives/mustacheTemplateContent.ts","../src/components/ep-file-upload.ts","../src/components/ep-paywall.ts","../src/components/ep-fluent-button.ts","../../../node_modules/sortablejs/modular/sortable.esm.js","../src/components/ep-sortable.ts","../src/shared-assets/database.svg","../src/components/ep-database-button.ts","../src/components/bootstrap-container.ts","../src/directives/converters.ts","../src/components/ep-element-proxy.ts","../src/components/ep-event-proxy.ts","../src/functions/flag.ts","../src/components/ep-flag.ts","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/bounce.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/flash.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/headShake.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/heartBeat.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/jello.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/pulse.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/rubberBand.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/shake.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/shakeX.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/shakeY.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/swing.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/tada.js","../../../node_modules/@shoelace-style/animations/dist/attention_seekers/wobble.js","../../../node_modules/@shoelace-style/animations/dist/back_entrances/backInDown.js","../../../node_modules/@shoelace-style/animations/dist/back_entrances/backInLeft.js","../../../node_modules/@shoelace-style/animations/dist/back_entrances/backInRight.js","../../../node_modules/@shoelace-style/animations/dist/back_entrances/backInUp.js","../../../node_modules/@shoelace-style/animations/dist/back_exits/backOutDown.js","../../../node_modules/@shoelace-style/animations/dist/back_exits/backOutLeft.js","../../../node_modules/@shoelace-style/animations/dist/back_exits/backOutRight.js","../../../node_modules/@shoelace-style/animations/dist/back_exits/backOutUp.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_entrances/bounceIn.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_entrances/bounceInDown.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_entrances/bounceInLeft.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_entrances/bounceInRight.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_entrances/bounceInUp.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_exits/bounceOut.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_exits/bounceOutDown.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_exits/bounceOutLeft.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_exits/bounceOutRight.js","../../../node_modules/@shoelace-style/animations/dist/bouncing_exits/bounceOutUp.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeIn.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInBottomLeft.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInBottomRight.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInDown.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInDownBig.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInLeft.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInLeftBig.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInRight.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInRightBig.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInTopLeft.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInTopRight.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInUp.js","../../../node_modules/@shoelace-style/animations/dist/fading_entrances/fadeInUpBig.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOut.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutBottomLeft.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutBottomRight.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutDown.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutDownBig.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutLeft.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutLeftBig.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutRight.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutRightBig.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutTopLeft.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutTopRight.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutUp.js","../../../node_modules/@shoelace-style/animations/dist/fading_exits/fadeOutUpBig.js","../../../node_modules/@shoelace-style/animations/dist/flippers/flip.js","../../../node_modules/@shoelace-style/animations/dist/flippers/flipInX.js","../../../node_modules/@shoelace-style/animations/dist/flippers/flipInY.js","../../../node_modules/@shoelace-style/animations/dist/flippers/flipOutX.js","../../../node_modules/@shoelace-style/animations/dist/flippers/flipOutY.js","../../../node_modules/@shoelace-style/animations/dist/lightspeed/lightSpeedInLeft.js","../../../node_modules/@shoelace-style/animations/dist/lightspeed/lightSpeedInRight.js","../../../node_modules/@shoelace-style/animations/dist/lightspeed/lightSpeedOutLeft.js","../../../node_modules/@shoelace-style/animations/dist/lightspeed/lightSpeedOutRight.js","../../../node_modules/@shoelace-style/animations/dist/rotating_entrances/rotateIn.js","../../../node_modules/@shoelace-style/animations/dist/rotating_entrances/rotateInDownLeft.js","../../../node_modules/@shoelace-style/animations/dist/rotating_entrances/rotateInDownRight.js","../../../node_modules/@shoelace-style/animations/dist/rotating_entrances/rotateInUpLeft.js","../../../node_modules/@shoelace-style/animations/dist/rotating_entrances/rotateInUpRight.js","../../../node_modules/@shoelace-style/animations/dist/rotating_exits/rotateOut.js","../../../node_modules/@shoelace-style/animations/dist/rotating_exits/rotateOutDownLeft.js","../../../node_modules/@shoelace-style/animations/dist/rotating_exits/rotateOutDownRight.js","../../../node_modules/@shoelace-style/animations/dist/rotating_exits/rotateOutUpLeft.js","../../../node_modules/@shoelace-style/animations/dist/rotating_exits/rotateOutUpRight.js","../../../node_modules/@shoelace-style/animations/dist/sliding_entrances/slideInDown.js","../../../node_modules/@shoelace-style/animations/dist/sliding_entrances/slideInLeft.js","../../../node_modules/@shoelace-style/animations/dist/sliding_entrances/slideInRight.js","../../../node_modules/@shoelace-style/animations/dist/sliding_entrances/slideInUp.js","../../../node_modules/@shoelace-style/animations/dist/sliding_exits/slideOutDown.js","../../../node_modules/@shoelace-style/animations/dist/sliding_exits/slideOutLeft.js","../../../node_modules/@shoelace-style/animations/dist/sliding_exits/slideOutRight.js","../../../node_modules/@shoelace-style/animations/dist/sliding_exits/slideOutUp.js","../../../node_modules/@shoelace-style/animations/dist/specials/hinge.js","../../../node_modules/@shoelace-style/animations/dist/specials/jackInTheBox.js","../../../node_modules/@shoelace-style/animations/dist/specials/rollIn.js","../../../node_modules/@shoelace-style/animations/dist/specials/rollOut.js","../../../node_modules/@shoelace-style/animations/dist/zooming_entrances/zoomIn.js","../../../node_modules/@shoelace-style/animations/dist/zooming_entrances/zoomInDown.js","../../../node_modules/@shoelace-style/animations/dist/zooming_entrances/zoomInLeft.js","../../../node_modules/@shoelace-style/animations/dist/zooming_entrances/zoomInRight.js","../../../node_modules/@shoelace-style/animations/dist/zooming_entrances/zoomInUp.js","../../../node_modules/@shoelace-style/animations/dist/zooming_exits/zoomOut.js","../../../node_modules/@shoelace-style/animations/dist/zooming_exits/zoomOutDown.js","../../../node_modules/@shoelace-style/animations/dist/zooming_exits/zoomOutLeft.js","../../../node_modules/@shoelace-style/animations/dist/zooming_exits/zoomOutRight.js","../../../node_modules/@shoelace-style/animations/dist/zooming_exits/zoomOutUp.js","../../../node_modules/@shoelace-style/animations/dist/easings/easings.js","../src/components/ep-multi-view.ts","../src/components/ep-chip-input.ts","../src/components/ep-event-propagation-guard.ts","../src/components/ep-multi-view-stepper.ts","../src/components/ep-pipeline-icon/cancelled.svg","../src/components/ep-pipeline-icon/completed.svg","../src/components/ep-pipeline-icon/failed.svg","../src/components/ep-pipeline-icon/in_progress.svg","../src/components/ep-pipeline-icon/neutral.svg","../src/components/ep-pipeline-icon/pending.svg","../src/components/ep-pipeline-icon/ep-pipeline-icon.ts","../src/components/ep-visual-association.ts","../src/components/ep-report-runner.ts","../src/components/file-io/ep-async-file-uploader.ts","../../../node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../node_modules/@tanstack/query-core/build/modern/utils.js","../../../node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../node_modules/@tanstack/query-core/build/modern/thenable.js","../../../node_modules/@tanstack/query-core/build/modern/retryer.js","../../../node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../node_modules/@tanstack/query-core/build/modern/removable.js","../../../node_modules/@tanstack/query-core/build/modern/query.js","../../../node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../node_modules/@tanstack/query-core/build/modern/mutation.js","../../../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../../node_modules/@lit/context/lib/controllers/context-consumer.js","../../../node_modules/@lit/context/lib/value-notifier.js","../../../node_modules/@lit/context/lib/controllers/context-provider.js","../../../node_modules/@lit/context/lib/decorators/provide.js","../../lit-query/dist/context.js","../../lit-query/dist/QueryController.js","../../lit-query/dist/QueryClientProvider.js","../src/components/file-io/ep-file-reference-group-display.ts"],"sourcesContent":["/**\n * A reference to globalThis, with support\n * for browsers that don't yet support the spec.\n * @public\n */\nexport const $global = (function () {\n if (typeof globalThis !== \"undefined\") {\n // We're running in a modern environment.\n return globalThis;\n }\n if (typeof global !== \"undefined\") {\n // We're running in NodeJS\n return global;\n }\n if (typeof self !== \"undefined\") {\n // We're running in a worker.\n return self;\n }\n if (typeof window !== \"undefined\") {\n // We're running in the browser's main thread.\n return window;\n }\n try {\n // Hopefully we never get here...\n // Not all environments allow eval and Function. Use only as a last resort:\n // eslint-disable-next-line no-new-func\n return new Function(\"return this\")();\n }\n catch (_a) {\n // If all fails, give up and create an object.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {};\n }\n})();\n// API-only Polyfill for trustedTypes\nif ($global.trustedTypes === void 0) {\n $global.trustedTypes = { createPolicy: (n, r) => r };\n}\nconst propConfig = {\n configurable: false,\n enumerable: false,\n writable: false,\n};\nif ($global.FAST === void 0) {\n Reflect.defineProperty($global, \"FAST\", Object.assign({ value: Object.create(null) }, propConfig));\n}\n/**\n * The FAST global.\n * @internal\n */\nexport const FAST = $global.FAST;\nif (FAST.getById === void 0) {\n const storage = Object.create(null);\n Reflect.defineProperty(FAST, \"getById\", Object.assign({ value(id, initialize) {\n let found = storage[id];\n if (found === void 0) {\n found = initialize ? (storage[id] = initialize()) : null;\n }\n return found;\n } }, propConfig));\n}\n/**\n * A readonly, empty array.\n * @remarks\n * Typically returned by APIs that return arrays when there are\n * no actual items to return.\n * @internal\n */\nexport const emptyArray = Object.freeze([]);\n/**\n * Creates a function capable of locating metadata associated with a type.\n * @returns A metadata locator function.\n * @internal\n */\nexport function createMetadataLocator() {\n const metadataLookup = new WeakMap();\n return function (target) {\n let metadata = metadataLookup.get(target);\n if (metadata === void 0) {\n let currentTarget = Reflect.getPrototypeOf(target);\n while (metadata === void 0 && currentTarget !== null) {\n metadata = metadataLookup.get(currentTarget);\n currentTarget = Reflect.getPrototypeOf(currentTarget);\n }\n metadata = metadata === void 0 ? [] : metadata.slice(0);\n metadataLookup.set(target, metadata);\n }\n return metadata;\n };\n}\n","import { $global } from \"./platform.js\";\nconst updateQueue = $global.FAST.getById(1 /* updateQueue */, () => {\n const tasks = [];\n const pendingErrors = [];\n function throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n }\n function tryRunTask(task) {\n try {\n task.call();\n }\n catch (error) {\n pendingErrors.push(error);\n setTimeout(throwFirstError, 0);\n }\n }\n function process() {\n const capacity = 1024;\n let index = 0;\n while (index < tasks.length) {\n tryRunTask(tasks[index]);\n index++;\n // Prevent leaking memory for long chains of recursive calls to `DOM.queueUpdate`.\n // If we call `DOM.queueUpdate` within a task scheduled by `DOM.queueUpdate`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (let scan = 0, newLength = tasks.length - index; scan < newLength; scan++) {\n tasks[scan] = tasks[scan + index];\n }\n tasks.length -= index;\n index = 0;\n }\n }\n tasks.length = 0;\n }\n function enqueue(callable) {\n if (tasks.length < 1) {\n $global.requestAnimationFrame(process);\n }\n tasks.push(callable);\n }\n return Object.freeze({\n enqueue,\n process,\n });\n});\n/* eslint-disable */\nconst fastHTMLPolicy = $global.trustedTypes.createPolicy(\"fast-html\", {\n createHTML: html => html,\n});\n/* eslint-enable */\nlet htmlPolicy = fastHTMLPolicy;\nconst marker = `fast-${Math.random().toString(36).substring(2, 8)}`;\n/** @internal */\nexport const _interpolationStart = `${marker}{`;\n/** @internal */\nexport const _interpolationEnd = `}${marker}`;\n/**\n * Common DOM APIs.\n * @public\n */\nexport const DOM = Object.freeze({\n /**\n * Indicates whether the DOM supports the adoptedStyleSheets feature.\n */\n supportsAdoptedStyleSheets: Array.isArray(document.adoptedStyleSheets) &&\n \"replace\" in CSSStyleSheet.prototype,\n /**\n * Sets the HTML trusted types policy used by the templating engine.\n * @param policy - The policy to set for HTML.\n * @remarks\n * This API can only be called once, for security reasons. It should be\n * called by the application developer at the start of their program.\n */\n setHTMLPolicy(policy) {\n if (htmlPolicy !== fastHTMLPolicy) {\n throw new Error(\"The HTML policy can only be set once.\");\n }\n htmlPolicy = policy;\n },\n /**\n * Turns a string into trusted HTML using the configured trusted types policy.\n * @param html - The string to turn into trusted HTML.\n * @remarks\n * Used internally by the template engine when creating templates\n * and setting innerHTML.\n */\n createHTML(html) {\n return htmlPolicy.createHTML(html);\n },\n /**\n * Determines if the provided node is a template marker used by the runtime.\n * @param node - The node to test.\n */\n isMarker(node) {\n return node && node.nodeType === 8 && node.data.startsWith(marker);\n },\n /**\n * Given a marker node, extract the {@link HTMLDirective} index from the placeholder.\n * @param node - The marker node to extract the index from.\n */\n extractDirectiveIndexFromMarker(node) {\n return parseInt(node.data.replace(`${marker}:`, \"\"));\n },\n /**\n * Creates a placeholder string suitable for marking out a location *within*\n * an attribute value or HTML content.\n * @param index - The directive index to create the placeholder for.\n * @remarks\n * Used internally by binding directives.\n */\n createInterpolationPlaceholder(index) {\n return `${_interpolationStart}${index}${_interpolationEnd}`;\n },\n /**\n * Creates a placeholder that manifests itself as an attribute on an\n * element.\n * @param attributeName - The name of the custom attribute.\n * @param index - The directive index to create the placeholder for.\n * @remarks\n * Used internally by attribute directives such as `ref`, `slotted`, and `children`.\n */\n createCustomAttributePlaceholder(attributeName, index) {\n return `${attributeName}=\"${this.createInterpolationPlaceholder(index)}\"`;\n },\n /**\n * Creates a placeholder that manifests itself as a marker within the DOM structure.\n * @param index - The directive index to create the placeholder for.\n * @remarks\n * Used internally by structural directives such as `repeat`.\n */\n createBlockPlaceholder(index) {\n return ``;\n },\n /**\n * Schedules DOM update work in the next async batch.\n * @param callable - The callable function or object to queue.\n */\n queueUpdate: updateQueue.enqueue,\n /**\n * Immediately processes all work previously scheduled\n * through queueUpdate.\n * @remarks\n * This also forces nextUpdate promises\n * to resolve.\n */\n processUpdates: updateQueue.process,\n /**\n * Resolves with the next DOM update.\n */\n nextUpdate() {\n return new Promise(updateQueue.enqueue);\n },\n /**\n * Sets an attribute value on an element.\n * @param element - The element to set the attribute value on.\n * @param attributeName - The attribute name to set.\n * @param value - The value of the attribute to set.\n * @remarks\n * If the value is `null` or `undefined`, the attribute is removed, otherwise\n * it is set to the provided value using the standard `setAttribute` API.\n */\n setAttribute(element, attributeName, value) {\n if (value === null || value === undefined) {\n element.removeAttribute(attributeName);\n }\n else {\n element.setAttribute(attributeName, value);\n }\n },\n /**\n * Sets a boolean attribute value.\n * @param element - The element to set the boolean attribute value on.\n * @param attributeName - The attribute name to set.\n * @param value - The value of the attribute to set.\n * @remarks\n * If the value is true, the attribute is added; otherwise it is removed.\n */\n setBooleanAttribute(element, attributeName, value) {\n value\n ? element.setAttribute(attributeName, \"\")\n : element.removeAttribute(attributeName);\n },\n /**\n * Removes all the child nodes of the provided parent node.\n * @param parent - The node to remove the children from.\n */\n removeChildNodes(parent) {\n for (let child = parent.firstChild; child !== null; child = parent.firstChild) {\n parent.removeChild(child);\n }\n },\n /**\n * Creates a TreeWalker configured to walk a template fragment.\n * @param fragment - The fragment to walk.\n */\n createTemplateWalker(fragment) {\n return document.createTreeWalker(fragment, 133, // element, text, comment\n null, false);\n },\n});\n","/**\n * An implementation of {@link Notifier} that efficiently keeps track of\n * subscribers interested in a specific change notification on an\n * observable source.\n *\n * @remarks\n * This set is optimized for the most common scenario of 1 or 2 subscribers.\n * With this in mind, it can store a subscriber in an internal field, allowing it to avoid Array#push operations.\n * If the set ever exceeds two subscribers, it upgrades to an array automatically.\n * @public\n */\nexport class SubscriberSet {\n /**\n * Creates an instance of SubscriberSet for the specified source.\n * @param source - The object source that subscribers will receive notifications from.\n * @param initialSubscriber - An initial subscriber to changes.\n */\n constructor(source, initialSubscriber) {\n this.sub1 = void 0;\n this.sub2 = void 0;\n this.spillover = void 0;\n this.source = source;\n this.sub1 = initialSubscriber;\n }\n /**\n * Checks whether the provided subscriber has been added to this set.\n * @param subscriber - The subscriber to test for inclusion in this set.\n */\n has(subscriber) {\n return this.spillover === void 0\n ? this.sub1 === subscriber || this.sub2 === subscriber\n : this.spillover.indexOf(subscriber) !== -1;\n }\n /**\n * Subscribes to notification of changes in an object's state.\n * @param subscriber - The object that is subscribing for change notification.\n */\n subscribe(subscriber) {\n const spillover = this.spillover;\n if (spillover === void 0) {\n if (this.has(subscriber)) {\n return;\n }\n if (this.sub1 === void 0) {\n this.sub1 = subscriber;\n return;\n }\n if (this.sub2 === void 0) {\n this.sub2 = subscriber;\n return;\n }\n this.spillover = [this.sub1, this.sub2, subscriber];\n this.sub1 = void 0;\n this.sub2 = void 0;\n }\n else {\n const index = spillover.indexOf(subscriber);\n if (index === -1) {\n spillover.push(subscriber);\n }\n }\n }\n /**\n * Unsubscribes from notification of changes in an object's state.\n * @param subscriber - The object that is unsubscribing from change notification.\n */\n unsubscribe(subscriber) {\n const spillover = this.spillover;\n if (spillover === void 0) {\n if (this.sub1 === subscriber) {\n this.sub1 = void 0;\n }\n else if (this.sub2 === subscriber) {\n this.sub2 = void 0;\n }\n }\n else {\n const index = spillover.indexOf(subscriber);\n if (index !== -1) {\n spillover.splice(index, 1);\n }\n }\n }\n /**\n * Notifies all subscribers.\n * @param args - Data passed along to subscribers during notification.\n */\n notify(args) {\n const spillover = this.spillover;\n const source = this.source;\n if (spillover === void 0) {\n const sub1 = this.sub1;\n const sub2 = this.sub2;\n if (sub1 !== void 0) {\n sub1.handleChange(source, args);\n }\n if (sub2 !== void 0) {\n sub2.handleChange(source, args);\n }\n }\n else {\n for (let i = 0, ii = spillover.length; i < ii; ++i) {\n spillover[i].handleChange(source, args);\n }\n }\n }\n}\n/**\n * An implementation of Notifier that allows subscribers to be notified\n * of individual property changes on an object.\n * @public\n */\nexport class PropertyChangeNotifier {\n /**\n * Creates an instance of PropertyChangeNotifier for the specified source.\n * @param source - The object source that subscribers will receive notifications from.\n */\n constructor(source) {\n this.subscribers = {};\n this.sourceSubscribers = null;\n this.source = source;\n }\n /**\n * Notifies all subscribers, based on the specified property.\n * @param propertyName - The property name, passed along to subscribers during notification.\n */\n notify(propertyName) {\n var _a;\n const subscribers = this.subscribers[propertyName];\n if (subscribers !== void 0) {\n subscribers.notify(propertyName);\n }\n (_a = this.sourceSubscribers) === null || _a === void 0 ? void 0 : _a.notify(propertyName);\n }\n /**\n * Subscribes to notification of changes in an object's state.\n * @param subscriber - The object that is subscribing for change notification.\n * @param propertyToWatch - The name of the property that the subscriber is interested in watching for changes.\n */\n subscribe(subscriber, propertyToWatch) {\n var _a;\n if (propertyToWatch) {\n let subscribers = this.subscribers[propertyToWatch];\n if (subscribers === void 0) {\n this.subscribers[propertyToWatch] = subscribers = new SubscriberSet(this.source);\n }\n subscribers.subscribe(subscriber);\n }\n else {\n this.sourceSubscribers =\n (_a = this.sourceSubscribers) !== null && _a !== void 0 ? _a : new SubscriberSet(this.source);\n this.sourceSubscribers.subscribe(subscriber);\n }\n }\n /**\n * Unsubscribes from notification of changes in an object's state.\n * @param subscriber - The object that is unsubscribing from change notification.\n * @param propertyToUnwatch - The name of the property that the subscriber is no longer interested in watching.\n */\n unsubscribe(subscriber, propertyToUnwatch) {\n var _a;\n if (propertyToUnwatch) {\n const subscribers = this.subscribers[propertyToUnwatch];\n if (subscribers !== void 0) {\n subscribers.unsubscribe(subscriber);\n }\n }\n else {\n (_a = this.sourceSubscribers) === null || _a === void 0 ? void 0 : _a.unsubscribe(subscriber);\n }\n }\n}\n","import { DOM } from \"../dom.js\";\nimport { createMetadataLocator, FAST } from \"../platform.js\";\nimport { PropertyChangeNotifier, SubscriberSet } from \"./notifier.js\";\n/**\n * Common Observable APIs.\n * @public\n */\nexport const Observable = FAST.getById(2 /* observable */, () => {\n const volatileRegex = /(:|&&|\\|\\||if)/;\n const notifierLookup = new WeakMap();\n const queueUpdate = DOM.queueUpdate;\n let watcher = void 0;\n let createArrayObserver = (array) => {\n throw new Error(\"Must call enableArrayObservation before observing arrays.\");\n };\n function getNotifier(source) {\n let found = source.$fastController || notifierLookup.get(source);\n if (found === void 0) {\n if (Array.isArray(source)) {\n found = createArrayObserver(source);\n }\n else {\n notifierLookup.set(source, (found = new PropertyChangeNotifier(source)));\n }\n }\n return found;\n }\n const getAccessors = createMetadataLocator();\n class DefaultObservableAccessor {\n constructor(name) {\n this.name = name;\n this.field = `_${name}`;\n this.callback = `${name}Changed`;\n }\n getValue(source) {\n if (watcher !== void 0) {\n watcher.watch(source, this.name);\n }\n return source[this.field];\n }\n setValue(source, newValue) {\n const field = this.field;\n const oldValue = source[field];\n if (oldValue !== newValue) {\n source[field] = newValue;\n const callback = source[this.callback];\n if (typeof callback === \"function\") {\n callback.call(source, oldValue, newValue);\n }\n getNotifier(source).notify(this.name);\n }\n }\n }\n class BindingObserverImplementation extends SubscriberSet {\n constructor(binding, initialSubscriber, isVolatileBinding = false) {\n super(binding, initialSubscriber);\n this.binding = binding;\n this.isVolatileBinding = isVolatileBinding;\n this.needsRefresh = true;\n this.needsQueue = true;\n this.first = this;\n this.last = null;\n this.propertySource = void 0;\n this.propertyName = void 0;\n this.notifier = void 0;\n this.next = void 0;\n }\n observe(source, context) {\n if (this.needsRefresh && this.last !== null) {\n this.disconnect();\n }\n const previousWatcher = watcher;\n watcher = this.needsRefresh ? this : void 0;\n this.needsRefresh = this.isVolatileBinding;\n const result = this.binding(source, context);\n watcher = previousWatcher;\n return result;\n }\n disconnect() {\n if (this.last !== null) {\n let current = this.first;\n while (current !== void 0) {\n current.notifier.unsubscribe(this, current.propertyName);\n current = current.next;\n }\n this.last = null;\n this.needsRefresh = this.needsQueue = true;\n }\n }\n watch(propertySource, propertyName) {\n const prev = this.last;\n const notifier = getNotifier(propertySource);\n const current = prev === null ? this.first : {};\n current.propertySource = propertySource;\n current.propertyName = propertyName;\n current.notifier = notifier;\n notifier.subscribe(this, propertyName);\n if (prev !== null) {\n if (!this.needsRefresh) {\n // Declaring the variable prior to assignment below circumvents\n // a bug in Angular's optimization process causing infinite recursion\n // of this watch() method. Details https://github.com/microsoft/fast/issues/4969\n let prevValue;\n watcher = void 0;\n /* eslint-disable-next-line */\n prevValue = prev.propertySource[prev.propertyName];\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n watcher = this;\n if (propertySource === prevValue) {\n this.needsRefresh = true;\n }\n }\n prev.next = current;\n }\n this.last = current;\n }\n handleChange() {\n if (this.needsQueue) {\n this.needsQueue = false;\n queueUpdate(this);\n }\n }\n call() {\n if (this.last !== null) {\n this.needsQueue = true;\n this.notify(this);\n }\n }\n records() {\n let next = this.first;\n return {\n next: () => {\n const current = next;\n if (current === undefined) {\n return { value: void 0, done: true };\n }\n else {\n next = next.next;\n return {\n value: current,\n done: false,\n };\n }\n },\n [Symbol.iterator]: function () {\n return this;\n },\n };\n }\n }\n return Object.freeze({\n /**\n * @internal\n * @param factory - The factory used to create array observers.\n */\n setArrayObserverFactory(factory) {\n createArrayObserver = factory;\n },\n /**\n * Gets a notifier for an object or Array.\n * @param source - The object or Array to get the notifier for.\n */\n getNotifier,\n /**\n * Records a property change for a source object.\n * @param source - The object to record the change against.\n * @param propertyName - The property to track as changed.\n */\n track(source, propertyName) {\n if (watcher !== void 0) {\n watcher.watch(source, propertyName);\n }\n },\n /**\n * Notifies watchers that the currently executing property getter or function is volatile\n * with respect to its observable dependencies.\n */\n trackVolatile() {\n if (watcher !== void 0) {\n watcher.needsRefresh = true;\n }\n },\n /**\n * Notifies subscribers of a source object of changes.\n * @param source - the object to notify of changes.\n * @param args - The change args to pass to subscribers.\n */\n notify(source, args) {\n getNotifier(source).notify(args);\n },\n /**\n * Defines an observable property on an object or prototype.\n * @param target - The target object to define the observable on.\n * @param nameOrAccessor - The name of the property to define as observable;\n * or a custom accessor that specifies the property name and accessor implementation.\n */\n defineProperty(target, nameOrAccessor) {\n if (typeof nameOrAccessor === \"string\") {\n nameOrAccessor = new DefaultObservableAccessor(nameOrAccessor);\n }\n getAccessors(target).push(nameOrAccessor);\n Reflect.defineProperty(target, nameOrAccessor.name, {\n enumerable: true,\n get: function () {\n return nameOrAccessor.getValue(this);\n },\n set: function (newValue) {\n nameOrAccessor.setValue(this, newValue);\n },\n });\n },\n /**\n * Finds all the observable accessors defined on the target,\n * including its prototype chain.\n * @param target - The target object to search for accessor on.\n */\n getAccessors,\n /**\n * Creates a {@link BindingObserver} that can watch the\n * provided {@link Binding} for changes.\n * @param binding - The binding to observe.\n * @param initialSubscriber - An initial subscriber to changes in the binding value.\n * @param isVolatileBinding - Indicates whether the binding's dependency list must be re-evaluated on every value evaluation.\n */\n binding(binding, initialSubscriber, isVolatileBinding = this.isVolatileBinding(binding)) {\n return new BindingObserverImplementation(binding, initialSubscriber, isVolatileBinding);\n },\n /**\n * Determines whether a binding expression is volatile and needs to have its dependency list re-evaluated\n * on every evaluation of the value.\n * @param binding - The binding to inspect.\n */\n isVolatileBinding(binding) {\n return volatileRegex.test(binding.toString());\n },\n });\n});\n/**\n * Decorator: Defines an observable property on the target.\n * @param target - The target to define the observable on.\n * @param nameOrAccessor - The property name or accessor to define the observable as.\n * @public\n */\nexport function observable(target, nameOrAccessor) {\n Observable.defineProperty(target, nameOrAccessor);\n}\n/**\n * Decorator: Marks a property getter as having volatile observable dependencies.\n * @param target - The target that the property is defined on.\n * @param name - The property name.\n * @param name - The existing descriptor.\n * @public\n */\nexport function volatile(target, name, descriptor) {\n return Object.assign({}, descriptor, {\n get: function () {\n Observable.trackVolatile();\n return descriptor.get.apply(this);\n },\n });\n}\nconst contextEvent = FAST.getById(3 /* contextEvent */, () => {\n let current = null;\n return {\n get() {\n return current;\n },\n set(event) {\n current = event;\n },\n };\n});\n/**\n * Provides additional contextual information available to behaviors and expressions.\n * @public\n */\nexport class ExecutionContext {\n constructor() {\n /**\n * The index of the current item within a repeat context.\n */\n this.index = 0;\n /**\n * The length of the current collection within a repeat context.\n */\n this.length = 0;\n /**\n * The parent data object within a repeat context.\n */\n this.parent = null;\n /**\n * The parent execution context when in nested context scenarios.\n */\n this.parentContext = null;\n }\n /**\n * The current event within an event handler.\n */\n get event() {\n return contextEvent.get();\n }\n /**\n * Indicates whether the current item within a repeat context\n * has an even index.\n */\n get isEven() {\n return this.index % 2 === 0;\n }\n /**\n * Indicates whether the current item within a repeat context\n * has an odd index.\n */\n get isOdd() {\n return this.index % 2 !== 0;\n }\n /**\n * Indicates whether the current item within a repeat context\n * is the first item in the collection.\n */\n get isFirst() {\n return this.index === 0;\n }\n /**\n * Indicates whether the current item within a repeat context\n * is somewhere in the middle of the collection.\n */\n get isInMiddle() {\n return !this.isFirst && !this.isLast;\n }\n /**\n * Indicates whether the current item within a repeat context\n * is the last item in the collection.\n */\n get isLast() {\n return this.index === this.length - 1;\n }\n /**\n * Sets the event for the current execution context.\n * @param event - The event to set.\n * @internal\n */\n static setEvent(event) {\n contextEvent.set(event);\n }\n}\nObservable.defineProperty(ExecutionContext.prototype, \"index\");\nObservable.defineProperty(ExecutionContext.prototype, \"length\");\n/**\n * The default execution context used in binding expressions.\n * @public\n */\nexport const defaultExecutionContext = Object.seal(new ExecutionContext());\n","import { DOM } from \"../dom.js\";\n/**\n * Represents styles that can be applied to a custom element.\n * @public\n */\nexport class ElementStyles {\n constructor() {\n this.targets = new WeakSet();\n }\n /** @internal */\n addStylesTo(target) {\n this.targets.add(target);\n }\n /** @internal */\n removeStylesFrom(target) {\n this.targets.delete(target);\n }\n /** @internal */\n isAttachedTo(target) {\n return this.targets.has(target);\n }\n /**\n * Associates behaviors with this set of styles.\n * @param behaviors - The behaviors to associate.\n */\n withBehaviors(...behaviors) {\n this.behaviors =\n this.behaviors === null ? behaviors : this.behaviors.concat(behaviors);\n return this;\n }\n}\n/**\n * Create ElementStyles from ComposableStyles.\n */\nElementStyles.create = (() => {\n if (DOM.supportsAdoptedStyleSheets) {\n const styleSheetCache = new Map();\n return (styles) => \n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n new AdoptedStyleSheetsStyles(styles, styleSheetCache);\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return (styles) => new StyleElementStyles(styles);\n})();\nfunction reduceStyles(styles) {\n return styles\n .map((x) => x instanceof ElementStyles ? reduceStyles(x.styles) : [x])\n .reduce((prev, curr) => prev.concat(curr), []);\n}\nfunction reduceBehaviors(styles) {\n return styles\n .map((x) => (x instanceof ElementStyles ? x.behaviors : null))\n .reduce((prev, curr) => {\n if (curr === null) {\n return prev;\n }\n if (prev === null) {\n prev = [];\n }\n return prev.concat(curr);\n }, null);\n}\n/**\n * A Symbol that can be added to a CSSStyleSheet to cause it to be prepended (rather than appended) to adoptedStyleSheets.\n * @public\n */\nexport const prependToAdoptedStyleSheetsSymbol = Symbol(\"prependToAdoptedStyleSheets\");\nfunction separateSheetsToPrepend(sheets) {\n const prepend = [];\n const append = [];\n sheets.forEach(x => (x[prependToAdoptedStyleSheetsSymbol] ? prepend : append).push(x));\n return { prepend, append };\n}\nlet addAdoptedStyleSheets = (target, sheets) => {\n const { prepend, append } = separateSheetsToPrepend(sheets);\n target.adoptedStyleSheets = [...prepend, ...target.adoptedStyleSheets, ...append];\n};\nlet removeAdoptedStyleSheets = (target, sheets) => {\n target.adoptedStyleSheets = target.adoptedStyleSheets.filter((x) => sheets.indexOf(x) === -1);\n};\nif (DOM.supportsAdoptedStyleSheets) {\n try {\n // Test if browser implementation uses FrozenArray.\n // If not, use push / splice to alter the stylesheets\n // in place. This circumvents a bug in Safari 16.4 where\n // periodically, assigning the array would previously\n // cause sheets to be removed.\n document.adoptedStyleSheets.push();\n document.adoptedStyleSheets.splice();\n addAdoptedStyleSheets = (target, sheets) => {\n const { prepend, append } = separateSheetsToPrepend(sheets);\n target.adoptedStyleSheets.splice(0, 0, ...prepend);\n target.adoptedStyleSheets.push(...append);\n };\n removeAdoptedStyleSheets = (target, sheets) => {\n for (const sheet of sheets) {\n const index = target.adoptedStyleSheets.indexOf(sheet);\n if (index !== -1) {\n target.adoptedStyleSheets.splice(index, 1);\n }\n }\n };\n }\n catch (e) {\n // Do nothing if an error is thrown, the default\n // case handles FrozenArray.\n }\n}\n/**\n * https://wicg.github.io/construct-stylesheets/\n * https://developers.google.com/web/updates/2019/02/constructable-stylesheets\n *\n * @internal\n */\nexport class AdoptedStyleSheetsStyles extends ElementStyles {\n constructor(styles, styleSheetCache) {\n super();\n this.styles = styles;\n this.styleSheetCache = styleSheetCache;\n this._styleSheets = void 0;\n this.behaviors = reduceBehaviors(styles);\n }\n get styleSheets() {\n if (this._styleSheets === void 0) {\n const styles = this.styles;\n const styleSheetCache = this.styleSheetCache;\n this._styleSheets = reduceStyles(styles).map((x) => {\n if (x instanceof CSSStyleSheet) {\n return x;\n }\n let sheet = styleSheetCache.get(x);\n if (sheet === void 0) {\n sheet = new CSSStyleSheet();\n sheet.replaceSync(x);\n styleSheetCache.set(x, sheet);\n }\n return sheet;\n });\n }\n return this._styleSheets;\n }\n addStylesTo(target) {\n addAdoptedStyleSheets(target, this.styleSheets);\n super.addStylesTo(target);\n }\n removeStylesFrom(target) {\n removeAdoptedStyleSheets(target, this.styleSheets);\n super.removeStylesFrom(target);\n }\n}\nlet styleClassId = 0;\nfunction getNextStyleClass() {\n return `fast-style-class-${++styleClassId}`;\n}\n/**\n * @internal\n */\nexport class StyleElementStyles extends ElementStyles {\n constructor(styles) {\n super();\n this.styles = styles;\n this.behaviors = null;\n this.behaviors = reduceBehaviors(styles);\n this.styleSheets = reduceStyles(styles);\n this.styleClass = getNextStyleClass();\n }\n addStylesTo(target) {\n const styleSheets = this.styleSheets;\n const styleClass = this.styleClass;\n target = this.normalizeTarget(target);\n for (let i = 0; i < styleSheets.length; i++) {\n const element = document.createElement(\"style\");\n element.innerHTML = styleSheets[i];\n element.className = styleClass;\n target.append(element);\n }\n super.addStylesTo(target);\n }\n removeStylesFrom(target) {\n target = this.normalizeTarget(target);\n const styles = target.querySelectorAll(`.${this.styleClass}`);\n for (let i = 0, ii = styles.length; i < ii; ++i) {\n target.removeChild(styles[i]);\n }\n super.removeStylesFrom(target);\n }\n isAttachedTo(target) {\n return super.isAttachedTo(this.normalizeTarget(target));\n }\n normalizeTarget(target) {\n return target === document ? document.body : target;\n }\n}\n","import { Observable } from \"../observation/observable.js\";\nimport { DOM } from \"../dom.js\";\nimport { createMetadataLocator } from \"../platform.js\";\n/**\n * Metadata used to configure a custom attribute's behavior.\n * @public\n */\nexport const AttributeConfiguration = Object.freeze({\n /**\n * Locates all attribute configurations associated with a type.\n */\n locate: createMetadataLocator(),\n});\n/**\n * A {@link ValueConverter} that converts to and from `boolean` values.\n * @remarks\n * Used automatically when the `boolean` {@link AttributeMode} is selected.\n * @public\n */\nexport const booleanConverter = {\n toView(value) {\n return value ? \"true\" : \"false\";\n },\n fromView(value) {\n if (value === null ||\n value === void 0 ||\n value === \"false\" ||\n value === false ||\n value === 0) {\n return false;\n }\n return true;\n },\n};\n/**\n * A {@link ValueConverter} that converts to and from `number` values.\n * @remarks\n * This converter allows for nullable numbers, returning `null` if the\n * input was `null`, `undefined`, or `NaN`.\n * @public\n */\nexport const nullableNumberConverter = {\n toView(value) {\n if (value === null || value === undefined) {\n return null;\n }\n const number = value * 1;\n return isNaN(number) ? null : number.toString();\n },\n fromView(value) {\n if (value === null || value === undefined) {\n return null;\n }\n const number = value * 1;\n return isNaN(number) ? null : number;\n },\n};\n/**\n * An implementation of {@link Accessor} that supports reactivity,\n * change callbacks, attribute reflection, and type conversion for\n * custom elements.\n * @public\n */\nexport class AttributeDefinition {\n /**\n * Creates an instance of AttributeDefinition.\n * @param Owner - The class constructor that owns this attribute.\n * @param name - The name of the property associated with the attribute.\n * @param attribute - The name of the attribute in HTML.\n * @param mode - The {@link AttributeMode} that describes the behavior of this attribute.\n * @param converter - A {@link ValueConverter} that integrates with the property getter/setter\n * to convert values to and from a DOM string.\n */\n constructor(Owner, name, attribute = name.toLowerCase(), mode = \"reflect\", converter) {\n this.guards = new Set();\n this.Owner = Owner;\n this.name = name;\n this.attribute = attribute;\n this.mode = mode;\n this.converter = converter;\n this.fieldName = `_${name}`;\n this.callbackName = `${name}Changed`;\n this.hasCallback = this.callbackName in Owner.prototype;\n if (mode === \"boolean\" && converter === void 0) {\n this.converter = booleanConverter;\n }\n }\n /**\n * Sets the value of the attribute/property on the source element.\n * @param source - The source element to access.\n * @param value - The value to set the attribute/property to.\n */\n setValue(source, newValue) {\n const oldValue = source[this.fieldName];\n const converter = this.converter;\n if (converter !== void 0) {\n newValue = converter.fromView(newValue);\n }\n if (oldValue !== newValue) {\n source[this.fieldName] = newValue;\n this.tryReflectToAttribute(source);\n if (this.hasCallback) {\n source[this.callbackName](oldValue, newValue);\n }\n source.$fastController.notify(this.name);\n }\n }\n /**\n * Gets the value of the attribute/property on the source element.\n * @param source - The source element to access.\n */\n getValue(source) {\n Observable.track(source, this.name);\n return source[this.fieldName];\n }\n /** @internal */\n onAttributeChangedCallback(element, value) {\n if (this.guards.has(element)) {\n return;\n }\n this.guards.add(element);\n this.setValue(element, value);\n this.guards.delete(element);\n }\n tryReflectToAttribute(element) {\n const mode = this.mode;\n const guards = this.guards;\n if (guards.has(element) || mode === \"fromView\") {\n return;\n }\n DOM.queueUpdate(() => {\n guards.add(element);\n const latestValue = element[this.fieldName];\n switch (mode) {\n case \"reflect\":\n const converter = this.converter;\n DOM.setAttribute(element, this.attribute, converter !== void 0 ? converter.toView(latestValue) : latestValue);\n break;\n case \"boolean\":\n DOM.setBooleanAttribute(element, this.attribute, latestValue);\n break;\n }\n guards.delete(element);\n });\n }\n /**\n * Collects all attribute definitions associated with the owner.\n * @param Owner - The class constructor to collect attribute for.\n * @param attributeLists - Any existing attributes to collect and merge with those associated with the owner.\n * @internal\n */\n static collect(Owner, ...attributeLists) {\n const attributes = [];\n attributeLists.push(AttributeConfiguration.locate(Owner));\n for (let i = 0, ii = attributeLists.length; i < ii; ++i) {\n const list = attributeLists[i];\n if (list === void 0) {\n continue;\n }\n for (let j = 0, jj = list.length; j < jj; ++j) {\n const config = list[j];\n if (typeof config === \"string\") {\n attributes.push(new AttributeDefinition(Owner, config));\n }\n else {\n attributes.push(new AttributeDefinition(Owner, config.property, config.attribute, config.mode, config.converter));\n }\n }\n }\n return attributes;\n }\n}\nexport function attr(configOrTarget, prop) {\n let config;\n function decorator($target, $prop) {\n if (arguments.length > 1) {\n // Non invocation:\n // - @attr\n // Invocation with or w/o opts:\n // - @attr()\n // - @attr({...opts})\n config.property = $prop;\n }\n AttributeConfiguration.locate($target.constructor).push(config);\n }\n if (arguments.length > 1) {\n // Non invocation:\n // - @attr\n config = {};\n decorator(configOrTarget, prop);\n return;\n }\n // Invocation with or w/o opts:\n // - @attr()\n // - @attr({...opts})\n config = configOrTarget === void 0 ? {} : configOrTarget;\n return decorator;\n}\n","import { FAST } from \"../platform.js\";\nimport { Observable } from \"../observation/observable.js\";\nimport { ElementStyles } from \"../styles/element-styles.js\";\nimport { AttributeDefinition } from \"./attributes.js\";\nconst defaultShadowOptions = { mode: \"open\" };\nconst defaultElementOptions = {};\nconst fastRegistry = FAST.getById(4 /* elementRegistry */, () => {\n const typeToDefinition = new Map();\n return Object.freeze({\n register(definition) {\n if (typeToDefinition.has(definition.type)) {\n return false;\n }\n typeToDefinition.set(definition.type, definition);\n return true;\n },\n getByType(key) {\n return typeToDefinition.get(key);\n },\n });\n});\n/**\n * Defines metadata for a FASTElement.\n * @public\n */\nexport class FASTElementDefinition {\n /**\n * Creates an instance of FASTElementDefinition.\n * @param type - The type this definition is being created for.\n * @param nameOrConfig - The name of the element to define or a config object\n * that describes the element to define.\n */\n constructor(type, nameOrConfig = type.definition) {\n if (typeof nameOrConfig === \"string\") {\n nameOrConfig = { name: nameOrConfig };\n }\n this.type = type;\n this.name = nameOrConfig.name;\n this.template = nameOrConfig.template;\n const attributes = AttributeDefinition.collect(type, nameOrConfig.attributes);\n const observedAttributes = new Array(attributes.length);\n const propertyLookup = {};\n const attributeLookup = {};\n for (let i = 0, ii = attributes.length; i < ii; ++i) {\n const current = attributes[i];\n observedAttributes[i] = current.attribute;\n propertyLookup[current.name] = current;\n attributeLookup[current.attribute] = current;\n }\n this.attributes = attributes;\n this.observedAttributes = observedAttributes;\n this.propertyLookup = propertyLookup;\n this.attributeLookup = attributeLookup;\n this.shadowOptions =\n nameOrConfig.shadowOptions === void 0\n ? defaultShadowOptions\n : nameOrConfig.shadowOptions === null\n ? void 0\n : Object.assign(Object.assign({}, defaultShadowOptions), nameOrConfig.shadowOptions);\n this.elementOptions =\n nameOrConfig.elementOptions === void 0\n ? defaultElementOptions\n : Object.assign(Object.assign({}, defaultElementOptions), nameOrConfig.elementOptions);\n this.styles =\n nameOrConfig.styles === void 0\n ? void 0\n : Array.isArray(nameOrConfig.styles)\n ? ElementStyles.create(nameOrConfig.styles)\n : nameOrConfig.styles instanceof ElementStyles\n ? nameOrConfig.styles\n : ElementStyles.create([nameOrConfig.styles]);\n }\n /**\n * Indicates if this element has been defined in at least one registry.\n */\n get isDefined() {\n return !!fastRegistry.getByType(this.type);\n }\n /**\n * Defines a custom element based on this definition.\n * @param registry - The element registry to define the element in.\n */\n define(registry = customElements) {\n const type = this.type;\n if (fastRegistry.register(this)) {\n const attributes = this.attributes;\n const proto = type.prototype;\n for (let i = 0, ii = attributes.length; i < ii; ++i) {\n Observable.defineProperty(proto, attributes[i]);\n }\n Reflect.defineProperty(type, \"observedAttributes\", {\n value: this.observedAttributes,\n enumerable: true,\n });\n }\n if (!registry.get(this.name)) {\n registry.define(this.name, type, this.elementOptions);\n }\n return this;\n }\n}\n/**\n * Gets the element definition associated with the specified type.\n * @param type - The custom element type to retrieve the definition for.\n */\nFASTElementDefinition.forType = fastRegistry.getByType;\n","import { DOM } from \"../dom.js\";\nimport { PropertyChangeNotifier } from \"../observation/notifier.js\";\nimport { defaultExecutionContext, Observable } from \"../observation/observable.js\";\nimport { FASTElementDefinition } from \"./fast-definitions.js\";\nconst shadowRoots = new WeakMap();\nconst defaultEventOptions = {\n bubbles: true,\n composed: true,\n cancelable: true,\n};\nfunction getShadowRoot(element) {\n return element.shadowRoot || shadowRoots.get(element) || null;\n}\n/**\n * Controls the lifecycle and rendering of a `FASTElement`.\n * @public\n */\nexport class Controller extends PropertyChangeNotifier {\n /**\n * Creates a Controller to control the specified element.\n * @param element - The element to be controlled by this controller.\n * @param definition - The element definition metadata that instructs this\n * controller in how to handle rendering and other platform integrations.\n * @internal\n */\n constructor(element, definition) {\n super(element);\n this.boundObservables = null;\n this.behaviors = null;\n this.needsInitialization = true;\n this._template = null;\n this._styles = null;\n this._isConnected = false;\n /**\n * This allows Observable.getNotifier(...) to return the Controller\n * when the notifier for the Controller itself is being requested. The\n * result is that the Observable system does not need to create a separate\n * instance of Notifier for observables on the Controller. The component and\n * the controller will now share the same notifier, removing one-object construct\n * per web component instance.\n */\n this.$fastController = this;\n /**\n * The view associated with the custom element.\n * @remarks\n * If `null` then the element is managing its own rendering.\n */\n this.view = null;\n this.element = element;\n this.definition = definition;\n const shadowOptions = definition.shadowOptions;\n if (shadowOptions !== void 0) {\n const shadowRoot = element.attachShadow(shadowOptions);\n if (shadowOptions.mode === \"closed\") {\n shadowRoots.set(element, shadowRoot);\n }\n }\n // Capture any observable values that were set by the binding engine before\n // the browser upgraded the element. Then delete the property since it will\n // shadow the getter/setter that is required to make the observable operate.\n // Later, in the connect callback, we'll re-apply the values.\n const accessors = Observable.getAccessors(element);\n if (accessors.length > 0) {\n const boundObservables = (this.boundObservables = Object.create(null));\n for (let i = 0, ii = accessors.length; i < ii; ++i) {\n const propertyName = accessors[i].name;\n const value = element[propertyName];\n if (value !== void 0) {\n delete element[propertyName];\n boundObservables[propertyName] = value;\n }\n }\n }\n }\n /**\n * Indicates whether or not the custom element has been\n * connected to the document.\n */\n get isConnected() {\n Observable.track(this, \"isConnected\");\n return this._isConnected;\n }\n setIsConnected(value) {\n this._isConnected = value;\n Observable.notify(this, \"isConnected\");\n }\n /**\n * Gets/sets the template used to render the component.\n * @remarks\n * This value can only be accurately read after connect but can be set at any time.\n */\n get template() {\n return this._template;\n }\n set template(value) {\n if (this._template === value) {\n return;\n }\n this._template = value;\n if (!this.needsInitialization) {\n this.renderTemplate(value);\n }\n }\n /**\n * Gets/sets the primary styles used for the component.\n * @remarks\n * This value can only be accurately read after connect but can be set at any time.\n */\n get styles() {\n return this._styles;\n }\n set styles(value) {\n if (this._styles === value) {\n return;\n }\n if (this._styles !== null) {\n this.removeStyles(this._styles);\n }\n this._styles = value;\n if (!this.needsInitialization && value !== null) {\n this.addStyles(value);\n }\n }\n /**\n * Adds styles to this element. Providing an HTMLStyleElement will attach the element instance to the shadowRoot.\n * @param styles - The styles to add.\n */\n addStyles(styles) {\n const target = getShadowRoot(this.element) ||\n this.element.getRootNode();\n if (styles instanceof HTMLStyleElement) {\n target.append(styles);\n }\n else if (!styles.isAttachedTo(target)) {\n const sourceBehaviors = styles.behaviors;\n styles.addStylesTo(target);\n if (sourceBehaviors !== null) {\n this.addBehaviors(sourceBehaviors);\n }\n }\n }\n /**\n * Removes styles from this element. Providing an HTMLStyleElement will detach the element instance from the shadowRoot.\n * @param styles - the styles to remove.\n */\n removeStyles(styles) {\n const target = getShadowRoot(this.element) ||\n this.element.getRootNode();\n if (styles instanceof HTMLStyleElement) {\n target.removeChild(styles);\n }\n else if (styles.isAttachedTo(target)) {\n const sourceBehaviors = styles.behaviors;\n styles.removeStylesFrom(target);\n if (sourceBehaviors !== null) {\n this.removeBehaviors(sourceBehaviors);\n }\n }\n }\n /**\n * Adds behaviors to this element.\n * @param behaviors - The behaviors to add.\n */\n addBehaviors(behaviors) {\n const targetBehaviors = this.behaviors || (this.behaviors = new Map());\n const length = behaviors.length;\n const behaviorsToBind = [];\n for (let i = 0; i < length; ++i) {\n const behavior = behaviors[i];\n if (targetBehaviors.has(behavior)) {\n targetBehaviors.set(behavior, targetBehaviors.get(behavior) + 1);\n }\n else {\n targetBehaviors.set(behavior, 1);\n behaviorsToBind.push(behavior);\n }\n }\n if (this._isConnected) {\n const element = this.element;\n for (let i = 0; i < behaviorsToBind.length; ++i) {\n behaviorsToBind[i].bind(element, defaultExecutionContext);\n }\n }\n }\n /**\n * Removes behaviors from this element.\n * @param behaviors - The behaviors to remove.\n * @param force - Forces unbinding of behaviors.\n */\n removeBehaviors(behaviors, force = false) {\n const targetBehaviors = this.behaviors;\n if (targetBehaviors === null) {\n return;\n }\n const length = behaviors.length;\n const behaviorsToUnbind = [];\n for (let i = 0; i < length; ++i) {\n const behavior = behaviors[i];\n if (targetBehaviors.has(behavior)) {\n const count = targetBehaviors.get(behavior) - 1;\n count === 0 || force\n ? targetBehaviors.delete(behavior) && behaviorsToUnbind.push(behavior)\n : targetBehaviors.set(behavior, count);\n }\n }\n if (this._isConnected) {\n const element = this.element;\n for (let i = 0; i < behaviorsToUnbind.length; ++i) {\n behaviorsToUnbind[i].unbind(element);\n }\n }\n }\n /**\n * Runs connected lifecycle behavior on the associated element.\n */\n onConnectedCallback() {\n if (this._isConnected) {\n return;\n }\n const element = this.element;\n if (this.needsInitialization) {\n this.finishInitialization();\n }\n else if (this.view !== null) {\n this.view.bind(element, defaultExecutionContext);\n }\n const behaviors = this.behaviors;\n if (behaviors !== null) {\n for (const [behavior] of behaviors) {\n behavior.bind(element, defaultExecutionContext);\n }\n }\n this.setIsConnected(true);\n }\n /**\n * Runs disconnected lifecycle behavior on the associated element.\n */\n onDisconnectedCallback() {\n if (!this._isConnected) {\n return;\n }\n this.setIsConnected(false);\n const view = this.view;\n if (view !== null) {\n view.unbind();\n }\n const behaviors = this.behaviors;\n if (behaviors !== null) {\n const element = this.element;\n for (const [behavior] of behaviors) {\n behavior.unbind(element);\n }\n }\n }\n /**\n * Runs the attribute changed callback for the associated element.\n * @param name - The name of the attribute that changed.\n * @param oldValue - The previous value of the attribute.\n * @param newValue - The new value of the attribute.\n */\n onAttributeChangedCallback(name, oldValue, newValue) {\n const attrDef = this.definition.attributeLookup[name];\n if (attrDef !== void 0) {\n attrDef.onAttributeChangedCallback(this.element, newValue);\n }\n }\n /**\n * Emits a custom HTML event.\n * @param type - The type name of the event.\n * @param detail - The event detail object to send with the event.\n * @param options - The event options. By default bubbles and composed.\n * @remarks\n * Only emits events if connected.\n */\n emit(type, detail, options) {\n if (this._isConnected) {\n return this.element.dispatchEvent(new CustomEvent(type, Object.assign(Object.assign({ detail }, defaultEventOptions), options)));\n }\n return false;\n }\n finishInitialization() {\n const element = this.element;\n const boundObservables = this.boundObservables;\n // If we have any observables that were bound, re-apply their values.\n if (boundObservables !== null) {\n const propertyNames = Object.keys(boundObservables);\n for (let i = 0, ii = propertyNames.length; i < ii; ++i) {\n const propertyName = propertyNames[i];\n element[propertyName] = boundObservables[propertyName];\n }\n this.boundObservables = null;\n }\n const definition = this.definition;\n // 1. Template overrides take top precedence.\n if (this._template === null) {\n if (this.element.resolveTemplate) {\n // 2. Allow for element instance overrides next.\n this._template = this.element.resolveTemplate();\n }\n else if (definition.template) {\n // 3. Default to the static definition.\n this._template = definition.template || null;\n }\n }\n // If we have a template after the above process, render it.\n // If there's no template, then the element author has opted into\n // custom rendering and they will managed the shadow root's content themselves.\n if (this._template !== null) {\n this.renderTemplate(this._template);\n }\n // 1. Styles overrides take top precedence.\n if (this._styles === null) {\n if (this.element.resolveStyles) {\n // 2. Allow for element instance overrides next.\n this._styles = this.element.resolveStyles();\n }\n else if (definition.styles) {\n // 3. Default to the static definition.\n this._styles = definition.styles || null;\n }\n }\n // If we have styles after the above process, add them.\n if (this._styles !== null) {\n this.addStyles(this._styles);\n }\n this.needsInitialization = false;\n }\n renderTemplate(template) {\n const element = this.element;\n // When getting the host to render to, we start by looking\n // up the shadow root. If there isn't one, then that means\n // we're doing a Light DOM render to the element's direct children.\n const host = getShadowRoot(element) || element;\n if (this.view !== null) {\n // If there's already a view, we need to unbind and remove through dispose.\n this.view.dispose();\n this.view = null;\n }\n else if (!this.needsInitialization) {\n // If there was previous custom rendering, we need to clear out the host.\n DOM.removeChildNodes(host);\n }\n if (template) {\n // If a new template was provided, render it.\n this.view = template.render(element, host, element);\n }\n }\n /**\n * Locates or creates a controller for the specified element.\n * @param element - The element to return the controller for.\n * @remarks\n * The specified element must have a {@link FASTElementDefinition}\n * registered either through the use of the {@link customElement}\n * decorator or a call to `FASTElement.define`.\n */\n static forCustomElement(element) {\n const controller = element.$fastController;\n if (controller !== void 0) {\n return controller;\n }\n const definition = FASTElementDefinition.forType(element.constructor);\n if (definition === void 0) {\n throw new Error(\"Missing FASTElement definition.\");\n }\n return (element.$fastController = new Controller(element, definition));\n }\n}\n","import { Controller } from \"./controller.js\";\nimport { FASTElementDefinition, } from \"./fast-definitions.js\";\n/* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */\nfunction createFASTElement(BaseType) {\n return class extends BaseType {\n constructor() {\n /* eslint-disable-next-line */\n super();\n Controller.forCustomElement(this);\n }\n $emit(type, detail, options) {\n return this.$fastController.emit(type, detail, options);\n }\n connectedCallback() {\n this.$fastController.onConnectedCallback();\n }\n disconnectedCallback() {\n this.$fastController.onDisconnectedCallback();\n }\n attributeChangedCallback(name, oldValue, newValue) {\n this.$fastController.onAttributeChangedCallback(name, oldValue, newValue);\n }\n };\n}\n/**\n * A minimal base class for FASTElements that also provides\n * static helpers for working with FASTElements.\n * @public\n */\nexport const FASTElement = Object.assign(createFASTElement(HTMLElement), {\n /**\n * Creates a new FASTElement base class inherited from the\n * provided base type.\n * @param BaseType - The base element type to inherit from.\n */\n from(BaseType) {\n return createFASTElement(BaseType);\n },\n /**\n * Defines a platform custom element based on the provided type and definition.\n * @param type - The custom element type to define.\n * @param nameOrDef - The name of the element to define or a definition object\n * that describes the element to define.\n */\n define(type, nameOrDef) {\n return new FASTElementDefinition(type, nameOrDef).define().type;\n },\n});\n/**\n * Decorator: Defines a platform custom element based on `FASTElement`.\n * @param nameOrDef - The name of the element to define or a definition object\n * that describes the element to define.\n * @public\n */\nexport function customElement(nameOrDef) {\n /* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */\n return function (type) {\n new FASTElementDefinition(type, nameOrDef).define();\n };\n}\n","/**\n * Directive for use in {@link css}.\n *\n * @public\n */\nexport class CSSDirective {\n /**\n * Creates a CSS fragment to interpolate into the CSS document.\n * @returns - the string to interpolate into CSS\n */\n createCSS() {\n return \"\";\n }\n /**\n * Creates a behavior to bind to the host element.\n * @returns - the behavior to bind to the host element, or undefined.\n */\n createBehavior() {\n return undefined;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * Expose ltr and rtl strings\n */\nexport var Direction;\n(function (Direction) {\n Direction[\"ltr\"] = \"ltr\";\n Direction[\"rtl\"] = \"rtl\";\n})(Direction || (Direction = {}));\n","/**\n * Retrieves the \"composed parent\" element of a node, ignoring DOM tree boundaries.\n * When the parent of a node is a shadow-root, it will return the host\n * element of the shadow root. Otherwise it will return the parent node or null if\n * no parent node exists.\n * @param element - The element for which to retrieve the composed parent\n *\n * @public\n */\nexport function composedParent(element) {\n const parentNode = element.parentElement;\n if (parentNode) {\n return parentNode;\n }\n else {\n const rootNode = element.getRootNode();\n if (rootNode.host instanceof HTMLElement) {\n // this is shadow-root\n return rootNode.host;\n }\n }\n return null;\n}\n","import { composedParent } from \"./composed-parent.js\";\n/**\n * Determines if the reference element contains the test element in a \"composed\" DOM tree that\n * ignores shadow DOM boundaries.\n *\n * Returns true of the test element is a descendent of the reference, or exist in\n * a shadow DOM that is a logical descendent of the reference. Otherwise returns false.\n * @param reference - The element to test for containment against.\n * @param test - The element being tested for containment.\n *\n * @public\n */\nexport function composedContains(reference, test) {\n let current = test;\n while (current !== null) {\n if (current === reference) {\n return true;\n }\n current = composedParent(current);\n }\n return false;\n}\n","import { __decorate } from \"tslib\";\nimport { DOM, ElementStyles, FASTElement, observable, Observable, prependToAdoptedStyleSheetsSymbol, } from \"@microsoft/fast-element\";\nexport const defaultElement = document.createElement(\"div\");\nfunction isFastElement(element) {\n return element instanceof FASTElement;\n}\nclass QueuedStyleSheetTarget {\n setProperty(name, value) {\n DOM.queueUpdate(() => this.target.setProperty(name, value));\n }\n removeProperty(name) {\n DOM.queueUpdate(() => this.target.removeProperty(name));\n }\n}\n/**\n * Handles setting properties for a FASTElement using Constructable Stylesheets\n */\nclass ConstructableStyleSheetTarget extends QueuedStyleSheetTarget {\n constructor(source) {\n super();\n const sheet = new CSSStyleSheet();\n sheet[prependToAdoptedStyleSheetsSymbol] = true;\n this.target = sheet.cssRules[sheet.insertRule(\":host{}\")].style;\n source.$fastController.addStyles(ElementStyles.create([sheet]));\n }\n}\nclass DocumentStyleSheetTarget extends QueuedStyleSheetTarget {\n constructor() {\n super();\n const sheet = new CSSStyleSheet();\n this.target = sheet.cssRules[sheet.insertRule(\":root{}\")].style;\n document.adoptedStyleSheets = [\n ...document.adoptedStyleSheets,\n sheet,\n ];\n }\n}\nclass HeadStyleElementStyleSheetTarget extends QueuedStyleSheetTarget {\n constructor() {\n super();\n this.style = document.createElement(\"style\");\n document.head.appendChild(this.style);\n const { sheet } = this.style;\n // Because the HTMLStyleElement has been appended,\n // there shouldn't exist a case where `sheet` is null,\n // but if-check it just in case.\n if (sheet) {\n // https://github.com/jsdom/jsdom uses https://github.com/NV/CSSOM for it's CSSOM implementation,\n // which implements the DOM Level 2 spec for CSSStyleSheet where insertRule() requires an index argument.\n const index = sheet.insertRule(\":root{}\", sheet.cssRules.length);\n this.target = sheet.cssRules[index].style;\n }\n }\n}\n/**\n * Handles setting properties for a FASTElement using an HTMLStyleElement\n */\nclass StyleElementStyleSheetTarget {\n constructor(target) {\n this.store = new Map();\n this.target = null;\n const controller = target.$fastController;\n this.style = document.createElement(\"style\");\n controller.addStyles(this.style);\n Observable.getNotifier(controller).subscribe(this, \"isConnected\");\n this.handleChange(controller, \"isConnected\");\n }\n targetChanged() {\n if (this.target !== null) {\n for (const [key, value] of this.store.entries()) {\n this.target.setProperty(key, value);\n }\n }\n }\n setProperty(name, value) {\n this.store.set(name, value);\n DOM.queueUpdate(() => {\n if (this.target !== null) {\n this.target.setProperty(name, value);\n }\n });\n }\n removeProperty(name) {\n this.store.delete(name);\n DOM.queueUpdate(() => {\n if (this.target !== null) {\n this.target.removeProperty(name);\n }\n });\n }\n handleChange(source, key) {\n // HTMLStyleElement.sheet is null if the element isn't connected to the DOM,\n // so this method reacts to changes in DOM connection for the element hosting\n // the HTMLStyleElement.\n //\n // All rules applied via the CSSOM also get cleared when the element disconnects,\n // so we need to add a new rule each time and populate it with the stored properties\n const { sheet } = this.style;\n if (sheet) {\n // Safari will throw if we try to use the return result of insertRule()\n // to index the rule inline, so store as a const prior to indexing.\n // https://github.com/jsdom/jsdom uses https://github.com/NV/CSSOM for it's CSSOM implementation,\n // which implements the DOM Level 2 spec for CSSStyleSheet where insertRule() requires an index argument.\n const index = sheet.insertRule(\":host{}\", sheet.cssRules.length);\n this.target = sheet.cssRules[index].style;\n }\n else {\n this.target = null;\n }\n }\n}\n__decorate([\n observable\n], StyleElementStyleSheetTarget.prototype, \"target\", void 0);\n/**\n * Handles setting properties for a normal HTMLElement\n */\nclass ElementStyleSheetTarget {\n constructor(source) {\n this.target = source.style;\n }\n setProperty(name, value) {\n DOM.queueUpdate(() => this.target.setProperty(name, value));\n }\n removeProperty(name) {\n DOM.queueUpdate(() => this.target.removeProperty(name));\n }\n}\n/**\n * Controls emission for default values. This control is capable\n * of emitting to multiple {@link PropertyTarget | PropertyTargets},\n * and only emits if it has at least one root.\n *\n * @internal\n */\nexport class RootStyleSheetTarget {\n setProperty(name, value) {\n RootStyleSheetTarget.properties[name] = value;\n for (const target of RootStyleSheetTarget.roots.values()) {\n PropertyTargetManager.getOrCreate(RootStyleSheetTarget.normalizeRoot(target)).setProperty(name, value);\n }\n }\n removeProperty(name) {\n delete RootStyleSheetTarget.properties[name];\n for (const target of RootStyleSheetTarget.roots.values()) {\n PropertyTargetManager.getOrCreate(RootStyleSheetTarget.normalizeRoot(target)).removeProperty(name);\n }\n }\n static registerRoot(root) {\n const { roots } = RootStyleSheetTarget;\n if (!roots.has(root)) {\n roots.add(root);\n const target = PropertyTargetManager.getOrCreate(this.normalizeRoot(root));\n for (const key in RootStyleSheetTarget.properties) {\n target.setProperty(key, RootStyleSheetTarget.properties[key]);\n }\n }\n }\n static unregisterRoot(root) {\n const { roots } = RootStyleSheetTarget;\n if (roots.has(root)) {\n roots.delete(root);\n const target = PropertyTargetManager.getOrCreate(RootStyleSheetTarget.normalizeRoot(root));\n for (const key in RootStyleSheetTarget.properties) {\n target.removeProperty(key);\n }\n }\n }\n /**\n * Returns the document when provided the default element,\n * otherwise is a no-op\n * @param root - the root to normalize\n */\n static normalizeRoot(root) {\n return root === defaultElement ? document : root;\n }\n}\nRootStyleSheetTarget.roots = new Set();\nRootStyleSheetTarget.properties = {};\n// Caches PropertyTarget instances\nconst propertyTargetCache = new WeakMap();\n// Use Constructable StyleSheets for FAST elements when supported, otherwise use\n// HTMLStyleElement instances\nconst propertyTargetCtor = DOM.supportsAdoptedStyleSheets\n ? ConstructableStyleSheetTarget\n : StyleElementStyleSheetTarget;\n/**\n * Manages creation and caching of PropertyTarget instances.\n *\n * @internal\n */\nexport const PropertyTargetManager = Object.freeze({\n getOrCreate(source) {\n if (propertyTargetCache.has(source)) {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n return propertyTargetCache.get(source);\n }\n let target;\n if (source === defaultElement) {\n target = new RootStyleSheetTarget();\n }\n else if (source instanceof Document) {\n target = DOM.supportsAdoptedStyleSheets\n ? new DocumentStyleSheetTarget()\n : new HeadStyleElementStyleSheetTarget();\n }\n else if (isFastElement(source)) {\n target = new propertyTargetCtor(source);\n }\n else {\n target = new ElementStyleSheetTarget(source);\n }\n propertyTargetCache.set(source, target);\n return target;\n },\n});\n","import { __decorate } from \"tslib\";\nimport { CSSDirective, defaultExecutionContext, FASTElement, observable, Observable, } from \"@microsoft/fast-element\";\nimport { composedParent } from \"../utilities/composed-parent.js\";\nimport { composedContains } from \"../utilities/composed-contains.js\";\nimport { PropertyTargetManager, RootStyleSheetTarget, } from \"./custom-property-manager.js\";\nimport { defaultElement } from \"./custom-property-manager.js\";\n/**\n * Implementation of {@link (DesignToken:interface)}\n */\nclass DesignTokenImpl extends CSSDirective {\n constructor(configuration) {\n super();\n this.subscribers = new WeakMap();\n this._appliedTo = new Set();\n this.name = configuration.name;\n if (configuration.cssCustomPropertyName !== null) {\n this.cssCustomProperty = `--${configuration.cssCustomPropertyName}`;\n this.cssVar = `var(${this.cssCustomProperty})`;\n }\n this.id = DesignTokenImpl.uniqueId();\n DesignTokenImpl.tokensById.set(this.id, this);\n }\n get appliedTo() {\n return [...this._appliedTo];\n }\n static from(nameOrConfig) {\n return new DesignTokenImpl({\n name: typeof nameOrConfig === \"string\" ? nameOrConfig : nameOrConfig.name,\n cssCustomPropertyName: typeof nameOrConfig === \"string\"\n ? nameOrConfig\n : nameOrConfig.cssCustomPropertyName === void 0\n ? nameOrConfig.name\n : nameOrConfig.cssCustomPropertyName,\n });\n }\n static isCSSDesignToken(token) {\n return typeof token.cssCustomProperty === \"string\";\n }\n static isDerivedDesignTokenValue(value) {\n return typeof value === \"function\";\n }\n /**\n * Gets a token by ID. Returns undefined if the token was not found.\n * @param id - The ID of the token\n * @returns\n */\n static getTokenById(id) {\n return DesignTokenImpl.tokensById.get(id);\n }\n getOrCreateSubscriberSet(target = this) {\n return (this.subscribers.get(target) ||\n (this.subscribers.set(target, new Set()) && this.subscribers.get(target)));\n }\n createCSS() {\n return this.cssVar || \"\";\n }\n getValueFor(element) {\n const value = DesignTokenNode.getOrCreate(element).get(this);\n if (value !== undefined) {\n return value;\n }\n throw new Error(`Value could not be retrieved for token named \"${this.name}\". Ensure the value is set for ${element} or an ancestor of ${element}.`);\n }\n setValueFor(element, value) {\n this._appliedTo.add(element);\n if (value instanceof DesignTokenImpl) {\n value = this.alias(value);\n }\n DesignTokenNode.getOrCreate(element).set(this, value);\n return this;\n }\n deleteValueFor(element) {\n this._appliedTo.delete(element);\n if (DesignTokenNode.existsFor(element)) {\n DesignTokenNode.getOrCreate(element).delete(this);\n }\n return this;\n }\n withDefault(value) {\n this.setValueFor(defaultElement, value);\n return this;\n }\n subscribe(subscriber, target) {\n const subscriberSet = this.getOrCreateSubscriberSet(target);\n if (target && !DesignTokenNode.existsFor(target)) {\n DesignTokenNode.getOrCreate(target);\n }\n if (!subscriberSet.has(subscriber)) {\n subscriberSet.add(subscriber);\n }\n }\n unsubscribe(subscriber, target) {\n const list = this.subscribers.get(target || this);\n if (list && list.has(subscriber)) {\n list.delete(subscriber);\n }\n }\n /**\n * Notifies subscribers that the value for an element has changed.\n * @param element - The element to emit a notification for\n */\n notify(element) {\n const record = Object.freeze({ token: this, target: element });\n if (this.subscribers.has(this)) {\n this.subscribers.get(this).forEach(sub => sub.handleChange(record));\n }\n if (this.subscribers.has(element)) {\n this.subscribers.get(element).forEach(sub => sub.handleChange(record));\n }\n }\n /**\n * Alias the token to the provided token.\n * @param token - the token to alias to\n */\n alias(token) {\n return ((target) => token.getValueFor(target));\n }\n}\nDesignTokenImpl.uniqueId = (() => {\n let id = 0;\n return () => {\n id++;\n return id.toString(16);\n };\n})();\n/**\n * Token storage by token ID\n */\nDesignTokenImpl.tokensById = new Map();\nclass CustomPropertyReflector {\n startReflection(token, target) {\n token.subscribe(this, target);\n this.handleChange({ token, target });\n }\n stopReflection(token, target) {\n token.unsubscribe(this, target);\n this.remove(token, target);\n }\n handleChange(record) {\n const { token, target } = record;\n this.add(token, target);\n }\n add(token, target) {\n PropertyTargetManager.getOrCreate(target).setProperty(token.cssCustomProperty, this.resolveCSSValue(DesignTokenNode.getOrCreate(target).get(token)));\n }\n remove(token, target) {\n PropertyTargetManager.getOrCreate(target).removeProperty(token.cssCustomProperty);\n }\n resolveCSSValue(value) {\n return value && typeof value.createCSS === \"function\" ? value.createCSS() : value;\n }\n}\n/**\n * A light wrapper around BindingObserver to handle value caching and\n * token notification\n */\nclass DesignTokenBindingObserver {\n constructor(source, token, node) {\n this.source = source;\n this.token = token;\n this.node = node;\n this.dependencies = new Set();\n this.observer = Observable.binding(source, this, false);\n // This is a little bit hacky because it's using internal APIs of BindingObserverImpl.\n // BindingObserverImpl queues updates to batch it's notifications which doesn't work for this\n // scenario because the DesignToken.getValueFor API is not async. Without this, using DesignToken.getValueFor()\n // after DesignToken.setValueFor() when setting a dependency of the value being retrieved can return a stale\n // value. Assigning .handleChange to .call forces immediate invocation of this classes handleChange() method,\n // allowing resolution of values synchronously.\n // TODO: https://github.com/microsoft/fast/issues/5110\n this.observer.handleChange = this.observer.call;\n this.handleChange();\n }\n disconnect() {\n this.observer.disconnect();\n }\n /**\n * @internal\n */\n handleChange() {\n try {\n this.node.store.set(this.token, this.observer.observe(this.node.target, defaultExecutionContext));\n }\n catch (e) {\n console.error(e);\n }\n }\n}\n/**\n * Stores resolved token/value pairs and notifies on changes\n */\nclass Store {\n constructor() {\n this.values = new Map();\n }\n set(token, value) {\n if (this.values.get(token) !== value) {\n this.values.set(token, value);\n Observable.getNotifier(this).notify(token.id);\n }\n }\n get(token) {\n Observable.track(this, token.id);\n return this.values.get(token);\n }\n delete(token) {\n this.values.delete(token);\n Observable.getNotifier(this).notify(token.id);\n }\n all() {\n return this.values.entries();\n }\n}\nconst nodeCache = new WeakMap();\nconst childToParent = new WeakMap();\n/**\n * A node responsible for setting and getting token values,\n * emitting values to CSS custom properties, and maintaining\n * inheritance structures.\n */\nclass DesignTokenNode {\n constructor(target) {\n this.target = target;\n /**\n * Stores all resolved token values for a node\n */\n this.store = new Store();\n /**\n * All children assigned to the node\n */\n this.children = [];\n /**\n * All values explicitly assigned to the node in their raw form\n */\n this.assignedValues = new Map();\n /**\n * Tokens currently being reflected to CSS custom properties\n */\n this.reflecting = new Set();\n /**\n * Binding observers for assigned and inherited derived values.\n */\n this.bindingObservers = new Map();\n /**\n * Emits notifications to token when token values\n * change the DesignTokenNode\n */\n this.tokenValueChangeHandler = {\n handleChange: (source, arg) => {\n const token = DesignTokenImpl.getTokenById(arg);\n if (token) {\n // Notify any token subscribers\n token.notify(this.target);\n this.updateCSSTokenReflection(source, token);\n }\n },\n };\n nodeCache.set(target, this);\n // Map store change notifications to token change notifications\n Observable.getNotifier(this.store).subscribe(this.tokenValueChangeHandler);\n if (target instanceof FASTElement) {\n target.$fastController.addBehaviors([this]);\n }\n else if (target.isConnected) {\n this.bind();\n }\n }\n /**\n * Returns a DesignTokenNode for an element.\n * Creates a new instance if one does not already exist for a node,\n * otherwise returns the cached instance\n *\n * @param target - The HTML element to retrieve a DesignTokenNode for\n */\n static getOrCreate(target) {\n return nodeCache.get(target) || new DesignTokenNode(target);\n }\n /**\n * Determines if a DesignTokenNode has been created for a target\n * @param target - The element to test\n */\n static existsFor(target) {\n return nodeCache.has(target);\n }\n /**\n * Searches for and return the nearest parent DesignTokenNode.\n * Null is returned if no node is found or the node provided is for a default element.\n */\n static findParent(node) {\n if (!(defaultElement === node.target)) {\n let parent = composedParent(node.target);\n while (parent !== null) {\n if (nodeCache.has(parent)) {\n return nodeCache.get(parent);\n }\n parent = composedParent(parent);\n }\n return DesignTokenNode.getOrCreate(defaultElement);\n }\n return null;\n }\n /**\n * Finds the closest node with a value explicitly assigned for a token, otherwise null.\n * @param token - The token to look for\n * @param start - The node to start looking for value assignment\n * @returns\n */\n static findClosestAssignedNode(token, start) {\n let current = start;\n do {\n if (current.has(token)) {\n return current;\n }\n current = current.parent\n ? current.parent\n : current.target !== defaultElement\n ? DesignTokenNode.getOrCreate(defaultElement)\n : null;\n } while (current !== null);\n return null;\n }\n /**\n * The parent DesignTokenNode, or null.\n */\n get parent() {\n return childToParent.get(this) || null;\n }\n updateCSSTokenReflection(source, token) {\n if (DesignTokenImpl.isCSSDesignToken(token)) {\n const parent = this.parent;\n const reflecting = this.isReflecting(token);\n if (parent) {\n const parentValue = parent.get(token);\n const sourceValue = source.get(token);\n if (parentValue !== sourceValue && !reflecting) {\n this.reflectToCSS(token);\n }\n else if (parentValue === sourceValue && reflecting) {\n this.stopReflectToCSS(token);\n }\n }\n else if (!reflecting) {\n this.reflectToCSS(token);\n }\n }\n }\n /**\n * Checks if a token has been assigned an explicit value the node.\n * @param token - the token to check.\n */\n has(token) {\n return this.assignedValues.has(token);\n }\n /**\n * Gets the value of a token for a node\n * @param token - The token to retrieve the value for\n * @returns\n */\n get(token) {\n const value = this.store.get(token);\n if (value !== undefined) {\n return value;\n }\n const raw = this.getRaw(token);\n if (raw !== undefined) {\n this.hydrate(token, raw);\n return this.get(token);\n }\n }\n /**\n * Retrieves the raw assigned value of a token from the nearest assigned node.\n * @param token - The token to retrieve a raw value for\n * @returns\n */\n getRaw(token) {\n var _a;\n if (this.assignedValues.has(token)) {\n return this.assignedValues.get(token);\n }\n return (_a = DesignTokenNode.findClosestAssignedNode(token, this)) === null || _a === void 0 ? void 0 : _a.getRaw(token);\n }\n /**\n * Sets a token to a value for a node\n * @param token - The token to set\n * @param value - The value to set the token to\n */\n set(token, value) {\n if (DesignTokenImpl.isDerivedDesignTokenValue(this.assignedValues.get(token))) {\n this.tearDownBindingObserver(token);\n }\n this.assignedValues.set(token, value);\n if (DesignTokenImpl.isDerivedDesignTokenValue(value)) {\n this.setupBindingObserver(token, value);\n }\n else {\n this.store.set(token, value);\n }\n }\n /**\n * Deletes a token value for the node.\n * @param token - The token to delete the value for\n */\n delete(token) {\n this.assignedValues.delete(token);\n this.tearDownBindingObserver(token);\n const upstream = this.getRaw(token);\n if (upstream) {\n this.hydrate(token, upstream);\n }\n else {\n this.store.delete(token);\n }\n }\n /**\n * Invoked when the DesignTokenNode.target is attached to the document\n */\n bind() {\n const parent = DesignTokenNode.findParent(this);\n if (parent) {\n parent.appendChild(this);\n }\n for (const key of this.assignedValues.keys()) {\n key.notify(this.target);\n }\n }\n /**\n * Invoked when the DesignTokenNode.target is detached from the document\n */\n unbind() {\n if (this.parent) {\n const parent = childToParent.get(this);\n parent.removeChild(this);\n }\n for (const token of this.bindingObservers.keys()) {\n this.tearDownBindingObserver(token);\n }\n }\n /**\n * Appends a child to a parent DesignTokenNode.\n * @param child - The child to append to the node\n */\n appendChild(child) {\n if (child.parent) {\n childToParent.get(child).removeChild(child);\n }\n const reParent = this.children.filter(x => child.contains(x));\n childToParent.set(child, this);\n this.children.push(child);\n reParent.forEach(x => child.appendChild(x));\n Observable.getNotifier(this.store).subscribe(child);\n // How can we not notify *every* subscriber?\n for (const [token, value] of this.store.all()) {\n child.hydrate(token, this.bindingObservers.has(token) ? this.getRaw(token) : value);\n // Need to stop reflecting any tokens that can now be inherited\n child.updateCSSTokenReflection(child.store, token);\n }\n }\n /**\n * Removes a child from a node.\n * @param child - The child to remove.\n */\n removeChild(child) {\n const childIndex = this.children.indexOf(child);\n if (childIndex !== -1) {\n this.children.splice(childIndex, 1);\n }\n Observable.getNotifier(this.store).unsubscribe(child);\n if (child.parent !== this) {\n return false;\n }\n const deleted = childToParent.delete(child);\n for (const [token] of this.store.all()) {\n child.hydrate(token, child.getRaw(token));\n // Need to start reflecting any assigned values that were previously inherited\n child.updateCSSTokenReflection(child.store, token);\n }\n return deleted;\n }\n /**\n * Tests whether a provided node is contained by\n * the calling node.\n * @param test - The node to test\n */\n contains(test) {\n return composedContains(this.target, test.target);\n }\n /**\n * Instructs the node to reflect a design token for the provided token.\n * @param token - The design token to reflect\n */\n reflectToCSS(token) {\n if (!this.isReflecting(token)) {\n this.reflecting.add(token);\n DesignTokenNode.cssCustomPropertyReflector.startReflection(token, this.target);\n }\n }\n /**\n * Stops reflecting a DesignToken to CSS\n * @param token - The design token to stop reflecting\n */\n stopReflectToCSS(token) {\n if (this.isReflecting(token)) {\n this.reflecting.delete(token);\n DesignTokenNode.cssCustomPropertyReflector.stopReflection(token, this.target);\n }\n }\n /**\n * Determines if a token is being reflected to CSS for a node.\n * @param token - The token to check for reflection\n * @returns\n */\n isReflecting(token) {\n return this.reflecting.has(token);\n }\n /**\n * Handle changes to upstream tokens\n * @param source - The parent DesignTokenNode\n * @param property - The token ID that changed\n */\n handleChange(source, property) {\n const token = DesignTokenImpl.getTokenById(property);\n if (!token) {\n return;\n }\n this.hydrate(token, this.getRaw(token));\n this.updateCSSTokenReflection(this.store, token);\n }\n /**\n * Hydrates a token with a DesignTokenValue, making retrieval available.\n * @param token - The token to hydrate\n * @param value - The value to hydrate\n */\n hydrate(token, value) {\n if (!this.has(token)) {\n const observer = this.bindingObservers.get(token);\n if (DesignTokenImpl.isDerivedDesignTokenValue(value)) {\n if (observer) {\n // If the binding source doesn't match, we need\n // to update the binding\n if (observer.source !== value) {\n this.tearDownBindingObserver(token);\n this.setupBindingObserver(token, value);\n }\n }\n else {\n this.setupBindingObserver(token, value);\n }\n }\n else {\n if (observer) {\n this.tearDownBindingObserver(token);\n }\n this.store.set(token, value);\n }\n }\n }\n /**\n * Sets up a binding observer for a derived token value that notifies token\n * subscribers on change.\n *\n * @param token - The token to notify when the binding updates\n * @param source - The binding source\n */\n setupBindingObserver(token, source) {\n const binding = new DesignTokenBindingObserver(source, token, this);\n this.bindingObservers.set(token, binding);\n return binding;\n }\n /**\n * Tear down a binding observer for a token.\n */\n tearDownBindingObserver(token) {\n if (this.bindingObservers.has(token)) {\n this.bindingObservers.get(token).disconnect();\n this.bindingObservers.delete(token);\n return true;\n }\n return false;\n }\n}\n/**\n * Responsible for reflecting tokens to CSS custom properties\n */\nDesignTokenNode.cssCustomPropertyReflector = new CustomPropertyReflector();\n__decorate([\n observable\n], DesignTokenNode.prototype, \"children\", void 0);\nfunction create(nameOrConfig) {\n return DesignTokenImpl.from(nameOrConfig);\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n/**\n * Factory object for creating {@link (DesignToken:interface)} instances.\n * @public\n */\nexport const DesignToken = Object.freeze({\n create,\n /**\n * Informs DesignToken that an HTMLElement for which tokens have\n * been set has been connected to the document.\n *\n * The browser does not provide a reliable mechanism to observe an HTMLElement's connectedness\n * in all scenarios, so invoking this method manually is necessary when:\n *\n * 1. Token values are set for an HTMLElement.\n * 2. The HTMLElement does not inherit from FASTElement.\n * 3. The HTMLElement is not connected to the document when token values are set.\n *\n * @param element - The element to notify\n * @returns - true if notification was successful, otherwise false.\n */\n notifyConnection(element) {\n if (!element.isConnected || !DesignTokenNode.existsFor(element)) {\n return false;\n }\n DesignTokenNode.getOrCreate(element).bind();\n return true;\n },\n /**\n * Informs DesignToken that an HTMLElement for which tokens have\n * been set has been disconnected to the document.\n *\n * The browser does not provide a reliable mechanism to observe an HTMLElement's connectedness\n * in all scenarios, so invoking this method manually is necessary when:\n *\n * 1. Token values are set for an HTMLElement.\n * 2. The HTMLElement does not inherit from FASTElement.\n *\n * @param element - The element to notify\n * @returns - true if notification was successful, otherwise false.\n */\n notifyDisconnection(element) {\n if (element.isConnected || !DesignTokenNode.existsFor(element)) {\n return false;\n }\n DesignTokenNode.getOrCreate(element).unbind();\n return true;\n },\n /**\n * Registers and element or document as a DesignToken root.\n * {@link CSSDesignToken | CSSDesignTokens} with default values assigned via\n * {@link (DesignToken:interface).withDefault} will emit CSS custom properties to all\n * registered roots.\n * @param target - The root to register\n */\n registerRoot(target = defaultElement) {\n RootStyleSheetTarget.registerRoot(target);\n },\n /**\n * Unregister an element or document as a DesignToken root.\n * @param target - The root to deregister\n */\n unregisterRoot(target = defaultElement) {\n RootStyleSheetTarget.unregisterRoot(target);\n },\n});\n/* eslint-enable @typescript-eslint/no-non-null-assertion */\n","/**\n * Ensures that an input number does not exceed a max value and is not less than a min value.\n * @param i - the number to clamp\n * @param min - the maximum (inclusive) value\n * @param max - the minimum (inclusive) value\n * @public\n */\nexport function clamp(i, min, max) {\n if (isNaN(i) || i <= min) {\n return min;\n }\n else if (i >= max) {\n return max;\n }\n return i;\n}\n/**\n * Scales an input to a number between 0 and 1\n * @param i - a number between min and max\n * @param min - the max value\n * @param max - the min value\n * @public\n */\nexport function normalize(i, min, max) {\n if (isNaN(i) || i <= min) {\n return 0.0;\n }\n else if (i >= max) {\n return 1.0;\n }\n return i / (max - min);\n}\n/**\n * Scales a number between 0 and 1\n * @param i - the number to denormalize\n * @param min - the min value\n * @param max - the max value\n * @public\n */\nexport function denormalize(i, min, max) {\n if (isNaN(i)) {\n return min;\n }\n return min + i * (max - min);\n}\n/**\n * Converts degrees to radians.\n * @param i - degrees\n * @public\n */\nexport function degreesToRadians(i) {\n return i * (Math.PI / 180.0);\n}\n/**\n * Converts radians to degrees.\n * @param i - radians\n * @public\n */\nexport function radiansToDegrees(i) {\n return i * (180.0 / Math.PI);\n}\n/**\n * Converts a number between 0 and 255 to a hex string.\n * @param i - the number to convert to a hex string\n * @public\n */\nexport function getHexStringForByte(i) {\n const s = Math.round(clamp(i, 0.0, 255.0)).toString(16);\n if (s.length === 1) {\n return \"0\" + s;\n }\n return s;\n}\n/**\n * Linearly interpolate\n * @public\n */\nexport function lerp(i, min, max) {\n if (isNaN(i) || i <= 0.0) {\n return min;\n }\n else if (i >= 1.0) {\n return max;\n }\n return min + i * (max - min);\n}\n/**\n * Linearly interpolate angles in degrees\n * @public\n */\nexport function lerpAnglesInDegrees(i, min, max) {\n if (i <= 0.0) {\n return min % 360.0;\n }\n else if (i >= 1.0) {\n return max % 360.0;\n }\n const a = (min - max + 360.0) % 360.0;\n const b = (max - min + 360.0) % 360.0;\n if (a <= b) {\n return (min - a * i + 360.0) % 360.0;\n }\n return (min + a * i + 360.0) % 360.0;\n}\nconst TwoPI = Math.PI * 2;\n/**\n * Linearly interpolate angles in radians\n * @public\n */\nexport function lerpAnglesInRadians(i, min, max) {\n if (isNaN(i) || i <= 0.0) {\n return min % TwoPI;\n }\n else if (i >= 1.0) {\n return max % TwoPI;\n }\n const a = (min - max + TwoPI) % TwoPI;\n const b = (max - min + TwoPI) % TwoPI;\n if (a <= b) {\n return (min - a * i + TwoPI) % TwoPI;\n }\n return (min + a * i + TwoPI) % TwoPI;\n}\n/**\n *\n * Will return infinity if i*10^(precision) overflows number\n * note that floating point rounding rules come into play here\n * so values that end up rounding on a .5 round to the nearest\n * even not always up so 2.5 rounds to 2\n * @param i - the number to round\n * @param precision - the precision to round to\n *\n * @public\n */\nexport function roundToPrecisionSmall(i, precision) {\n const factor = Math.pow(10, precision);\n return Math.round(i * factor) / factor;\n}\n","import { roundToPrecisionSmall } from \"./math-utilities.js\";\n/**\n * This uses Hue values in \"degree\" format. So expect a range of [0,360]. Some other implementations instead uses radians or a normalized Hue with range [0,1]. Be aware of this when checking values or using other libraries.\n *\n * @public\n */\nexport class ColorHSL {\n constructor(hue, sat, lum) {\n this.h = hue;\n this.s = sat;\n this.l = lum;\n }\n /**\n * Construct a {@link ColorHSL} from a config object.\n */\n static fromObject(data) {\n if (data && !isNaN(data.h) && !isNaN(data.s) && !isNaN(data.l)) {\n return new ColorHSL(data.h, data.s, data.l);\n }\n return null;\n }\n /**\n * Determines if a color is equal to another\n * @param rhs - the value to compare\n */\n equalValue(rhs) {\n return this.h === rhs.h && this.s === rhs.s && this.l === rhs.l;\n }\n /**\n * Returns a new {@link ColorHSL} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorHSL(roundToPrecisionSmall(this.h, precision), roundToPrecisionSmall(this.s, precision), roundToPrecisionSmall(this.l, precision));\n }\n /**\n * Returns the {@link ColorHSL} formatted as an object.\n */\n toObject() {\n return { h: this.h, s: this.s, l: this.l };\n }\n}\n","import { roundToPrecisionSmall } from \"./math-utilities.js\";\n/**\n * {@link https://en.wikipedia.org/wiki/CIELAB_color_space | CIELAB color space}\n * This implementation uses the D65 constants for 2 degrees. That determines the constants used for the pure white point of the XYZ space of 0.95047, 1.0, 1.08883.\n * {@link https://en.wikipedia.org/wiki/Illuminant_D65}\n * These constants determine how the XYZ, LCH and LAB colors convert to/from RGB.\n *\n * @public\n */\nexport class ColorLAB {\n constructor(l, a, b) {\n this.l = l;\n this.a = a;\n this.b = b;\n }\n /**\n * Construct a {@link ColorLAB} from a config object.\n */\n static fromObject(data) {\n if (data && !isNaN(data.l) && !isNaN(data.a) && !isNaN(data.b)) {\n return new ColorLAB(data.l, data.a, data.b);\n }\n return null;\n }\n /**\n * Determines if a color is equal to another\n * @param rhs - the value to compare\n */\n equalValue(rhs) {\n return this.l === rhs.l && this.a === rhs.a && this.b === rhs.b;\n }\n /**\n * Returns a new {@link ColorLAB} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorLAB(roundToPrecisionSmall(this.l, precision), roundToPrecisionSmall(this.a, precision), roundToPrecisionSmall(this.b, precision));\n }\n /**\n * Returns the {@link ColorLAB} formatted as an object.\n */\n toObject() {\n return { l: this.l, a: this.a, b: this.b };\n }\n}\nColorLAB.epsilon = 216 / 24389;\nColorLAB.kappa = 24389 / 27;\n","import { clamp, denormalize, getHexStringForByte, roundToPrecisionSmall, } from \"./math-utilities.js\";\n/**\n * A RGBA color with 64 bit channels.\n *\n * @example\n * ```ts\n * new ColorRGBA64(1, 0, 0, 1) // red\n * ```\n * @public\n */\nexport class ColorRGBA64 {\n /**\n *\n * @param red - the red value\n * @param green - the green value\n * @param blue - the blue value\n * @param alpha - the alpha value\n */\n constructor(red, green, blue, alpha) {\n this.r = red;\n this.g = green;\n this.b = blue;\n this.a = typeof alpha === \"number\" && !isNaN(alpha) ? alpha : 1;\n }\n /**\n * Construct a {@link ColorRGBA64} from a {@link ColorRGBA64Config}\n * @param data - the config object\n */\n static fromObject(data) {\n return data && !isNaN(data.r) && !isNaN(data.g) && !isNaN(data.b)\n ? new ColorRGBA64(data.r, data.g, data.b, data.a)\n : null;\n }\n /**\n * Determines if one color is equal to another.\n * @param rhs - the color to compare\n */\n equalValue(rhs) {\n return (this.r === rhs.r && this.g === rhs.g && this.b === rhs.b && this.a === rhs.a);\n }\n /**\n * Returns the color formatted as a string; #RRGGBB\n */\n toStringHexRGB() {\n return \"#\" + [this.r, this.g, this.b].map(this.formatHexValue).join(\"\");\n }\n /**\n * Returns the color formatted as a string; #RRGGBBAA\n */\n toStringHexRGBA() {\n return this.toStringHexRGB() + this.formatHexValue(this.a);\n }\n /**\n * Returns the color formatted as a string; #AARRGGBB\n */\n toStringHexARGB() {\n return \"#\" + [this.a, this.r, this.g, this.b].map(this.formatHexValue).join(\"\");\n }\n /**\n * Returns the color formatted as a string; \"rgb(0xRR, 0xGG, 0xBB)\"\n */\n toStringWebRGB() {\n return `rgb(${Math.round(denormalize(this.r, 0.0, 255.0))},${Math.round(denormalize(this.g, 0.0, 255.0))},${Math.round(denormalize(this.b, 0.0, 255.0))})`;\n }\n /**\n * Returns the color formatted as a string; \"rgba(0xRR, 0xGG, 0xBB, a)\"\n * @remarks\n * Note that this follows the convention of putting alpha in the range [0.0,1.0] while the other three channels are [0,255]\n */\n toStringWebRGBA() {\n return `rgba(${Math.round(denormalize(this.r, 0.0, 255.0))},${Math.round(denormalize(this.g, 0.0, 255.0))},${Math.round(denormalize(this.b, 0.0, 255.0))},${clamp(this.a, 0, 1)})`;\n }\n /**\n * Returns a new {@link ColorRGBA64} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorRGBA64(roundToPrecisionSmall(this.r, precision), roundToPrecisionSmall(this.g, precision), roundToPrecisionSmall(this.b, precision), roundToPrecisionSmall(this.a, precision));\n }\n /**\n * Returns a new {@link ColorRGBA64} with channel values clamped between 0 and 1.\n */\n clamp() {\n return new ColorRGBA64(clamp(this.r, 0, 1), clamp(this.g, 0, 1), clamp(this.b, 0, 1), clamp(this.a, 0, 1));\n }\n /**\n * Converts the {@link ColorRGBA64} to a {@link ColorRGBA64Config}.\n */\n toObject() {\n return { r: this.r, g: this.g, b: this.b, a: this.a };\n }\n formatHexValue(value) {\n return getHexStringForByte(denormalize(value, 0.0, 255.0));\n }\n}\n","import { roundToPrecisionSmall } from \"./math-utilities.js\";\n/**\n * {@link https://en.wikipedia.org/wiki/CIE_1931_color_space | XYZ color space}\n *\n * This implementation uses the D65 constants for 2 degrees. That determines the constants used for the pure white point of the XYZ space of 0.95047, 1.0, 1.08883.\n * {@link https://en.wikipedia.org/wiki/Illuminant_D65}\n * These constants determine how the XYZ, LCH and LAB colors convert to/from RGB.\n *\n * @public\n */\nexport class ColorXYZ {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n /**\n * Construct a {@link ColorXYZ} from a config object.\n */\n static fromObject(data) {\n if (data && !isNaN(data.x) && !isNaN(data.y) && !isNaN(data.z)) {\n return new ColorXYZ(data.x, data.y, data.z);\n }\n return null;\n }\n /**\n * Determines if a color is equal to another\n * @param rhs - the value to compare\n */\n equalValue(rhs) {\n return this.x === rhs.x && this.y === rhs.y && this.z === rhs.z;\n }\n /**\n * Returns a new {@link ColorXYZ} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorXYZ(roundToPrecisionSmall(this.x, precision), roundToPrecisionSmall(this.y, precision), roundToPrecisionSmall(this.z, precision));\n }\n /**\n * Returns the {@link ColorXYZ} formatted as an object.\n */\n toObject() {\n return { x: this.x, y: this.y, z: this.z };\n }\n}\n/**\n * D65 2 degree white point\n */\nColorXYZ.whitePoint = new ColorXYZ(0.95047, 1.0, 1.08883);\n","import { ColorHSL } from \"./color-hsl.js\";\nimport { ColorHSV } from \"./color-hsv.js\";\nimport { ColorLAB } from \"./color-lab.js\";\nimport { ColorLCH } from \"./color-lch.js\";\nimport { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { ColorXYZ } from \"./color-xyz.js\";\nimport { degreesToRadians, radiansToDegrees } from \"./math-utilities.js\";\n// All hue values are in degrees rather than radians or normalized\n// All conversions use the D65 2 degree white point for XYZ\n// Info on conversions and constants used can be found in the following:\n// https://en.wikipedia.org/wiki/CIELAB_color_space\n// https://en.wikipedia.org/wiki/Illuminant_D65\n// https://ninedegreesbelow.com/photography/xyz-rgb.html\n// http://user.engineering.uiowa.edu/~aip/Misc/ColorFAQ.html\n// https://web.stanford.edu/~sujason/ColorBalancing/adaptation.html\n// http://brucelindbloom.com/index.html\n/**\n * Get the luminance of a color in the linear RGB space.\n * This is not the same as the relative luminance in the sRGB space for WCAG contrast calculations. Use rgbToRelativeLuminance instead.\n * @param rgb - The input color\n *\n * @public\n */\nexport function rgbToLinearLuminance(rgb) {\n return rgb.r * 0.2126 + rgb.g * 0.7152 + rgb.b * 0.0722;\n}\n/**\n * Get the relative luminance of a color.\n * Adjusts the color to sRGB space, which is necessary for the WCAG contrast spec.\n * The alpha channel of the input is ignored.\n * @param rgb - The input color\n *\n * @public\n */\nexport function rgbToRelativeLuminance(rgb) {\n function luminanceHelper(i) {\n if (i <= 0.03928) {\n return i / 12.92;\n }\n return Math.pow((i + 0.055) / 1.055, 2.4);\n }\n return rgbToLinearLuminance(new ColorRGBA64(luminanceHelper(rgb.r), luminanceHelper(rgb.g), luminanceHelper(rgb.b), 1));\n}\nconst calculateContrastRatio = (a, b) => (a + 0.05) / (b + 0.05);\n/**\n * Calculate the contrast ratio between two colors. Uses the formula described by {@link https://www.w3.org/TR/WCAG20-TECHS/G17.html | WCAG 2.0}.\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function contrastRatio(a, b) {\n const luminanceA = rgbToRelativeLuminance(a);\n const luminanceB = rgbToRelativeLuminance(b);\n return luminanceA > luminanceB\n ? calculateContrastRatio(luminanceA, luminanceB)\n : calculateContrastRatio(luminanceB, luminanceA);\n}\nfunction calcChannelOverlay(match, background, overlay) {\n if (overlay - background === 0) {\n return 0;\n }\n else {\n return (match - background) / (overlay - background);\n }\n}\nfunction calcRgbOverlay(rgbMatch, rgbBackground, rgbOverlay) {\n const rChannel = calcChannelOverlay(rgbMatch.r, rgbBackground.r, rgbOverlay.r);\n const gChannel = calcChannelOverlay(rgbMatch.g, rgbBackground.g, rgbOverlay.g);\n const bChannel = calcChannelOverlay(rgbMatch.b, rgbBackground.b, rgbOverlay.b);\n return (rChannel + gChannel + bChannel) / 3;\n}\n/**\n * Calculate an overlay color that uses rgba (rgb + alpha) that matches the appearance of a given solid color when placed on the same background\n * @param rgbMatch - The solid color the overlay should match in appearance when placed over the rgbBackground\n * @param rgbBackground - The background on which the overlay rests\n * @param rgbOverlay - The rgb color of the overlay. Typically this is either pure white or pure black and when not provided will be determined automatically. This color will be used in the returned output\n * @returns The rgba (rgb + alpha) color of the overlay\n *\n * @public\n */\nexport function calculateOverlayColor(rgbMatch, rgbBackground, rgbOverlay = null) {\n let alpha = 0;\n let overlay = rgbOverlay;\n if (overlay !== null) {\n alpha = calcRgbOverlay(rgbMatch, rgbBackground, overlay);\n }\n else {\n overlay = new ColorRGBA64(0, 0, 0, 1);\n alpha = calcRgbOverlay(rgbMatch, rgbBackground, overlay);\n if (alpha <= 0) {\n overlay = new ColorRGBA64(1, 1, 1, 1);\n alpha = calcRgbOverlay(rgbMatch, rgbBackground, overlay);\n }\n }\n alpha = Math.round(alpha * 1000) / 1000;\n return new ColorRGBA64(overlay.r, overlay.g, overlay.b, alpha);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorHSL}\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToHSL(rgb) {\n const max = Math.max(rgb.r, rgb.g, rgb.b);\n const min = Math.min(rgb.r, rgb.g, rgb.b);\n const delta = max - min;\n let hue = 0;\n if (delta !== 0) {\n if (max === rgb.r) {\n hue = 60 * (((rgb.g - rgb.b) / delta) % 6);\n }\n else if (max === rgb.g) {\n hue = 60 * ((rgb.b - rgb.r) / delta + 2);\n }\n else {\n hue = 60 * ((rgb.r - rgb.g) / delta + 4);\n }\n }\n if (hue < 0) {\n hue += 360;\n }\n const lum = (max + min) / 2;\n let sat = 0;\n if (delta !== 0) {\n sat = delta / (1 - Math.abs(2 * lum - 1));\n }\n return new ColorHSL(hue, sat, lum);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorHSL} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param hsl - the hsl color to convert\n * @param alpha - the alpha value\n *\n * @public\n */\nexport function hslToRGB(hsl, alpha = 1) {\n const c = (1 - Math.abs(2 * hsl.l - 1)) * hsl.s;\n const x = c * (1 - Math.abs(((hsl.h / 60) % 2) - 1));\n const m = hsl.l - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n if (hsl.h < 60) {\n r = c;\n g = x;\n b = 0;\n }\n else if (hsl.h < 120) {\n r = x;\n g = c;\n b = 0;\n }\n else if (hsl.h < 180) {\n r = 0;\n g = c;\n b = x;\n }\n else if (hsl.h < 240) {\n r = 0;\n g = x;\n b = c;\n }\n else if (hsl.h < 300) {\n r = x;\n g = 0;\n b = c;\n }\n else if (hsl.h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n return new ColorRGBA64(r + m, g + m, b + m, alpha);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorHSV}\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToHSV(rgb) {\n const max = Math.max(rgb.r, rgb.g, rgb.b);\n const min = Math.min(rgb.r, rgb.g, rgb.b);\n const delta = max - min;\n let hue = 0;\n if (delta !== 0) {\n if (max === rgb.r) {\n hue = 60 * (((rgb.g - rgb.b) / delta) % 6);\n }\n else if (max === rgb.g) {\n hue = 60 * ((rgb.b - rgb.r) / delta + 2);\n }\n else {\n hue = 60 * ((rgb.r - rgb.g) / delta + 4);\n }\n }\n if (hue < 0) {\n hue += 360;\n }\n let sat = 0;\n if (max !== 0) {\n sat = delta / max;\n }\n return new ColorHSV(hue, sat, max);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorHSV} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param hsv - the hsv color to convert\n * @param alpha - the alpha value\n *\n * @public\n */\nexport function hsvToRGB(hsv, alpha = 1) {\n const c = hsv.s * hsv.v;\n const x = c * (1 - Math.abs(((hsv.h / 60) % 2) - 1));\n const m = hsv.v - c;\n let r = 0;\n let g = 0;\n let b = 0;\n if (hsv.h < 60) {\n r = c;\n g = x;\n b = 0;\n }\n else if (hsv.h < 120) {\n r = x;\n g = c;\n b = 0;\n }\n else if (hsv.h < 180) {\n r = 0;\n g = c;\n b = x;\n }\n else if (hsv.h < 240) {\n r = 0;\n g = x;\n b = c;\n }\n else if (hsv.h < 300) {\n r = x;\n g = 0;\n b = c;\n }\n else if (hsv.h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n return new ColorRGBA64(r + m, g + m, b + m, alpha);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorLCH} to a {@link @microsoft/fast-colors#ColorLAB}\n * @param lch - the lch color to convert\n *\n * @public\n */\nexport function lchToLAB(lch) {\n let a = 0;\n let b = 0;\n if (lch.h !== 0) {\n a = Math.cos(degreesToRadians(lch.h)) * lch.c;\n b = Math.sin(degreesToRadians(lch.h)) * lch.c;\n }\n return new ColorLAB(lch.l, a, b);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorLAB} to a {@link @microsoft/fast-colors#ColorLCH}\n * @param lab - the lab color to convert\n *\n * @remarks\n * The discontinuity in the C parameter at 0 means that floating point errors will often result in values near 0 giving unpredictable results.\n * EG: 0.0000001 gives a very different result than -0.0000001\n * In cases where both a and b are very near zero this function will return an LCH color with an H of 0\n * More info about the atan2 function: {@link https://en.wikipedia.org/wiki/Atan2}\n * @public\n */\nexport function labToLCH(lab) {\n let h = 0;\n // Because of the discontinuity at 0 if a number is very close to 0 - often due to floating point errors - then\n // it gives unexpected results. EG: 0.000000000001 gives a different result than 0. So just avoid any number\n // that has both a and b very close to zero and lump it in with the h = 0 case.\n if (Math.abs(lab.b) > 0.001 || Math.abs(lab.a) > 0.001) {\n h = radiansToDegrees(Math.atan2(lab.b, lab.a));\n }\n if (h < 0) {\n h += 360;\n }\n const c = Math.sqrt(lab.a * lab.a + lab.b * lab.b);\n return new ColorLCH(lab.l, c, h);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorLAB} to a {@link @microsoft/fast-colors#ColorXYZ}\n * @param lab - the lab color to convert\n *\n * @public\n */\nexport function labToXYZ(lab) {\n const fy = (lab.l + 16) / 116;\n const fx = fy + lab.a / 500;\n const fz = fy - lab.b / 200;\n const xcubed = Math.pow(fx, 3);\n const ycubed = Math.pow(fy, 3);\n const zcubed = Math.pow(fz, 3);\n let x = 0;\n if (xcubed > ColorLAB.epsilon) {\n x = xcubed;\n }\n else {\n x = (116 * fx - 16) / ColorLAB.kappa;\n }\n let y = 0;\n if (lab.l > ColorLAB.epsilon * ColorLAB.kappa) {\n y = ycubed;\n }\n else {\n y = lab.l / ColorLAB.kappa;\n }\n let z = 0;\n if (zcubed > ColorLAB.epsilon) {\n z = zcubed;\n }\n else {\n z = (116 * fz - 16) / ColorLAB.kappa;\n }\n x = ColorXYZ.whitePoint.x * x;\n y = ColorXYZ.whitePoint.y * y;\n z = ColorXYZ.whitePoint.z * z;\n return new ColorXYZ(x, y, z);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorXYZ} to a {@link @microsoft/fast-colors#ColorLAB}\n * @param xyz - the xyz color to convert\n *\n * @public\n */\nexport function xyzToLAB(xyz) {\n function xyzToLABHelper(i) {\n if (i > ColorLAB.epsilon) {\n return Math.pow(i, 1 / 3);\n }\n return (ColorLAB.kappa * i + 16) / 116;\n }\n const x = xyzToLABHelper(xyz.x / ColorXYZ.whitePoint.x);\n const y = xyzToLABHelper(xyz.y / ColorXYZ.whitePoint.y);\n const z = xyzToLABHelper(xyz.z / ColorXYZ.whitePoint.z);\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return new ColorLAB(l, a, b);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorXYZ}\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n * @public\n */\nexport function rgbToXYZ(rgb) {\n function rgbToXYZHelper(i) {\n if (i <= 0.04045) {\n return i / 12.92;\n }\n return Math.pow((i + 0.055) / 1.055, 2.4);\n }\n const r = rgbToXYZHelper(rgb.r);\n const g = rgbToXYZHelper(rgb.g);\n const b = rgbToXYZHelper(rgb.b);\n const x = r * 0.4124564 + g * 0.3575761 + b * 0.1804375;\n const y = r * 0.2126729 + g * 0.7151522 + b * 0.072175;\n const z = r * 0.0193339 + g * 0.119192 + b * 0.9503041;\n return new ColorXYZ(x, y, z);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorXYZ} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param xyz - the xyz color to convert\n * @param alpha - the alpha value\n *\n * @remarks\n * Note that the xyz color space is significantly larger than sRGB. As such, this can return colors rgb values greater than 1 or less than 0\n * @public\n */\nexport function xyzToRGB(xyz, alpha = 1) {\n function xyzToRGBHelper(i) {\n if (i <= 0.0031308) {\n return i * 12.92;\n }\n return 1.055 * Math.pow(i, 1 / 2.4) - 0.055;\n }\n const r = xyzToRGBHelper(xyz.x * 3.2404542 - xyz.y * 1.5371385 - xyz.z * 0.4985314);\n const g = xyzToRGBHelper(xyz.x * -0.969266 + xyz.y * 1.8760108 + xyz.z * 0.041556);\n const b = xyzToRGBHelper(xyz.x * 0.0556434 - xyz.y * 0.2040259 + xyz.z * 1.0572252);\n return new ColorRGBA64(r, g, b, alpha);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorLAB}\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToLAB(rgb) {\n return xyzToLAB(rgbToXYZ(rgb));\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorLAB} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param lab - the LAB color to convert\n * @param alpha - the alpha value\n *\n * @remarks\n * Note that the xyz color space (which the conversion from LAB uses) is significantly larger than sRGB. As such, this can return colors rgb values greater than 1 or less than 0\n *\n * @public\n */\nexport function labToRGB(lab, alpha = 1) {\n return xyzToRGB(labToXYZ(lab), alpha);\n}\n/**\n * Convert a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorLCH}\n *\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToLCH(rgb) {\n return labToLCH(rgbToLAB(rgb));\n}\n/**\n * Convert a {@link @microsoft/fast-colors#ColorLCH} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param lch - the LCH color to convert\n * @param alpha - the alpha value\n *\n * @public\n */\nexport function lchToRGB(lch, alpha = 1) {\n return labToRGB(lchToLAB(lch), alpha);\n}\n/**\n * Converts a color temperature to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param tempKelvin - the temperature to convert\n * @param alpha - the alpha value\n *\n * @public\n */\nexport function temperatureToRGB(tempKelvin, alpha = 1) {\n // The constants I could find assumed a decimal range of [0,255] for each channel. Just going to put a /255.0 at the end\n let r = 0;\n let g = 0;\n let b = 0;\n if (tempKelvin <= 1000) {\n tempKelvin = 1000;\n }\n else if (tempKelvin >= 40000) {\n tempKelvin = 40000;\n }\n if (tempKelvin < 6600.0) {\n r = 255.0;\n g = tempKelvin / 100.0 - 2.0;\n g =\n -155.25485562709179 -\n 0.44596950469579133 * g +\n 104.49216199393888 * Math.log(g);\n }\n else {\n r = tempKelvin / 100.0 - 55.0;\n r = 351.97690566805693 + 0.114206453784165 * r - 40.25366309332127 * Math.log(r);\n g = tempKelvin / 100.0 - 50.0;\n g = 325.4494125711974 + 0.07943456536662342 * g - 28.0852963507957 * Math.log(g);\n }\n if (tempKelvin >= 6600.0) {\n b = 255.0;\n }\n else if (tempKelvin < 2000.0) {\n b = 0.0;\n }\n else {\n b = tempKelvin / 100.0 - 10;\n b =\n -254.76935184120902 +\n 0.8274096064007395 * b +\n 115.67994401066147 * Math.log(b);\n }\n return new ColorRGBA64(r / 255, g / 255, b / 255, alpha);\n}\n/**\n * Convert a rgb color to a color temperature\n * @param rgb - the color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToTemperature(rgb) {\n let t = 0;\n let min = 1000;\n let max = 40000;\n while (max - min > 0.4) {\n t = (max + min) / 2.0;\n const testColor = temperatureToRGB(t);\n if (testColor.b / testColor.r >= rgb.b / rgb.r) {\n max = t;\n }\n else {\n min = t;\n }\n }\n return Math.round(t);\n}\n","import { hslToRGB, labToRGB, lchToRGB, rgbToHSL, rgbToLAB, rgbToLCH, } from \"./color-converters.js\";\nimport { ColorHSL } from \"./color-hsl.js\";\nimport { ColorLAB } from \"./color-lab.js\";\nimport { ColorLCH } from \"./color-lch.js\";\nimport { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { clamp } from \"./math-utilities.js\";\n/**\n * Saturate a color using LCH color space\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function saturateViaLCH(input, saturation, saturationConstant = 18) {\n const lch = rgbToLCH(input);\n let sat = lch.c + saturation * saturationConstant;\n if (sat < 0) {\n sat = 0;\n }\n return lchToRGB(new ColorLCH(lch.l, sat, lch.h));\n}\n/**\n * De-saturate a color using LCH color space\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function desaturateViaLCH(input, saturation, saturationConstant = 18) {\n return saturateViaLCH(input, -1 * saturation, saturationConstant);\n}\n/**\n * Darken a color using LAB color space\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function darkenViaLAB(input, amount, darkenConstant = 18) {\n const lab = rgbToLAB(input);\n const darkened = lab.l - amount * darkenConstant;\n return labToRGB(new ColorLAB(darkened, lab.a, lab.b));\n}\n/**\n * Lighten a color using LAB color space\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function lightenViaLAB(input, amount, darkenConstant = 18) {\n return darkenViaLAB(input, -1 * amount, darkenConstant);\n}\n/**\n * @public\n */\nexport function blendBurnChannel(bottom, top) {\n if (top === 0.0) {\n // Despite the discontinuity, other sources seem to use 0.0 here instead of 1\n return 0.0;\n }\n return 1.0 - (1.0 - bottom) / top;\n}\n/**\n * Blends two colors with the burn mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendBurn(bottom, top) {\n return new ColorRGBA64(blendBurnChannel(bottom.r, top.r), blendBurnChannel(bottom.g, top.g), blendBurnChannel(bottom.b, top.b), 1);\n}\n/**\n * Blends two colors\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendColor(bottom, top) {\n const bottomHSL = rgbToHSL(bottom);\n const topHSL = rgbToHSL(top);\n if (topHSL.s === 0) {\n return new ColorRGBA64(bottomHSL.l, bottomHSL.l, bottomHSL.l, 1);\n }\n return hslToRGB(new ColorHSL(topHSL.h, topHSL.s, bottomHSL.l));\n}\n/**\n * @public\n */\nexport function blendDarkenChannel(bottom, top) {\n return Math.min(bottom, top);\n}\n/**\n * Blends two colors with the darken mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendDarken(bottom, top) {\n return new ColorRGBA64(blendDarkenChannel(bottom.r, top.r), blendDarkenChannel(bottom.g, top.g), blendDarkenChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendDodgeChannel(bottom, top) {\n if (top >= 1.0) {\n return 1.0;\n }\n const retVal = bottom / (1.0 - top);\n if (retVal >= 1.0) {\n return 1.0;\n }\n return retVal;\n}\n/**\n * Blends two colors with the dodge mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendDodge(bottom, top) {\n return new ColorRGBA64(blendDodgeChannel(bottom.r, top.r), blendDodgeChannel(bottom.g, top.g), blendDodgeChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendLightenChannel(bottom, top) {\n return Math.max(bottom, top);\n}\n/**\n * Blends two colors with the lighten mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendLighten(bottom, top) {\n return new ColorRGBA64(blendLightenChannel(bottom.r, top.r), blendLightenChannel(bottom.g, top.g), blendLightenChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendMultiplyChannel(bottom, top) {\n return bottom * top;\n}\n/**\n * Blends two colors with the multiply mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendMultiply(bottom, top) {\n return new ColorRGBA64(blendMultiplyChannel(bottom.r, top.r), blendMultiplyChannel(bottom.g, top.g), blendMultiplyChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendOverlayChannel(bottom, top) {\n if (bottom < 0.5) {\n return clamp(2.0 * top * bottom, 0, 1);\n }\n return clamp(1.0 - 2.0 * (1.0 - top) * (1.0 - bottom), 0, 1);\n}\n/**\n * Blends two colors with the overlay mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendOverlay(bottom, top) {\n return new ColorRGBA64(blendOverlayChannel(bottom.r, top.r), blendOverlayChannel(bottom.g, top.g), blendOverlayChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendScreenChannel(bottom, top) {\n return 1.0 - (1.0 - top) * (1.0 - bottom);\n}\n/**\n * Blends two colors with the screen mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendScreen(bottom, top) {\n return new ColorRGBA64(blendScreenChannel(bottom.r, top.r), blendScreenChannel(bottom.g, top.g), blendScreenChannel(bottom.b, top.b), 1);\n}\n/**\n * Color blend modes.\n * @public\n */\nexport var ColorBlendMode;\n(function (ColorBlendMode) {\n ColorBlendMode[ColorBlendMode[\"Burn\"] = 0] = \"Burn\";\n ColorBlendMode[ColorBlendMode[\"Color\"] = 1] = \"Color\";\n ColorBlendMode[ColorBlendMode[\"Darken\"] = 2] = \"Darken\";\n ColorBlendMode[ColorBlendMode[\"Dodge\"] = 3] = \"Dodge\";\n ColorBlendMode[ColorBlendMode[\"Lighten\"] = 4] = \"Lighten\";\n ColorBlendMode[ColorBlendMode[\"Multiply\"] = 5] = \"Multiply\";\n ColorBlendMode[ColorBlendMode[\"Overlay\"] = 6] = \"Overlay\";\n ColorBlendMode[ColorBlendMode[\"Screen\"] = 7] = \"Screen\";\n})(ColorBlendMode || (ColorBlendMode = {}));\n/**\n * Blend two colors.\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blend(mode, bottom, top) {\n switch (mode) {\n case ColorBlendMode.Burn:\n return blendBurn(bottom, top);\n case ColorBlendMode.Color:\n return blendColor(bottom, top);\n case ColorBlendMode.Darken:\n return blendDarken(bottom, top);\n case ColorBlendMode.Dodge:\n return blendDodge(bottom, top);\n case ColorBlendMode.Lighten:\n return blendLighten(bottom, top);\n case ColorBlendMode.Multiply:\n return blendMultiply(bottom, top);\n case ColorBlendMode.Overlay:\n return blendOverlay(bottom, top);\n case ColorBlendMode.Screen:\n return blendScreen(bottom, top);\n default:\n throw new Error(\"Unknown blend mode\");\n }\n}\n/**\n * Alpha channel of bottom is ignored\n * The returned color always has an alpha channel of 1\n * Different programs (eg: paint.net, photoshop) will give different answers than this occasionally but within +/- 1/255 in each channel. Just depends on the details of how they round off decimals\n *\n * @public\n */\nexport function computeAlphaBlend(bottom, top) {\n if (top.a >= 1) {\n return top;\n }\n else if (top.a <= 0) {\n return new ColorRGBA64(bottom.r, bottom.g, bottom.b, 1);\n }\n const r = top.a * top.r + (1 - top.a) * bottom.r;\n const g = top.a * top.g + (1 - top.a) * bottom.g;\n const b = top.a * top.b + (1 - top.a) * bottom.b;\n return new ColorRGBA64(r, g, b, 1);\n}\n","import { hslToRGB, hsvToRGB, labToRGB, lchToRGB, rgbToHSL, rgbToHSV, rgbToLAB, rgbToLCH, rgbToXYZ, xyzToRGB, } from \"./color-converters.js\";\nimport { ColorHSL } from \"./color-hsl.js\";\nimport { ColorHSV } from \"./color-hsv.js\";\nimport { ColorLAB } from \"./color-lab.js\";\nimport { ColorLCH } from \"./color-lch.js\";\nimport { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { ColorXYZ } from \"./color-xyz.js\";\nimport { lerp, lerpAnglesInDegrees } from \"./math-utilities.js\";\n/**\n * Interpolate by RGB color space\n *\n * @public\n */\nexport function interpolateRGB(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorRGBA64(lerp(position, left.r, right.r), lerp(position, left.g, right.g), lerp(position, left.b, right.b), lerp(position, left.a, right.a));\n}\n/**\n * Interpolate by HSL color space\n *\n * @public\n */\nexport function interpolateHSL(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorHSL(lerpAnglesInDegrees(position, left.h, right.h), lerp(position, left.s, right.s), lerp(position, left.l, right.l));\n}\n/**\n * Interpolate by HSV color space\n *\n * @public\n */\nexport function interpolateHSV(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorHSV(lerpAnglesInDegrees(position, left.h, right.h), lerp(position, left.s, right.s), lerp(position, left.v, right.v));\n}\n/**\n * Interpolate by XYZ color space\n *\n * @public\n */\nexport function interpolateXYZ(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorXYZ(lerp(position, left.x, right.x), lerp(position, left.y, right.y), lerp(position, left.z, right.z));\n}\n/**\n * Interpolate by LAB color space\n *\n * @public\n */\nexport function interpolateLAB(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorLAB(lerp(position, left.l, right.l), lerp(position, left.a, right.a), lerp(position, left.b, right.b));\n}\n/**\n * Interpolate by LCH color space\n *\n * @public\n */\nexport function interpolateLCH(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorLCH(lerp(position, left.l, right.l), lerp(position, left.c, right.c), lerpAnglesInDegrees(position, left.h, right.h));\n}\n/**\n * Color interpolation spaces\n *\n * @public\n */\nexport var ColorInterpolationSpace;\n(function (ColorInterpolationSpace) {\n ColorInterpolationSpace[ColorInterpolationSpace[\"RGB\"] = 0] = \"RGB\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"HSL\"] = 1] = \"HSL\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"HSV\"] = 2] = \"HSV\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"XYZ\"] = 3] = \"XYZ\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"LAB\"] = 4] = \"LAB\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"LCH\"] = 5] = \"LCH\";\n})(ColorInterpolationSpace || (ColorInterpolationSpace = {}));\n/**\n * Interpolate by color space\n *\n * @public\n */\nexport function interpolateByColorSpace(position, space, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n switch (space) {\n case ColorInterpolationSpace.HSL:\n return hslToRGB(interpolateHSL(position, rgbToHSL(left), rgbToHSL(right)));\n case ColorInterpolationSpace.HSV:\n return hsvToRGB(interpolateHSV(position, rgbToHSV(left), rgbToHSV(right)));\n case ColorInterpolationSpace.XYZ:\n return xyzToRGB(interpolateXYZ(position, rgbToXYZ(left), rgbToXYZ(right)));\n case ColorInterpolationSpace.LAB:\n return labToRGB(interpolateLAB(position, rgbToLAB(left), rgbToLAB(right)));\n case ColorInterpolationSpace.LCH:\n return lchToRGB(interpolateLCH(position, rgbToLCH(left), rgbToLCH(right)));\n default:\n return interpolateRGB(position, left, right);\n }\n}\n","import { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { normalize } from \"./math-utilities.js\";\nimport { namedColorsConfigs } from \"./named-colors.js\";\n// Matches rgb(R, G, B) where R, G, and B are integers [0 - 255]\nconst webRGBRegex = /^rgb\\(\\s*((?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\s*,\\s*){2}(?:25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\s*)\\)$/i;\n// Matches rgb(R, G, B, A) where R, G, and B are integers [0 - 255] and A is [0-1] floating\nconst webRGBARegex = /^rgba\\(\\s*((?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\s*,\\s*){3}(?:0|1|0?\\.\\d*)\\s*)\\)$/i;\n// Matches #RGB and #RRGGBB, where R, G, and B are [0-9] or [A-F]\nconst hexRGBRegex = /^#((?:[0-9a-f]{6}|[0-9a-f]{3}))$/i;\n// Matches #RGB and #RRGGBBAA, where R, G, B, and A are [0-9] or [A-F]\nconst hexRGBARegex = /^#((?:[0-9a-f]{8}|[0-9a-f]{4}))$/i;\n/**\n * Test if a color matches #RRGGBB or #RGB\n * @public\n */\nexport function isColorStringHexRGB(raw) {\n return hexRGBRegex.test(raw);\n}\n/**\n * Test if a color matches #AARRGGBB or #ARGB\n * @public\n */\nexport function isColorStringHexARGB(raw) {\n return hexRGBARegex.test(raw);\n}\n/**\n * Test if a color matches #RRGGBBAA or #RGBA\n * @public\n */\nexport function isColorStringHexRGBA(raw) {\n return isColorStringHexARGB(raw); // No way to differentiate these two formats, so just use the same test\n}\n/**\n * Test if a color matches rgb(rr, gg, bb)\n * @public\n */\nexport function isColorStringWebRGB(raw) {\n return webRGBRegex.test(raw);\n}\n/**\n * Test if a color matches rgba(rr, gg, bb, aa)\n *\n * @public\n */\nexport function isColorStringWebRGBA(raw) {\n return webRGBARegex.test(raw);\n}\n/**\n * Tests whether a color is in {@link @microsoft/fast-colors#NamedColors}.\n * @param raw - the color name to test\n * @public\n */\nexport function isColorNamed(raw) {\n return namedColorsConfigs.hasOwnProperty(raw);\n}\n/**\n * Converts a hexadecimal color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string in the form of \"#RRGGBB\" or \"#RGB\"\n * @example\n * ```ts\n * parseColorHexRGBA(\"#FF0000\");\n * parseColorHexRGBA(\"#F00\");\n * ```\n * @public\n */\nexport function parseColorHexRGB(raw) {\n const result = hexRGBRegex.exec(raw);\n if (result === null) {\n return null;\n }\n let digits = result[1];\n if (digits.length === 3) {\n const r = digits.charAt(0);\n const g = digits.charAt(1);\n const b = digits.charAt(2);\n digits = r.concat(r, g, g, b, b);\n }\n const rawInt = parseInt(digits, 16);\n if (isNaN(rawInt)) {\n return null;\n }\n // Note the use of >>> rather than >> as we want JS to manipulate these as unsigned numbers\n return new ColorRGBA64(normalize((rawInt & 0xff0000) >>> 16, 0, 255), normalize((rawInt & 0x00ff00) >>> 8, 0, 255), normalize(rawInt & 0x0000ff, 0, 255), 1);\n}\n/**\n * Converts a hexadecimal color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string in the form of \"#AARRGGBB\" or \"#ARGB\"\n * @example\n * ```ts\n * parseColorHexRGBA(\"#AAFF0000\");\n * parseColorHexRGBA(\"#AF00\");\n * ```\n * @public\n */\nexport function parseColorHexARGB(raw) {\n const result = hexRGBARegex.exec(raw);\n if (result === null) {\n return null;\n }\n let digits = result[1];\n if (digits.length === 4) {\n const a = digits.charAt(0);\n const r = digits.charAt(1);\n const g = digits.charAt(2);\n const b = digits.charAt(3);\n digits = a.concat(a, r, r, g, g, b, b);\n }\n const rawInt = parseInt(digits, 16);\n if (isNaN(rawInt)) {\n return null;\n }\n // Note the use of >>> rather than >> as we want JS to manipulate these as unsigned numbers\n return new ColorRGBA64(normalize((rawInt & 0x00ff0000) >>> 16, 0, 255), normalize((rawInt & 0x0000ff00) >>> 8, 0, 255), normalize(rawInt & 0x000000ff, 0, 255), normalize((rawInt & 0xff000000) >>> 24, 0, 255));\n}\n/**\n * Converts a hexadecimal color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string in the form of \"#RRGGBBAA\" or \"#RGBA\"\n * @example\n * ```ts\n * parseColorHexRGBA(\"#FF0000AA\");\n * parseColorHexRGBA(\"#F00A\");\n * ```\n * @public\n */\nexport function parseColorHexRGBA(raw) {\n const result = hexRGBARegex.exec(raw);\n if (result === null) {\n return null;\n }\n let digits = result[1];\n if (digits.length === 4) {\n const r = digits.charAt(0);\n const g = digits.charAt(1);\n const b = digits.charAt(2);\n const a = digits.charAt(3);\n digits = r.concat(r, g, g, b, b, a, a);\n }\n const rawInt = parseInt(digits, 16);\n if (isNaN(rawInt)) {\n return null;\n }\n // Note the use of >>> rather than >> as we want JS to manipulate these as unsigned numbers\n return new ColorRGBA64(normalize((rawInt & 0xff000000) >>> 24, 0, 255), normalize((rawInt & 0x00ff0000) >>> 16, 0, 255), normalize((rawInt & 0x0000ff00) >>> 8, 0, 255), normalize(rawInt & 0x000000ff, 0, 255));\n}\n/**\n * Converts a rgb color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string format \"rgba(RR,GG,BB)\" where RR,GG,BB are [0,255]\n * @example\n * ```ts\n * parseColorWebRGB(\"rgba(255, 0, 0\");\n * ```\n * @public\n */\nexport function parseColorWebRGB(raw) {\n const result = webRGBRegex.exec(raw);\n if (result === null) {\n return null;\n }\n const split = result[1].split(\",\");\n return new ColorRGBA64(normalize(Number(split[0]), 0, 255), normalize(Number(split[1]), 0, 255), normalize(Number(split[2]), 0, 255), 1);\n}\n/**\n * Converts a rgba color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string format \"rgba(RR,GG,BB,a)\" where RR,GG,BB are [0,255] and a is [0,1]\n * @example\n * ```ts\n * parseColorWebRGBA(\"rgba(255, 0, 0, 1\");\n * ```\n * @public\n */\nexport function parseColorWebRGBA(raw) {\n const result = webRGBARegex.exec(raw);\n if (result === null) {\n return null;\n }\n const split = result[1].split(\",\");\n if (split.length === 4) {\n return new ColorRGBA64(normalize(Number(split[0]), 0, 255), normalize(Number(split[1]), 0, 255), normalize(Number(split[2]), 0, 255), Number(split[3]));\n }\n return null;\n}\n/**\n * Converts a named color to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a {@link https://www.w3schools.com/colors/colors_names.asp | CSS color name}.\n * @example\n * ```ts\n * parseColorNamed(\"red\");\n * ```\n * @public\n */\nexport function parseColorNamed(raw) {\n // const rawLower: typeof raw = raw.toLowerCase() : raw.toString();\n const config = namedColorsConfigs[raw.toLowerCase()];\n return config\n ? new ColorRGBA64(config.r, config.g, config.b, config.hasOwnProperty(\"a\") ? config.a : void 0)\n : null;\n}\n/**\n *\n Expects any of the following and attempts to determine which is being used\n * #RRGGBB, #AARRGGBB, rgb(RR,GG,BB) rgba(RR,GG,BB,a),\n * or any of the {@link https://www.w3schools.com/colors/colors_names.asp | CSS color names}.\n * @param raw - the color string to parse\n * @public\n */\nexport function parseColor(raw) {\n const rawLower = raw.toLowerCase();\n return isColorStringHexRGB(rawLower)\n ? parseColorHexRGB(rawLower)\n : isColorStringHexRGBA(rawLower)\n ? parseColorHexARGB(rawLower)\n : isColorStringWebRGB(rawLower)\n ? parseColorWebRGB(rawLower)\n : isColorStringWebRGBA(rawLower)\n ? parseColorWebRGBA(rawLower)\n : isColorNamed(rawLower)\n ? parseColorNamed(rawLower)\n : null;\n}\n","/**\n * @internal\n */\nexport function contrast(a, b) {\n const L1 = a.relativeLuminance > b.relativeLuminance ? a : b;\n const L2 = a.relativeLuminance > b.relativeLuminance ? b : a;\n return (L1.relativeLuminance + 0.05) / (L2.relativeLuminance + 0.05);\n}\n","import { ColorRGBA64, rgbToRelativeLuminance } from '@microsoft/fast-colors';\nimport { contrast } from './utilities/relative-luminance';\n/** @public */\nexport const SwatchRGB = Object.freeze({\n create(r, g, b) {\n return new SwatchRGBImpl(r, g, b);\n },\n from(obj) {\n return new SwatchRGBImpl(obj.r, obj.g, obj.b);\n },\n});\n/**\n * Runtime test for an objects conformance with the SwatchRGB interface.\n * @internal\n */\nexport function isSwatchRGB(value) {\n const test = {\n r: 0,\n g: 0,\n b: 0,\n toColorString: () => '',\n contrast: () => 0,\n relativeLuminance: 0,\n };\n for (const key in test) {\n if (typeof test[key] !== typeof value[key]) {\n return false;\n }\n }\n return true;\n}\n/**\n * An RGB implementation of {@link Swatch}\n * @internal\n */\nclass SwatchRGBImpl extends ColorRGBA64 {\n /**\n *\n * @param red - Red channel expressed as a number between 0 and 1\n * @param green - Green channel expressed as a number between 0 and 1\n * @param blue - Blue channel expressed as a number between 0 and 1\n */\n constructor(red, green, blue) {\n super(red, green, blue, 1);\n this.toColorString = this.toStringHexRGB;\n this.contrast = contrast.bind(null, this);\n this.createCSS = this.toColorString;\n this.relativeLuminance = rgbToRelativeLuminance(this);\n }\n static fromObject(obj) {\n return new SwatchRGBImpl(obj.r, obj.g, obj.b);\n }\n}\n","/**\n * @internal\n */\nexport function binarySearch(valuesToSearch, searchCondition, startIndex = 0, endIndex = valuesToSearch.length - 1) {\n if (endIndex === startIndex) {\n return valuesToSearch[startIndex];\n }\n const middleIndex = Math.floor((endIndex - startIndex) / 2) + startIndex;\n // Check to see if this passes on the item in the center of the array\n // if it does check the previous values\n return searchCondition(valuesToSearch[middleIndex])\n ? binarySearch(valuesToSearch, searchCondition, startIndex, middleIndex)\n : binarySearch(valuesToSearch, searchCondition, middleIndex + 1, // exclude this index because it failed the search condition\n endIndex);\n}\n","/*\n * A color is in \"dark\" if there is more contrast between #000000 and a reference\n * color than #FFFFFF and the reference color. That threshold can be expressed as a relative luminance\n * using the contrast formula as (1 + 0.5) / (R + 0.05) === (R + 0.05) / (0 + 0.05),\n * which reduces to the following, where 'R' is the relative luminance of the reference color\n */\nconst target = (-0.1 + Math.sqrt(0.21)) / 2;\n/**\n * Determines if a color should be considered Dark Mode\n * @param color - The color to check to mode of\n * @returns boolean\n *\n * @internal\n */\nexport function isDark(color) {\n return color.relativeLuminance <= target;\n}\n","import { isDark } from './is-dark';\n/**\n * @internal\n */\nexport function directionByIsDark(color) {\n return isDark(color) ? -1 : 1;\n}\n","import { clamp, ColorHSL, ColorLAB, ColorRGBA64, hslToRGB, interpolateRGB, labToRGB, rgbToHSL, rgbToLAB, roundToPrecisionSmall, } from '@microsoft/fast-colors';\nimport { isSwatchRGB, SwatchRGB } from './swatch';\nimport { binarySearch } from './utilities/binary-search';\nimport { directionByIsDark } from './utilities/direction-by-is-dark';\nimport { contrast } from './utilities/relative-luminance';\nconst defaultPaletteRGBOptions = {\n stepContrast: 1.03,\n stepContrastRamp: 0.03,\n preserveSource: false,\n};\nfunction create(rOrSource, g, b) {\n if (typeof rOrSource === 'number') {\n return PaletteRGB.from(SwatchRGB.create(rOrSource, g, b));\n }\n else {\n return PaletteRGB.from(rOrSource);\n }\n}\nfunction from(source, options) {\n return isSwatchRGB(source)\n ? PaletteRGBImpl.from(source, options)\n : PaletteRGBImpl.from(SwatchRGB.create(source.r, source.g, source.b), options);\n}\n/** @public */\nexport const PaletteRGB = Object.freeze({\n create,\n from,\n});\n/**\n * A {@link Palette} representing RGB swatch values.\n * @public\n */\nclass PaletteRGBImpl {\n /**\n *\n * @param source - The source color for the palette\n * @param swatches - All swatches in the palette\n */\n constructor(source, swatches) {\n this.closestIndexCache = new Map();\n this.source = source;\n this.swatches = swatches;\n this.reversedSwatches = Object.freeze([...this.swatches].reverse());\n this.lastIndex = this.swatches.length - 1;\n }\n /**\n * {@inheritdoc Palette.colorContrast}\n */\n colorContrast(reference, contrastTarget, initialSearchIndex, direction) {\n if (initialSearchIndex === undefined) {\n initialSearchIndex = this.closestIndexOf(reference);\n }\n let source = this.swatches;\n const endSearchIndex = this.lastIndex;\n let startSearchIndex = initialSearchIndex;\n if (direction === undefined) {\n direction = directionByIsDark(reference);\n }\n const condition = (value) => contrast(reference, value) >= contrastTarget;\n if (direction === -1) {\n source = this.reversedSwatches;\n startSearchIndex = endSearchIndex - startSearchIndex;\n }\n return binarySearch(source, condition, startSearchIndex, endSearchIndex);\n }\n /**\n * {@inheritdoc Palette.get}\n */\n get(index) {\n return this.swatches[index] || this.swatches[clamp(index, 0, this.lastIndex)];\n }\n /**\n * {@inheritdoc Palette.closestIndexOf}\n */\n closestIndexOf(reference) {\n if (this.closestIndexCache.has(reference.relativeLuminance)) {\n return this.closestIndexCache.get(reference.relativeLuminance);\n }\n let index = this.swatches.indexOf(reference);\n if (index !== -1) {\n this.closestIndexCache.set(reference.relativeLuminance, index);\n return index;\n }\n const closest = this.swatches.reduce((previous, next) => Math.abs(next.relativeLuminance - reference.relativeLuminance) <\n Math.abs(previous.relativeLuminance - reference.relativeLuminance)\n ? next\n : previous);\n index = this.swatches.indexOf(closest);\n this.closestIndexCache.set(reference.relativeLuminance, index);\n return index;\n }\n /**\n * Bump the saturation if it falls below the reference color saturation.\n * @param reference Color with target saturation\n * @param color Color to check and bump if below target saturation\n * @returns Original or adjusted color\n */\n static saturationBump(reference, color) {\n const hslReference = rgbToHSL(reference);\n const saturationTarget = hslReference.s;\n const hslColor = rgbToHSL(color);\n if (hslColor.s < saturationTarget) {\n const hslNew = new ColorHSL(hslColor.h, saturationTarget, hslColor.l);\n return hslToRGB(hslNew);\n }\n return color;\n }\n /**\n * Scales input from 0 to 100 to 0 to 0.5.\n * @param l Input number, 0 to 100\n * @returns Output number, 0 to 0.5\n */\n static ramp(l) {\n const inputval = l / 100;\n if (inputval > 0.5)\n return (inputval - 0.5) / 0.5; //from 0.500001in = 0.00000001out to 1.0in = 1.0out\n return 2 * inputval; //from 0in = 0out to 0.5in = 1.0out\n }\n /**\n * Create a palette following the desired curve and many steps to build a smaller palette from.\n * @param source The source swatch to create a palette from\n * @returns The palette\n */\n static createHighResolutionPalette(source) {\n const swatches = [];\n const labSource = rgbToLAB(ColorRGBA64.fromObject(source).roundToPrecision(4));\n const lab0 = labToRGB(new ColorLAB(0, labSource.a, labSource.b)).clamp().roundToPrecision(4);\n const lab50 = labToRGB(new ColorLAB(50, labSource.a, labSource.b)).clamp().roundToPrecision(4);\n const lab100 = labToRGB(new ColorLAB(100, labSource.a, labSource.b)).clamp().roundToPrecision(4);\n const rgbMin = new ColorRGBA64(0, 0, 0);\n const rgbMax = new ColorRGBA64(1, 1, 1);\n const lAbove = lab100.equalValue(rgbMax) ? 0 : 14;\n const lBelow = lab0.equalValue(rgbMin) ? 0 : 14;\n // 257 levels max, depending on whether lab0 or lab100 are black or white respectively.\n for (let l = 100 + lAbove; l >= 0 - lBelow; l -= 0.5) {\n let rgb;\n if (l < 0) {\n // For L less than 0, scale from black to L=0\n const percentFromRgbMinToLab0 = l / lBelow + 1;\n rgb = interpolateRGB(percentFromRgbMinToLab0, rgbMin, lab0);\n }\n else if (l <= 50) {\n // For L less than 50, we scale from L=0 to the base color\n rgb = interpolateRGB(PaletteRGBImpl.ramp(l), lab0, lab50);\n }\n else if (l <= 100) {\n // For L less than 100, scale from the base color to L=100\n rgb = interpolateRGB(PaletteRGBImpl.ramp(l), lab50, lab100);\n }\n else {\n // For L greater than 100, scale from L=100 to white\n const percentFromLab100ToRgbMax = (l - 100.0) / lAbove;\n rgb = interpolateRGB(percentFromLab100ToRgbMax, lab100, rgbMax);\n }\n rgb = PaletteRGBImpl.saturationBump(lab50, rgb).roundToPrecision(4);\n swatches.push(SwatchRGB.from(rgb));\n }\n return new PaletteRGBImpl(source, swatches);\n }\n /**\n * Adjust one end of the contrast-based palette so it doesn't abruptly fall to black (or white).\n * @param swatchContrast Function to get the target contrast for the next swatch\n * @param referencePalette The high resolution palette\n * @param targetPalette The contrast-based palette to adjust\n * @param direction The end to adjust\n */\n static adjustEnd(swatchContrast, referencePalette, targetPalette, direction) {\n // Careful with the use of referencePalette as only the refSwatches is reversed.\n const refSwatches = direction === -1 ? referencePalette.swatches : referencePalette.reversedSwatches;\n const refIndex = (swatch) => {\n const index = referencePalette.closestIndexOf(swatch);\n return direction === 1 ? referencePalette.lastIndex - index : index;\n };\n // Only operates on the 'end' end of the array, so flip if we're adjusting the 'beginning'\n if (direction === 1) {\n targetPalette.reverse();\n }\n const targetContrast = swatchContrast(targetPalette[targetPalette.length - 2]);\n const actualContrast = roundToPrecisionSmall(contrast(targetPalette[targetPalette.length - 1], targetPalette[targetPalette.length - 2]), 2);\n if (actualContrast < targetContrast) {\n // Remove last swatch if not sufficient contrast\n targetPalette.pop();\n // Distribute to the last swatch\n const safeSecondSwatch = referencePalette.colorContrast(refSwatches[referencePalette.lastIndex], targetContrast, undefined, direction);\n const safeSecondRefIndex = refIndex(safeSecondSwatch);\n const targetSwatchCurrentRefIndex = refIndex(targetPalette[targetPalette.length - 2]);\n const swatchesToSpace = safeSecondRefIndex - targetSwatchCurrentRefIndex;\n let space = 1;\n for (let i = targetPalette.length - swatchesToSpace - 1; i < targetPalette.length; i++) {\n const currentRefIndex = refIndex(targetPalette[i]);\n const nextRefIndex = i === targetPalette.length - 1 ? referencePalette.lastIndex : currentRefIndex + space;\n targetPalette[i] = refSwatches[nextRefIndex];\n space++;\n }\n }\n if (direction === 1) {\n targetPalette.reverse();\n }\n }\n /**\n * Generate a palette with consistent minimum contrast between swatches.\n * @param source The source color\n * @param options Palette generation options\n * @returns A palette meeting the requested contrast between swatches.\n */\n static createColorPaletteByContrast(source, options) {\n const referencePalette = PaletteRGBImpl.createHighResolutionPalette(source);\n // Ramp function to increase contrast as the swatches get darker\n const nextContrast = (swatch) => {\n const c = options.stepContrast + options.stepContrast * (1 - swatch.relativeLuminance) * options.stepContrastRamp;\n return roundToPrecisionSmall(c, 2);\n };\n const swatches = [];\n // Start with the source color or the light end color\n let ref = options.preserveSource ? source : referencePalette.swatches[0];\n swatches.push(ref);\n // Add swatches with contrast toward dark\n do {\n const targetContrast = nextContrast(ref);\n ref = referencePalette.colorContrast(ref, targetContrast, undefined, 1);\n swatches.push(ref);\n } while (ref.relativeLuminance > 0);\n // Add swatches with contrast toward light\n if (options.preserveSource) {\n ref = source;\n do {\n // This is off from the dark direction because `ref` here is the darker swatch, probably subtle\n const targetContrast = nextContrast(ref);\n ref = referencePalette.colorContrast(ref, targetContrast, undefined, -1);\n swatches.unshift(ref);\n } while (ref.relativeLuminance < 1);\n }\n // Validate dark end\n this.adjustEnd(nextContrast, referencePalette, swatches, -1);\n // Validate light end\n if (options.preserveSource) {\n this.adjustEnd(nextContrast, referencePalette, swatches, 1);\n }\n return swatches;\n }\n /**\n * Create a color palette from a provided swatch\n * @param source - The source swatch to create a palette from\n * @returns\n */\n static from(source, options) {\n const opts = options === void 0 || null ? defaultPaletteRGBOptions : Object.assign(Object.assign({}, defaultPaletteRGBOptions), options);\n return new PaletteRGBImpl(source, Object.freeze(PaletteRGBImpl.createColorPaletteByContrast(source, opts)));\n }\n}\n","import { parseColorHexRGB } from '@microsoft/fast-colors';\nimport { SwatchRGB } from '../swatch';\n/**\n * @internal\n */\nexport const white = SwatchRGB.create(1, 1, 1);\n/**\n * @internal\n */\nexport const black = SwatchRGB.create(0, 0, 0);\n/**\n * @internal\n */\nexport const middleGrey = SwatchRGB.create(0.5, 0.5, 0.5);\n/**\n * @internal\n */\nconst base = parseColorHexRGB('#0078D4');\nexport const accentBase = SwatchRGB.create(base.r, base.g, base.b);\n","import { black, white } from '../utilities/color-constants';\n/**\n * @internal\n */\nexport function foregroundOnAccent(reference, contrastTarget) {\n return reference.contrast(white) >= contrastTarget ? white : black;\n}\nexport function foregroundOnAccentSet(restFill, hoverFill, activeFill, focusFill, contrastTarget) {\n const defaultRule = fill => (fill.contrast(white) >= contrastTarget ? white : black);\n const restForeground = defaultRule(restFill);\n const hoverForeground = defaultRule(hoverFill);\n // Active doe not have contrast requirements, so if rest and hover use the same color, use that for active even if it would not have passed the contrast check.\n const activeForeground = restForeground.relativeLuminance === hoverForeground.relativeLuminance ? restForeground : defaultRule(activeFill);\n const focusForeground = defaultRule(focusFill);\n return {\n rest: restForeground,\n hover: hoverForeground,\n active: activeForeground,\n focus: focusForeground,\n };\n}\n","import { ColorRGBA64, rgbToRelativeLuminance } from '@microsoft/fast-colors';\nimport { contrast } from '../utilities/relative-luminance';\n/**\n * An implementation of {@link Swatch} that produces a gradient.\n * This assumes a subtle gradient such that `relativeLuminance` is still meaningful,\n * either with consistent luminance across the steps or a small edge of larger change.\n * @internal\n */\nexport class GradientSwatchRGB {\n /**\n *\n * @param red Red channel expressed as a number between 0 and 1\n * @param green Green channel expressed as a number between 0 and 1\n * @param blue Blue channel expressed as a number between 0 and 1\n */\n constructor(red, green, blue, cssGradient) {\n this.toColorString = () => this.cssGradient;\n this.contrast = contrast.bind(null, this);\n this.createCSS = this.toColorString;\n this.color = new ColorRGBA64(red, green, blue);\n this.cssGradient = cssGradient;\n this.relativeLuminance = rgbToRelativeLuminance(this.color);\n this.r = red;\n this.g = green;\n this.b = blue;\n }\n /**\n * Creates a GradientSwatch from a base color and gradient definition\n * @param obj The base color object, used for relative luminance\n * @param cssGradient The actual gradient to be rendered\n * @returns New GradientSwatch object\n */\n static fromObject(obj, cssGradient) {\n return new GradientSwatchRGB(obj.r, obj.g, obj.b, cssGradient);\n }\n}\n","import { calculateOverlayColor, ColorRGBA64, computeAlphaBlend, parseColorHexRGB } from '@microsoft/fast-colors';\nimport { SwatchRGB } from '../swatch';\nimport { directionByIsDark } from '../utilities/direction-by-is-dark';\nimport { GradientSwatchRGB } from './gradient-swatch';\nconst black = new ColorRGBA64(0, 0, 0);\nconst white = new ColorRGBA64(1, 1, 1);\n/**\n * @internal\n */\nexport function gradientShadowStroke(palette, reference, restDelta, hoverDelta, activeDelta, focusDelta, shadowDelta, direction, shadowPercentage = 10, blendWithReference = false) {\n const referenceIndex = palette.closestIndexOf(reference);\n if (direction === void 0) {\n direction = directionByIsDark(reference);\n }\n function overlayHelper(color) {\n if (blendWithReference) {\n const refIndex = palette.closestIndexOf(reference);\n const refSwatch = palette.get(refIndex);\n const overlaySolid = color.relativeLuminance < reference.relativeLuminance ? black : white;\n const overlayColor = calculateOverlayColor(parseColorHexRGB(color.toColorString()), parseColorHexRGB(refSwatch.toColorString()), overlaySolid).roundToPrecision(2);\n const blend = computeAlphaBlend(parseColorHexRGB(reference.toColorString()), overlayColor);\n return SwatchRGB.from(blend);\n }\n else {\n return color;\n }\n }\n const restIndex = referenceIndex + direction * restDelta;\n const hoverIndex = restIndex + direction * (hoverDelta - restDelta);\n const activeIndex = restIndex + direction * (activeDelta - restDelta);\n const focusIndex = restIndex + direction * (focusDelta - restDelta);\n const startPosition = direction === -1 ? 0 : 100 - shadowPercentage;\n const endPosition = direction === -1 ? shadowPercentage : 100;\n function gradientHelper(index, applyShadow) {\n const color = palette.get(index);\n if (applyShadow) {\n // Shadow is actually \"highlight\" on top in dark mode.\n const shadowColor = palette.get(index + direction * shadowDelta);\n const startColor = direction === -1 ? shadowColor : color;\n const endColor = direction === -1 ? color : shadowColor;\n const g = `linear-gradient(${overlayHelper(startColor).toColorString()} ${startPosition}%, ${overlayHelper(endColor).toColorString()} ${endPosition}%)`;\n return GradientSwatchRGB.fromObject(startColor, g);\n }\n else {\n return overlayHelper(color);\n }\n }\n return {\n rest: gradientHelper(restIndex, true),\n hover: gradientHelper(hoverIndex, true),\n active: gradientHelper(activeIndex, false),\n focus: gradientHelper(focusIndex, true),\n };\n}\n","import { directionByIsDark } from '../utilities/direction-by-is-dark';\nimport { GradientSwatchRGB } from './gradient-swatch';\n/**\n * @internal\n */\nexport function underlineStroke(palette, reference, restDelta, hoverDelta, activeDelta, focusDelta, shadowDelta, width) {\n const referenceIndex = palette.closestIndexOf(reference);\n const direction = directionByIsDark(reference);\n const restIndex = referenceIndex + direction * restDelta;\n const hoverIndex = restIndex + direction * (hoverDelta - restDelta);\n const activeIndex = restIndex + direction * (activeDelta - restDelta);\n const focusIndex = restIndex + direction * (focusDelta - restDelta);\n const midPosition = `calc(100% - ${width})`;\n function gradientHelper(index, applyShadow) {\n const color = palette.get(index);\n if (applyShadow) {\n const underlineColor = palette.get(index + direction * shadowDelta);\n const g = `linear-gradient(${color.toColorString()} ${midPosition}, ${underlineColor.toColorString()} ${midPosition}, ${underlineColor.toColorString()})`;\n return GradientSwatchRGB.fromObject(color, g);\n }\n else {\n return color;\n }\n }\n return {\n rest: gradientHelper(restIndex, true),\n hover: gradientHelper(hoverIndex, true),\n active: gradientHelper(activeIndex, false),\n focus: gradientHelper(focusIndex, true),\n };\n}\n","/**\n * Color algorithm using contrast from the reference color.\n *\n * @param palette - The palette to operate on\n * @param reference - The reference color\n * @param contrast - The desired minimum contrast\n *\n * @internal\n */\nexport function contrastSwatch(palette, reference, contrast) {\n return palette.colorContrast(reference, contrast);\n}\n","import { directionByIsDark } from '../utilities/direction-by-is-dark';\nimport { isDark } from '../utilities/is-dark';\n/**\n * @internal\n */\nexport function contrastAndDeltaSwatchSet(palette, reference, baseContrast, restDelta, hoverDelta, activeDelta, focusDelta, direction) {\n if (direction === null || direction === void 0) {\n direction = directionByIsDark(reference);\n }\n const baseIndex = palette.closestIndexOf(palette.colorContrast(reference, baseContrast));\n return {\n rest: palette.get(baseIndex + direction * restDelta),\n hover: palette.get(baseIndex + direction * hoverDelta),\n active: palette.get(baseIndex + direction * activeDelta),\n focus: palette.get(baseIndex + direction * focusDelta),\n };\n}\n/**\n * @internal\n */\nexport function contrastAndDeltaSwatchSetByLuminance(palette, reference, lightBaseContrast, lightRestDelta, lightHoverDelta, lightActiveDelta, lightFocusDelta, lightDirection = undefined, darkBaseContrast, darkRestDelta, darkHoverDelta, darkActiveDelta, darkFocusDelta, darkDirection = undefined) {\n if (isDark(reference)) {\n return contrastAndDeltaSwatchSet(palette, reference, darkBaseContrast, darkRestDelta, darkHoverDelta, darkActiveDelta, darkFocusDelta, darkDirection);\n }\n else {\n return contrastAndDeltaSwatchSet(palette, reference, lightBaseContrast, lightRestDelta, lightHoverDelta, lightActiveDelta, lightFocusDelta, lightDirection);\n }\n}\n","import { directionByIsDark } from '../utilities/direction-by-is-dark';\n/**\n * Color algorithm using a delta from the reference color.\n *\n * @param palette - The palette to operate on\n * @param reference - The reference color\n * @param delta - The offset from the reference\n *\n * @internal\n */\nexport function deltaSwatch(palette, reference, delta) {\n return palette.get(palette.closestIndexOf(reference) + directionByIsDark(reference) * delta);\n}\n","import { directionByIsDark } from '../utilities/direction-by-is-dark';\nimport { isDark } from '../utilities/is-dark';\n/**\n * Color algorithm using deltas from the reference color for states.\n *\n * @param palette The palette to operate on\n * @param reference The reference color to calculate a color for\n * @param restDelta The rest state offset from reference\n * @param hoverDelta The hover state offset from reference\n * @param activeDelta The active state offset from reference\n * @param focusDelta The focus state offset from reference\n * @param direction The direction the deltas move on the ramp, default goes darker for light references and lighter for dark references\n *\n * @internal\n */\nexport function deltaSwatchSet(palette, reference, restDelta, hoverDelta, activeDelta, focusDelta, direction) {\n const referenceIndex = palette.closestIndexOf(reference);\n if (direction === null || direction === void 0) {\n direction = directionByIsDark(reference);\n }\n return {\n rest: palette.get(referenceIndex + direction * restDelta),\n hover: palette.get(referenceIndex + direction * hoverDelta),\n active: palette.get(referenceIndex + direction * activeDelta),\n focus: palette.get(referenceIndex + direction * focusDelta),\n };\n}\n/**\n * Color algorithm using deltas from the reference color for states, allowing different deltas based on a light or dark reference color.\n *\n * @param palette The palette to operate on\n * @param reference The reference color to calculate a color for\n * @param lightRestDelta The rest offset for a light reference\n * @param lightHoverDelta The hover offset for a light reference\n * @param lightActiveDelta The rest offset for a light reference\n * @param lightFocusDelta The hover offset for a light reference\n * @param lightDirection The direction the deltas move on the ramp, default goes darker for light references\n * @param darkRestDelta The rest offset for a dark reference\n * @param darkHoverDelta The hover offset for a dark reference\n * @param darkActiveDelta The rest offset for a dark reference\n * @param darkFocusDelta The hover offset for a dark reference\n * @param darkDirection The direction the deltas move on the ramp, default goes lighter for dark references\n *\n * @internal\n */\nexport function deltaSwatchSetByLuminance(palette, reference, lightRestDelta, lightHoverDelta, lightActiveDelta, lightFocusDelta, lightDirection = undefined, darkRestDelta, darkHoverDelta, darkActiveDelta, darkFocusDelta, darkDirection = undefined) {\n if (isDark(reference)) {\n return deltaSwatchSet(palette, reference, darkRestDelta, darkHoverDelta, darkActiveDelta, darkFocusDelta, darkDirection);\n }\n else {\n return deltaSwatchSet(palette, reference, lightRestDelta, lightHoverDelta, lightActiveDelta, lightFocusDelta, lightDirection);\n }\n}\n","import { black, white } from '../utilities/color-constants';\nimport { isDark } from '../utilities/is-dark';\n/**\n * @internal\n */\nexport function focusStrokeOuter(palette, reference) {\n return isDark(reference) ? white : black;\n}\n/**\n * @internal\n */\nexport function focusStrokeInner(palette, reference, focusColor) {\n return isDark(reference) ? black : white;\n}\n","import { SwatchRGB } from '../swatch';\nexport function baseLayerLuminanceSwatch(luminance) {\n return SwatchRGB.create(luminance, luminance, luminance);\n}\n/**\n * Recommended values for light and dark mode for {@link @fluentui/web-components#baseLayerLuminance}.\n *\n * @public\n */\nexport var StandardLuminance;\n(function (StandardLuminance) {\n StandardLuminance[StandardLuminance[\"LightMode\"] = 0.98] = \"LightMode\";\n StandardLuminance[StandardLuminance[\"DarkMode\"] = 0.15] = \"DarkMode\";\n})(StandardLuminance || (StandardLuminance = {}));\n","import { baseLayerLuminanceSwatch } from '../utilities/base-layer-luminance';\n/**\n * @internal\n */\nexport function neutralLayer1Index(palette, baseLayerLuminance) {\n return palette.closestIndexOf(baseLayerLuminanceSwatch(baseLayerLuminance));\n}\n/**\n * @internal\n */\nexport function neutralLayer1(palette, baseLayerLuminance) {\n return palette.get(neutralLayer1Index(palette, baseLayerLuminance));\n}\n","import { neutralLayer1Index } from './neutral-layer-1';\n/**\n * @internal\n */\nexport function neutralLayerFloating(palette, baseLayerLuminance, layerDelta) {\n return palette.get(neutralLayer1Index(palette, baseLayerLuminance) + layerDelta);\n}\n","import { neutralLayer1Index } from './neutral-layer-1';\n/**\n * @internal\n */\nexport function neutralLayer2(palette, baseLayerLuminance, layerDelta) {\n return palette.get(neutralLayer1Index(palette, baseLayerLuminance) + layerDelta * -1);\n}\n","import { neutralLayer1Index } from './neutral-layer-1';\n/**\n * @internal\n */\nexport function neutralLayer3(palette, baseLayerLuminance, layerDelta) {\n return palette.get(neutralLayer1Index(palette, baseLayerLuminance) + layerDelta * -1 * 2);\n}\n","import { neutralLayer1Index } from './neutral-layer-1';\n/**\n * @internal\n */\nexport function neutralLayer4(palette, baseLayerLuminance, layerDelta) {\n return palette.get(neutralLayer1Index(palette, baseLayerLuminance) + layerDelta * -1 * 3);\n}\n","/** @public */\nexport const StandardFontWeight = {\n Thin: 100,\n ExtraLight: 200,\n Light: 300,\n Normal: 400,\n Medium: 500,\n SemiBold: 600,\n Bold: 700,\n ExtraBold: 800,\n Black: 900,\n};\n","import { DesignToken } from '@microsoft/fast-foundation';\nimport { Direction } from '@microsoft/fast-web-utilities';\nimport { PaletteRGB } from './color/palette';\nimport { foregroundOnAccentSet as foregroundOnAccentSetAlgorithm } from './color/recipes/foreground-on-accent';\nimport { gradientShadowStroke as gradientShadowStrokeAlgorithm } from './color/recipes/gradient-shadow-stroke';\nimport { underlineStroke as underlineStrokeAlgorithm } from './color/recipes/underline-stroke';\nimport { contrastSwatch } from './color/recipes/contrast-swatch';\nimport { contrastAndDeltaSwatchSet, contrastAndDeltaSwatchSetByLuminance, } from './color/recipes/contrast-and-delta-swatch-set';\nimport { deltaSwatch } from './color/recipes/delta-swatch';\nimport { deltaSwatchSet, deltaSwatchSetByLuminance } from './color/recipes/delta-swatch-set';\nimport { focusStrokeInner as focusStrokeInnerAlgorithm, focusStrokeOuter as focusStrokeOuterAlgorithm, } from './color/recipes/focus-stroke';\nimport { neutralLayerFloating as neutralLayerFloatingAlgorithm } from './color/recipes/neutral-layer-floating';\nimport { neutralLayer1 as neutralLayer1Algorithm } from './color/recipes/neutral-layer-1';\nimport { neutralLayer2 as neutralLayer2Algorithm } from './color/recipes/neutral-layer-2';\nimport { neutralLayer3 as neutralLayer3Algorithm } from './color/recipes/neutral-layer-3';\nimport { neutralLayer4 as neutralLayer4Algorithm } from './color/recipes/neutral-layer-4';\nimport { accentBase, middleGrey } from './color/utilities/color-constants';\nimport { StandardLuminance } from './color/utilities/base-layer-luminance';\nimport { directionByIsDark } from './color/utilities/direction-by-is-dark';\nimport { StandardFontWeight } from './utilities/type-ramp';\nconst { create } = DesignToken;\nfunction createNonCss(name) {\n return DesignToken.create({ name, cssCustomPropertyName: null });\n}\n// General tokens\n/** @public */\nexport const direction = create('direction').withDefault(Direction.ltr);\n/** @public */\nexport const disabledOpacity = create('disabled-opacity').withDefault(0.3);\n// Density tokens\n/** @public */\nexport const baseHeightMultiplier = create('base-height-multiplier').withDefault(8);\n/** @public */\nexport const baseHorizontalSpacingMultiplier = create('base-horizontal-spacing-multiplier').withDefault(3);\n/** @public */\nexport const density = create('density').withDefault(0);\n/** @public */\nexport const designUnit = create('design-unit').withDefault(4);\n// Appearance tokens\n/** @public */\nexport const controlCornerRadius = create('control-corner-radius').withDefault(4);\n/** @public */\nexport const layerCornerRadius = create('layer-corner-radius').withDefault(8);\n/** @public */\nexport const strokeWidth = create('stroke-width').withDefault(1);\n/** @public */\nexport const focusStrokeWidth = create('focus-stroke-width').withDefault(2);\n// Typography values\n/** @public */\nexport const bodyFont = create('body-font').withDefault('\"Segoe UI Variable\", \"Segoe UI\", sans-serif');\n/** @public */\nexport const fontWeight = create('font-weight').withDefault(StandardFontWeight.Normal);\nfunction fontVariations(sizeToken) {\n return (element) => {\n const size = sizeToken.getValueFor(element);\n const weight = fontWeight.getValueFor(element);\n if (size.endsWith('px')) {\n const px = Number.parseFloat(size.replace('px', ''));\n if (px <= 12) {\n return `\"wght\" ${weight}, \"opsz\" 8`;\n }\n else if (px > 24) {\n return `\"wght\" ${weight}, \"opsz\" 36`;\n }\n }\n return `\"wght\" ${weight}, \"opsz\" 10.5`;\n };\n}\n/** @public */\nexport const typeRampBaseFontSize = create('type-ramp-base-font-size').withDefault('14px');\n/** @public */\nexport const typeRampBaseLineHeight = create('type-ramp-base-line-height').withDefault('20px');\n/** @public */\nexport const typeRampBaseFontVariations = create('type-ramp-base-font-variations').withDefault(fontVariations(typeRampBaseFontSize));\n/** @public */\nexport const typeRampMinus1FontSize = create('type-ramp-minus-1-font-size').withDefault('12px');\n/** @public */\nexport const typeRampMinus1LineHeight = create('type-ramp-minus-1-line-height').withDefault('16px');\n/** @public */\nexport const typeRampMinus1FontVariations = create('type-ramp-minus-1-font-variations').withDefault(fontVariations(typeRampMinus1FontSize));\n/** @public */\nexport const typeRampMinus2FontSize = create('type-ramp-minus-2-font-size').withDefault('10px');\n/** @public */\nexport const typeRampMinus2LineHeight = create('type-ramp-minus-2-line-height').withDefault('14px');\n/** @public */\nexport const typeRampMinus2FontVariations = create('type-ramp-minus-2-font-variations').withDefault(fontVariations(typeRampMinus2FontSize));\n/** @public */\nexport const typeRampPlus1FontSize = create('type-ramp-plus-1-font-size').withDefault('16px');\n/** @public */\nexport const typeRampPlus1LineHeight = create('type-ramp-plus-1-line-height').withDefault('22px');\n/** @public */\nexport const typeRampPlus1FontVariations = create('type-ramp-plus-1-font-variations').withDefault(fontVariations(typeRampPlus1FontSize));\n/** @public */\nexport const typeRampPlus2FontSize = create('type-ramp-plus-2-font-size').withDefault('20px');\n/** @public */\nexport const typeRampPlus2LineHeight = create('type-ramp-plus-2-line-height').withDefault('26px');\n/** @public */\nexport const typeRampPlus2FontVariations = create('type-ramp-plus-2-font-variations').withDefault(fontVariations(typeRampPlus2FontSize));\n/** @public */\nexport const typeRampPlus3FontSize = create('type-ramp-plus-3-font-size').withDefault('24px');\n/** @public */\nexport const typeRampPlus3LineHeight = create('type-ramp-plus-3-line-height').withDefault('32px');\n/** @public */\nexport const typeRampPlus3FontVariations = create('type-ramp-plus-3-font-variations').withDefault(fontVariations(typeRampPlus3FontSize));\n/** @public */\nexport const typeRampPlus4FontSize = create('type-ramp-plus-4-font-size').withDefault('28px');\n/** @public */\nexport const typeRampPlus4LineHeight = create('type-ramp-plus-4-line-height').withDefault('36px');\n/** @public */\nexport const typeRampPlus4FontVariations = create('type-ramp-plus-4-font-variations').withDefault(fontVariations(typeRampPlus4FontSize));\n/** @public */\nexport const typeRampPlus5FontSize = create('type-ramp-plus-5-font-size').withDefault('32px');\n/** @public */\nexport const typeRampPlus5LineHeight = create('type-ramp-plus-5-line-height').withDefault('40px');\n/** @public */\nexport const typeRampPlus5FontVariations = create('type-ramp-plus-5-font-variations').withDefault(fontVariations(typeRampPlus5FontSize));\n/** @public */\nexport const typeRampPlus6FontSize = create('type-ramp-plus-6-font-size').withDefault('40px');\n/** @public */\nexport const typeRampPlus6LineHeight = create('type-ramp-plus-6-line-height').withDefault('52px');\n/** @public */\nexport const typeRampPlus6FontVariations = create('type-ramp-plus-6-font-variations').withDefault(fontVariations(typeRampPlus6FontSize));\n// Color recipe values\n/** @public */\nexport const baseLayerLuminance = create('base-layer-luminance').withDefault(StandardLuminance.LightMode);\n/** @public */\nexport const accentFillRestDelta = createNonCss('accent-fill-rest-delta').withDefault(0);\n/** @public */\nexport const accentFillHoverDelta = createNonCss('accent-fill-hover-delta').withDefault(-2);\n/** @public */\nexport const accentFillActiveDelta = createNonCss('accent-fill-active-delta').withDefault(-5);\n/** @public */\nexport const accentFillFocusDelta = createNonCss('accent-fill-focus-delta').withDefault(0);\n/** @public */\nexport const accentForegroundRestDelta = createNonCss('accent-foreground-rest-delta').withDefault(0);\n/** @public */\nexport const accentForegroundHoverDelta = createNonCss('accent-foreground-hover-delta').withDefault(3);\n/** @public */\nexport const accentForegroundActiveDelta = createNonCss('accent-foreground-active-delta').withDefault(-8);\n/** @public */\nexport const accentForegroundFocusDelta = createNonCss('accent-foreground-focus-delta').withDefault(0);\n/** @public */\nexport const neutralFillRestDelta = createNonCss('neutral-fill-rest-delta').withDefault(-1);\n/** @public */\nexport const neutralFillHoverDelta = createNonCss('neutral-fill-hover-delta').withDefault(1);\n/** @public */\nexport const neutralFillActiveDelta = createNonCss('neutral-fill-active-delta').withDefault(0);\n/** @public */\nexport const neutralFillFocusDelta = createNonCss('neutral-fill-focus-delta').withDefault(0);\n/** @public */\nexport const neutralFillInputRestDelta = createNonCss('neutral-fill-input-rest-delta').withDefault(-1);\n/** @public */\nexport const neutralFillInputHoverDelta = createNonCss('neutral-fill-input-hover-delta').withDefault(1);\n/** @public */\nexport const neutralFillInputActiveDelta = createNonCss('neutral-fill-input-active-delta').withDefault(0);\n/** @public */\nexport const neutralFillInputFocusDelta = createNonCss('neutral-fill-input-focus-delta').withDefault(-2);\n/** @public */\nexport const neutralFillInputAltRestDelta = createNonCss('neutral-fill-input-alt-rest-delta').withDefault(2);\n/** @public */\nexport const neutralFillInputAltHoverDelta = createNonCss('neutral-fill-input-alt-hover-delta').withDefault(4);\n/** @public */\nexport const neutralFillInputAltActiveDelta = createNonCss('neutral-fill-input-alt-active-delta').withDefault(6);\n/** @public */\nexport const neutralFillInputAltFocusDelta = createNonCss('neutral-fill-input-alt-focus-delta').withDefault(2);\n/** @public */\nexport const neutralFillLayerRestDelta = createNonCss('neutral-fill-layer-rest-delta').withDefault(-2);\n/** @public */\nexport const neutralFillLayerHoverDelta = createNonCss('neutral-fill-layer-hover-delta').withDefault(-3);\n/** @public */\nexport const neutralFillLayerActiveDelta = createNonCss('neutral-fill-layer-active-delta').withDefault(-3);\n/** @public */\nexport const neutralFillLayerAltRestDelta = createNonCss('neutral-fill-layer-alt-rest-delta').withDefault(-1);\n/** @public */\nexport const neutralFillSecondaryRestDelta = createNonCss('neutral-fill-secondary-rest-delta').withDefault(3);\n/** @public */\nexport const neutralFillSecondaryHoverDelta = createNonCss('neutral-fill-secondary-hover-delta').withDefault(2);\n/** @public */\nexport const neutralFillSecondaryActiveDelta = createNonCss('neutral-fill-secondary-active-delta').withDefault(1);\n/** @public */\nexport const neutralFillSecondaryFocusDelta = createNonCss('neutral-fill-secondary-focus-delta').withDefault(3);\n/** @public */\nexport const neutralFillStealthRestDelta = createNonCss('neutral-fill-stealth-rest-delta').withDefault(0);\n/** @public */\nexport const neutralFillStealthHoverDelta = createNonCss('neutral-fill-stealth-hover-delta').withDefault(3);\n/** @public */\nexport const neutralFillStealthActiveDelta = createNonCss('neutral-fill-stealth-active-delta').withDefault(2);\n/** @public */\nexport const neutralFillStealthFocusDelta = createNonCss('neutral-fill-stealth-focus-delta').withDefault(0);\n/** @public */\nexport const neutralFillStrongRestDelta = createNonCss('neutral-fill-strong-rest-delta').withDefault(0);\n/** @public */\nexport const neutralFillStrongHoverDelta = createNonCss('neutral-fill-strong-hover-delta').withDefault(8);\n/** @public */\nexport const neutralFillStrongActiveDelta = createNonCss('neutral-fill-strong-active-delta').withDefault(-5);\n/** @public */\nexport const neutralFillStrongFocusDelta = createNonCss('neutral-fill-strong-focus-delta').withDefault(0);\n/** @public */\nexport const neutralStrokeRestDelta = createNonCss('neutral-stroke-rest-delta').withDefault(8);\n/** @public */\nexport const neutralStrokeHoverDelta = createNonCss('neutral-stroke-hover-delta').withDefault(12);\n/** @public */\nexport const neutralStrokeActiveDelta = createNonCss('neutral-stroke-active-delta').withDefault(6);\n/** @public */\nexport const neutralStrokeFocusDelta = createNonCss('neutral-stroke-focus-delta').withDefault(8);\n/** @public */\nexport const neutralStrokeControlRestDelta = createNonCss('neutral-stroke-control-rest-delta').withDefault(3);\n/** @public */\nexport const neutralStrokeControlHoverDelta = createNonCss('neutral-stroke-control-hover-delta').withDefault(5);\n/** @public */\nexport const neutralStrokeControlActiveDelta = createNonCss('neutral-stroke-control-active-delta').withDefault(5);\n/** @public */\nexport const neutralStrokeControlFocusDelta = createNonCss('neutral-stroke-control-focus-delta').withDefault(5);\n/** @public */\nexport const neutralStrokeDividerRestDelta = createNonCss('neutral-stroke-divider-rest-delta').withDefault(4);\n/** @public */\nexport const neutralStrokeLayerRestDelta = createNonCss('neutral-stroke-layer-rest-delta').withDefault(3);\n/** @public */\nexport const neutralStrokeLayerHoverDelta = createNonCss('neutral-stroke-layer-hover-delta').withDefault(3);\n/** @public */\nexport const neutralStrokeLayerActiveDelta = createNonCss('neutral-stroke-layer-active-delta').withDefault(3);\n/** @public */\nexport const neutralStrokeStrongHoverDelta = createNonCss('neutral-stroke-strong-hover-delta').withDefault(0);\n/** @public */\nexport const neutralStrokeStrongActiveDelta = createNonCss('neutral-stroke-strong-active-delta').withDefault(0);\n/** @public */\nexport const neutralStrokeStrongFocusDelta = createNonCss('neutral-stroke-strong-focus-delta').withDefault(0);\n// Color recipes\n/** @public */\nexport const neutralBaseColor = create('neutral-base-color').withDefault(middleGrey);\n/** @public */\nexport const neutralPalette = createNonCss('neutral-palette').withDefault((element) => PaletteRGB.from(neutralBaseColor.getValueFor(element)));\n/** @public */\nexport const accentBaseColor = create('accent-base-color').withDefault(accentBase);\n/** @public */\nexport const accentPalette = createNonCss('accent-palette').withDefault((element) => PaletteRGB.from(accentBaseColor.getValueFor(element)));\n// Neutral Layer Card Container\n/** @public */\nexport const neutralLayerCardContainerRecipe = createNonCss('neutral-layer-card-container-recipe').withDefault({\n evaluate: (element) => neutralLayer2Algorithm(neutralPalette.getValueFor(element), baseLayerLuminance.getValueFor(element), neutralFillLayerRestDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralLayerCardContainer = create('neutral-layer-card-container').withDefault((element) => neutralLayerCardContainerRecipe.getValueFor(element).evaluate(element));\n// Neutral Layer Floating\n/** @public */\nexport const neutralLayerFloatingRecipe = createNonCss('neutral-layer-floating-recipe').withDefault({\n evaluate: (element) => neutralLayerFloatingAlgorithm(neutralPalette.getValueFor(element), baseLayerLuminance.getValueFor(element), neutralFillLayerRestDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralLayerFloating = create('neutral-layer-floating').withDefault((element) => neutralLayerFloatingRecipe.getValueFor(element).evaluate(element));\n// Neutral Layer 1\n/** @public */\nexport const neutralLayer1Recipe = createNonCss('neutral-layer-1-recipe').withDefault({\n evaluate: (element) => neutralLayer1Algorithm(neutralPalette.getValueFor(element), baseLayerLuminance.getValueFor(element)),\n});\n/** @public */\nexport const neutralLayer1 = create('neutral-layer-1').withDefault((element) => neutralLayer1Recipe.getValueFor(element).evaluate(element));\n// Neutral Layer 2\n/** @public */\nexport const neutralLayer2Recipe = createNonCss('neutral-layer-2-recipe').withDefault({\n evaluate: (element) => neutralLayer2Algorithm(neutralPalette.getValueFor(element), baseLayerLuminance.getValueFor(element), neutralFillLayerRestDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralLayer2 = create('neutral-layer-2').withDefault((element) => neutralLayer2Recipe.getValueFor(element).evaluate(element));\n// Neutral Layer 3\n/** @public */\nexport const neutralLayer3Recipe = createNonCss('neutral-layer-3-recipe').withDefault({\n evaluate: (element) => neutralLayer3Algorithm(neutralPalette.getValueFor(element), baseLayerLuminance.getValueFor(element), neutralFillLayerRestDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralLayer3 = create('neutral-layer-3').withDefault((element) => neutralLayer3Recipe.getValueFor(element).evaluate(element));\n// Neutral Layer 4\n/** @public */\nexport const neutralLayer4Recipe = createNonCss('neutral-layer-4-recipe').withDefault({\n evaluate: (element) => neutralLayer4Algorithm(neutralPalette.getValueFor(element), baseLayerLuminance.getValueFor(element), neutralFillLayerRestDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralLayer4 = create('neutral-layer-4').withDefault((element) => neutralLayer4Recipe.getValueFor(element).evaluate(element));\n/** @public */\nexport const fillColor = create('fill-color').withDefault(element => neutralLayer1.getValueFor(element));\nvar ContrastTarget;\n(function (ContrastTarget) {\n ContrastTarget[ContrastTarget[\"normal\"] = 4.5] = \"normal\";\n ContrastTarget[ContrastTarget[\"large\"] = 3] = \"large\";\n})(ContrastTarget || (ContrastTarget = {}));\n// Accent Fill\n/** @public */\nexport const accentFillRecipe = createNonCss('accent-fill-recipe').withDefault({\n evaluate: (element, reference) => contrastAndDeltaSwatchSetByLuminance(accentPalette.getValueFor(element), reference || fillColor.getValueFor(element), 5, accentFillRestDelta.getValueFor(element), accentFillHoverDelta.getValueFor(element), accentFillActiveDelta.getValueFor(element), accentFillFocusDelta.getValueFor(element), undefined, 8, accentFillRestDelta.getValueFor(element), accentFillHoverDelta.getValueFor(element), accentFillActiveDelta.getValueFor(element), accentFillFocusDelta.getValueFor(element), undefined),\n});\n/** @public */\nexport const accentFillRest = create('accent-fill-rest').withDefault((element) => {\n return accentFillRecipe.getValueFor(element).evaluate(element).rest;\n});\n/** @public */\nexport const accentFillHover = create('accent-fill-hover').withDefault((element) => {\n return accentFillRecipe.getValueFor(element).evaluate(element).hover;\n});\n/** @public */\nexport const accentFillActive = create('accent-fill-active').withDefault((element) => {\n return accentFillRecipe.getValueFor(element).evaluate(element).active;\n});\n/** @public */\nexport const accentFillFocus = create('accent-fill-focus').withDefault((element) => {\n return accentFillRecipe.getValueFor(element).evaluate(element).focus;\n});\n// Foreground On Accent\n/** @public */\nexport const foregroundOnAccentRecipe = createNonCss('foreground-on-accent-recipe').withDefault({\n evaluate: (element) => foregroundOnAccentSetAlgorithm(accentFillRest.getValueFor(element), accentFillHover.getValueFor(element), accentFillActive.getValueFor(element), accentFillFocus.getValueFor(element), ContrastTarget.normal),\n});\n/** @public */\nexport const foregroundOnAccentRest = create('foreground-on-accent-rest').withDefault((element) => foregroundOnAccentRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const foregroundOnAccentHover = create('foreground-on-accent-hover').withDefault((element) => foregroundOnAccentRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const foregroundOnAccentActive = create('foreground-on-accent-active').withDefault((element) => foregroundOnAccentRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const foregroundOnAccentFocus = create('foreground-on-accent-focus').withDefault((element) => foregroundOnAccentRecipe.getValueFor(element).evaluate(element).focus);\n// Accent Foreground\n/** @public */\nexport const accentForegroundRecipe = createNonCss('accent-foreground-recipe').withDefault({\n evaluate: (element, reference) => contrastAndDeltaSwatchSet(accentPalette.getValueFor(element), reference || fillColor.getValueFor(element), 9.5, accentForegroundRestDelta.getValueFor(element), accentForegroundHoverDelta.getValueFor(element), accentForegroundActiveDelta.getValueFor(element), accentForegroundFocusDelta.getValueFor(element)),\n});\n/** @public */\nexport const accentForegroundRest = create('accent-foreground-rest').withDefault((element) => accentForegroundRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const accentForegroundHover = create('accent-foreground-hover').withDefault((element) => accentForegroundRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const accentForegroundActive = create('accent-foreground-active').withDefault((element) => accentForegroundRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const accentForegroundFocus = create('accent-foreground-focus').withDefault((element) => accentForegroundRecipe.getValueFor(element).evaluate(element).focus);\n// Accent Stroke Control\n/** @public */\nexport const accentStrokeControlRecipe = createNonCss('accent-stroke-control-recipe').withDefault({\n evaluate: (element, reference) => {\n return gradientShadowStrokeAlgorithm(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), -3, -3, -3, -3, 10, 1, undefined, true);\n },\n});\n/** @public */\nexport const accentStrokeControlRest = create('accent-stroke-control-rest').withDefault((element) => accentStrokeControlRecipe.getValueFor(element).evaluate(element, accentFillRest.getValueFor(element)).rest);\n/** @public */\nexport const accentStrokeControlHover = create('accent-stroke-control-hover').withDefault((element) => accentStrokeControlRecipe.getValueFor(element).evaluate(element, accentFillHover.getValueFor(element)).hover);\n/** @public */\nexport const accentStrokeControlActive = create('accent-stroke-control-active').withDefault((element) => accentStrokeControlRecipe.getValueFor(element).evaluate(element, accentFillActive.getValueFor(element)).active);\n/** @public */\nexport const accentStrokeControlFocus = create('accent-stroke-control-focus').withDefault((element) => accentStrokeControlRecipe.getValueFor(element).evaluate(element, accentFillFocus.getValueFor(element)).focus);\n// Neutral Fill\n/** @public */\nexport const neutralFillRecipe = createNonCss('neutral-fill-recipe').withDefault({\n evaluate: (element, reference) => deltaSwatchSetByLuminance(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralFillRestDelta.getValueFor(element), neutralFillHoverDelta.getValueFor(element), neutralFillActiveDelta.getValueFor(element), neutralFillFocusDelta.getValueFor(element), undefined, 2, 3, 1, 2, undefined),\n});\n/** @public */\nexport const neutralFillRest = create('neutral-fill-rest').withDefault((element) => neutralFillRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralFillHover = create('neutral-fill-hover').withDefault((element) => neutralFillRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralFillActive = create('neutral-fill-active').withDefault((element) => neutralFillRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralFillFocus = create('neutral-fill-focus').withDefault((element) => neutralFillRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Fill Input\n/** @public */\nexport const neutralFillInputRecipe = createNonCss('neutral-fill-input-recipe').withDefault({\n evaluate: (element, reference) => deltaSwatchSetByLuminance(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralFillInputRestDelta.getValueFor(element), neutralFillInputHoverDelta.getValueFor(element), neutralFillInputActiveDelta.getValueFor(element), neutralFillInputFocusDelta.getValueFor(element), undefined, 2, 3, 1, 0, undefined),\n});\n/** @public */\nexport const neutralFillInputRest = create('neutral-fill-input-rest').withDefault((element) => neutralFillInputRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralFillInputHover = create('neutral-fill-input-hover').withDefault((element) => neutralFillInputRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralFillInputActive = create('neutral-fill-input-active').withDefault((element) => neutralFillInputRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralFillInputFocus = create('neutral-fill-input-focus').withDefault((element) => neutralFillInputRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Fill Input Alt\n/** @public */\nexport const neutralFillInputAltRecipe = createNonCss('neutral-fill-input-alt-recipe').withDefault({\n evaluate: (element, reference) => deltaSwatchSetByLuminance(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralFillInputAltRestDelta.getValueFor(element), neutralFillInputAltHoverDelta.getValueFor(element), neutralFillInputAltActiveDelta.getValueFor(element), neutralFillInputAltFocusDelta.getValueFor(element), 1, neutralFillInputAltRestDelta.getValueFor(element), neutralFillInputAltRestDelta.getValueFor(element) - neutralFillInputAltHoverDelta.getValueFor(element), neutralFillInputAltRestDelta.getValueFor(element) - neutralFillInputAltActiveDelta.getValueFor(element), neutralFillInputAltFocusDelta.getValueFor(element), 1),\n});\n/** @public */\nexport const neutralFillInputAltRest = create('neutral-fill-input-alt-rest').withDefault((element) => neutralFillInputAltRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralFillInputAltHover = create('neutral-fill-input-alt-hover').withDefault((element) => neutralFillInputAltRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralFillInputAltActive = create('neutral-fill-input-alt-active').withDefault((element) => neutralFillInputAltRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralFillInputAltFocus = create('neutral-fill-input-alt-focus').withDefault((element) => neutralFillInputAltRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Fill Layer\n/** @public */\nexport const neutralFillLayerRecipe = createNonCss('neutral-fill-layer-recipe').withDefault({\n evaluate: (element, reference) => deltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralFillLayerRestDelta.getValueFor(element), neutralFillLayerHoverDelta.getValueFor(element), neutralFillLayerActiveDelta.getValueFor(element), neutralFillLayerRestDelta.getValueFor(element), 1),\n});\n/** @public */\nexport const neutralFillLayerRest = create('neutral-fill-layer-rest').withDefault((element) => neutralFillLayerRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralFillLayerHover = create('neutral-fill-layer-hover').withDefault((element) => neutralFillLayerRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralFillLayerActive = create('neutral-fill-layer-active').withDefault((element) => neutralFillLayerRecipe.getValueFor(element).evaluate(element).active);\n// Neutral Fill Layer Alt\n/** @public */\nexport const neutralFillLayerAltRecipe = createNonCss('neutral-fill-layer-alt-recipe').withDefault({\n evaluate: (element, reference) => deltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralFillLayerAltRestDelta.getValueFor(element), neutralFillLayerAltRestDelta.getValueFor(element), neutralFillLayerAltRestDelta.getValueFor(element), neutralFillLayerAltRestDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralFillLayerAltRest = create('neutral-fill-layer-alt-rest').withDefault((element) => neutralFillLayerAltRecipe.getValueFor(element).evaluate(element).rest);\n// Neutral Fill Secondary\n/** @public */\nexport const neutralFillSecondaryRecipe = createNonCss('neutral-fill-secondary-recipe').withDefault({\n evaluate: (element, reference) => deltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralFillSecondaryRestDelta.getValueFor(element), neutralFillSecondaryHoverDelta.getValueFor(element), neutralFillSecondaryActiveDelta.getValueFor(element), neutralFillSecondaryFocusDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralFillSecondaryRest = create('neutral-fill-secondary-rest').withDefault((element) => neutralFillSecondaryRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralFillSecondaryHover = create('neutral-fill-secondary-hover').withDefault((element) => neutralFillSecondaryRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralFillSecondaryActive = create('neutral-fill-secondary-active').withDefault((element) => neutralFillSecondaryRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralFillSecondaryFocus = create('neutral-fill-secondary-focus').withDefault((element) => neutralFillSecondaryRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Fill Stealth\n/** @public */\nexport const neutralFillStealthRecipe = createNonCss('neutral-fill-stealth-recipe').withDefault({\n evaluate: (element, reference) => deltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralFillStealthRestDelta.getValueFor(element), neutralFillStealthHoverDelta.getValueFor(element), neutralFillStealthActiveDelta.getValueFor(element), neutralFillStealthFocusDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralFillStealthRest = create('neutral-fill-stealth-rest').withDefault((element) => neutralFillStealthRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralFillStealthHover = create('neutral-fill-stealth-hover').withDefault((element) => neutralFillStealthRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralFillStealthActive = create('neutral-fill-stealth-active').withDefault((element) => neutralFillStealthRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralFillStealthFocus = create('neutral-fill-stealth-focus').withDefault((element) => neutralFillStealthRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Fill Strong\n/** @public */\nexport const neutralFillStrongRecipe = createNonCss('neutral-fill-strong-recipe').withDefault({\n evaluate: (element, reference) => contrastAndDeltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), 4.5, neutralFillStrongRestDelta.getValueFor(element), neutralFillStrongHoverDelta.getValueFor(element), neutralFillStrongActiveDelta.getValueFor(element), neutralFillStrongFocusDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralFillStrongRest = create('neutral-fill-strong-rest').withDefault((element) => neutralFillStrongRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralFillStrongHover = create('neutral-fill-strong-hover').withDefault((element) => neutralFillStrongRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralFillStrongActive = create('neutral-fill-strong-active').withDefault((element) => neutralFillStrongRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralFillStrongFocus = create('neutral-fill-strong-focus').withDefault((element) => neutralFillStrongRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Foreground\n/** @public */\nexport const neutralForegroundRecipe = createNonCss('neutral-foreground-recipe').withDefault({\n evaluate: (element, reference) => contrastAndDeltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), 16, 0, -19, -30, 0),\n});\n/** @public */\nexport const neutralForegroundRest = create('neutral-foreground-rest').withDefault((element) => neutralForegroundRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralForegroundHover = create('neutral-foreground-hover').withDefault((element) => neutralForegroundRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralForegroundActive = create('neutral-foreground-active').withDefault((element) => neutralForegroundRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralForegroundFocus = create('neutral-foreground-focus').withDefault((element) => neutralForegroundRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Foreground Hint\n/** @public */\nexport const neutralForegroundHintRecipe = createNonCss('neutral-foreground-hint-recipe').withDefault({\n evaluate: (element, reference) => contrastSwatch(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), 4.5),\n});\n/** @public */\nexport const neutralForegroundHint = create('neutral-foreground-hint').withDefault((element) => neutralForegroundHintRecipe.getValueFor(element).evaluate(element));\n// Neutral Stroke\n/** @public */\nexport const neutralStrokeRecipe = createNonCss('neutral-stroke-recipe').withDefault({\n evaluate: (element, reference) => {\n return deltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralStrokeRestDelta.getValueFor(element), neutralStrokeHoverDelta.getValueFor(element), neutralStrokeActiveDelta.getValueFor(element), neutralStrokeFocusDelta.getValueFor(element));\n },\n});\n/** @public */\nexport const neutralStrokeRest = create('neutral-stroke-rest').withDefault((element) => neutralStrokeRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralStrokeHover = create('neutral-stroke-hover').withDefault((element) => neutralStrokeRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralStrokeActive = create('neutral-stroke-active').withDefault((element) => neutralStrokeRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralStrokeFocus = create('neutral-stroke-focus').withDefault((element) => neutralStrokeRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Stroke Control\n/** @public */\nexport const neutralStrokeControlRecipe = createNonCss('neutral-stroke-control-recipe').withDefault({\n evaluate: (element, reference) => {\n return gradientShadowStrokeAlgorithm(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralStrokeControlRestDelta.getValueFor(element), neutralStrokeControlHoverDelta.getValueFor(element), neutralStrokeControlActiveDelta.getValueFor(element), neutralStrokeControlFocusDelta.getValueFor(element), 5);\n },\n});\n/** @public */\nexport const neutralStrokeControlRest = create('neutral-stroke-control-rest').withDefault((element) => neutralStrokeControlRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralStrokeControlHover = create('neutral-stroke-control-hover').withDefault((element) => neutralStrokeControlRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralStrokeControlActive = create('neutral-stroke-control-active').withDefault((element) => neutralStrokeControlRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralStrokeControlFocus = create('neutral-stroke-control-focus').withDefault((element) => neutralStrokeControlRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Stroke Divider\n/** @public */\nexport const neutralStrokeDividerRecipe = createNonCss('neutral-stroke-divider-recipe').withDefault({\n evaluate: (element, reference) => deltaSwatch(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralStrokeDividerRestDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralStrokeDividerRest = create('neutral-stroke-divider-rest').withDefault(element => neutralStrokeDividerRecipe.getValueFor(element).evaluate(element));\n// Neutral Stroke Input\n/** @public */\nexport const neutralStrokeInputRecipe = createNonCss('neutral-stroke-input-recipe').withDefault({\n evaluate: (element, reference) => {\n return underlineStrokeAlgorithm(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralStrokeControlRestDelta.getValueFor(element), neutralStrokeControlHoverDelta.getValueFor(element), neutralStrokeControlActiveDelta.getValueFor(element), neutralStrokeControlFocusDelta.getValueFor(element), 20, strokeWidth.getValueFor(element) + 'px');\n },\n});\n/** @public */\nexport const neutralStrokeInputRest = create('neutral-stroke-input-rest').withDefault((element) => neutralStrokeInputRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralStrokeInputHover = create('neutral-stroke-input-hover').withDefault((element) => neutralStrokeInputRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralStrokeInputActive = create('neutral-stroke-input-active').withDefault((element) => neutralStrokeInputRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralStrokeInputFocus = create('neutral-stroke-input-focus').withDefault((element) => neutralStrokeInputRecipe.getValueFor(element).evaluate(element).focus);\n// Neutral Stroke Layer\n/** @public */\nexport const neutralStrokeLayerRecipe = createNonCss('neutral-stroke-layer-recipe').withDefault({\n evaluate: (element, reference) => {\n return deltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralStrokeLayerRestDelta.getValueFor(element), neutralStrokeLayerHoverDelta.getValueFor(element), neutralStrokeLayerActiveDelta.getValueFor(element), neutralStrokeLayerRestDelta.getValueFor(element));\n },\n});\n/** @public */\nexport const neutralStrokeLayerRest = create('neutral-stroke-layer-rest').withDefault((element) => neutralStrokeLayerRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralStrokeLayerHover = create('neutral-stroke-layer-hover').withDefault((element) => neutralStrokeLayerRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralStrokeLayerActive = create('neutral-stroke-layer-active').withDefault((element) => neutralStrokeLayerRecipe.getValueFor(element).evaluate(element).active);\n// Neutral Stroke Strong\n/** @public */\nexport const neutralStrokeStrongRecipe = createNonCss('neutral-stroke-strong-recipe').withDefault({\n evaluate: (element, reference) => contrastAndDeltaSwatchSet(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), 5.5, 0, neutralStrokeStrongHoverDelta.getValueFor(element), neutralStrokeStrongActiveDelta.getValueFor(element), neutralStrokeStrongFocusDelta.getValueFor(element)),\n});\n/** @public */\nexport const neutralStrokeStrongRest = create('neutral-stroke-strong-rest').withDefault((element) => neutralStrokeStrongRecipe.getValueFor(element).evaluate(element).rest);\n/** @public */\nexport const neutralStrokeStrongHover = create('neutral-stroke-strong-hover').withDefault((element) => neutralStrokeStrongRecipe.getValueFor(element).evaluate(element).hover);\n/** @public */\nexport const neutralStrokeStrongActive = create('neutral-stroke-strong-active').withDefault((element) => neutralStrokeStrongRecipe.getValueFor(element).evaluate(element).active);\n/** @public */\nexport const neutralStrokeStrongFocus = create('neutral-stroke-strong-focus').withDefault((element) => neutralStrokeStrongRecipe.getValueFor(element).evaluate(element).focus);\n// Focus Stroke Outer\n/** @public */\nexport const focusStrokeOuterRecipe = createNonCss('focus-stroke-outer-recipe').withDefault({\n evaluate: (element) => focusStrokeOuterAlgorithm(neutralPalette.getValueFor(element), fillColor.getValueFor(element)),\n});\n/** @public */\nexport const focusStrokeOuter = create('focus-stroke-outer').withDefault((element) => focusStrokeOuterRecipe.getValueFor(element).evaluate(element));\n// Focus Stroke Inner\n/** @public */\nexport const focusStrokeInnerRecipe = createNonCss('focus-stroke-inner-recipe').withDefault({\n evaluate: (element) => focusStrokeInnerAlgorithm(accentPalette.getValueFor(element), fillColor.getValueFor(element), focusStrokeOuter.getValueFor(element)),\n});\n/** @public */\nexport const focusStrokeInner = create('focus-stroke-inner').withDefault((element) => focusStrokeInnerRecipe.getValueFor(element).evaluate(element));\n// Deprecated tokens\n// Foreground On Accent\n/** @public @deprecated Not used */\nexport const foregroundOnAccentLargeRecipe = createNonCss('foreground-on-accent-large-recipe').withDefault({\n evaluate: (element) => foregroundOnAccentSetAlgorithm(accentFillRest.getValueFor(element), accentFillHover.getValueFor(element), accentFillActive.getValueFor(element), accentFillFocus.getValueFor(element), ContrastTarget.large),\n});\n/** @public @deprecated Not used */\nexport const foregroundOnAccentRestLarge = create('foreground-on-accent-rest-large').withDefault((element) => foregroundOnAccentLargeRecipe.getValueFor(element).evaluate(element).rest);\n/** @public @deprecated Not used */\nexport const foregroundOnAccentHoverLarge = create('foreground-on-accent-hover-large').withDefault((element) => foregroundOnAccentLargeRecipe.getValueFor(element).evaluate(element, accentFillHover.getValueFor(element)).hover);\n/** @public @deprecated Not used */\nexport const foregroundOnAccentActiveLarge = create('foreground-on-accent-active-large').withDefault((element) => foregroundOnAccentLargeRecipe.getValueFor(element).evaluate(element, accentFillActive.getValueFor(element)).active);\n/** @public @deprecated Not used */\nexport const foregroundOnAccentFocusLarge = create('foreground-on-accent-focus-large').withDefault((element) => foregroundOnAccentLargeRecipe.getValueFor(element).evaluate(element, accentFillFocus.getValueFor(element)).focus);\n// Neutral Fill Inverse\n/** @public @deprecated Not used */\nexport const neutralFillInverseRestDelta = create('neutral-fill-inverse-rest-delta').withDefault(0);\n/** @public @deprecated Not used */\nexport const neutralFillInverseHoverDelta = create('neutral-fill-inverse-hover-delta').withDefault(-3);\n/** @public @deprecated Not used */\nexport const neutralFillInverseActiveDelta = create('neutral-fill-inverse-active-delta').withDefault(7);\n/** @public @deprecated Not used */\nexport const neutralFillInverseFocusDelta = create('neutral-fill-inverse-focus-delta').withDefault(0);\n/** @deprecated Not used */\nfunction neutralFillInverse(palette, reference, restDelta, hoverDelta, activeDelta, focusDelta) {\n const direction = directionByIsDark(reference);\n const accessibleIndex = palette.closestIndexOf(palette.colorContrast(reference, 14));\n const accessibleIndex2 = accessibleIndex + direction * Math.abs(restDelta - hoverDelta);\n const indexOneIsRest = direction === 1 ? restDelta < hoverDelta : direction * restDelta > direction * hoverDelta;\n let restIndex;\n let hoverIndex;\n if (indexOneIsRest) {\n restIndex = accessibleIndex;\n hoverIndex = accessibleIndex2;\n }\n else {\n restIndex = accessibleIndex2;\n hoverIndex = accessibleIndex;\n }\n return {\n rest: palette.get(restIndex),\n hover: palette.get(hoverIndex),\n active: palette.get(restIndex + direction * activeDelta),\n focus: palette.get(restIndex + direction * focusDelta),\n };\n}\n/** @public @deprecated Not used */\nexport const neutralFillInverseRecipe = createNonCss('neutral-fill-inverse-recipe').withDefault({\n evaluate: (element, reference) => neutralFillInverse(neutralPalette.getValueFor(element), reference || fillColor.getValueFor(element), neutralFillInverseRestDelta.getValueFor(element), neutralFillInverseHoverDelta.getValueFor(element), neutralFillInverseActiveDelta.getValueFor(element), neutralFillInverseFocusDelta.getValueFor(element)),\n});\n/** @public @deprecated Not used */\nexport const neutralFillInverseRest = create('neutral-fill-inverse-rest').withDefault((element) => neutralFillInverseRecipe.getValueFor(element).evaluate(element).rest);\n/** @public @deprecated Not used */\nexport const neutralFillInverseHover = create('neutral-fill-inverse-hover').withDefault((element) => neutralFillInverseRecipe.getValueFor(element).evaluate(element).hover);\n/** @public @deprecated Not used */\nexport const neutralFillInverseActive = create('neutral-fill-inverse-active').withDefault((element) => neutralFillInverseRecipe.getValueFor(element).evaluate(element).active);\n/** @public @deprecated Not used */\nexport const neutralFillInverseFocus = create('neutral-fill-inverse-focus').withDefault((element) => neutralFillInverseRecipe.getValueFor(element).evaluate(element).focus);\n/** @public @deprecated Use controlCornerRadius */\nexport const cornerRadius = controlCornerRadius;\n/** @public @deprecated Use layerCornerRadius */\nexport const elevatedCornerRadius = layerCornerRadius;\n/** @public @deprecated Use strokeWidth */\nexport const outlineWidth = strokeWidth;\n/** @public @deprecated Use focusStrokeWidth */\nexport const focusOutlineWidth = focusStrokeWidth;\n/** @public @deprecated Use neutralFillInverseRestDelta */\nexport const neutralContrastFillRestDelta = neutralFillInverseRestDelta;\n/** @public @deprecated Use neutralFillInverseHoverDelta */\nexport const neutralContrastFillHoverDelta = neutralFillInverseHoverDelta;\n/** @public @deprecated Use neutralFillInverseActiveDelta */\nexport const neutralContrastFillActiveDelta = neutralFillInverseActiveDelta;\n/** @public @deprecated Use neutralFillInverseFocusDelta */\nexport const neutralContrastFillFocusDelta = neutralFillInverseFocusDelta;\n/** @public @deprecated Use neutralFillLayerRestDelta */\nexport const neutralFillCardDelta = neutralFillLayerRestDelta;\n/** @public @deprecated Use neutralFillStrongRestDelta */\nexport const neutralFillToggleRestDelta = neutralFillStrongRestDelta;\n/** @public @deprecated Use neutralFillStrongHoverDelta */\nexport const neutralFillToggleHoverDelta = neutralFillStrongHoverDelta;\n/** @public @deprecated Use neutralFillStrongActiveDelta */\nexport const neutralFillToggleActiveDelta = neutralFillStrongActiveDelta;\n/** @public @deprecated Use neutralFillStrongFocusDelta */\nexport const neutralFillToggleFocusDelta = neutralFillStrongFocusDelta;\n/** @public @deprecated Use neutralStrokeDividerRestDelta */\nexport const neutralDividerRestDelta = neutralStrokeDividerRestDelta;\n/** @public @deprecated Use neutralLayer1 */\nexport const neutralLayerL1 = neutralLayer1;\n/** @public @deprecated Use neutralLayer2 */\nexport const neutralLayerL2 = neutralLayer2;\n/** @public @deprecated Use neutralLayer3 */\nexport const neutralLayerL3 = neutralLayer3;\n/** @public @deprecated Use neutralLayer4 */\nexport const neutralLayerL4 = neutralLayer4;\n/** @public @deprecated Use foregroundOnAccentRest */\nexport const accentForegroundCut = foregroundOnAccentRest;\n/** @public @deprecated Use foregroundOnAccentRestLarge */\nexport const accentForegroundCutLarge = foregroundOnAccentRestLarge;\n/** @public @deprecated Use neutralStrokeDividerRest */\nexport const neutralDivider = neutralStrokeDividerRest;\n/** @public @deprecated Use neutralFillLayerRest */\nexport const neutralFillCard = neutralFillLayerRest;\n/** @public @deprecated Use neutralFillInverseRest */\nexport const neutralContrastFillRest = neutralFillInverseRest;\n/** @public @deprecated Use neutralFillInverseHover */\nexport const neutralContrastFillHover = neutralFillInverseHover;\n/** @public @deprecated Use neutralFillInverseActive */\nexport const neutralContrastFillActive = neutralFillInverseActive;\n/** @public @deprecated Use neutralFillInverseFocus */\nexport const neutralContrastFillFocus = neutralFillInverseFocus;\n/** @public @deprecated Use neutralFillStrongRest */\nexport const neutralFillToggleRest = neutralFillStrongRest;\n/** @public @deprecated Use neutralFillStrongHover */\nexport const neutralFillToggleHover = neutralFillStrongHover;\n/** @public @deprecated Use neutralFillStrongActive */\nexport const neutralFillToggleActive = neutralFillStrongActive;\n/** @public @deprecated Use neutralFillStrongFocus */\nexport const neutralFillToggleFocus = neutralFillStrongFocus;\n/** @public @deprecated Use focusStrokeOuter */\nexport const neutralFocus = focusStrokeOuter;\n/** @public @deprecated Use focusStrokeInner */\nexport const neutralFocusInnerAccent = focusStrokeInner;\n/** @public @deprecated Use neutralStrokeRest */\nexport const neutralOutlineRest = neutralStrokeRest;\n/** @public @deprecated Use neutralStrokeHover */\nexport const neutralOutlineHover = neutralStrokeHover;\n/** @public @deprecated Use neutralStrokeActive */\nexport const neutralOutlineActive = neutralStrokeActive;\n/** @public @deprecated Use neutralStrokeFocus */\nexport const neutralOutlineFocus = neutralStrokeFocus;\n","import { css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { ifDefined } from 'lit/directives/if-defined.js'\r\nimport { HasSlotController } from '../controllers/HasSlotController'\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element'\r\nimport { useEffect } from 'haunted'\r\n\r\nfunction isNotNullOrWhitespace(x: string | undefined | null) {\r\n return x && x.trim() !== '';\r\n}\r\n\r\nexport type ChipVariant = 'filled' | 'outlined'\r\n\r\n/**\r\n * A \"chip\" element\r\n */\r\n@customElement('ep-chip')\r\nexport class EPChip extends LitHauntedElement {\r\n private hasSlotController = new HasSlotController(this, 'leading-icon', 'trailing-icon');\r\n\r\n @property({ type: Boolean, reflect: true })\r\n clickable: boolean = false;\r\n\r\n @property({ reflect: true })\r\n variant: ChipVariant = 'filled'\r\n\r\n @property({ reflect: true })\r\n href?: string;\r\n\r\n @property({ reflect: true })\r\n target?: string;\r\n\r\n get href2(): string | undefined {\r\n return isNotNullOrWhitespace(this.href) ? this.href : undefined;\r\n }\r\n\r\n get hasIconSlotted(): boolean {\r\n return this.hasSlotController.testAny('leading-icon', 'trailing-icon');\r\n }\r\n\r\n render() {\r\n useEffect(() => {\r\n if (this.href2 !== undefined) {\r\n this.clickable = true;\r\n }\r\n }, [this.href]);\r\n \r\n return html`\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n --filled-background: rgba(0, 0, 0, 0.08);\r\n --filled-background-hover: rgba(0, 0, 0, 0.12);\r\n --outlined-background: transparent;\r\n --outlined-background-hover: rgba(0, 0, 0, 0.04);\r\n --outlined-border: 1px solid #bdbdbd;\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --inner-chip-height: var(--chip-height, 32px);\r\n max-width: inherit;\r\n }\r\n\r\n .chipRoot {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n /* height: var(--chip-height); */\r\n height: auto;\r\n width: inherit;\r\n max-width: inherit;\r\n color: rgba(0, 0, 0, 0.87);\r\n border-radius: calc(var(--inner-chip-height) / 2);\r\n white-space: nowrap;\r\n cursor: default;\r\n outline: 0;\r\n text-decoration: none;\r\n border: 0;\r\n padding: 0 5px;\r\n vertical-align: middle;\r\n box-sizing: border-box;\r\n transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 125ms ease 0ms;\r\n }\r\n\r\n /* .chipRoot[mini] {\r\n height: auto;\r\n } */\r\n\r\n .chipRoot.clickable {\r\n cursor: pointer;\r\n user-select: none;\r\n }\r\n .chipRoot.clickable:hover {\r\n transform: scale(1.025);\r\n }\r\n .chipRoot.clickable:active {\r\n transform: scale(0.925);\r\n }\r\n\r\n .chipRoot.filled {\r\n background-color: var(--filled-background);\r\n }\r\n .chipRoot.filled.clickable:hover {\r\n background-color: var(--filled-background-hover);\r\n }\r\n \r\n .chipRoot.outlined {\r\n background-color: var(--outlined-background);\r\n border: var(--outlined-border);\r\n }\r\n .chipRoot.outlined.clickable:hover {\r\n background-color: var(--outlined-background-hover);\r\n }\r\n\r\n .chipLabel {\r\n font-family: var(--font-prose);\r\n font-size: 0.8125rem;\r\n color: rgba(0, 0, 0, 0.87);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding: 0 calc(var(--inner-chip-height) * 0.375);\r\n white-space: nowrap;\r\n line-height: var(--inner-chip-height);\r\n }\r\n\r\n ::slotted([slot=\"leading-icon\"]) {\r\n margin-left: 5px;\r\n margin-right: -6px;\r\n user-select: none;\r\n /* width: 1em; */\r\n width: calc(var(--inner-chip-height) * 0.75);\r\n /* height: 1em; */\r\n height: calc(var(--inner-chip-height) * 0.75);\r\n display: inline-block;\r\n fill: currentColor;\r\n flex-shrink: 0;\r\n transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n font-size: 1.0em;\r\n }\r\n\r\n ::slotted([slot=\"trailing-icon\"]) {\r\n margin-right: 5px;\r\n margin-left: -6px;\r\n user-select: none;\r\n /* width: 1em; */\r\n width: calc(var(--inner-chip-height) * 0.75);\r\n /* height: 1em; */\r\n height: calc(var(--inner-chip-height) * 0.75);\r\n display: inline-block;\r\n fill: currentColor;\r\n flex-shrink: 0;\r\n transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n font-size: 1.0em;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-chip': EPChip\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n/**\r\n * An element specifically for being more explicit and reusable than
\r\n */\r\n@customElement('ep-contents')\r\nexport class EPContents extends LitElement {\r\n\r\n render() {\r\n return html`\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-contents': EPContents\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\nexport type ErrorMessageListState = 'valid' | 'invalid' | 'neutral' | 'loading'\r\n\r\n/**\r\n * An element specifically for being more explicit and reusable than
\r\n */\r\n@customElement('ep-error-message-list')\r\nexport class EPErrorMessageList extends LitElement {\r\n\r\n @property({ attribute: 'positive-message', reflect: true })\r\n positiveMessage = '✅ ABC is valid'\r\n\r\n @property({ attribute: 'negative-message', reflect: true })\r\n negativeMessage = '🛑 ABC is invalid'\r\n\r\n @property({ attribute: 'neutral-message', reflect: true })\r\n neutralMessage = ''\r\n\r\n @property({ attribute: 'loading-message', reflect: true })\r\n loadingMessage = 'Loading...'\r\n\r\n @property({ attribute: false })\r\n state: ErrorMessageListState = 'neutral'\r\n\r\n @property({ attribute: false })\r\n messages: string[] = []\r\n\r\n render() {\r\n switch (this.state) {\r\n case 'neutral': {\r\n return html`\r\n
\r\n

${this.neutralMessage}

\r\n
\r\n `\r\n }\r\n case 'loading': {\r\n return html`\r\n
\r\n \r\n

${this.loadingMessage}

\r\n
\r\n `\r\n }\r\n case 'valid': {\r\n return html`\r\n
\r\n

${this.positiveMessage}

\r\n
\r\n `\r\n }\r\n case 'invalid': {\r\n return html`\r\n
\r\n \r\n

${this.negativeMessage}

\r\n
\r\n
    \r\n ${this.messages.map(msg => (\r\n html`
  • ${msg}
  • `\r\n ))}\r\n
\r\n
\r\n `\r\n }\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n font-family: var(--font-prose);\r\n font-weight: 400;\r\n font-size: 12px;\r\n white-space: normal; /* counter-acts quill */\r\n line-height: 1.5;\r\n color: var(--color-text-soft-black);\r\n box-sizing: border-box;\r\n\r\n --color-text-soft-black: #24292F;\r\n --color-text-danger: #d1242f;\r\n --color-text-muted: hsla(0, 0%, 15%, 0.7);\r\n --color-border: hsla(218, 32%, 78%, 0.5);\r\n --border-error: 2px dashed var(--color-text-danger);\r\n --font-mono: ui-monospace, SFMono-Regular, SF Mono, Menlo, \"Cascadia Mono\", Consolas, Liberation Mono, monospace;\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n }\r\n\r\n .title h2 {\r\n font-size: 1.15em;\r\n margin: 0;\r\n padding: 0;\r\n padding-bottom: 0;\r\n }\r\n\r\n .messages li {\r\n font-family: var(--font-mono);\r\n color: var(--color-text-danger);\r\n font-weight: 500;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-error-message-list': EPErrorMessageList\r\n }\r\n}\r\n","import type { ComplexAttributeConverter } from 'lit'\r\n\r\nexport const explicitBooleanAttributeConverter: ComplexAttributeConverter = {\r\n fromAttribute(value, type) {\r\n return value === 'true'\r\n },\r\n toAttribute(value, type) {\r\n return value ? 'true' : 'false'\r\n }\r\n};","\r\nexport function getLongestTransitionMS(element?: HTMLElement): number {\r\n const cssTimeUnitRegex = (/(\\d*\\.?\\d+)\\s?(s|ms+)/igm);\r\n const getHighestValueMS = (str: string) => Array.from(str.matchAll(cssTimeUnitRegex))\r\n .map(([_, value, unit]) => ([value, unit])) // extract value and unit from expected positions\r\n .map(([value, unit]) => unit === 's' ? parseFloat(value)*1000 : parseFloat(value)) // convert to ms as a number\r\n .sort((a, b) => b - a) // sort descending\r\n [0] ?? 0.0; // get highest value or 0.0 if none\r\n if (element) {\r\n const { transitionDelay, transitionDuration } = window.getComputedStyle(element);\r\n const transitionDelayMS = getHighestValueMS(transitionDelay);\r\n const transitionDurationMS = getHighestValueMS(transitionDuration);\r\n return transitionDelayMS + transitionDurationMS;\r\n }\r\n return 0;\r\n}","import { css, html } from 'lit'\r\nimport { customElement, property, query, state } from 'lit/decorators.js'\r\nimport { useEffect } from 'haunted'\r\nimport { explicitBooleanAttributeConverter } from '../directives/explicitBooleanAttributeConverter'\r\nimport type { Dialog } from '@fluentui/web-components/dist/dts/dialog/index'\r\nimport { getLongestTransitionMS } from '../functions/longestCSSTransition';\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\n\r\n/**\r\n * Description:\r\n * Customized with a frame header and (X) to close button\r\n * \r\n * Slots:\r\n * - \"frame-title\"\r\n * - \"\"\r\n * Requires that the following be included with the element at runtime:\r\n * - https://cdn.jsdelivr.net/npm/@fluentui/web-components@2.5.8/dist/web-components.min.js\r\n */\r\n@customElement('ep-fluent-dialog')\r\nexport class EPFluentDialog extends LitHauntedElement {\r\n\r\n /**\r\n * Pass-thru properties from:\r\n * - https://github.com/microsoft/fast/blob/master/packages/web-components/fast-foundation/src/dialog/dialog.ts\r\n */\r\n\r\n @property({ type: Boolean, reflect: true })\r\n public modal: boolean = false;\r\n\r\n @state()\r\n private _open: boolean = false;\r\n\r\n @property({ type: Boolean, converter: explicitBooleanAttributeConverter, attribute: 'open', reflect: true })\r\n public isOpen: boolean = false;\r\n\r\n get hidden(): boolean {\r\n return !this.isOpen;\r\n }\r\n set hidden(value: boolean) {\r\n this.isOpen = !value;\r\n }\r\n\r\n @property({ type: Boolean, reflect: true, attribute: 'hide-close-button' })\r\n public hideCloseButton: boolean = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: 'deny-dismissing' })\r\n public denyDismissing: boolean = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: 'trap-focus' })\r\n public trapFocus: boolean = false;\r\n\r\n //@property({ type: Boolean, attribute: 'show-actions', reflect: true })\r\n @property({ attribute: false })\r\n public showActions: boolean = false;\r\n\r\n @property({ type: String, reflect: true })\r\n public width: string = '640px';\r\n\r\n @property({ type: String, reflect: true })\r\n public height: string = '480px';\r\n\r\n @query('slot[name=frame-actions]')\r\n frameActionsSlotElement?: HTMLSlotElement;\r\n\r\n @query('fluent-dialog')\r\n fluentDialog?: Dialog;\r\n\r\n /** Controls the fade in/out animation */\r\n @state()\r\n isHiding: boolean = this.hidden;\r\n\r\n get fluentInnerDialog(): HTMLElement | undefined {\r\n return this.fluentDialog?.shadowRoot?.querySelector(`[part=control]`) ?? undefined;\r\n }\r\n\r\n render() {\r\n useEffect(() => {\r\n //console.log('effect?', this.isOpen);\r\n // Dialog is meant to be open\r\n if (this.isOpen) {\r\n this.isHiding = true;\r\n //this.hidden = false;\r\n this._open = true;\r\n setTimeout(() => {\r\n this.isHiding = false;\r\n }, 0);\r\n }\r\n // Dialog is meant to be closed\r\n else if (this.fluentDialog) {\r\n const animatedParts = Array.from(this.fluentDialog.shadowRoot?.querySelectorAll(`[part=overlay], [part=control]`) ?? []) as HTMLElement[];\r\n const delay = Math.max(...animatedParts.map(e => getLongestTransitionMS(e), 0));\r\n this.isHiding = true;\r\n setTimeout(() => {\r\n //this.hidden = true;\r\n this._open = false;\r\n this._dispatchDismiss(this);\r\n }, delay);\r\n }\r\n }, [this.isOpen]);\r\n\r\n return html`\r\n \r\n
\r\n
\r\n
\r\n \r\n

Modal Title

\r\n
\r\n
\r\n ${\r\n this.hideCloseButton\r\n ? ''\r\n : html`\r\n Close ✖\r\n `\r\n }\r\n
\r\n \r\n
\r\n \r\n
\r\n ${\r\n this.showActions\r\n ? html`\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n `\r\n : html`\r\n
\r\n \r\n
\r\n `\r\n }\r\n
\r\n
\r\n `\r\n }\r\n\r\n public open() {\r\n // this.isHiding = true;\r\n // this.hidden = false;\r\n // setTimeout(() => {\r\n // this.isHiding = false;\r\n // }, 10);\r\n this.isOpen = true;\r\n }\r\n\r\n public close() {\r\n // this.isHiding = true;\r\n // setTimeout(() => {\r\n // this.hidden = true;\r\n // }, 1000);\r\n // if (this.fluentDialog && this.isOpen) {\r\n // this._dispatchDismiss(this.fluentDialog, true);\r\n // }\r\n this.isOpen = false;\r\n }\r\n\r\n private _handleDismiss(event: CustomEvent) {\r\n //console.log('dismiss event?', event);\r\n if (this.fluentDialog) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n if (!this.denyDismissing || event.detail === true) {\r\n // const animatedParts = Array.from(this.fluentDialog.shadowRoot?.querySelectorAll(`[part=overlay], [part=control]`) ?? []) as HTMLElement[];\r\n // const delay = Math.max(...animatedParts.map(e => getLongestTransitionMS(e), 0));\r\n // this.isHiding = true;\r\n // setTimeout(() => {\r\n // //this.hidden = true;\r\n // this._open = false;\r\n // this._dispatchDismiss(this);\r\n // }, delay);\r\n this.isOpen = false;\r\n }\r\n // If the dialog wasn't supposed to close (previous `if`) AND we're supposed to deny dismisses, play a little animation\r\n else if (this.denyDismissing && this.fluentInnerDialog) {\r\n //console.log('dismiss denied!')\r\n // Borrowed from: https://github.com/shoelace-style/shoelace/blob/7500cabc587abead71f2440ad8f87aa4c1f468f9/src/components/dialog/dialog.component.ts#L332-L335\r\n const keyframes: Keyframe[] = [{ scale: 1 }, { scale: 1.02 }, { scale: 1 }];\r\n const options: KeyframeAnimationOptions = { duration: 250 };\r\n this.fluentInnerDialog.getAnimations().forEach(anim => anim.cancel())\r\n this.fluentInnerDialog.animate(keyframes, options);\r\n }\r\n }\r\n }\r\n\r\n private _handleCloseClick() {\r\n if (this.fluentDialog) {\r\n this._dispatchDismiss(this.fluentDialog);\r\n }\r\n //this.hidden = true;\r\n }\r\n\r\n private _dispatchDismiss(target: HTMLElement, bypass: boolean = false) {\r\n const event = new CustomEvent('dismiss', { \r\n bubbles: true,\r\n composed: true,\r\n detail: bypass,\r\n })\r\n target.dispatchEvent(event);\r\n //this.dispatchEvent(event);\r\n //this.fluentDialog?.dispatchEvent(event);\r\n }\r\n\r\n private _handleFrameActionsSlotChange() {\r\n this.showActions = (this.frameActionsSlotElement?.assignedElements()?.length ?? 0) > 0;\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n position: relative;\r\n z-index: 100;\r\n --color-text-muted: hsla(0, 0%, 15%, 0.7);\r\n --transition-time-first: 0.3s 0s;\r\n --transition-time-second: 0.25s 0.16s;\r\n }\r\n\r\n .safety-zone {\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%;\r\n border-radius: 8px;\r\n box-sizing: border-box;\r\n }\r\n\r\n .frame-top, .frame-bottom {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0.25rem;\r\n margin: 0;\r\n }\r\n\r\n .frame-top .frame-top-title {\r\n flex-grow: 1;\r\n padding-left: 1rem;\r\n }\r\n\r\n .frame-bottom {\r\n justify-content: flex-end;\r\n gap: 5px;\r\n padding: 10px;\r\n }\r\n\r\n .modal-content {\r\n height: 100%;\r\n overflow: auto;\r\n }\r\n\r\n fluent-dialog[data-hidden=true]::part(overlay) {\r\n opacity: 0.0;\r\n transition: opacity var(--transition-time-second);\r\n }\r\n\r\n fluent-dialog[data-hidden=false]::part(overlay) {\r\n opacity: 1.0;\r\n transition: opacity var(--transition-time-first);\r\n }\r\n\r\n fluent-dialog[data-hidden=true]::part(control) {\r\n opacity: 0.0;\r\n transform: translateY(20px);\r\n transition: opacity var(--transition-time-first), transform var(--transition-time-first);\r\n }\r\n\r\n fluent-dialog[data-hidden=false]::part(control) {\r\n opacity: 1.0;\r\n /* transform: translateY(0); */\r\n transition: opacity var(--transition-time-second), transform var(--transition-time-second);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-fluent-dialog': EPFluentDialog\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\n/**\r\n * A customizable \"share\" button\r\n * Usage:\r\n * \r\n */\r\n@customElement('ep-share-url-button')\r\nexport class EPShareUrlButton extends LitElement {\r\n\r\n @property({ attribute: 'share-title', reflect: true })\r\n shareTitle: string = ''\r\n\r\n @property({ attribute: 'share-description', reflect: true })\r\n shareDescription: string = ''\r\n\r\n @property({ attribute: 'href', reflect: true })\r\n href: string = ''\r\n\r\n protected updated() {\r\n this.setAttribute('title', this.shareTitle);\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n \r\n `\r\n }\r\n\r\n async triggerShare() {\r\n try {\r\n const shareData = {\r\n title: this.shareTitle,\r\n text: this.shareDescription,\r\n url: this.href,\r\n }\r\n\r\n if (!navigator.canShare) {\r\n // navigator.canShare() not supported.\r\n await this.copyToClipboard();\r\n }\r\n else if (navigator.canShare(shareData)) {\r\n // navigator.canShare() supported. We can use navigator.share() to send the data.\r\n await navigator.share(shareData);\r\n } else {\r\n // Specified data cannot be shared.\r\n await this.copyToClipboard();\r\n }\r\n }\r\n catch {\r\n console.error('[ep-share-url-button] Failed to trigger share')\r\n }\r\n }\r\n\r\n async copyToClipboard() {\r\n try {\r\n await navigator.clipboard.writeText(this.href);\r\n alert(`Copied to clipboard: ${this.href}`);\r\n }\r\n catch {\r\n console.error('[ep-share-url-button] Failed to copy to clipboard')\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n fill: #315686;\r\n transition: all 125ms;\r\n \r\n }\r\n :host(:hover) {\r\n fill: maroon;\r\n transform: scale(1.05);\r\n cursor: pointer;\r\n }\r\n :host(:active) {\r\n transform: scale(0.925);\r\n }\r\n svg {\r\n width: inherit;\r\n height: inherit;\r\n object-fit: contain;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-share-url-button': EPShareUrlButton\r\n }\r\n}\r\n","// From: https://gist.github.com/jcalz/381562d282ebaa9b41217d1b31e2c211?permalink_comment_id=2618337#gistcomment-2618337\r\n\r\n// export function tuple (val: T): T {\r\n// return val;\r\n// }\r\ntype Literal = string | number | boolean | undefined | null | void | {};\r\nexport const tuple = (...args: T) => args;","import { tuple } from '../../functions/tuple'\r\n\r\nconst CONTROL_HORIZONTAL_POSITIONS = tuple('left', 'center', 'right')\r\nexport type ControlHorizontalPosition = typeof CONTROL_HORIZONTAL_POSITIONS[number]\r\nexport function isHorizontalPosition(x: string | undefined): x is ControlHorizontalPosition {\r\n return CONTROL_HORIZONTAL_POSITIONS.includes(x as any);\r\n}\r\n\r\nconst CONTROL_VERTICAL_POSITIONS = tuple('top', 'center', 'bottom')\r\nexport type ControlVerticalPosition = typeof CONTROL_VERTICAL_POSITIONS[number]\r\nexport function isVerticalPosition(x: string | undefined): x is ControlVerticalPosition {\r\n return CONTROL_VERTICAL_POSITIONS.includes(x as any);\r\n}\r\n\r\nexport type ControlPosition = `${ControlVerticalPosition} ${ControlHorizontalPosition}`\r\nexport function getPositions(pos: string | undefined, defaultVertical: ControlVerticalPosition = 'top', defaultHorizontal: ControlHorizontalPosition = 'right'): [ControlVerticalPosition, ControlHorizontalPosition] {\r\n let temp = pos?.split(' ').slice(0,2) ?? [undefined, undefined];\r\n return [\r\n isVerticalPosition(temp[0]) ? temp[0] : defaultVertical,\r\n isHorizontalPosition(temp[1]) ? temp[1] : defaultHorizontal,\r\n ]\r\n}\r\nexport function getFlexPositions(pos: string | undefined, defaultVertical: ControlVerticalPosition = 'top', defaultHorizontal: ControlHorizontalPosition = 'right'): [string, string] {\r\n let [vertical, horizontal] = getPositions(pos, defaultVertical, defaultHorizontal) \r\n return [\r\n Control2FlexVertical[vertical],\r\n Control2FlexHorizontal[horizontal],\r\n ]\r\n}\r\n\r\nconst Control2FlexHorizontal: Record = {\r\n 'left': 'flex-start',\r\n 'center': 'center',\r\n 'right': 'flex-end'\r\n};\r\nconst Control2FlexVertical: Record = {\r\n 'top': 'flex-start',\r\n 'center': 'center',\r\n 'bottom': 'flex-end'\r\n};\r\n","export default \"data:image/svg+xml,%3csvg%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8%206.75C8%206.33579%208.33578%206%208.75%206H15.75C18.0865%206%2020.0117%206.78107%2021.25%208.01578C22.4814%209.2436%2023%2010.8763%2023%2012.5C23%2014.1237%2022.4814%2015.7564%2021.25%2016.9842C20.0117%2018.2189%2018.0865%2019%2015.75%2019H7.56066L10.7803%2022.2197C11.0732%2022.5126%2011.0732%2022.9874%2010.7803%2023.2803C10.4874%2023.5732%2010.0126%2023.5732%209.71967%2023.2803L5.21967%2018.7803C5.07902%2018.6397%205%2018.4489%205%2018.25C5%2018.0511%205.07902%2017.8603%205.21967%2017.7197L9.71967%2013.2197C10.0126%2012.9268%2010.4874%2012.9268%2010.7803%2013.2197C11.0732%2013.5126%2011.0732%2013.9874%2010.7803%2014.2803L7.56066%2017.5H15.75C17.7385%2017.5%2019.1758%2016.8436%2020.1%2015.922C21.0311%2014.9936%2021.5%2013.7513%2021.5%2012.5C21.5%2011.2487%2021.0311%2010.0064%2020.1%209.07797C19.1758%208.15643%2017.7385%207.5%2015.75%207.5H8.75C8.33578%207.5%208%207.16421%208%206.75Z'%20fill='%23212121'/%3e%3c/svg%3e\"","import { LitElement, PropertyValueMap, css, html } from 'lit'\r\nimport { customElement, property, query } from 'lit/decorators.js'\r\nimport { ControlPosition, getFlexPositions } from './positions'\r\n//import { storage } from '../../directives/localStorageDecorator'\r\n//import { queryString } from '../../directives/queryStringDecorator'\r\n\r\nimport CHEVRON_SVG from '../../shared-assets/chevron_up.svg'\r\nimport ARROW_HOOK_SVG from '../../shared-assets/arrow_hook_left.svg'\r\n\r\ntype ScrollDirection = 'vertical' | 'horizontal'\r\n\r\nconst CHEVRON_UP = html``;\r\nconst CHEVRON_RIGHT = html``;\r\nconst CHEVRON_DOWN = html``;\r\nconst CHEVRON_LEFT = html``;\r\nconst ARROW_HORIZ_BACK = html``;\r\nconst ARROW_HORIZ_FORWARD = html``;\r\nconst ARROW_VERTI_BACK = html``;\r\nconst ARROW_VERTI_FORWARD = html``;\r\n\r\n/**\r\n * A \"chip\" element\r\n */\r\n@customElement('ep-sliding-pages')\r\nexport class EPSlidingPages extends LitElement {\r\n\r\n @property({ attribute: 'scroll-direction', reflect: true })\r\n scrollDirection: ScrollDirection = 'vertical'\r\n\r\n @property({ type: Boolean, attribute: 'inset', reflect: true })\r\n inset: boolean = false\r\n\r\n @property({ type: Boolean, attribute: 'wrap', reflect: true })\r\n pageWrapsAround: boolean = false\r\n\r\n // #region Page Number indicator\r\n \r\n @property({ attribute: 'page-number-position', reflect: true })\r\n pageNumberPosition?: ControlPosition = undefined\r\n\r\n get showPageNumber(): boolean {\r\n return this.pageNumberPosition !== undefined;\r\n }\r\n\r\n get pageNumberPositionX(): string {\r\n return getFlexPositions(this.pageNumberPosition)[1];\r\n }\r\n get pageNumberPositionY(): string {\r\n return getFlexPositions(this.pageNumberPosition)[0];\r\n }\r\n\r\n // #endregion\r\n\r\n //@storage({ key: 'my_page_number2' })\r\n //@queryString({ name: 'page' })\r\n @property({ type: Number, reflect: true })\r\n page: number = 0;\r\n\r\n @property()\r\n maxPage = 0\r\n\r\n get isOnFirstPage() {\r\n return this.page === 0;\r\n }\r\n\r\n get isOnLastPage() {\r\n return this.page >= (this.maxPage - 1);\r\n }\r\n\r\n @query('slot')\r\n slotElement?: HTMLSlotElement;\r\n\r\n render() {\r\n return html`\r\n
\r\n \r\n
\r\n \r\n \r\n ${this.page + 1} / ${this.maxPage}\r\n \r\n
\r\n \r\n
\r\n this._handleNavigate(-1)}\r\n .disabled=${this.pageWrapsAround ? this.maxPage === 0 : this.isOnFirstPage}\r\n class=\"pageControlChip\" part=\"control-chip\"\r\n >\r\n ${\r\n this.pageWrapsAround && this.isOnFirstPage\r\n ? (\r\n this.scrollDirection === 'horizontal' ? ARROW_HORIZ_FORWARD : ARROW_VERTI_FORWARD\r\n )\r\n : (\r\n this.scrollDirection === 'horizontal' ? CHEVRON_LEFT : CHEVRON_UP\r\n )\r\n }\r\n \r\n \r\n
\r\n this._handleNavigate(+1)}\r\n .disabled=${this.pageWrapsAround ? this.maxPage === 0 : this.isOnLastPage}\r\n class=\"pageControlChip\" part=\"control-chip\"\r\n >\r\n ${\r\n this.pageWrapsAround && this.isOnLastPage\r\n ? (\r\n this.scrollDirection === 'horizontal' ? ARROW_HORIZ_BACK : ARROW_VERTI_BACK\r\n )\r\n : (\r\n this.scrollDirection === 'horizontal' ? CHEVRON_RIGHT : CHEVRON_DOWN\r\n )\r\n }\r\n \r\n
\r\n \r\n
\r\n `\r\n }\r\n\r\n protected _handleNavigate(delta: number) {\r\n //console.log(`before [ ${this.page} / ${this.maxPage} ]`, ' del ', delta)\r\n if (this.pageWrapsAround) {\r\n function mod(x: number, m: number) {\r\n return (x%m + m)%m;\r\n }\r\n this.page = mod(this.page + delta, this.maxPage);\r\n }\r\n else {\r\n this.page += delta;\r\n }\r\n //console.log(`after [ ${this.page} / ${this.maxPage} ]`, ' del ', delta)\r\n }\r\n\r\n protected _handleSlotChange() {\r\n let length = this.slotElement?.assignedElements().length;\r\n this.maxPage = length !== undefined ? length: 0;\r\n }\r\n\r\n protected updated(_changedProperties: PropertyValueMap | Map): void {\r\n super.updated(_changedProperties)\r\n\r\n for(let [prop, _] of _changedProperties) {\r\n switch(prop) {\r\n // if page changed\r\n case 'page': {\r\n // adjust \"scroll\"\r\n this.slotElement?.assignedElements().forEach((element, index, array) => {\r\n // safety check\r\n if (element instanceof HTMLElement) {\r\n const translate = this.scrollDirection === 'horizontal' ? 'translateX' : 'translateY'\r\n element.style.transform = `${translate}(calc(-1 * ${this.page} * 100%))`;\r\n }\r\n //console.log('element', index, element)\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n --chevron-size: 16px;\r\n --inset-size: var(--chevron-size);\r\n --color-text: rgba(40,40,40,0.5);\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n .wrap {\r\n display: flex;\r\n flex-direction: column;\r\n flex-wrap: nowrap;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n }\r\n\r\n .wrap[data-scroll-direction=\"horizontal\"], .wrap[data-scroll-direction=\"horizontal\"] > .controls {\r\n flex-direction: row;\r\n --inset-size-x: var(--inset-size);\r\n --inset-size-y: 0px;\r\n }\r\n .wrap[data-scroll-direction=\"vertical\"], .wrap[data-scroll-direction=\"vertical\"] > .controls {\r\n flex-direction: column;\r\n --inset-size-x: 0px;\r\n --inset-size-y: var(--inset-size);\r\n }\r\n\r\n .wrap[data-show-page-number=\"true\"] {\r\n --inset-size-x: var(--inset-size);\r\n --inset-size-y: var(--inset-size);\r\n }\r\n\r\n .wrap[data-show-page-number=\"false\"] #ctrl_page_num {\r\n display: none;\r\n }\r\n\r\n ::slotted(*) {\r\n /* display: flex; */\r\n flex: 1 0 100%;\r\n /* min-width: var(--calc-size-x);\r\n min-height: var(--calc-size-y); */\r\n overflow: auto;\r\n transition: transform 500ms;\r\n padding: var(--inset-size-y) var(--inset-size-x);\r\n box-sizing: border-box;\r\n }\r\n\r\n .controls {\r\n --padding: 1px;\r\n display: flex;\r\n pointer-events: none;\r\n /* width: calc(100% - 2 * var(--padding)); */\r\n width: 100%;\r\n /* height: calc(100% - 2 * var(--padding)); */\r\n height: 100%;\r\n position: absolute;\r\n /* background: rgba(255,255,255,0.5); */\r\n z-index: 99;\r\n padding: var(--padding);\r\n }\r\n .controls.controls-pad-2 {\r\n padding: calc(2 * var(--padding));\r\n }\r\n\r\n .controls button {\r\n pointer-events: auto;\r\n align-self: center;\r\n border: none;\r\n }\r\n\r\n .controls button img {\r\n display: block;\r\n width: var(--chevron-size);\r\n height: var(--chevron-size);\r\n }\r\n\r\n .pageControlChip {\r\n backdrop-filter: saturate(180%) blur(10px);\r\n padding: 0 12px;\r\n border-radius: 32px;\r\n cursor: pointer;\r\n background-color: hsla(0,0%,90%,.5);\r\n transition: transform 125ms, opacity 500ms;\r\n }\r\n\r\n button.pageControlChip:disabled {\r\n background-color: hsla(0,0%,90%,.5);\r\n cursor: initial;\r\n opacity: 0.25;\r\n pointer-events: none;\r\n }\r\n\r\n button.pageControlChip:not(:disabled):hover {\r\n transform: scale(1.05);\r\n }\r\n button.pageControlChip:not(:disabled):active {\r\n transform: scale(0.925);\r\n }\r\n\r\n .wrap[data-scroll-direction=\"horizontal\"] .pageControlChip:not(.chip-horizontal) {\r\n padding: 12px 0;\r\n }\r\n\r\n .wrap[data-scroll-direction=\"vertical\"] .pageControlChip:not(.chip-vertical) {\r\n padding: 0 12px;\r\n }\r\n\r\n .pageControlChip.chip-horizontal {\r\n padding: 0 12px;\r\n \r\n }\r\n .pageControlChip.chip-vertical {\r\n padding: 12px 0;\r\n }\r\n\r\n #ctrl_page_num {\r\n font-family: var(--font-prose);\r\n font-weight: 700;\r\n font-size: 0.8em;\r\n font-style: normal;\r\n line-height: 1.4;\r\n color: var(--color-text);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-sliding-pages': EPSlidingPages\r\n }\r\n}\r\n","import { svg } from 'lit'\r\nimport type { TemplateResult } from 'lit'\r\nimport type { Property } from 'csstype'\r\n\r\nexport enum StatusBadgeIconDefinition {\r\n 'approved',\r\n 'rejected',\r\n 'pending',\r\n 'unknown',\r\n 'action_required',\r\n 'skipped',\r\n 'draft',\r\n 'empty'\r\n}\r\n\r\nexport type StatusBadgeIcon = keyof typeof StatusBadgeIconDefinition;\r\n\r\nexport type StatusBadgeIconRenderer = (primary: Property.Color | undefined, secondary: Property.Color | undefined) => TemplateResult;\r\n\r\nexport const StatusBadgeIcons: Record = {\r\n approved: (primary = '#1f883d', secondary = '#ffffff') => svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n rejected: (primary = '#cf222e', secondary = '#ffffff') => svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n pending: (primary = '#c0c0c0', secondary = '#808080') => svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n unknown: (primary = '#ff9500', secondary = '#ffffff') => svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n action_required: (primary = '#bc4c00', secondary = '#ffffff') => svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n skipped: (primary = '#6e7781', secondary = '#ffffff') => svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n draft: (primary = '#808080', secondary = '#c0c0c0') => svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n empty: (primary = '#a0a0a0', secondary = '#000') => svg`\r\n \r\n \r\n \r\n `,\r\n}\r\n\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { StatusBadgeIcon, StatusBadgeIcons } from './icons'\r\nimport type { Property } from 'csstype'\r\n\r\nfunction emptystr2undefined(x: string | undefined) {\r\n return x === '' ? undefined : x;\r\n}\r\n\r\n@customElement('ep-status-badge')\r\nexport class EPStatusBadge extends LitElement {\r\n\r\n @property({ reflect: true })\r\n primary?: Property.Color;\r\n\r\n @property({ reflect: true })\r\n secondary?: Property.Color;\r\n\r\n @property({ reflect: true })\r\n icon?: StatusBadgeIcon;\r\n\r\n render() {\r\n const primary = emptystr2undefined(this.primary)\r\n const secondary = emptystr2undefined(this.secondary)\r\n if (this.icon !== undefined && StatusBadgeIcons[this.icon] !== undefined) {\r\n return StatusBadgeIcons[this.icon](primary, secondary);\r\n }\r\n return html``\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --size: 24px;\r\n display: inline-block;\r\n width: var(--size);\r\n height: var(--size);\r\n }\r\n\r\n svg {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-status-badge': EPStatusBadge\r\n }\r\n}\r\n","import{isServer as s}from\"lit-html/is-server.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t{constructor(t,{target:i,config:h,callback:e,skipInitial:o}){this.t=new Set,this.o=!1,this.i=!1,this.h=t,null!==i&&this.t.add(i??t),this.l=h,this.o=o??this.o,this.callback=e,s||(window.ResizeObserver?(this.u=new ResizeObserver((s=>{this.handleChanges(s),this.h.requestUpdate()})),t.addController(this)):console.warn(\"ResizeController error: browser does not support ResizeObserver.\"))}handleChanges(s){this.value=this.callback?.(s,this.u)}hostConnected(){for(const s of this.t)this.observe(s)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(s){this.t.add(s),this.u.observe(s,this.l),this.i=!0,this.h.requestUpdate()}unobserve(s){this.t.delete(s),this.u.unobserve(s)}disconnect(){this.u.disconnect()}}export{t as ResizeController};\n//# sourceMappingURL=resize-controller.js.map\n","import { LitElement, PropertyValues, css, html } from 'lit'\r\nimport { customElement, property, query, state } from 'lit/decorators.js'\r\nimport { ResizeController } from '@lit-labs/observers/resize-controller.js';\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\nimport { useEffect } from 'haunted';\r\n\r\n@customElement('ep-segmented-picker-option')\r\nexport class EPSegmentedPickerOption extends LitElement {\r\n\r\n @property({ type: Boolean, reflect: true })\r\n selected: boolean = false;\r\n\r\n @property({ type: String, reflect: true })\r\n value: string = '';\r\n\r\n @property({ reflect: false })\r\n forceHideSeparator: boolean = false\r\n\r\n @query('slot')\r\n slotElement?: HTMLSlotElement;\r\n @query('[data-text]')\r\n slotWrapperElement?: HTMLButtonElement;\r\n\r\n get index(): number {\r\n if (this.parentNode === null) return -1;\r\n let i = 0;\r\n for(let item of this.siblings) {\r\n if (item === this) return i;\r\n i++;\r\n }\r\n return -1;\r\n }\r\n\r\n get siblings(): EPSegmentedPickerOption[] {\r\n if (this.parentNode === null) return [];\r\n return Array.from(this.parentNode.children).filter(e => e instanceof EPSegmentedPickerOption) as any;\r\n }\r\n\r\n private _handleClick() {\r\n const event = new CustomEvent('ep-picker-select', { \r\n bubbles: true,\r\n composed: true,\r\n })\r\n this.dispatchEvent(event);\r\n }\r\n\r\n render() {\r\n return html`\r\n
  • \r\n \r\n
  • \r\n `\r\n }\r\n\r\n static styles = css`\r\n /* CSS pulled from Primer (https://primer.style/react/SegmentedControl) */\r\n :host {\r\n display: contents;\r\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Noto Sans\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\r\n line-height: 1.5;\r\n color: rgb(36, 41, 47);\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n li {\r\n display: block;\r\n position: relative;\r\n -webkit-box-flex: 1;\r\n flex-grow: 1;\r\n margin-top: -1px;\r\n margin-bottom: -1px;\r\n --separator-color: #d0d7de;\r\n }\r\n\r\n li[data-selected=true] {\r\n --separator-color: transparent;\r\n }\r\n\r\n li[data-force-hide-separator=true] {\r\n --separator-color: transparent;\r\n }\r\n\r\n li[data-selected=true][data-is-first-child=true] {\r\n margin-left: -1px;\r\n }\r\n\r\n li:not([data-is-last-child=true]) {\r\n margin-right: 1px;\r\n }\r\n\r\n li:not([data-is-last-child=true])::after {\r\n background-color: var(--separator-color);\r\n content: \"\";\r\n position: absolute;\r\n right: -2px;\r\n top: 8px;\r\n bottom: 8px;\r\n width: 1px;\r\n transition: background-color var(--animation-duration) ease;\r\n }\r\n\r\n button {\r\n --segmented-control-button-inner-padding: 12px;\r\n --segmented-control-button-bg-inset: 4px;\r\n --segmented-control-outer-radius: 6px;\r\n background-color: transparent;\r\n border-color: transparent;\r\n border-radius: var(--segmented-control-outer-radius);\r\n border-width: 0px;\r\n color: currentcolor;\r\n cursor: pointer;\r\n font-family: inherit;\r\n font-size: inherit;\r\n font-weight: 400;\r\n padding: var(--segmented-control-button-bg-inset);\r\n height: 100%;\r\n width: 100%;\r\n transition: transform 125ms ease 0ms;\r\n }\r\n\r\n li[data-selected=true] button {\r\n font-weight: 600;\r\n /* Removed for animated approach */\r\n /* padding: 0px; */\r\n }\r\n\r\n button:focus:not(:focus-visible) {\r\n outline: none;\r\n box-shadow: none;\r\n }\r\n\r\n /* li[data-selected=false] button:active {\r\n transform: scale(0.95);\r\n } */\r\n\r\n span.content {\r\n -webkit-box-align: center;\r\n align-items: center;\r\n background-color: transparent;\r\n border-color: transparent;\r\n border-style: solid;\r\n border-width: 1px;\r\n border-radius: calc(var(--segmented-control-outer-radius) - var(--segmented-control-button-bg-inset) / 2);\r\n display: flex;\r\n height: 100%;\r\n -webkit-box-pack: center;\r\n justify-content: center;\r\n padding-left: calc(var(--segmented-control-button-inner-padding) - var(--segmented-control-button-bg-inset));\r\n padding-right: calc(var(--segmented-control-button-inner-padding) - var(--segmented-control-button-bg-inset));\r\n }\r\n\r\n li:not([data-selected=true]) span.content:hover {\r\n background-color: rgba(175, 184, 193, 0.2);\r\n }\r\n li:not([data-selected=true]) span.content:active {\r\n background-color: rgba(175, 184, 193, 0.3);\r\n }\r\n\r\n /* Removed for animated approach */\r\n /* li[data-selected=true] span.content {\r\n background-color: rgb(255, 255, 255);\r\n border-color: rgb(140, 149, 159);\r\n border-style: solid;\r\n border-width: 1px;\r\n border-radius: var(--segmented-control-outer-radius);\r\n padding-left: var(--segmented-control-button-inner-padding);\r\n padding-right: var(--segmented-control-button-inner-padding);\r\n } */\r\n\r\n div.text, ::slotted(*) {\r\n position: relative;\r\n /* used to be 2 */\r\n z-index: 0;\r\n }\r\n\r\n ::slotted(*) {\r\n }\r\n `\r\n}\r\n\r\n/**\r\n * A segmented picker element element\r\n */\r\n@customElement('ep-segmented-picker')\r\nexport class EPSegmentedPicker extends LitHauntedElement {\r\n @property({ type: Number, attribute: 'selected-index', reflect: true })\r\n selectedIndex: number = 0;\r\n\r\n @state()\r\n hasUpdatedAgain = false\r\n\r\n @property({ type: Number, attribute: 'selector-scale' })\r\n selectorScale: number = 1.1;\r\n\r\n get options(): EPSegmentedPickerOption[] {\r\n return (this.slotElement?.assignedElements()\r\n .filter(e => e instanceof EPSegmentedPickerOption) ?? []) as EPSegmentedPickerOption[];\r\n }\r\n\r\n get selectedOption(): EPSegmentedPickerOption | undefined {\r\n return this.options[this.selectedIndex];\r\n }\r\n\r\n get selectedValue(): string | undefined {\r\n return this.selectedOption?.value;\r\n }\r\n\r\n @query('slot')\r\n slotElement?: HTMLSlotElement;\r\n\r\n @query('span.selection')\r\n selectionElement?: HTMLSpanElement;\r\n\r\n render() {\r\n useEffect(() => {\r\n this._dispatchChangeEvent();\r\n setTimeout(() => this._updateSlotted(), 50);\r\n if (!this.hasUpdatedAgain) this.hasUpdatedAgain = true;\r\n }, [this.selectedIndex])\r\n\r\n return html`\r\n
      \r\n \r\n \r\n
    \r\n `\r\n }\r\n\r\n private _handlePickerSelect(event: CustomEvent) {\r\n event.stopPropagation()\r\n if (event.target instanceof EPSegmentedPickerOption) {\r\n this.selectedIndex = event.target.index;\r\n this._updateSlotted()\r\n this._dispatchInputEvent();\r\n }\r\n }\r\n\r\n // #region Update \"selection bubble\"\r\n private _updateSelectionBubble() {\r\n const selectedOption = this.selectedOption;\r\n const pickerBoundingBox = this.shadowRoot?.querySelector('ul')?.getBoundingClientRect();\r\n const optionBoundingBox = selectedOption?.shadowRoot?.firstElementChild?.getBoundingClientRect();\r\n //console.log('pickerBoundingBox / optionBoundingBox', pickerBoundingBox, selectedOption?.shadowRoot?.firstElementChild, optionBoundingBox);\r\n \r\n if (this.selectionElement && pickerBoundingBox && optionBoundingBox) {\r\n const optionWidth = optionBoundingBox.width;\r\n // we don't want to make the width intentionally small\r\n if (optionWidth === 0) return;\r\n const optionOffsetFromParent = this.selectedIndex === 0 ? 0 : Math.abs(pickerBoundingBox.x - optionBoundingBox.x);\r\n //console.log('pickerBB: ', pickerBoundingBox.x, 'optionBB: ', optionBoundingBox.x, 'offset: ', optionOffsetFromParent)\r\n this.selectionElement.style.width = `${Math.round(optionWidth)}px`;\r\n this.selectionElement.style.transform = `translateX(${Math.round(optionOffsetFromParent)}px) scale(${this.selectorScale})`\r\n\r\n // hide previous option separators because it makes things look cleaner\r\n this.options.forEach((option, index) => {\r\n option.forceHideSeparator = (index === this.selectedIndex || index === (this.selectedIndex - 1));\r\n });\r\n }\r\n }\r\n\r\n protected firstUpdated(_changedProperties: PropertyValues){\r\n super.firstUpdated(_changedProperties)\r\n this._updateSelectionBubble();\r\n setTimeout(() => this._updateSelectionBubble(), 50);\r\n // I don't think we really need a reference to this\r\n new ResizeController(this, { \r\n target: this,\r\n // Important so whenever this element is rendered first within something that is \"display: none;\", it will correct its rendering later\r\n callback: () => this._updateSelectionBubble(),\r\n config: { }\r\n })\r\n }\r\n // #endregion\r\n\r\n // #region Keep \"selectedIndex\" property responsive and dispatch Events\r\n\r\n private _updateSlotted() {\r\n this.slotElement?.assignedElements().forEach((element, index, array) => {\r\n if (element instanceof EPSegmentedPickerOption) {\r\n if (index === this.selectedIndex) {\r\n element.setAttribute('selected', '');\r\n }\r\n else {\r\n element.removeAttribute('selected');\r\n }\r\n //element.selected = index === this.selectedIndex;\r\n }\r\n });\r\n }\r\n\r\n private _dispatchChangeEvent() {\r\n if (this.hasUpdated && this.hasUpdatedAgain) {\r\n // https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents-h3\r\n this.dispatchEvent(new Event('change', { bubbles: true, cancelable: false }))\r\n // only update selection bubble when selection changes\r\n this._updateSelectionBubble();\r\n }\r\n }\r\n\r\n private _dispatchInputEvent() {\r\n // https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents-h3\r\n this.dispatchEvent(new Event('input', { bubbles: true, cancelable: false }))\r\n }\r\n\r\n // #endregion\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Noto Sans\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\r\n line-height: 1.5;\r\n color: rgb(36, 41, 47);\r\n --row-height: 32px;\r\n --animation-duration: 150ms;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n ul {\r\n background-color: rgb(234, 238, 242);\r\n border-radius: 6px;\r\n display: inline-flex;\r\n font-size: 14px;\r\n height: var(--row-height);\r\n margin: 0px;\r\n padding: 0px;\r\n /* important so the child with \"position: absolute;\" will scroll correctly */\r\n position: relative;\r\n }\r\n\r\n span.selection {\r\n --segmented-control-button-inner-padding: 12px;\r\n --segmented-control-outer-radius: 6px;\r\n height: var(--row-height);\r\n position: absolute;\r\n /* used to be 1 */\r\n z-index: 0;\r\n background-color: rgb(255, 255, 255);\r\n border-color: rgb(140, 149, 159);\r\n border-style: solid;\r\n border-width: 1px;\r\n border-radius: var(--segmented-control-outer-radius);\r\n padding-left: var(--segmented-control-button-inner-padding);\r\n padding-right: var(--segmented-control-button-inner-padding);\r\n transform: translateX(0px) scaleY(1.0);\r\n transition: transform var(--animation-duration) ease, width var(--animation-duration) ease;\r\n will-change: transform;\r\n }\r\n\r\n ::slotted(ep-segmented-picker-option) {\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-segmented-picker': EPSegmentedPicker,\r\n 'ep-segmented-picker-option': EPSegmentedPickerOption,\r\n }\r\n}\r\n","import { createContext, provide } from '@lit/context'\r\nimport { LitElement, PropertyValues, css, html } from 'lit'\r\nimport { customElement, property, query } from 'lit/decorators.js'\r\nimport type { EPNavListItem } from './ep-nav-list-item';\r\n\r\nexport type EPNavListContext = {\r\n rootNavList: EPNavList;\r\n selectedItemID?: string;\r\n hasSearchBar: boolean;\r\n selectable: boolean;\r\n};\r\n\r\nexport const context = createContext(Symbol('ep-nav-list-context'));\r\n\r\n/**\r\n * A subnav list\r\n */\r\n@customElement('ep-nav-list-subnav')\r\nexport class EPNavListSubNav extends LitElement {\r\n\r\n render() {\r\n return html`\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --color-soft-black: rgb(36, 41, 47);\r\n --vertical-padding: 8px;\r\n --indent-count-list: 0;\r\n }\r\n\r\n :host([slot=subnav]) {\r\n --vertical-padding: 0;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n nav {\r\n font-family: var(--font-prose);\r\n line-height: 1.5;\r\n color: var(--color-soft-black);\r\n }\r\n\r\n ul {\r\n margin: 0px;\r\n padding-inline-start: 0px;\r\n padding-top: var(--vertical-padding);\r\n padding-bottom: var(--vertical-padding);\r\n }\r\n\r\n ul[data-is-subnav=true] {\r\n padding-top: 0px;\r\n padding-bottom: 0px;\r\n }\r\n\r\n [part=content] {\r\n display: contents;\r\n }\r\n\r\n ul[data-is-subnav=true] [part=content] {\r\n display: block;\r\n padding-left: calc(32px - 8px);\r\n }\r\n\r\n ::slotted(ep-nav-list-item:not(:first-of-type)) {\r\n --divider-color: rgba(208,215,222,0.48);\r\n }\r\n\r\n ::slotted(ep-nav-list-group:not(:first-child)) {\r\n margin-top: 8px;\r\n }\r\n\r\n ::slotted(ep-nav-list-item) {\r\n --indent-count-item: var(--indent-count-list);\r\n }\r\n `\r\n} \r\n\r\n/**\r\n * A nav list\r\n */\r\n@customElement('ep-nav-list')\r\nexport class EPNavList extends EPNavListSubNav {\r\n\r\n @provide({ context: context })\r\n @property({ attribute: false })\r\n provider: EPNavListContext = {\r\n rootNavList: this,\r\n selectedItemID: undefined,\r\n hasSearchBar: false,\r\n selectable: false,\r\n };\r\n\r\n @property({ type: Boolean, reflect: true })\r\n selectable: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'subnavs-start-closed', reflect: true })\r\n subNavStartClosed = false;\r\n\r\n @query('slot')\r\n slotElement?: HTMLSlotElement;\r\n\r\n @query('slot[name=empty]')\r\n emptySlotElement?: HTMLSlotElement;\r\n\r\n @property({ reflect: false })\r\n selectedItemID?: string;\r\n\r\n get selectedValue(): string | undefined {\r\n return this.descendants.find(item => item.id === this.selectedItemID)?.value;\r\n }\r\n\r\n get descendants(): EPNavListItem[] {\r\n return Array.from(this.querySelectorAll('ep-nav-list-item'));\r\n }\r\n\r\n clearSelection() {\r\n for(let child of this.descendants) {\r\n if (child.selected) {\r\n child.selected = false;\r\n }\r\n }\r\n this.selectedItemID = undefined;\r\n }\r\n\r\n // protected updated(_changedProperties: PropertyValues): void {\r\n // super.updated(_changedProperties);\r\n\r\n // for(let child of this.descendants) {\r\n // if ()\r\n // }\r\n // }\r\n\r\n render() {\r\n return html`\r\n \r\n `\r\n }\r\n\r\n /**\r\n * Change the provider state whenever a child item is selected \r\n */\r\n private _handleNavListSelect(event: CustomEvent) {\r\n //event.stopPropagation();\r\n this.provider = {\r\n ...this.provider,\r\n selectedItemID: event.detail.id,\r\n }\r\n this.selectedItemID = event.detail.id;\r\n }\r\n\r\n private _handleSlotChange() {\r\n const slotted = this.slotElement?.assignedElements() ?? [];\r\n this.provider = {\r\n ...this.provider,\r\n hasSearchBar: slotted.findIndex(v => v.tagName.toLowerCase() === 'ep-nav-list-search') >= 0\r\n }\r\n }\r\n\r\n protected updated(_changedProperties: PropertyValues) {\r\n super.updated(_changedProperties);\r\n if (this.selectable !== this.provider.selectable) {\r\n this.provider = {\r\n ...this.provider,\r\n selectable: this.selectable,\r\n }\r\n }\r\n }\r\n\r\n // static styles = css`\r\n // :host {\r\n // }\r\n // `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-nav-list': EPNavList\r\n }\r\n}\r\n","import { consume } from '@lit/context'\r\nimport { LitElement, PropertyValues, css, html } from 'lit'\r\nimport { customElement, property, query } from 'lit/decorators.js'\r\nimport { ifDefined } from 'lit/directives/if-defined.js'\r\nimport type { EPNavList, EPNavListContext } from './ep-nav-list'\r\nimport { EPNavListSubNav, context } from './ep-nav-list'\r\nimport { generateUUID } from '../../functions/generateUUID'\r\n\r\nimport CHEVRON_SVG from '../../shared-assets/chevron_up.svg'\r\n\r\nexport type EPNavListItemVariant = 'plain' | 'button';\r\nexport type EPNavListItemAppearance = 'normal' | 'destructive'\r\n\r\n/**\r\n * A nav list\r\n */\r\n@customElement('ep-nav-list-item')\r\nexport class EPNavListItem extends LitElement {\r\n\r\n @property({ attribute: false })\r\n id: string = generateUUID();\r\n\r\n @consume({ context: context, subscribe: true })\r\n @property({ attribute: false })\r\n provider?: EPNavListContext;\r\n\r\n @property({ type: Boolean, reflect: true })\r\n selected: boolean = false;\r\n\r\n @property({ type: Boolean, reflect: true })\r\n disabled: boolean = false;\r\n\r\n @property({ reflect: true })\r\n value: string = '';\r\n\r\n @property({ reflect: true })\r\n open?: boolean = undefined;\r\n\r\n @property({ reflect: true })\r\n href?: string;\r\n\r\n @property({ reflect: true })\r\n target?: string;\r\n\r\n @property({ type: String, reflect: true })\r\n appearance: EPNavListItemAppearance = 'normal'\r\n\r\n @property({ type: String, reflect: true })\r\n variant: EPNavListItemVariant = 'button'\r\n\r\n @property({ type: Boolean, attribute: 'text-select', reflect: true })\r\n textSelectable: boolean = false;\r\n\r\n get rootNavList(): EPNavList | undefined {\r\n return this.provider?.rootNavList;\r\n }\r\n\r\n get hasSubNav() {\r\n return this.open !== undefined;\r\n }\r\n\r\n @query('slot[name=subnav]')\r\n subNavSlotElement?: HTMLSlotElement;\r\n\r\n render() {\r\n return html`\r\n
  • \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ${\r\n this.open === undefined\r\n ? ''\r\n : html`\r\n \r\n `\r\n } \r\n \r\n
    \r\n
    \r\n
  • \r\n \r\n `\r\n }\r\n\r\n // #region Related to opening and closing the subnav, if applicable\r\n private _handleClick(event: MouseEvent) {\r\n if (this.disabled) {\r\n event.stopPropagation()\r\n }\r\n if (this.hasSubNav) {\r\n this.open = !this.open;\r\n }\r\n else {\r\n this._dispatchSelectEvent()\r\n }\r\n }\r\n\r\n private _handleSubNavSlotChange() {\r\n let hasSubNav = this.subNavSlotElement?.assignedElements().some(e => e instanceof EPNavListSubNav) ?? false;\r\n this.open = (\r\n hasSubNav\r\n ? (\r\n this.provider?.rootNavList.subNavStartClosed === true\r\n ? false\r\n : true\r\n )\r\n : this.open\r\n );\r\n }\r\n // #endregion\r\n\r\n // #region Related to \"selecting\" the item itself\r\n private _dispatchSelectEvent() {\r\n if (this.provider?.rootNavList.selectable === true && this.provider.selectedItemID !== this.id) {\r\n //console.log('dispatching ep-nav-list-select', this);\r\n const event = new CustomEvent('ep-nav-list-select', { \r\n bubbles: true,\r\n composed: true,\r\n detail: this,\r\n })\r\n this.dispatchEvent(event);\r\n }\r\n }\r\n\r\n protected updated(_changedProperties: PropertyValues) {\r\n super.updated(_changedProperties)\r\n for(let [prop, _] of _changedProperties) {\r\n switch(prop) {\r\n // If our provider changed, make sure our state is correct\r\n case 'provider': {\r\n if (this.provider?.selectable) {\r\n this.selected = (this.provider?.selectedItemID === this.id);\r\n }\r\n break;\r\n }\r\n // If we changed, make sure our provider is correct\r\n case 'selected': {\r\n if (this.selected && this.provider?.rootNavList) {\r\n this._dispatchSelectEvent();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n /* --color: var(--color-plain); */\r\n --indent-count-item: 0;\r\n --color-plain: rgb(36, 41, 47);\r\n --color-destructive: rgb(207, 34, 46);\r\n color: var(--color, var(--color-plain));\r\n display: block;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n li {\r\n position: relative;\r\n display: flex;\r\n padding: 0px;\r\n font-size: 14px;\r\n line-height: 20px;\r\n min-height: 5px;\r\n margin-left: 8px;\r\n margin-right: 8px;\r\n border-radius: 6px;\r\n transition: background 33.333ms linear 0s;\r\n color: var(--color);\r\n cursor: pointer;\r\n appearance: none;\r\n background: unset;\r\n border: unset;\r\n width: calc(100% - 16px);\r\n font-family: unset;\r\n font-weight: normal;\r\n text-align: unset;\r\n margin-top: unset;\r\n margin-bottom: unset;\r\n }\r\n\r\n li[data-variant=plain]:not([data-disabled=true]) {\r\n cursor: default;\r\n }\r\n\r\n li[data-disabled=true] {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n }\r\n\r\n li[data-appearance=destructive] {\r\n --color: var(--color-destructive);\r\n }\r\n\r\n li[data-selected=true] {\r\n font-weight: 600;\r\n background-color: rgba(208, 215, 222, 0.24);\r\n }\r\n\r\n li[data-selected=true]::after {\r\n position: absolute;\r\n top: calc(50% - 12px);\r\n left: -8px;\r\n width: 4px;\r\n height: 24px;\r\n content: \"\";\r\n background-color: rgb(9, 105, 218);\r\n border-radius: 6px;\r\n }\r\n\r\n li[data-text-select=true] {\r\n user-select: initial;\r\n }\r\n\r\n li:not([data-text-select=true]) {\r\n user-select: none;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n padding: 6px 8px;\r\n padding-left: calc(8px + (8px * 3 * var(--indent-count-item, 0)));\r\n display: flex;\r\n flex-grow: 1;\r\n border-radius: 6px;\r\n color: inherit;\r\n font-size: var(--override-font-size, inherit);\r\n font-weight: var(--override-font-weight, inherit);\r\n /* max-width: 100%; */\r\n }\r\n\r\n .divider-container {\r\n display: flex;\r\n flex-direction: row; /* used to be column */\r\n flex-grow: 1;\r\n min-width: 0px;\r\n }\r\n\r\n .divider-container::before {\r\n content: \" \";\r\n display: block;\r\n position: absolute;\r\n width: 100%;\r\n top: -7px;\r\n border-width: 0px;\r\n border-style: solid;\r\n border-image: initial;\r\n border-color: var(--divider-color,transparent);\r\n }\r\n\r\n @media (hover: hover) and (pointer: fine) {\r\n li:hover:not([aria-disabled]):not([data-disabled=true]):not([data-variant=plain]) {\r\n background-color: rgba(208, 215, 222, 0.32);\r\n --color: var(--color);\r\n }\r\n li[data-variant=button][data-appearance=destructive]:hover:not([aria-disabled]):not([data-disabled=true]):not([data-variant=plain]) {\r\n background-color: rgba(255, 235, 233, 0.64);\r\n --color: var(--color-destructive);\r\n }\r\n }\r\n\r\n @media (hover: hover) and (pointer: fine) {\r\n li[data-variant=button]:active:not([aria-disabled]):not([data-disabled=true]) {\r\n background-color: rgba(208, 215, 222, 0.48);\r\n --color: var(--color-plain);\r\n }\r\n li[data-variant=button][data-appearance=destructive]:active:not([aria-disabled]):not([data-disabled=true]) {\r\n background-color: rgba(255, 235, 233, 0.80);\r\n --color: var(--color-destructive);\r\n }\r\n }\r\n\r\n li:hover:not([aria-disabled]) {\r\n --divider-color: transparent;\r\n }\r\n\r\n [part=content] {\r\n flex-grow: 1;\r\n /* max-width: 100%; */\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n li[data-open=true] [part=content], li[data-open=false] [part=content] {\r\n cursor: pointer;\r\n font-weight: 600;\r\n }\r\n\r\n /* Only apply this style to the \"leading\" slot if it is slotted */\r\n ::slotted([slot=leading]) {\r\n height: 20px;\r\n min-width: 16px;\r\n max-width: 20px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n flex-shrink: 0;\r\n margin-right: 8px;\r\n color: rgb(87, 96, 106);\r\n }\r\n\r\n [part=trailing] {\r\n height: 20px;\r\n flex-shrink: 0;\r\n color: rgb(87, 96, 106);\r\n margin-left: 8px;\r\n font-weight: initial;\r\n display: inline-flex;\r\n gap: 4px;\r\n align-items: center;\r\n }\r\n\r\n [part=trailing] .chevron {\r\n width: 16px;\r\n height: 16px;\r\n transition: transform 250ms;\r\n }\r\n\r\n [part=subnav][data-open=false] {\r\n display: none;\r\n }\r\n\r\n ::slotted(ep-nav-list), ::slotted(ep-nav-list-subnav) {\r\n --indent-count-list: calc(var(--indent-count-item) + 1);\r\n }\r\n\r\n ::slotted([slot=description]) {\r\n font-size: 12px;\r\n line-height: 16px;\r\n flex-grow: 1;\r\n flex-basis: 0px;\r\n min-width: 0px;\r\n margin-left: 0;\r\n color: rgb(101, 109, 118);\r\n\r\n /* height: 20px;\r\n min-width: 16px;\r\n max-width: 20px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n flex-shrink: 0;\r\n margin-right: 8px;\r\n color: rgb(87, 96, 106); */\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-nav-list-item': EPNavListItem\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n/**\r\n * A nav list\r\n */\r\n@customElement('ep-nav-list-header')\r\nexport class EPNavListHeader extends LitElement {\r\n\r\n render() {\r\n return html`\r\n

    \r\n \r\n

    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --color-soft-black: rgb(36, 41, 47);\r\n display: block;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n h3 {\r\n font-family: var(--font-prose);\r\n color: var(--color-soft-black);\r\n font-weight: 600;\r\n margin: 0px;\r\n font-size: 16px;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-nav-list-header': EPNavListHeader\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\n/**\r\n * A nav list\r\n */\r\n@customElement('ep-nav-list-divider')\r\nexport class EPNavListDivider extends LitElement {\r\n\r\n @property({ type: Boolean, reflect: true })\r\n inset: boolean = false\r\n\r\n render() {\r\n return html`\r\n
  • \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --color-soft-black: rgb(36, 41, 47);\r\n }\r\n\r\n :host([inset]) li {\r\n margin-left: 72px;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n li {\r\n height: 1px;\r\n background-color: rgba(208, 215, 222, 0.48);\r\n margin-top: calc(7px);\r\n margin-bottom: 8px;\r\n list-style: none;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-nav-list-divider': EPNavListDivider\r\n }\r\n}\r\n","import { consume } from '@lit/context'\r\nimport { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { context } from './ep-nav-list'\r\nimport type { EPNavListContext } from './ep-nav-list'\r\n\r\n/**\r\n * A nav list\r\n */\r\n@customElement('ep-nav-list-group')\r\nexport class EPNavListGroup extends LitElement {\r\n\r\n @property({ type: Boolean, attribute: 'sticky-title', reflect: true })\r\n stickyTitle: boolean = false;\r\n\r\n @consume({ context: context, subscribe: true })\r\n @property({ attribute: false })\r\n provider?: EPNavListContext;\r\n\r\n render() {\r\n return html`\r\n
  • \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
  • \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --color-soft-black: rgb(36, 41, 47);\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n li {\r\n list-style: none;\r\n }\r\n\r\n .group-title {\r\n padding: 6px 16px;\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: rgb(87, 96, 106);\r\n text-align: left;\r\n }\r\n\r\n .group-title[data-sticky] {\r\n position: sticky;\r\n top: 0px;\r\n height: 30px;\r\n backdrop-filter: saturate(180%) blur(10px);\r\n /* background-color: rgba(230, 230, 230, 0.15); */\r\n background-color: rgba(100,100,120,0.09);\r\n z-index: 1;\r\n border-radius: 6px;\r\n }\r\n\r\n .group-title[data-sticky][data-hassearchbar] {\r\n top: calc(32px + 2 * 8px - 8px);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-nav-list-group': EPNavListGroup\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n@customElement('ep-nav-list-box')\r\nexport class EPNavListBox extends LitElement {\r\n\r\n render() {\r\n return html`\r\n
    \r\n \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n .box {\r\n background-color: rgb(255, 255, 255);\r\n box-shadow: rgba(27, 31, 36, 0.12) 0px 1px 3px, rgba(66, 74, 83, 0.12) 0px 8px 24px;\r\n border-radius: 12px;\r\n overflow: hidden;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-nav-list-box': EPNavListBox\r\n }\r\n}\r\n","import { consume } from '@lit/context'\r\nimport { css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport type { EPNavListContext } from './ep-nav-list'\r\nimport { context } from './ep-nav-list'\r\nimport { LitHauntedElement } from '../../mixins/lit-haunted-element'\r\nimport { useEffect } from 'haunted'\r\n\r\n@customElement('ep-nav-list-search')\r\nexport class EPNavListSearch extends LitHauntedElement {\r\n\r\n @consume({ context: context, subscribe: true })\r\n @property({ attribute: false })\r\n provider?: EPNavListContext;\r\n\r\n @property({ type: Boolean, reflect: true })\r\n disabled: boolean = false;\r\n\r\n @property({ attribute: false })\r\n filterText: string = '';\r\n\r\n @property({ attribute: 'filter-selector', reflect: true })\r\n filterSelector: keyof HTMLElementTagNameMap = 'ep-nav-list-item'\r\n\r\n render() {\r\n useEffect(() => this._handleSearch(), [this.filterText])\r\n\r\n return html`\r\n
  • \r\n \r\n \r\n
  • \r\n `\r\n }\r\n\r\n private _handleTextInput(event: InputEvent) {\r\n const target = event.target as HTMLInputElement;\r\n this.filterText = target.value;\r\n }\r\n\r\n private _handleSearch() {\r\n const root = this.provider?.rootNavList\r\n if (root !== undefined) {\r\n const items = Array.from(this.provider?.rootNavList.querySelectorAll(this.filterSelector) ?? []) as HTMLElement[];\r\n \r\n const satisfies = (e: HTMLElement) => e.textContent?.toLowerCase().includes(this.filterText.toLowerCase()) ?? false;\r\n const HAS_NO_RESULTS = items.every(e => !satisfies(e));\r\n const noResultIndicators: HTMLElement[] = (root.emptySlotElement?.assignedElements() ?? []).filter(e => e instanceof HTMLElement) as any;\r\n\r\n for(let item of noResultIndicators) {\r\n item.style.display = HAS_NO_RESULTS ? 'block' : 'none';\r\n }\r\n \r\n for(let item of items) {\r\n if (satisfies(item)) {\r\n item.style.removeProperty('display')\r\n }\r\n else {\r\n item.style.display = 'none';\r\n // TODO: parents\r\n }\r\n }\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n /* --color: var(--color-plain); */\r\n --indent-count-item: 0;\r\n --color-plain: rgb(36, 41, 47);\r\n --color-destructive: rgb(207, 34, 46);\r\n --padding: 8px;\r\n --height: calc(32px + 2 * var(--padding));\r\n color: var(--color, var(--color-plain));\r\n display: block;\r\n position: sticky;\r\n top: -8px; /* because of the top padding */\r\n height: var(--height);\r\n z-index: 5;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n li {\r\n position: relative;\r\n display: flex;\r\n padding: 0px;\r\n font-size: 14px;\r\n line-height: 20px;\r\n min-height: 5px;\r\n margin-left: 8px;\r\n margin-right: 8px;\r\n border-radius: 6px;\r\n transition: background 33.333ms linear 0s;\r\n color: var(--color);\r\n cursor: default;\r\n appearance: none;\r\n background: unset;\r\n border: unset;\r\n /* width: calc(100% - 16px); */\r\n width: 100%;\r\n font-family: unset;\r\n font-weight: normal;\r\n text-align: unset;\r\n margin-top: unset;\r\n margin-bottom: unset;\r\n }\r\n\r\n li {\r\n padding: 8px;\r\n margin: 0;\r\n background: #fbfbfb;\r\n /* background-color: rgb(229, 233, 233); */\r\n /* background: rgba(255,255,255,0.75);\r\n backdrop-filter: blur(5px); */\r\n }\r\n\r\n fluent-text-field {\r\n flex: 1;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-nav-list-search': EPNavListSearch\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\n@customElement('ep-button-group')\r\nexport class EPButtonGroup extends LitElement {\r\n\r\n @property({ type: Boolean, reflect: true })\r\n clickable: boolean = false;\r\n\r\n render() {\r\n return html`\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n vertical-align: middle;\r\n isolation: isolate;\r\n }\r\n\r\n ::slotted(*) {\r\n /* border-right-width: 0px; */\r\n margin-right: -1px;\r\n }\r\n\r\n ::slotted(:first-child) {\r\n margin-right: 0px;\r\n position: relative;\r\n margin-right: -1px;\r\n /* border-right-width: 0px; */\r\n border-top-right-radius: 0px;\r\n border-bottom-right-radius: 0px;\r\n }\r\n\r\n ::slotted(:last-child) {\r\n margin-left: 0px;\r\n position: relative;\r\n border-right-width: 1px;\r\n border-top-left-radius: 0px;\r\n border-bottom-left-radius: 0px;\r\n }\r\n\r\n ::slotted(:not(:first-child):not(:last-child)) {\r\n border-radius: 0px;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-button-group': EPButtonGroup\r\n }\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHex = exports.toHex = void 0;\nconst hex = (num) => new Number(num).toString(16).toLowerCase();\nconst toHex = (num) => `0x${hex(num).length === 1 ? \"0\" + hex(num) : hex(num)}`;\nexports.toHex = toHex;\nconst fromHex = (hex) => new Number(hex);\nexports.fromHex = fromHex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createComplexNode = exports.createNode = exports.merge = void 0;\nconst createMatch = (leaf) => ({\n typename: leaf.typename,\n mime: leaf.info.mime,\n extension: leaf.info.extension,\n});\nconst isMatchingNode = (tree, path) => tree && path.length === 0;\nconst head = (arr) => arr[0];\nconst tail = (arr) => arr.slice(1, arr.length);\nconst merge = (node, tree) => {\n if (node.bytes.length === 0)\n return tree;\n const currentByte = head(node.bytes); // 0\n const path = tail(node.bytes); // [1,2]\n const currentTree = tree.bytes[currentByte];\n // traversed to end. Just add key to leaf.\n if (isMatchingNode(currentTree, path)) {\n const matchingNode = tree.bytes[currentByte];\n tree.bytes[currentByte] = {\n ...matchingNode,\n matches: [\n ...(matchingNode.matches ? matchingNode.matches : []),\n createMatch(node),\n ],\n };\n return tree;\n }\n // Path exists already, Merge subtree\n if (tree.bytes[currentByte]) {\n tree.bytes[currentByte] = exports.merge(exports.createNode(node.typename, path, node.info), tree.bytes[currentByte]);\n return tree;\n }\n // Tree did not exist before\n if (!tree.bytes[currentByte]) {\n tree.bytes[currentByte] = {\n ...tree.bytes[currentByte],\n ...exports.createComplexNode(node.typename, path, node.info),\n };\n }\n return tree;\n};\nexports.merge = merge;\nconst createNode = (typename, bytes, info) => {\n return { typename, bytes, info: info ? info : {} };\n};\nexports.createNode = createNode;\nconst createComplexNode = (typename, bytes, info) => {\n let obj = {\n bytes: {},\n matches: undefined,\n };\n const currentKey = head(bytes); // 0\n const path = tail(bytes); // [1,2]\n if (bytes.length === 0) {\n return {\n matches: [\n createMatch({\n typename: typename,\n info: info ? { extension: info.extension, mime: info.mime } : {},\n }),\n ],\n bytes: {},\n };\n }\n obj.bytes[currentKey] = exports.createComplexNode(typename, path, info);\n return obj;\n};\nexports.createComplexNode = createComplexNode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst toHex_1 = require(\"./toHex\");\nconst tree_1 = require(\"./tree\");\n// https://en.wikipedia.org/wiki/List_of_file_signatures\nlet tree = {\n noOffset: null,\n offset: {},\n};\nconst add = (typename, signature, additionalInfo, offset) => {\n if (offset) {\n const existing = tree.offset[toHex_1.toHex(offset)];\n if (!existing) {\n tree.offset[toHex_1.toHex(offset)] = tree_1.createComplexNode(typename, signature.map((e) => e.toLowerCase()), additionalInfo);\n }\n else {\n const merged = tree_1.merge(tree_1.createNode(typename, signature.map((e) => e.toLowerCase()), additionalInfo), { ...existing });\n tree.offset[toHex_1.toHex(offset)] = merged;\n }\n }\n else {\n if (tree.noOffset === null) {\n tree.noOffset = tree_1.createComplexNode(typename, signature.map((e) => e.toLowerCase()), additionalInfo);\n }\n else {\n tree.noOffset = tree_1.merge(tree_1.createNode(typename, signature.map((e) => e.toLowerCase()), additionalInfo), tree.noOffset);\n }\n }\n};\nadd(\"gif\", [\"0x47\", \"0x49\", \"0x46\", \"0x38\", \"0x37\", \"0x61\"], {\n mime: \"image/gif\",\n extension: \"gif\",\n});\nadd(\"gif\", [\"0x47\", \"0x49\", \"0x46\", \"0x38\", \"0x39\", \"0x61\"], {\n mime: \"image/gif\",\n extension: \"gif\",\n});\nadd(\"jpg\", [\"0xFF\", \"0xD8\", \"0xFF\"], {\n mime: \"image/jpeg\",\n extension: \"jpeg\",\n});\nadd(\"webp\", [\n \"0x52\",\n \"0x49\",\n \"0x46\",\n \"0x46\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x57\",\n \"0x45\",\n \"0x42\",\n \"0x50\",\n], { mime: \"image/webp\", extension: \"webp\" });\nadd(\"heif\", [\"0x66\", \"0x74\", \"0x79\", \"0x70\", \"0x6D\", \"0x69\", \"0x66\", \"0x31\"], { mime: \"image/heif\", extension: \"heif\" }, 4);\nadd(\"heif\", [\"0x66\", \"0x74\", \"0x79\", \"0x70\", \"0x68\", \"0x65\", \"0x69\", \"0x63\"], { mime: \"image/heif\", extension: \"heic\" }, 4);\nadd(\"rpm\", [\"0xed\", \"0xab\", \"0xee\", \"0xdb\"]);\nadd(\"bin\", [\"0x53\", \"0x50\", \"0x30\", \"0x31\"], {\n mime: \"application/octet-stream\",\n extension: \"bin\",\n});\nadd(\"pic\", [\"0x00\"]);\nadd(\"pif\", [\"0x00\"]);\nadd(\"sea\", [\"0x00\"]);\nadd(\"ytr\", [\"0x00\"]);\n// 66747970\n// 6D703432\nadd(\"mp4\", [\"0x66\", \"0x74\", \"0x79\", \"0x70\"], { mime: \"video/mp4\", extension: \"mp4\" }, 0x4);\nadd(\"ttf\", [\"0x00\", \"0x01\", \"0x00\", \"0x00\", \"0x00\"], {\n mime: \"font/ttf\",\n extension: \"ttf\",\n});\nadd(\"otf\", [\"0x4F\", \"0x54\", \"0x54\", \"0x4F\"], {\n mime: \"font/otf\",\n extension: \"otf\",\n});\nadd(\"eot\", [\"0x50\", \"0x4C\"], {\n mime: \"application/vnd.ms-fontobject\",\n extension: \"eot\",\n});\nadd(\"woff\", [\"0x77\", \"0x4F\", \"0x46\", \"0x46\"], {\n mime: \"font/woff\",\n extension: \"woff\",\n});\nadd(\"woff2\", [\"0x77\", \"0x4F\", \"0x46\", \"0x32\"], {\n mime: \"font/woff2\",\n extension: \"woff2\",\n});\nadd(\"pdb\", [\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n]);\nadd(\"dba\", [\"0xBE\", \"0xBA\", \"0xFE\", \"0xCA\"]);\nadd(\"dba2\", [\"0x00\", \"0x01\", \"0x42\", \"0x44\"]);\nadd(\"tda\", [\"0x00\", \"0x01\", \"0x44\", \"0x54\"]);\nadd(\"tda2\", [\"0x00\", \"0x01\", \"0x00\", \"0x00\"]);\nadd(\"ico\", [\"0x00\", \"0x00\", \"0x01\", \"0x00\"], {\n mime: \"image/x-icon\",\n extension: \"ico\",\n});\nadd(\"3gp\", [\"0x66\", \"0x74\", \"0x79\", \"0x70\", \"0x33\", \"0x67\"]);\nadd(\"z\", [\"0x1F\", \"0x9D\"]);\nadd(\"tar.z\", [\"0x1F\", \"0xA0\"]);\nadd(\"bac\", [\n \"0x42\",\n \"0x41\",\n \"0x43\",\n \"0x4B\",\n \"0x4D\",\n \"0x49\",\n \"0x4B\",\n \"0x45\",\n \"0x44\",\n \"0x49\",\n \"0x53\",\n \"0x4B\",\n]);\nadd(\"bz2\", [\"0x42\", \"0x5A\", \"0x68\"], {\n mime: \"application/x-bzip2\",\n extension: \"bz2\",\n});\nadd(\"tif\", [\"0x49\", \"0x49\", \"0x2A\", \"0x00\"], {\n mime: \"image/tiff\",\n extension: \"tif\",\n});\nadd(\"tiff\", [\"0x4D\", \"0x4D\", \"0x00\", \"0x2A\"], {\n mime: \"image/tiff\",\n extension: \"tiff\",\n});\nadd(\"cr2\", [\n \"0x49\",\n \"0x49\",\n \"0x2A\",\n \"0x00\",\n \"0x10\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x43\",\n \"0x52\",\n]);\nadd(\"cin\", [\"0x80\", \"0x2A\", \"0x5F\", \"0xD7\"]);\nadd(\"cin1\", [\"0x52\", \"0x4E\", \"0x43\", \"0x01\"]);\nadd(\"cin2\", [\"0x52\", \"0x4E\", \"0x43\", \"0x02\"]);\nadd(\"dpx\", [\"0x53\", \"0x44\", \"0x50\", \"0x58\"]);\nadd(\"dpx2\", [\"0x58\", \"0x50\", \"0x44\", \"0x53\"]);\nadd(\"exr\", [\"0x76\", \"0x2F\", \"0x31\", \"0x01\"]);\nadd(\"bpg\", [\"0x42\", \"0x50\", \"0x47\", \"0xFB\"]);\nadd(\"ilbm\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x49\",\n \"0x4C\",\n \"0x42\",\n \"0x4D\",\n]);\nadd(\"8svx\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x38\",\n \"0x53\",\n \"0x56\",\n \"0x58\",\n]);\nadd(\"acbm\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x41\",\n \"0x43\",\n \"0x42\",\n \"0x4D\",\n]);\nadd(\"anbm\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x41\",\n \"0x4E\",\n \"0x42\",\n \"0x4D\",\n]);\nadd(\"anim\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x41\",\n \"0x4E\",\n \"0x49\",\n \"0x4D\",\n]);\nadd(\"faxx\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x46\",\n \"0x41\",\n \"0x58\",\n \"0x58\",\n]);\nadd(\"ftxt\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x46\",\n \"0x54\",\n \"0x58\",\n \"0x54\",\n]);\nadd(\"smus\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x53\",\n \"0x4D\",\n \"0x55\",\n \"0x53\",\n]);\nadd(\"cmus\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x43\",\n \"0x4D\",\n \"0x55\",\n \"0x53\",\n]);\nadd(\"yuvn\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x59\",\n \"0x55\",\n \"0x56\",\n \"0x4E\",\n]);\nadd(\"iff\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x46\",\n \"0x41\",\n \"0x4E\",\n \"0x54\",\n]);\nadd(\"aiff\", [\n \"0x46\",\n \"0x4F\",\n \"0x52\",\n \"0x4D\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x41\",\n \"0x49\",\n \"0x46\",\n \"0x46\",\n], { mime: \"audio/x-aiff\", extension: \"aiff\" });\nadd(\"idx\", [\"0x49\", \"0x4E\", \"0x44\", \"0x58\"]);\nadd(\"lz\", [\"0x4C\", \"0x5A\", \"0x49\", \"0x50\"]);\nadd(\"exe\", [\"0x4D\", \"0x5A\"]);\nadd(\"zip\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/zip\",\n extension: \"zip\",\n});\nadd(\"zip\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/zip\",\n extension: \"zip\",\n});\nadd(\"zip\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/zip\",\n extension: \"zip\",\n});\nadd(\"jar\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/java-archive\",\n extension: \"jar\",\n});\nadd(\"jar\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/java-archive\",\n extension: \"jar\",\n});\nadd(\"jar\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/java-archive\",\n extension: \"jar\",\n});\nadd(\"odt\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.oasis.opendocument.text\",\n extension: \"odt\",\n});\nadd(\"odt\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.oasis.opendocument.text\",\n extension: \"odt\",\n});\nadd(\"odt\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.oasis.opendocument.text\",\n extension: \"odt\",\n});\nadd(\"ods\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.oasis.opendocument.spreadsheet\",\n extension: \"ods\",\n});\nadd(\"ods\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.oasis.opendocument.spreadsheet\",\n extension: \"ods\",\n});\nadd(\"ods\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.oasis.opendocument.spreadsheet\",\n extension: \"ods\",\n});\nadd(\"odp\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.oasis.opendocument.presentation\",\n extension: \"odp\",\n});\nadd(\"odp\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.oasis.opendocument.presentation\",\n extension: \"odp\",\n});\nadd(\"odp\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.oasis.opendocument.presentation\",\n extension: \"odp\",\n});\nadd(\"docx\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n extension: \"docx\",\n});\nadd(\"docx\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n extension: \"docx\",\n});\nadd(\"docx\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n extension: \"docx\",\n});\nadd(\"xlsx\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n extension: \"xlsx\",\n});\nadd(\"xlsx\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n extension: \"xlsx\",\n});\nadd(\"xlsx\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n extension: \"xlsx\",\n});\nadd(\"pptx\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n extension: \"pptx\",\n});\nadd(\"pptx\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n extension: \"pptx\",\n});\nadd(\"pptx\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n extension: \"pptx\",\n});\nadd(\"vsdx\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.ms-visio.drawing\",\n extension: \"vsdx\",\n});\nadd(\"vsdx\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.ms-visio.drawing\",\n extension: \"vsdx\",\n});\nadd(\"vsdx\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.ms-visio.drawing\",\n extension: \"vsdx\",\n});\nadd(\"apk\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.android.package-archive\",\n extension: \"apk\",\n});\nadd(\"apk\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.android.package-archive\",\n extension: \"apk\",\n});\nadd(\"apk\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.android.package-archive\",\n extension: \"apk\",\n});\nadd(\"aar\", [\"0x50\", \"0x4B\", \"0x03\", \"0x04\"], {\n mime: \"application/vnd.android.package-archive\",\n extension: \"aar\",\n});\nadd(\"aar\", [\"0x50\", \"0x4B\", \"0x05\", \"0x06\"], {\n mime: \"application/vnd.android.package-archive\",\n extension: \"aar\",\n});\nadd(\"aar\", [\"0x50\", \"0x4B\", \"0x07\", \"0x08\"], {\n mime: \"application/vnd.android.package-archive\",\n extension: \"aar\",\n});\nadd(\"rar\", [\"0x52\", \"0x61\", \"0x72\", \"0x21\", \"0x1A\", \"0x07\", \"0x00\"], {\n mime: \"application/vnd.rar\",\n extension: \"rar\",\n});\nadd(\"rar\", [\"0x52\", \"0x61\", \"0x72\", \"0x21\", \"0x1A\", \"0x07\", \"0x01\", \"0x00\"], {\n mime: \"application/vnd.rar\",\n extension: \"rar\",\n});\nadd(\"rar\", [\"0x7F\", \"0x45\", \"0x4C\", \"0x46\"], {\n mime: \"application/vnd.rar\",\n extension: \"rar\",\n});\nadd(\"png\", [\"0x89\", \"0x50\", \"0x4E\", \"0x47\", \"0x0D\", \"0x0A\", \"0x1A\", \"0x0A\"], {\n mime: \"image/png\",\n extension: \"png\",\n});\nadd(\"apng\", [\"0x89\", \"0x50\", \"0x4E\", \"0x47\", \"0x0D\", \"0x0A\", \"0x1A\", \"0x0A\"], {\n mime: \"image/apng\",\n extension: \"apng\",\n});\nadd(\"class\", [\"0xCA\", \"0xFE\", \"0xBA\", \"0xBE\"]);\nadd(\"class\", [\"0xEF\", \"0xBB\", \"0xBF\"]);\nadd(\"class\", [\"0xFE\", \"0xed\", \"0xFA\", \"0xCE\"], undefined, 0x1000);\nadd(\"class\", [\"0xFE\", \"0xed\", \"0xFA\", \"0xCF\"], undefined, 0x1000);\nadd(\"class\", [\"0xCE\", \"0xFA\", \"0xed\", \"0xFE\"]);\nadd(\"class\", [\"0xCF\", \"0xFA\", \"0xed\", \"0xFE\"]);\nadd(\"class\", [\"0xFF\", \"0xFE\"]);\nadd(\"class\", [\"0xFF\", \"0xFE\"]);\nadd(\"class\", [\"0xFF\", \"0xFE\", \"0x00\", \"0x00\"]);\nadd(\"ps\", [\"0x25\", \"0x21\", \"0x50\", \"0x53\"], {\n mime: \"application/postscript\",\n extension: \".ps\"\n});\nadd(\"pdf\", [\"0x25\", \"0x50\", \"0x44\", \"0x46\"], {\n mime: \"application/pdf\",\n extension: \"pdf\",\n});\nadd(\"asf\", [\n \"0x30\",\n \"0x26\",\n \"0xB2\",\n \"0x75\",\n \"0x8E\",\n \"0x66\",\n \"0xCF\",\n \"0x11\",\n \"0xA6\",\n \"0xD9\",\n \"0x00\",\n \"0xAA\",\n \"0x00\",\n \"0x62\",\n \"0xCE\",\n \"0x6C\",\n]);\nadd(\"wma\", [\n \"0x30\",\n \"0x26\",\n \"0xB2\",\n \"0x75\",\n \"0x8E\",\n \"0x66\",\n \"0xCF\",\n \"0x11\",\n \"0xA6\",\n \"0xD9\",\n \"0x00\",\n \"0xAA\",\n \"0x00\",\n \"0x62\",\n \"0xCE\",\n \"0x6C\",\n]);\nadd(\"wmv\", [\n \"0x30\",\n \"0x26\",\n \"0xB2\",\n \"0x75\",\n \"0x8E\",\n \"0x66\",\n \"0xCF\",\n \"0x11\",\n \"0xA6\",\n \"0xD9\",\n \"0x00\",\n \"0xAA\",\n \"0x00\",\n \"0x62\",\n \"0xCE\",\n \"0x6C\",\n]);\nadd(\"deploymentimage\", [\n \"0x24\",\n \"0x53\",\n \"0x44\",\n \"0x49\",\n \"0x30\",\n \"0x30\",\n \"0x30\",\n \"0x31\",\n]);\n// ogg video ' theora'\nadd(\"ogv\", [\n \"0x4F\",\n \"0x67\",\n \"0x67\",\n \"0x53\",\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 \"0x80\",\n \"0x74\",\n \"0x68\",\n \"0x65\",\n \"0x6F\",\n \"0x72\",\n \"0x61\",\n], {\n mime: \"video/ogg\",\n extension: \"ogv\",\n});\n// ogg video '\\x01video'\nadd(\"ogm\", [\n \"0x4F\",\n \"0x67\",\n \"0x67\",\n \"0x53\",\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 \"0x01\",\n \"0x76\",\n \"0x69\",\n \"0x64\",\n \"0x65\",\n \"0x6F\",\n \"0x00\",\n], {\n mime: \"video/ogg\",\n extension: \"ogm\",\n});\n// ogg audio ' FLAC'\nadd(\"oga\", [\n \"0x4F\",\n \"0x67\",\n \"0x67\",\n \"0x53\",\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 \"0x7F\",\n \"0x46\",\n \"0x4C\",\n \"0x41\",\n \"0x43\",\n], {\n mime: \"audio/ogg\",\n extension: \"oga\",\n});\n// ogg audio 'Speex '\nadd(\"spx\", [\n \"0x4F\",\n \"0x67\",\n \"0x67\",\n \"0x53\",\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 \"0x53\",\n \"0x70\",\n \"0x65\",\n \"0x65\",\n \"0x78\",\n \"0x20\",\n \"0x20\",\n], {\n mime: \"audio/ogg\",\n extension: \"spx\",\n});\n// ogg audio '\\x01vorbis '\nadd(\"ogg\", [\n \"0x4F\",\n \"0x67\",\n \"0x67\",\n \"0x53\",\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 \"0x01\",\n \"0x76\",\n \"0x6F\",\n \"0x72\",\n \"0x62\",\n \"0x69\",\n \"0x73\",\n], {\n mime: \"audio/ogg\",\n extension: \"ogg\",\n});\n// default OGG container\nadd(\"ogx\", [\"0x4F\", \"0x67\", \"0x67\", \"0x53\"], {\n mime: \"application/ogg\",\n extension: \"ogx\",\n});\nadd(\"psd\", [\"0x38\", \"0x42\", \"0x50\", \"0x53\"], {\n mime: \"application/x-photoshop\",\n extension: \"psd\",\n});\nadd(\"clip\", [\"0x43\", \"0x53\", \"0x46\", \"0x43\", \"0x48\", \"0x55\", \"0x4e\", \"0x4b\"]);\nadd(\"wav\", [\n \"0x52\",\n \"0x49\",\n \"0x46\",\n \"0x46\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x57\",\n \"0x41\",\n \"0x56\",\n \"0x45\",\n], { mime: \"audio/x-wav\", extension: \"wav\" });\nadd(\"avi\", [\n \"0x52\",\n \"0x49\",\n \"0x46\",\n \"0x46\",\n \"?\",\n \"?\",\n \"?\",\n \"?\",\n \"0x41\",\n \"0x56\",\n \"0x49\",\n \"0x20\",\n], { mime: \"video/x-msvideo\", extension: \"avi\" });\nadd(\"mp3\", [\"0xFF\", \"0xFB\"], { mime: \"audio/mpeg\", extension: \"mp3\" });\nadd(\"mp3\", [\"0xFF\", \"0xF3\"], { mime: \"audio/mpeg\", extension: \"mp3\" });\nadd(\"mp3\", [\"0xFF\", \"0xF2\"], { mime: \"audio/mpeg\", extension: \"mp3\" });\nadd(\"mp3\", [\"0x49\", \"0x44\", \"0x33\"], { mime: \"audio/mpeg\", extension: \"mp3\" });\nadd(\"bmp\", [\"0x42\", \"0x4D\"], { mime: \"image/bmp\", extension: \"bmp\" });\nadd(\"iso\", [\"0x43\", \"0x44\", \"0x30\", \"0x30\", \"0x31\"]);\nadd(\"flac\", [\"0x66\", \"0x4C\", \"0x61\", \"0x43\"]);\nadd(\"mid\", [\"0x4D\", \"0x54\", \"0x68\", \"0x64\"], {\n mime: \"audio/midi\",\n extension: \"mid\",\n});\nadd(\"midi\", [\"0x4D\", \"0x54\", \"0x68\", \"0x64\"], {\n mime: \"audio/midi\",\n extension: \"midi\",\n});\nadd(\"doc\", [\"0xD0\", \"0xCF\", \"0x11\", \"0xE0\", \"0xA1\", \"0xB1\", \"0x1A\", \"0xE1\"], {\n mime: \"application/msword\",\n extension: \"doc\",\n});\nadd(\"xls\", [\"0xD0\", \"0xCF\", \"0x11\", \"0xE0\", \"0xA1\", \"0xB1\", \"0x1A\", \"0xE1\"], {\n mime: \"application/vnd.ms-excel\",\n extension: \"xls\",\n});\nadd(\"ppt\", [\"0xD0\", \"0xCF\", \"0x11\", \"0xE0\", \"0xA1\", \"0xB1\", \"0x1A\", \"0xE1\"], {\n mime: \"application/vnd.ms-powerpoint\",\n extension: \"ppt\",\n});\nadd(\"msg\", [\"0xD0\", \"0xCF\", \"0x11\", \"0xE0\", \"0xA1\", \"0xB1\", \"0x1A\", \"0xE1\"]);\nadd(\"dex\", [\"0x64\", \"0x65\", \"0x78\", \"0x0A\", \"0x30\", \"0x33\", \"0x35\", \"0x00\"]);\nadd(\"vmdk\", [\"0x4B\", \"0x44\", \"0x4D\"]);\nadd(\"crx\", [\"0x43\", \"0x72\", \"0x32\", \"0x34\"]);\nadd(\"fh8\", [\"0x41\", \"0x47\", \"0x44\", \"0x33\"]);\nadd(\"cwk\", [\n \"0x05\",\n \"0x07\",\n \"0x00\",\n \"0x00\",\n \"0x42\",\n \"0x4F\",\n \"0x42\",\n \"0x4F\",\n \"0x05\",\n \"0x07\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x01\",\n]);\nadd(\"cwk\", [\n \"0x06\",\n \"0x07\",\n \"0xE1\",\n \"0x00\",\n \"0x42\",\n \"0x4F\",\n \"0x42\",\n \"0x4F\",\n \"0x06\",\n \"0x07\",\n \"0xE1\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x00\",\n \"0x01\",\n]);\nadd(\"toast\", [\"0x45\", \"0x52\", \"0x02\", \"0x00\", \"0x00\", \"0x00\"]);\nadd(\"toast\", [\"0x8B\", \"0x45\", \"0x52\", \"0x02\", \"0x00\", \"0x00\", \"0x00\"]);\nadd(\"dmg\", [\"0x78\", \"0x01\", \"0x73\", \"0x0D\", \"0x62\", \"0x62\", \"0x60\"]);\nadd(\"xar\", [\"0x78\", \"0x61\", \"0x72\", \"0x21\"]);\nadd(\"dat\", [\"0x50\", \"0x4D\", \"0x4F\", \"0x43\", \"0x43\", \"0x4D\", \"0x4F\", \"0x43\"]);\nadd(\"nes\", [\"0x4E\", \"0x45\", \"0x53\", \"0x1A\"]);\nadd(\"tar\", [\"0x75\", \"0x73\", \"0x74\", \"0x61\", \"0x72\", \"0x00\", \"0x30\", \"0x30\"], {\n // As per Mozilla documentation available at:\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n // or wikipedia page:\n // https://en.wikipedia.org/wiki/List_of_archive_formats\n mime: \"application/x-tar\",\n extension: \"tar\"\n}, 0x101);\nadd(\"tar\", [\"0x75\", \"0x73\", \"0x74\", \"0x61\", \"0x72\", \"0x20\", \"0x20\", \"0x00\"], {\n mime: \"application/x-tar\",\n extension: \"tar\"\n}, 0x101);\nadd(\"tox\", [\"0x74\", \"0x6F\", \"0x78\", \"0x33\"]);\nadd(\"mlv\", [\"0x4D\", \"0x4C\", \"0x56\", \"0x49\"]);\nadd(\"windowsupdate\", [\n \"0x44\",\n \"0x43\",\n \"0x4D\",\n \"0x01\",\n \"0x50\",\n \"0x41\",\n \"0x33\",\n \"0x30\",\n]);\nadd(\"7z\", [\"0x37\", \"0x7A\", \"0xBC\", \"0xAF\", \"0x27\", \"0x1C\"], {\n mime: \"application/x-7z-compressed\",\n extension: \"7z\",\n});\nadd(\"gz\", [\"0x1F\", \"0x8B\"], { mime: \"application/gzip\", extension: \"gz\" });\nadd(\"tar.gz\", [\"0x1F\", \"0x8B\"], {\n mime: \"application/gzip\",\n extension: \"tar.gz\",\n});\nadd(\"xz\", [\"0xFD\", \"0x37\", \"0x7A\", \"0x58\", \"0x5A\", \"0x00\", \"0x00\"], {\n mime: \"application/gzip\",\n extension: \"xz\",\n});\nadd(\"tar.xz\", [\"0xFD\", \"0x37\", \"0x7A\", \"0x58\", \"0x5A\", \"0x00\", \"0x00\"], {\n mime: \"application/gzip\",\n extension: \"tar.xz\",\n});\nadd(\"lz2\", [\"0x04\", \"0x22\", \"0x4D\", \"0x18\"]);\nadd(\"cab\", [\"0x4D\", \"0x53\", \"0x43\", \"0x46\"]);\nadd(\"mkv\", [\"0x1A\", \"0x45\", \"0xDF\", \"0xA3\"], {\n mime: \"video/x-matroska\",\n extension: \"mkv\",\n});\nadd(\"mka\", [\"0x1A\", \"0x45\", \"0xDF\", \"0xA3\"], {\n mime: \"audio/x-matroska\",\n extension: \"mka\",\n});\nadd(\"mks\", [\"0x1A\", \"0x45\", \"0xDF\", \"0xA3\"], {\n mime: \"video/x-matroska\",\n extension: \"mks\",\n});\nadd(\"mk3d\", [\"0x1A\", \"0x45\", \"0xDF\", \"0xA3\"]);\nadd(\"webm\", [\"0x1A\", \"0x45\", \"0xDF\", \"0xA3\"], {\n mime: \"audio/webm\",\n extension: \"webm\",\n});\nadd(\"dcm\", [\"0x44\", \"0x49\", \"0x43\", \"0x4D\"], undefined, 0x80);\nadd(\"xml\", [\"0x3C\", \"0x3f\", \"0x78\", \"0x6d\", \"0x6C\", \"0x20\"], {\n mime: \"application/xml\",\n extension: \"xml\",\n});\nadd(\"wasm\", [\"0x00\", \"0x61\", \"0x73\", \"0x6d\"], {\n mime: \"application/wasm\",\n extension: \"wasm\",\n});\nadd(\"lep\", [\"0xCF\", \"0x84\", \"0x01\"]);\nadd(\"swf\", [\"0x43\", \"0x57\", \"0x53\"], {\n mime: \"application/x-shockwave-flash\",\n extension: \"swf\",\n});\nadd(\"swf\", [\"0x46\", \"0x57\", \"0x53\"], {\n mime: \"application/x-shockwave-flash\",\n extension: \"swf\",\n});\nadd(\"deb\", [\"0x21\", \"0x3C\", \"0x61\", \"0x72\", \"0x63\", \"0x68\", \"0x3E\"]);\nadd(\"rtf\", [\"0x7B\", \"0x5C\", \"0x72\", \"0x74\", \"0x66\", \"0x31\"], {\n mime: \"application/rtf\",\n extension: \"rtf\",\n});\nadd(\"m2p\", [\"0x00\", \"0x00\", \"0x01\", \"0xBA\"]);\nadd(\"vob\", [\"0x00\", \"0x00\", \"0x01\", \"0xBA\"]);\nadd(\"mpg\", [\"0x00\", \"0x00\", \"0x01\", \"0xBA\"], {\n mime: \"video/mpeg\",\n extension: \"mpg\",\n});\nadd(\"mpeg\", [\"0x00\", \"0x00\", \"0x01\", \"0xBA\"], {\n mime: \"video/mpeg\",\n extension: \"mpeg\",\n});\nadd(\"mpeg\", [\"0x47\"], { mime: \"video/mpeg\", extension: \"mpeg\" });\nadd(\"mpeg\", [\"0x00\", \"0x00\", \"0x01\", \"0xB3\"], {\n mime: \"video/mpeg\",\n extension: \"mpeg\",\n});\n// mov 'free' TODO: find test file\nadd(\"mov\", [\"0x66\", \"0x72\", \"0x65\", \"0x65\"], {\n mime: \"video/quicktime\",\n extension: \"mov\",\n}, 0x4);\n// mov 'mdat'\nadd(\"mov\", [\"0x6D\", \"0x64\", \"0x61\", \"0x74\"], {\n mime: \"video/quicktime\",\n extension: \"mov\",\n}, 0x4);\n// mov 'moov' TODO: find test file\nadd(\"mov\", [\"0x6D\", \"0x6F\", \"0x6F\", \"0x76\"], {\n mime: \"video/quicktime\",\n extension: \"mov\",\n}, 0x4);\n// move 'wide' TODO: find test file\nadd(\"mov\", [\"0x77\", \"0x69\", \"0x64\", \"0x65\"], {\n mime: \"video/quicktime\",\n extension: \"mov\",\n}, 0x4);\n// mov 'ftypqt'\nadd(\"mov\", [\"0x66\", \"0x74\", \"0x79\", \"0x70\", \"0x71\", \"0x74\"], {\n mime: \"video/quicktime\",\n extension: \"mov\",\n}, 0x4);\nadd(\"hl2demo\", [\"0x48\", \"0x4C\", \"0x32\", \"0x44\", \"0x45\", \"0x4D\", \"0x4F\"]);\nadd(\"txt\", [\"0xEF\", \"0xBB\", \"0xBF\"], {\n mime: \"text/plain; charset=UTF-8\",\n extension: \"txt\",\n});\nadd(\"txt\", [\"0xFF\", \"0xFE\"], {\n mime: \"text/plain; charset=UTF-16LE\",\n extension: \"txt\",\n});\nadd(\"txt\", [\"0xFE\", \"0xFF\"], {\n mime: \"text/plain; charset=UTF-16BE\",\n extension: \"txt\",\n});\nadd(\"txt\", [\"0xFF\", \"0xFE\", \"0x00\", \"0x00\"], {\n mime: \"text/plain; charset=UTF-32LE\",\n extension: \"txt\",\n});\nadd(\"txt\", [\"0x00\", \"0x00\", \"0xFE\", \"0xFF\"], {\n mime: \"text/plain; charset=UTF-32BE\",\n extension: \"txt\",\n});\nadd(\"SubRip\", [\"0x31\", \"0x0D\", \"0x0A\", \"0x30\", \"0x30\", \"0x3A\"], {\n mime: \"application/x-subrip\",\n extension: \"srt\",\n});\nadd(\"WebVTT\", [\n \"0xEF\",\n \"0xBB\",\n \"0xBF\",\n \"0x57\",\n \"0x45\",\n \"0x42\",\n \"0x56\",\n \"0x54\",\n \"0x54\",\n \"0x0A\",\n], {\n mime: \"text/vtt\",\n extension: \"vtt\",\n});\nadd(\"WebVTT\", [\n \"0xEF\",\n \"0xBB\",\n \"0xBF\",\n \"0x57\",\n \"0x45\",\n \"0x42\",\n \"0x56\",\n \"0x54\",\n \"0x54\",\n \"0x0D\",\n], {\n mime: \"text/vtt\",\n extension: \"vtt\",\n});\nadd(\"WebVTT\", [\n \"0xEF\",\n \"0xBB\",\n \"0xBF\",\n \"0x57\",\n \"0x45\",\n \"0x42\",\n \"0x56\",\n \"0x54\",\n \"0x54\",\n \"0x20\",\n], {\n mime: \"text/vtt\",\n extension: \"vtt\",\n});\nadd(\"WebVTT\", [\n \"0xEF\",\n \"0xBB\",\n \"0xBF\",\n \"0x57\",\n \"0x45\",\n \"0x42\",\n \"0x56\",\n \"0x54\",\n \"0x54\",\n \"0x09\",\n], {\n mime: \"text/vtt\",\n extension: \"vtt\",\n});\nadd(\"WebVTT\", [\"0x57\", \"0x45\", \"0x42\", \"0x56\", \"0x54\", \"0x54\", \"0x0A\"], {\n mime: \"text/vtt\",\n extension: \"vtt\",\n});\nadd(\"WebVTT\", [\"0x57\", \"0x45\", \"0x42\", \"0x56\", \"0x54\", \"0x54\", \"0x0D\"], {\n mime: \"text/vtt\",\n extension: \"vtt\",\n});\nadd(\"WebVTT\", [\"0x57\", \"0x45\", \"0x42\", \"0x56\", \"0x54\", \"0x54\", \"0x20\"], {\n mime: \"text/vtt\",\n extension: \"vtt\",\n});\nadd(\"WebVTT\", [\"0x57\", \"0x45\", \"0x42\", \"0x56\", \"0x54\", \"0x54\", \"0x09\"], {\n mime: \"text/vtt\",\n extension: \"vtt\",\n});\nadd(\"Json\", [\"0x7B\"], {\n mime: \"application/json\",\n extension: \".json\",\n});\nadd(\"Json\", [\"0x5B\"], {\n mime: \"application/json\",\n extension: \".json\",\n});\nadd(\"ELF\", [\"0x7F\", \"0x45\", \"0x4C\", \"0x46\"], {\n mime: \"application/x-executable\",\n extension: \".elf\",\n});\nadd(\"Mach-O\", [\"0xFE\", \"0xED\", \"0xFA\", \"0xC\"], {\n mime: \"application/x-mach-binary\",\n extension: \".o\",\n});\nadd(\"Mach-O\", [\"0xFE\", \"0xED\", \"0xFA\", \"0xCF\"], {\n mime: \"application/x-executable\",\n extension: \"elf\",\n});\nadd(\"EML\", [\"0x52\", \"0x65\", \"0x63\", \"0x65\", \"0x69\", \"0x76\", \"0x65\", \"0x64\", \"0x3A\"], {\n mime: \"message/rfc822\",\n extension: \".eml\",\n});\nadd(\"SVG\", [\"0x3c\", \"0x73\", \"0x76\", \"0x67\"], {\n mime: \"image/svg+xml\",\n extension: \"svg\",\n});\nexports.default = () => tree;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filetypeextension = exports.filetypemime = exports.filetypename = exports.filetypeinfo = void 0;\nconst pattern_tree_1 = __importDefault(require(\"./model/pattern-tree\"));\nconst toHex_1 = require(\"./model/toHex\");\nconst patternTree = pattern_tree_1.default();\nconst filetypeinfo = (bytes) => {\n let tree = patternTree;\n for (const k of Object.keys(tree.offset)) {\n const offset = toHex_1.fromHex(k);\n const offsetExceedsFile = offset >= bytes.length;\n if (offsetExceedsFile) {\n continue;\n }\n const node = patternTree.offset[k];\n const guessed = walkTree(offset, bytes, node);\n if (guessed.length > 0) {\n return guessed;\n }\n }\n if (tree.noOffset === null) {\n return [];\n }\n return walkTree(0, bytes, tree.noOffset);\n};\nexports.filetypeinfo = filetypeinfo;\nconst walkTree = (index, bytes, node) => {\n let step = node;\n let guessFile = [];\n while (true) {\n const currentByte = toHex_1.toHex(bytes[index]);\n if (step.bytes[\"?\"] && !step.bytes[currentByte]) {\n step = step.bytes[\"?\"];\n }\n else {\n step = step.bytes[currentByte];\n }\n if (!step) {\n return guessFile;\n }\n if (step && step.matches) {\n guessFile = step.matches.slice(0);\n }\n index += 1;\n }\n};\nexports.default = exports.filetypeinfo;\nconst filetypename = (bytes) => exports.filetypeinfo(bytes).map((e) => e.typename);\nexports.filetypename = filetypename;\nconst filetypemime = (bytes) => exports.filetypeinfo(bytes)\n .map((e) => (e.mime ? e.mime : null))\n .filter((x) => x !== null);\nexports.filetypemime = filetypemime;\nconst filetypeextension = (bytes) => exports.filetypeinfo(bytes)\n .map((e) => (e.extension ? e.extension : null))\n .filter((x) => x !== null);\nexports.filetypeextension = filetypeextension;\n","import { saveAs } from 'file-saver'\r\nimport { filetypeinfo } from 'magic-bytes.js'\r\nimport { useEffect } from 'haunted';\r\nimport { css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { formatBytes } from '../functions/format_bytes';\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\nimport type { GuessedFile } from 'magic-bytes.js/dist/model/tree';\r\n\r\nexport async function DataURIToBlob(dataUri: string): Promise {\r\n try {\r\n const res = await fetch(dataUri);\r\n let blob = await res.blob();\r\n const magic = await GetMagicNumber(blob);\r\n \r\n /**\r\n * Detect weird scenario where the images in the Northwind service are corrupted\r\n * See: https://blogs.sap.com/2017/02/08/displaying-images-in-sapui5-received-from-the-northwind-odata-service/\r\n */\r\n if (magic === '151c2f0') {\r\n blob = blob.slice(78)\r\n }\r\n\r\n // Attempt to get the real mimetype\r\n const fileType = await GuessMimeType(blob);\r\n if (fileType?.mime) {\r\n blob = new Blob([ blob ], { \r\n type: fileType.mime,\r\n })\r\n }\r\n //console.log('Successfully decoded blob! Magic:', magic, blob);\r\n return blob;\r\n }\r\n catch (err) {\r\n //console.error('Failed to decode blob: ', err);\r\n return undefined;\r\n }\r\n}\r\n\r\nexport async function GuessMimeType(blob: Blob) {\r\n try {\r\n const array = await blob.stream().getReader().read()\r\n if (array.value) {\r\n const guesses = filetypeinfo(array.value);\r\n return guesses.find(() => true);\r\n }\r\n }\r\n catch {}\r\n return undefined;\r\n}\r\n\r\nexport async function GetMagicNumber(blob: Blob): Promise {\r\n try {\r\n const header = blob.slice(0, 4);\r\n const array = await header.stream().getReader().read()\r\n let magic = '';\r\n if (array.value) {\r\n for(let i = 0; i < array.value.length; i++) {\r\n magic += array.value[i].toString(16)\r\n }\r\n }\r\n return magic && magic !== '' ? magic : undefined;\r\n }\r\n catch (err) {\r\n //console.error('Failed to extract magic number: ', err);\r\n return undefined;\r\n }\r\n}\r\n\r\n@customElement('ep-blob-downloader')\r\nexport class EPBlobDownloader extends LitHauntedElement {\r\n\r\n // #region Input\r\n @property()\r\n fileName?: string;\r\n @property({ attribute: false })\r\n base64Contents?: string;\r\n @property({ attribute: false })\r\n dataUri?: string;\r\n // #endregion\r\n\r\n // #region Internal Output\r\n @property({ attribute: false })\r\n blob?: Blob;\r\n\r\n @property({ attribute: false })\r\n fileType?: GuessedFile;\r\n\r\n get isDownloadReady(): boolean {\r\n return this.blob !== undefined;\r\n }\r\n // #endregion\r\n\r\n private _handleClick() {\r\n if (this.blob) {\r\n const baseName = this.fileName ?? 'download';\r\n const fileName = this.fileType?.extension ? `${baseName}.${this.fileType.extension}` : `${baseName}.bin`;\r\n saveAs(this.blob, fileName)\r\n }\r\n }\r\n\r\n render() {\r\n useEffect(() => {\r\n if (this.dataUri) {\r\n DataURIToBlob(this.dataUri).then(blob => this.blob = blob);\r\n }\r\n else if (this.base64Contents) {\r\n DataURIToBlob(`data:application/octet-stream;base64,${this.base64Contents}`).then(blob => this.blob = blob);\r\n }\r\n }, [this.base64Contents, this.dataUri])\r\n\r\n useEffect(() => {\r\n if (this.blob) {\r\n GuessMimeType(this.blob).then(guess => this.fileType = guess);\r\n }\r\n }, [this.blob])\r\n\r\n return html`\r\n \r\n 💾\r\n ${this.fileType?.extension ? `Download ${this.fileType.extension.toUpperCase()} file` : 'Download file'}\r\n \r\n ${this.isDownloadReady && this.blob ? html`${formatBytes(this.blob.size)}` : ''}\r\n \r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --color-text-muted: hsla(0, 0%, 15%, 0.7);\r\n font-family: var(--font-prose);\r\n }\r\n\r\n .file-size {\r\n font-size: 0.9em;\r\n font-style: italic;\r\n color: var(--color-text-muted);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-blob-downloader': EPBlobDownloader\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n@customElement('ep-form-control-checkbox')\r\nexport class EPFormControlCheckbox extends LitElement {\r\n\r\n render() {\r\n return html`\r\n
    \r\n \r\n \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --color-fg-muted: #656d76;\r\n font-family: var(--font-prose);\r\n display: inline-block;\r\n line-height: 1.3;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n .form-checkbox {\r\n padding: 0 5px;\r\n margin: 5px 0;\r\n vertical-align: middle;\r\n }\r\n\r\n [part=checkbox], ::slotted([slot=checkbox]) {\r\n display: flex;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n [part=note], ::slotted([slot=note]) {\r\n display: block;\r\n margin: 0;\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: var(--color-fg-muted);\r\n }\r\n\r\n [part=note] {\r\n margin-left: 23px;\r\n line-height: 1.3;\r\n }\r\n\r\n label {\r\n display: flex;\r\n align-items: center;\r\n /* min-height: 25px; */\r\n gap: 3px;\r\n font-size: 14px;\r\n font-weight: 600;\r\n line-height: 1.5;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-form-control-checkbox': EPFormControlCheckbox\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n@customElement('ep-form-control-textbox')\r\nexport class EPFormControlTextbox extends LitElement {\r\n\r\n render() {\r\n return html`\r\n
    \r\n \r\n \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --color-fg-muted: #656d76;\r\n font-family: var(--font-prose);\r\n display: inline-block;\r\n line-height: 1.3;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n .form-checkbox {\r\n padding: 0 5px;\r\n margin: 5px 0;\r\n vertical-align: middle;\r\n }\r\n\r\n [part=input], ::slotted([slot=input]) {\r\n /* width: 440px; */\r\n max-width: 100%;\r\n margin-right: 5px;\r\n /* background-color: #f6f8fa; */\r\n padding: 5px 12px;\r\n font-size: 14px;\r\n line-height: 20px;\r\n /* color: var(--color-fg-default); */\r\n vertical-align: middle;\r\n background-repeat: no-repeat;\r\n background-position: right 8px center;\r\n border: 1px solid #d0d7de;\r\n border-radius: 6px;\r\n box-shadow: inset 0 1px 0 rgba(208,215,222,0.2);\r\n transition: 80ms cubic-bezier(0.33, 1, 0.68, 1);\r\n transition-property: color,background-color,box-shadow,border-color;\r\n }\r\n ::slotted([slot=input]):focus {\r\n border-color: #0969da;\r\n outline: none;\r\n box-shadow: inset 0 0 0 1px rgba(0,0,0,0);\r\n }\r\n\r\n [part=note], ::slotted([slot=note]) {\r\n display: block;\r\n margin: 0;\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: var(--color-fg-muted);\r\n }\r\n\r\n [part=note] {\r\n line-height: 1.3;\r\n }\r\n\r\n label {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n /* min-height: 25px; */\r\n gap: 3px;\r\n font-size: 14px;\r\n font-weight: 600;\r\n line-height: 1.5;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-form-control-textbox': EPFormControlTextbox\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, query } from 'lit/decorators.js'\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport type { KeysForType, WritablePart } from '../../common';\r\n\r\n//keyof CSSStyleDeclaration\r\n\r\n//const MASKED_CLASS = `masked`;\r\n//const MASKED = `.${MASKED_CLASS}`;\r\nconst MASK = `input-mask`;\r\nconst MASK_CONTENT = `${MASK}--content`;\r\n\r\nconst strippedValue = (isCharsetPresent: boolean, value: string) =>\r\n isCharsetPresent ? value.replace(/\\W/g, \"\") : value.replace(/\\D/g, \"\");\r\n\r\nconst isInteger = (value: string) => !Number.isNaN(parseInt(value, 10));\r\n\r\nconst isLetter = (value: string) => (value ? value.match(/[A-Z]/i) : false);\r\n\r\n// Used defined values\r\nconst maskedNumber = \"_#dDmMyY9\";\r\nconst maskedLetter = \"A\";\r\n\r\n@customElement('ep-masked-input')\r\nexport class EPMaskedInput extends LitElement {\r\n\r\n @query('#mask')\r\n maskElement?: HTMLSpanElement;\r\n @query('slot[name=input]')\r\n slotElement?: HTMLSlotElement;\r\n get inputElement(): HTMLInputElement | undefined {\r\n return this.slottedElements.find(e => e instanceof HTMLInputElement) as HTMLInputElement;\r\n }\r\n get slottedElements(): Element[] {\r\n return this.slotElement?.assignedElements() ?? [];\r\n }\r\n\r\n get placeholder(): string | undefined {\r\n return this.inputElement?.dataset.placeholder;\r\n }\r\n set placeholder(val: string | undefined) {\r\n if (this.inputElement) this.inputElement.dataset.placeholder = val;\r\n }\r\n\r\n get value(): string {\r\n return this.inputElement?.value ?? '';\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n \r\n \r\n ${this.value}\r\n ${this.placeholder?.substring(this.value.length)}\r\n \r\n \r\n \r\n \r\n `;\r\n }\r\n\r\n // Does some setup every time the slot is changed\r\n private _handleSlotChange() {\r\n if (this.slottedElements.length === 0) {\r\n console.warn(`[${this.tagName}] Could not find an ${HTMLInputElement.name} slotted. This component will not activate until one is slotted.`);\r\n return;\r\n }\r\n const input = this.inputElement;\r\n console.log('slotted:', input);\r\n if (input === undefined) {\r\n console.warn(`[${this.tagName}] Could not find an ${HTMLInputElement.name} slotted. This component will not activate until exactly one is slotted.`);\r\n return;\r\n }\r\n else if (this.slottedElements.length > 1) {\r\n console.warn(`[${this.tagName}] Multiple elements are slotted. This can make tracking 'input' events ambiguous. This component will not activate until exactly one is slotted.`);\r\n return;\r\n }\r\n\r\n // Based on: https://github.com/uswds/uswds/blob/1b88ad075a7cd3f4eab8a5828244c44995931fe9/packages/usa-input-mask/src/index.js\r\n \r\n const placeholder = input.getAttribute('placeholder') ?? undefined;\r\n if (placeholder) {\r\n this.placeholder = placeholder;\r\n input.setAttribute('maxlength', `${this.placeholder.length}`);\r\n input.setAttribute('data-placeholder', this.placeholder);\r\n input.removeAttribute('placeholder');\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n this.requestUpdate();\r\n this._copyStylesToMask();\r\n }\r\n\r\n private _handleCurrentValue(el: HTMLInputElement) {\r\n const isCharsetPresent = el.dataset.charset;\r\n const placeholder = (isCharsetPresent || el.dataset.placeholder) ?? '';\r\n const { value } = el;\r\n const len = placeholder.length;\r\n let newValue = \"\";\r\n let i;\r\n let charIndex;\r\n\r\n const strippedVal = strippedValue(!!isCharsetPresent, value);\r\n\r\n for (i = 0, charIndex = 0; i < len; i += 1) {\r\n const isInt = isInteger(strippedVal[charIndex]);\r\n const isLet = isLetter(strippedVal[charIndex]);\r\n const matchesNumber = maskedNumber.indexOf(placeholder[i] as any) >= 0;\r\n const matchesLetter = maskedLetter.indexOf(placeholder[i] as any) >= 0;\r\n\r\n if (\r\n (matchesNumber && isInt) ||\r\n (isCharsetPresent && matchesLetter && isLet)\r\n ) {\r\n newValue += strippedVal[charIndex];\r\n charIndex += 1;\r\n } else if (\r\n (!isCharsetPresent && !isInt && matchesNumber) ||\r\n (isCharsetPresent &&\r\n ((matchesLetter && !isLet) || (matchesNumber && !isInt)))\r\n ) {\r\n return newValue;\r\n } else {\r\n newValue += placeholder[i];\r\n }\r\n // break if no characters left and the pattern is non-special character\r\n if (strippedVal[charIndex] === undefined) {\r\n break;\r\n }\r\n }\r\n\r\n return newValue;\r\n }\r\n\r\n /**\r\n * This isn't a super great solution for EVERY use case, but maybe it has potential\r\n */\r\n private _copyStylesToMask() {\r\n const mask = this.maskElement;\r\n const input = this.inputElement;\r\n if (!mask || !input) return;\r\n \r\n // Get styles of input element\r\n const styles = window.getComputedStyle(input);\r\n // Define the properties we want to copy over\r\n const props: KeysForType, string>[] = [\r\n 'fontFamily', 'fontSize', 'fontWeight', 'letterSpacing', 'lineHeight',\r\n 'padding', 'margin',\r\n // TODO: add more?\r\n ];\r\n // Copy over the props\r\n for(let p of props) {\r\n mask.style[p] = styles[p];\r\n }\r\n }\r\n\r\n private _handleInput(event: InputEvent) {\r\n //console.log('input', event);\r\n // Confirm we are talking to who we think we're talking to\r\n if (event.target instanceof HTMLInputElement && this.inputElement === event.target) {\r\n // Constrains value that user entered\r\n event.target.value = this._handleCurrentValue(event.target);\r\n // Updates the mask\r\n this.requestUpdate();\r\n }\r\n }\r\n\r\n private _handleChange(event: Event) {\r\n //console.log('change', event);\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n }\r\n\r\n .input-mask {\r\n display: block;\r\n position: relative;\r\n }\r\n\r\n .input-mask--content, .masked {\r\n background-color: transparent;\r\n /* padding: 0.5rem; */\r\n }\r\n\r\n .input-mask--content {\r\n border: 1px solid transparent;\r\n color: #757575;\r\n display: block;\r\n left: 0px;\r\n pointer-events: none;\r\n position: absolute;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .input-mask--content i {\r\n visibility: hidden;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-masked-input': EPMaskedInput\r\n }\r\n}\r\n","import { css, html } from 'lit'\r\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\r\nimport { styleMap } from 'lit/directives/style-map.js';\r\nimport { Ref, createRef, ref } from 'lit/directives/ref.js';\r\nimport { useEffect } from 'haunted'\r\nimport { debounce } from 'lodash'\r\nimport { LitHauntedElement } from '../../mixins/lit-haunted-element';\r\nimport type { Combobox as FluentCombobox } from '@fluentui/web-components/dist/dts/combobox/index'\r\n\r\nconst DEBUG: boolean = false\r\n\r\ntype Option = { value: string, label: string, disabled: boolean };\r\n\r\n/**\r\n * A segmented picker element element\r\n */\r\n@customElement('ep-select-searchable')\r\nexport class EPSelectSearchable extends LitHauntedElement {\r\n @state()\r\n searchQuery: string = ''\r\n\r\n @state()\r\n isLoading: boolean = false;\r\n\r\n @state()\r\n options: Option[] = [];\r\n\r\n @state()\r\n filteredOptions: Option[] = [];\r\n\r\n @property({ type: Number, attribute: 'limit', reflect: true })\r\n resultLimit: number = 100\r\n\r\n //#region Select Element mapping\r\n @queryAssignedElements({ slot: 'select', selector: 'select' })\r\n selectElements?: HTMLSelectElement[];\r\n get selectElement() { return this.selectElements?.[0]; }\r\n get value(): string {\r\n return this.comboboxRef.value?.firstSelectedOption?.value ?? '';\r\n }\r\n set value(newVal: string) {\r\n // TODO: is a MESS\r\n }\r\n //#endregion\r\n\r\n comboboxRef: Ref = createRef();\r\n private _handleInput: () => void = debounce(() => {\r\n if (this.comboboxRef.value) {\r\n const value = this.comboboxRef.value.control.value;\r\n //console.log('value', value)\r\n if (this.searchQuery === value) this.isLoading = false;\r\n this.searchQuery = value;\r\n }\r\n }, 250, { leading: true, trailing: true });\r\n\r\n private _handleChange() {\r\n // Must be an option that was selected\r\n const value = this.comboboxRef.value?.firstSelectedOption?.value;\r\n //console.log('change', value);\r\n if (value !== undefined && this.selectElement) {\r\n for(let option of this.selectElement.options) {\r\n if (option.value === value) {\r\n option.selected = true;\r\n break;\r\n }\r\n }\r\n const event = new CustomEvent('change')\r\n this.selectElement.dispatchEvent(event);\r\n }\r\n }\r\n\r\n render() {\r\n useEffect(() => {\r\n // Don't update multiple times\r\n if (this.selectElement && this.options.length === 0) {\r\n //console.log('select element', this.selectElement)\r\n this.options = Array.from(this.selectElement?.options ?? [])\r\n .map(opt => ({ value: opt.value, label: opt.label, disabled: opt.disabled }));\r\n // whatever is already selected, pre-select it\r\n const selectedOption = this.selectElement.selectedOptions[0];\r\n if (selectedOption && this.comboboxRef.value) {\r\n // combobox uses label instead of value ...\r\n //console.log('selectedOption?', selectedOption);\r\n this.searchQuery = selectedOption.label\r\n setTimeout(() => {\r\n if (this.comboboxRef.value)\r\n this.comboboxRef.value.value = selectedOption.label\r\n }, 0);\r\n }\r\n }\r\n if (this.selectElement === undefined) {\r\n this.style.display = 'none'\r\n }\r\n }, [this.selectElement])\r\n\r\n useEffect(() => {\r\n this.filteredOptions = this.options\r\n .filter(opt => \r\n opt.value.toLowerCase().includes(this.searchQuery.toLowerCase())\r\n || opt.label.toLowerCase().includes(this.searchQuery.toLowerCase())\r\n )\r\n .slice(0, this.resultLimit);\r\n this.isLoading = false;\r\n }, [this.searchQuery])\r\n\r\n return html`\r\n \r\n \r\n {\r\n this.isLoading = true;\r\n this._handleInput();\r\n }}\r\n @change=${this._handleChange}\r\n style=\"--max-height: 350px;\"\r\n >\r\n ${\r\n this.isLoading\r\n ? html``\r\n : html`🔎`\r\n }\r\n ${this.filteredOptions.map(opt => (\r\n html`\r\n \r\n ${opt.label}\r\n \r\n `\r\n ))}\r\n ${this.filteredOptions.length < this.options.length ? html`\r\n \r\n ${this.resultLimit === this.filteredOptions.length ? 'Limited to ' : ''}${this.filteredOptions.length.toLocaleString()} results, ${(this.options.length - this.filteredOptions.length).toLocaleString()} omitted\r\n \r\n ` : ''}\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Noto Sans\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\r\n line-height: 1.5;\r\n color: rgb(36, 41, 47);\r\n --row-height: 32px;\r\n --animation-duration: 150ms;\r\n\r\n --max-height: 320px;\r\n --max-width: 256px;\r\n }\r\n\r\n .searchable {\r\n font-size: 12px;\r\n font-weight: 600;\r\n font-style: italic;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n ep-nav-list-box {\r\n min-width: 192px;\r\n max-width: var(--max-width);\r\n //max-height: var(--max-height);\r\n height: auto;\r\n }\r\n\r\n [part=panel-header] {\r\n padding: 8px 16px 0;\r\n }\r\n\r\n [part=panel-header] h1 {\r\n font-weight: 600;\r\n margin: 0px;\r\n font-size: 14px;\r\n }\r\n\r\n [part=title], ::slotted([slot=title]) {\r\n font-weight: 600;\r\n margin: 0px;\r\n font-size: 14px;\r\n }\r\n\r\n [part=subtitle], ::slotted([slot=subtitle]) {\r\n font-weight: 400;\r\n margin: 0px;\r\n font-size: 12px;\r\n color: rgb(101, 109, 118);\r\n }\r\n\r\n [part=filter-list] {\r\n display: flex;\r\n overflow: hidden;\r\n flex-direction: column;\r\n height: auto;\r\n //max-height: var(--max-height);\r\n }\r\n\r\n [part=list] {\r\n max-height: var(--max-height);\r\n overflow-y: auto;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-select-searchable': EPSelectSearchable,\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\nexport type EPTooltipPlacement = 'top' | 'bottom' | 'left' | 'right'\r\nexport type EPTooltipTheme = 'dark' | 'light'\r\n\r\n/**\r\n * A \"chip\" element\r\n */\r\n@customElement('ep-tooltip')\r\nexport class EPTooltip extends LitElement {\r\n\r\n @property({ type: String, reflect: true })\r\n color: EPTooltipTheme = 'dark'\r\n\r\n // TODO: automatically pull placement from \r\n // TODO: allow other placements, like \"top-start\" and \"top-end\"\r\n @property({ type: String, reflect: true })\r\n placement: EPTooltipPlacement = 'top'\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n \r\n \r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --internal-max-width: var(--max-width, 160px);\r\n --arrow-size: 6px;\r\n --icon-size: 14px;\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n font-size: 12px;\r\n font-weight: 400;\r\n font-family: var(--font-prose);\r\n box-sizing: border-box;\r\n display: inline-flex;\r\n align-items: center;\r\n position: relative;\r\n min-block-size: 24px;\r\n max-inline-size: var(--internal-max-width);\r\n padding-inline: 9px;\r\n margin-bottom: var(--arrow-size);\r\n cursor: default;\r\n /* user-select: none; */\r\n word-break: break-word;\r\n border-radius: 4px;\r\n color: var(--color);\r\n background-color: var(--background);\r\n }\r\n\r\n :host([color=dark]) {\r\n --color: #ffffff;\r\n --background: #6D6D6D;\r\n }\r\n\r\n :host([color=light]) {\r\n --color: #24292F;\r\n --background: #ffffff;\r\n /* box-shadow: rgba(27, 31, 36, 0.12) 0px 1px 3px, rgba(66, 74, 83, 0.12) 0px 8px 24px; */\r\n filter: drop-shadow(rgba(27, 31, 36, 0.12) 0px 1px 3px) drop-shadow(rgba(66, 74, 83, 0.12) 0px 8px 24px);\r\n }\r\n\r\n #label {\r\n line-height: 1.3;\r\n margin-block: 5px;\r\n }\r\n\r\n #tip {\r\n background-color: var(--background);\r\n clip-path: polygon(0px -5%, 50% 100%, 100% -5%);\r\n height: var(--arrow-size);\r\n position: absolute;\r\n top: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: calc(2 * var(--arrow-size));\r\n }\r\n\r\n :host([placement=top]) #tip {\r\n top: 99%;\r\n }\r\n\r\n :host([placement=bottom]) #tip {\r\n bottom: 99%;\r\n clip-path: polygon(50% 0px, 0px 105%, 100% 105%);\r\n top: auto;\r\n }\r\n\r\n :host([placement=left]) #tip {\r\n clip-path: polygon(-5% 0px, -5% 100%, 100% 50%);\r\n top: 50%;\r\n left: 99%;\r\n transform: translateY(-50%);\r\n width: calc(1 * var(--arrow-size));\r\n height: calc(2 * var(--arrow-size));\r\n }\r\n\r\n :host([placement=right]) #tip {\r\n clip-path: polygon(0px 50%, 105% 100%, 105% 0px);\r\n top: 50%;\r\n left: calc(-1 * var(--arrow-size));\r\n right: 99%;\r\n transform: translateY(-50%);\r\n width: calc(1 * var(--arrow-size));\r\n height: calc(2 * var(--arrow-size));\r\n }\r\n\r\n ::slotted([slot=icon]) {\r\n align-self: flex-start;\r\n flex-shrink: 0;\r\n height: var(--icon-size);\r\n width: var(--icon-size);\r\n margin-block-start: 4px;\r\n margin-inline-start: -2px;\r\n margin-inline-end: 7px;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-tooltip': EPTooltip\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n@customElement('ep-text-form-label')\r\nexport class EPTextFormLabel extends LitElement {\r\n\r\n render() {\r\n return html`\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --color-fg-muted: #656d76;\r\n font-family: var(--font-prose);\r\n display: inline-block;\r\n line-height: 1.3;\r\n margin: 5px 0;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n label {\r\n padding: 0 5px;\r\n vertical-align: middle;\r\n /* min-height: 25px; */\r\n gap: 3px;\r\n font-size: 14px;\r\n font-weight: 600;\r\n line-height: 1.5;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-text-form-label': EPTextFormLabel\r\n }\r\n}\r\n","import { css, html } from 'lit'\r\n//import { useEffect } from 'haunted'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { LitHauntedElement } from '../../mixins/lit-haunted-element';\r\n\r\n/**\r\n * Inspired by: https://developer.apple.com/documentation/swiftui/font/textstyle\r\n */\r\nexport type EPTextStyle = 'body' | 'footnote' | 'caption' | 'headline'\r\nexport type EPTextColor = 'black' | 'muted'\r\nexport type EPTextFont = 'sans-serif' | 'serif' | 'monospace'\r\n\r\n//const embedColor = (color: EPTextColor, fallback: string = '#000000') => `var(--color-${color}, ${fallback})`;\r\nconst embedColor2 = (color: string) => `var(--color, var(--color-${color}, #000))`;\r\n\r\n@customElement('ep-text')\r\nexport class EPText extends LitHauntedElement {\r\n\r\n @property({ attribute: 'font' })\r\n fontFamily: EPTextFont = 'sans-serif';\r\n\r\n @property({ attribute: 'variant', reflect: false })\r\n variant: EPTextStyle = 'body'\r\n \r\n @property({ attribute: 'color', reflect: false })\r\n color: EPTextColor = 'black'\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-sans-serif: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --font-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, \"Cascadia Mono\", Consolas, Liberation Mono, monospace;\r\n --color-black: #24292F;\r\n --color-muted: #656d76;\r\n /* --color: transparent; */\r\n display: inline-block;\r\n font-family: var(--font-prose);\r\n color: var(--color-fg-muted);\r\n font-size: 1.0em;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n }\r\n\r\n .text-style.body {\r\n font-size: 1.0em;\r\n font-weight: 400;\r\n font-style: normal;\r\n line-height: 1.3;\r\n }\r\n\r\n .text-style.footnote {\r\n font-size: 0.9em;\r\n font-weight: 400;\r\n font-style: normal;\r\n line-height: 1.3;\r\n }\r\n\r\n .text-style.caption {\r\n font-size: 0.85em;\r\n font-weight: 500;\r\n font-style: normal;\r\n line-height: 1.3;\r\n }\r\n\r\n .text-style.headline {\r\n font-size: 1.1em;\r\n font-weight: 500;\r\n font-style: normal;\r\n line-height: 1.5;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-text': EPText\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\n//import { useEffect } from 'haunted'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\n@customElement('ep-code')\r\nexport class EPCode extends LitElement {\r\n\r\n @property({ type: Boolean, reflect: true })\r\n accent = false\r\n\r\n render() {\r\n return html`\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --font-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, \"Cascadia Mono\", Consolas, Liberation Mono, monospace;\r\n display: contents;\r\n }\r\n\r\n .code {\r\n background: #F6F8FA;\r\n border: 1px solid #E5E7EB;\r\n border-radius: 4px;\r\n padding: 3px 6px;\r\n font-size: 0.9em;\r\n }\r\n .code.accent {\r\n color: #d63384;\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-code': EPCode\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property, query } from 'lit/decorators.js'\r\nimport { getLongestTransitionMS } from '../functions/longestCSSTransition';\r\n\r\n/**\r\n * Clicking the \"Close\" button or in the empty \"overlay\" space will emit a bubbling `close` event that parents should respect\r\n */\r\n@customElement('ep-dialog')\r\nexport class EPDialog extends LitElement {\r\n\r\n // @property({ type: Boolean, attribute: 'show-actions', reflect: true })\r\n // public showActions: boolean = false;\r\n\r\n @property({ attribute: false })\r\n showActions: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'full-screen', reflect: true })\r\n public fullScreen: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'open', reflect: true })\r\n public open: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'shim', reflect: true })\r\n public shim: boolean = false;\r\n\r\n @property({ type: String, reflect: true })\r\n public width: string = '640px';\r\n\r\n @property({ type: String, reflect: true })\r\n public height: string = '480px';\r\n\r\n @query('slot[name=frame-actions]')\r\n frameActionsSlotElement?: HTMLSlotElement;\r\n\r\n @query('[part=control]')\r\n dialogElement?: HTMLDivElement;\r\n\r\n @query('[part=overlay]')\r\n overlayElement?: HTMLDivElement;\r\n\r\n render() {\r\n return html`\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close ✖\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n ${\r\n this.showActions\r\n ? html`\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n `\r\n : html`\r\n
    \r\n \r\n \r\n
    \r\n `\r\n }\r\n
    \r\n
    \r\n
    \r\n `\r\n }\r\n\r\n private _handleCloseClick(event: Event) {\r\n // compute the longest \"transition\" time spent on these 2 elements, so we can close the overlay after the animation has finished\r\n const delayForAnimation = Math.max(getLongestTransitionMS(this.dialogElement), getLongestTransitionMS(this.overlayElement));\r\n this.open = false;\r\n setTimeout(() => this.dispatchEvent(new Event('close', {bubbles: true, composed: true})), delayForAnimation);\r\n }\r\n\r\n private _handleFrameActionsSlotChange() {\r\n this.showActions = (this.frameActionsSlotElement?.assignedElements()?.length ?? 0) > 0;\r\n }\r\n\r\n private _blockEventPropagation(event: Event) {\r\n //console.log('attempt to block event: ', event.type, event);\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n private _handleSPOpened(event: Event) {\r\n //console.log('sp-opened?', event)\r\n this.open = true;\r\n }\r\n\r\n private _handleSPClosed(event: Event) {\r\n //console.log('sp-closed?', event)\r\n this.open = false;\r\n }\r\n\r\n public override connectedCallback(): void {\r\n super.connectedCallback();\r\n this.addEventListener('sp-opened', this._handleSPOpened);\r\n this.addEventListener('sp-closed', this._handleSPClosed);\r\n }\r\n\r\n public override disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.removeEventListener('sp-opened', this._handleSPOpened);\r\n this.removeEventListener('sp-closed', this._handleSPClosed);\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n --color-text-muted: hsla(0, 0%, 15%, 0.7);\r\n --transition-time-first: 0.3s 0s;\r\n --transition-time-second: 0.25s 0.16s;\r\n }\r\n\r\n [part=positioning-region][show-full-screen=true] {\r\n display: flex;\r\n justify-content: center;\r\n position: fixed;\r\n inset: 0px;\r\n overflow: auto;\r\n perspective: 1000px;\r\n }\r\n \r\n /* Just in case the positioning region is covering the screen while the dialog is closed, deny clicks on it. */\r\n [part=positioning-region][show-full-screen=true]:not([is-open]) {\r\n pointer-events: none;\r\n }\r\n\r\n [part=positioning-region][show-full-screen=false] {\r\n display: contents;\r\n }\r\n\r\n [part=positioning-region][show-full-screen=true] [part=overlay] {\r\n position: fixed;\r\n inset: 0px;\r\n background: rgba(0, 0, 0, 0.3);\r\n touch-action: none;\r\n }\r\n\r\n :not([is-open]) [part=overlay] {\r\n opacity: 0.0;\r\n transition: opacity var(--transition-time-second);\r\n }\r\n [is-open] [part=overlay] {\r\n opacity: 1.0;\r\n transition: opacity var(--transition-time-first);\r\n }\r\n\r\n [part=positioning-region][show-full-screen=false] [part=overlay] {\r\n display: none;\r\n }\r\n [part=control] {\r\n box-shadow: 0 0 2px rgba(0, 0, 0, 0.2), 0 calc(128 * 0.5px) calc((128 * 1px)) rgba(0, 0, 0, 0.24);\r\n margin-top: auto;\r\n margin-bottom: auto;\r\n border-radius: 8px;\r\n width: var(--dialog-width);\r\n height: var(--dialog-height);\r\n background: #fbfbfb;\r\n z-index: 1;\r\n border: 1px solid transparent;\r\n }\r\n [is-shimmed] [part=control] {\r\n box-shadow: none;\r\n margin: none;\r\n border: none;\r\n }\r\n\r\n [part=positioning-region]:not([is-open]) [part=control] {\r\n opacity: 0.0;\r\n transform: translateY(20px);\r\n transition: opacity var(--transition-time-first), transform var(--transition-time-first);\r\n }\r\n [is-open] [part=control] {\r\n opacity: 1.0;\r\n /* transform: translateY(0); */\r\n transition: opacity var(--transition-time-second), transform var(--transition-time-second);\r\n }\r\n\r\n .safety-zone {\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%;\r\n border-radius: 8px;\r\n box-sizing: border-box;\r\n }\r\n\r\n .frame-top, .frame-bottom {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0.25rem;\r\n margin: 0;\r\n }\r\n\r\n .frame-top .frame-top-title {\r\n flex-grow: 1;\r\n padding-left: 1rem;\r\n }\r\n\r\n .frame-bottom {\r\n justify-content: flex-end;\r\n gap: 5px;\r\n padding: 10px;\r\n }\r\n\r\n .modal-content {\r\n height: 100%;\r\n overflow: auto;\r\n /* scrollbar-gutter: stable both-edges; */\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-dialog': EPDialog\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { debounce } from 'lodash'\r\n\r\nconst INITIAL_DELAY = 2000;\r\n\r\n@customElement('ep-session-disclaimer')\r\nexport class EPSessionDisclaimer extends LitElement {\r\n\r\n @property({ type: String, reflect: true })\r\n key: string = 'default';\r\n\r\n @property({ type: Boolean, attribute: 'must-scroll-to-bottom', reflect: true })\r\n mustScrollToBottom: boolean = false;\r\n \r\n @property({ type: Boolean, attribute: 'allow-denial', reflect: true })\r\n allowDenial: boolean = false;\r\n\r\n @property({ attribute: false })\r\n hasScrolledToBottom: boolean = false;\r\n\r\n @property({ attribute: false })\r\n initialDelayHasPassed: boolean = false;\r\n\r\n get allowAccepting(): boolean {\r\n return this.mustScrollToBottom ? (this.hasScrolledToBottom && this.initialDelayHasPassed) : this.initialDelayHasPassed;\r\n }\r\n\r\n get denyCapable(): boolean {\r\n return history.length > 1;// && document.referrer !== '';\r\n }\r\n\r\n get accepted(): boolean {\r\n return sessionStorage.getItem(`ep-session-disclaimer.${this.key}`) === 'true';\r\n }\r\n set accepted(value: boolean) {\r\n sessionStorage.setItem(`ep-session-disclaimer.${this.key}`, `${value}`);\r\n this.requestUpdate();\r\n }\r\n\r\n private _handleAccept() {\r\n this.accepted = true;\r\n }\r\n\r\n private _handleDeny() {\r\n this.accepted = false;\r\n if (this.denyCapable) {\r\n window.history.back();\r\n }\r\n }\r\n\r\n @state()\r\n scrollingDiv?: HTMLElement;\r\n\r\n private _handleScroll = debounce(() => {\r\n const IS_SCROLLED_TO_BOTTOM = (\r\n this.scrollingDiv !== undefined\r\n && Math.ceil(this.scrollingDiv.scrollHeight - this.scrollingDiv.scrollTop) === this.scrollingDiv.clientHeight\r\n );\r\n // set it to true once and leave it alone\r\n this.hasScrolledToBottom = this.hasScrolledToBottom || IS_SCROLLED_TO_BOTTOM;\r\n }, 250, { leading: false, trailing: true })\r\n\r\n private _handleSlotChange(event: Event) {\r\n if (event.target instanceof HTMLElement) {\r\n // we need to save a copy\r\n const target = event.target;\r\n // let the rest of the page to load or something\r\n setTimeout(() => {\r\n // specifically chosen for , might break in the future\r\n const scrollingDiv = target.parentElement?.assignedSlot?.parentElement;\r\n //console.log('scrollingDiv', scrollingDiv)\r\n if (scrollingDiv instanceof HTMLElement) {\r\n this.scrollingDiv = scrollingDiv;\r\n scrollingDiv.removeEventListener('scroll', this._handleScroll);\r\n scrollingDiv.addEventListener('scroll', this._handleScroll)\r\n this._handleScroll();\r\n }\r\n }, 250);\r\n }\r\n }\r\n\r\n protected firstUpdated() {\r\n setTimeout(() => {\r\n this.initialDelayHasPassed = true;\r\n }, INITIAL_DELAY);\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n

    \r\n Test Title\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n Accept\r\n \r\n ${\r\n this.allowDenial && this.denyCapable\r\n ? html`\r\n \r\n Deny\r\n \r\n `\r\n : ''\r\n }\r\n
    \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-session-disclaimer': EPSessionDisclaimer\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\nconst DELAY = 750;\r\n\r\n/**\r\n * An element specifically for being more explicit and reusable than
    \r\n */\r\n@customElement('ep-clipboard-copy')\r\nexport class EPClipboardCopy extends LitElement {\r\n\r\n @property({ reflect: true })\r\n value: string = ''\r\n @property({ attribute: 'preview-value', type: Boolean, reflect: true })\r\n previewValue: boolean = false\r\n // @query('span[part=particle]')\r\n // particle?: HTMLSpanElement;\r\n @property({ attribute: false })\r\n timeoutID?: number;\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n \r\n \r\n \r\n ${\r\n this.timeoutID === undefined\r\n ? (\r\n this.previewValue\r\n ? html`\r\n Click to copy: ${this.value}\r\n `\r\n : html`\r\n Click to copy\r\n `\r\n )\r\n : html`\r\n \r\n Copied to clipboard\r\n `\r\n }\r\n \r\n \r\n \r\n \r\n `\r\n }\r\n\r\n private _handleCopy() {\r\n console.log('timer?', this.timeoutID);\r\n this.timeoutID = window.setTimeout(() => {\r\n if (this.timeoutID !== undefined) {\r\n\r\n console.log('resetting')\r\n this.timeoutID = undefined;\r\n }\r\n }, DELAY)\r\n // if (this.particle) {\r\n // //this.particle.style.opacity = '1.0';\r\n // this.particle.getAnimations().forEach(anim => anim.cancel())\r\n // this.particle.animate([\r\n // {\r\n // opacity: '1.0',\r\n // transform: 'none'\r\n // },\r\n // {\r\n // opacity: '0.0',\r\n // transform: 'translate3d(0, -100%, 0)'\r\n // }\r\n // ], {\r\n // duration: DELAY\r\n // })\r\n // }\r\n //console.log('copied!', this.particle)\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n ::slotted(*), [part=content] {\r\n text-decoration: underline dotted rgba(0,0,0,0.4);\r\n text-underline-offset: 5px;\r\n cursor: pointer;\r\n transition: text-decoration-color 250ms;\r\n }\r\n ::slotted(*:hover), [part=content]:hover {\r\n text-decoration-color: rgba(0,0,0,0.2);\r\n }\r\n\r\n [part=particle] {\r\n color: red;\r\n position: absolute;\r\n transition: opacity 500ms;\r\n opacity: 0;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-clipboard-copy': EPClipboardCopy\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\n/**\r\n * A button, currently only used for the Review Timer. The most frequently used button for ePermits WC is .\r\n */\r\n@customElement('ep-button')\r\nexport class EPButton extends LitElement {\r\n\r\n @property({ type: Boolean, reflect: true })\r\n disabled: boolean = false;\r\n\r\n override connectedCallback() {\r\n super.connectedCallback(); \r\n // Use \"capture\" because we want this Event handler to be called before any others set above it.\r\n // Otherwise, we can't cancel the event in time when the button is disabled!\r\n this.addEventListener('click', this._handleClick, { capture: true });\r\n }\r\n\r\n override disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.removeEventListener('click', this._handleClick, { capture: true });\r\n }\r\n\r\n private _handleClick(event: MouseEvent) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n --container-height: 40px;\r\n --padding-horizontal: 24px;\r\n --border-radius: 9999px;\r\n --font: 500 0.875rem / 1.25rem var(--font-prose);\r\n --color: rgba(255,255,255,0.8);\r\n --color-disabled: rgba(0, 0, 0, 0.26);\r\n --background-color: rgb(49, 56, 133);\r\n --background-color-disabled: rgba(0, 0, 0, 0.12);\r\n --background-color-hover: rgb(255,255,255);\r\n --background-color-interact: rgb(255,255,255);\r\n font-weight: 500;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n font-family: var(--font-prose);\r\n }\r\n\r\n /* Base styles */\r\n .button {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n min-inline-size: 64px;\r\n border: none;\r\n outline: none;\r\n user-select: none;\r\n -webkit-appearance: none;\r\n vertical-align: middle;\r\n background: rgba(0,0,0,0);\r\n text-decoration: none;\r\n inline-size: 100%;\r\n position: relative;\r\n z-index: 0;\r\n block-size: var(--container-height);\r\n font-weight: inherit;\r\n font-size: inherit;\r\n line-height: inherit;\r\n font-family: inherit;\r\n color: var(--color);\r\n padding-inline-start: var(--padding-horizontal);\r\n padding-inline-end: var(--padding-horizontal);\r\n border-radius: var(--border-radius);\r\n gap: 8px;\r\n /* background-color: var(--background-color); */\r\n transition: opacity 15ms linear, background-color 15ms linear, transform 125ms;\r\n }\r\n .button:not(:disabled) {\r\n cursor: pointer;\r\n }\r\n .button:disabled {\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n }\r\n\r\n /* Background color */\r\n .button::before {\r\n z-index: -2;\r\n background-color: var(--background-color);\r\n border-radius: inherit;\r\n content: \"\";\r\n inset: 0;\r\n position: absolute;\r\n }\r\n .button::after {\r\n z-index: -1;\r\n background-color: var(--background-color-hover);\r\n opacity: 0.0;\r\n border-radius: inherit;\r\n content: \"\";\r\n inset: 0;\r\n position: absolute;\r\n transition: opacity 280ms linear, background-color 280ms linear;\r\n }\r\n .button:not(:disabled)hover::after {\r\n background-color: var(--background-color-hover);\r\n /* opacity: 0.1; */\r\n }\r\n .button:not(:disabled):active::after {\r\n background-color: var(--background-color-interact);\r\n /* opacity: 0.2; */\r\n }\r\n .button:disabled {\r\n color: var(--color-disabled);\r\n }\r\n .button:disabled::before {\r\n background-color: var(--background-color-disabled);\r\n }\r\n\r\n /* Interactivity */\r\n .button:not(:disabled):hover {\r\n transform: scale(1.05);\r\n }\r\n .button:not(:disabled):active {\r\n transform: scale(0.925);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-button': EPButton\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\n@customElement('ep-absolute-time')\r\nexport class EPAbsoluteTime extends LitElement {\r\n\r\n @property({ attribute: 'datetime', reflect: true })\r\n datetimeString: string = new Date().toISOString();\r\n\r\n @property({ attribute: 'date-style', reflect: true })\r\n dateStyle: Intl.DateTimeFormatOptions['dateStyle'] = 'short';\r\n\r\n @property({ attribute: 'time-style', reflect: true })\r\n timeStyle: Intl.DateTimeFormatOptions['timeStyle'] = 'short';\r\n\r\n @property({ attribute: 'day-period', reflect: true })\r\n dayPeriod: Intl.DateTimeFormatOptions['dayPeriod'];\r\n\r\n get datetime(): Date {\r\n return new Date(this.datetimeString);\r\n }\r\n\r\n render() {\r\n const dtf = new Intl.DateTimeFormat('en-US', {\r\n dateStyle: this.dateStyle,\r\n timeStyle: this.timeStyle,\r\n dayPeriod: this.dayPeriod,\r\n // TODO: add more options?\r\n });\r\n\r\n return html`${dtf.format(this.datetime)}`;\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-absolute-time': EPAbsoluteTime\r\n }\r\n}\r\n","const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'KiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nexport default function prettyBytes(number, options) {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\tspace: true,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tconst separator = options.space ? ' ' : '';\n\n\tif (options.signed && number === 0) {\n\t\treturn ` 0${separator}${UNITS[0]}`;\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tlet localeOptions;\n\n\tif (options.minimumFractionDigits !== undefined) {\n\t\tlocaleOptions = {minimumFractionDigits: options.minimumFractionDigits};\n\t}\n\n\tif (options.maximumFractionDigits !== undefined) {\n\t\tlocaleOptions = {maximumFractionDigits: options.maximumFractionDigits, ...localeOptions};\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\treturn prefix + numberString + separator + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n\tnumber /= (options.binary ? 1024 : 1000) ** exponent;\n\n\tif (!localeOptions) {\n\t\tnumber = number.toPrecision(3);\n\t}\n\n\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + separator + unit;\n}\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport prettyBytes from 'pretty-bytes';\r\n\r\n@customElement('ep-file-size')\r\nexport class EPFileSize extends LitElement {\r\n\r\n @property({ type: Number, attribute: 'size', reflect: true })\r\n sizeBytes: number = 0.0;\r\n\r\n render() {\r\n return html`\r\n ${prettyBytes(this.sizeBytes)}\r\n `\r\n }\r\n\r\n /* We don't want to use the ShadowDOM for such a simple element */\r\n protected override createRenderRoot() {\r\n return this;\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-file-size': EPFileSize\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n@customElement('ep-split-layout')\r\nexport class EPSplitLayout extends LitElement {\r\n\r\n render() {\r\n return html`\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n --root-gap: 1.5rem;\r\n --sidebar-position-top: 1.5rem;\r\n --sidebar-position-left: 0;\r\n --sidebar-height: calc(100vh - 6rem);\r\n --root-template-areas: \"sidebar main\";\r\n --root-template-columns: 1fr 5fr;\r\n }\r\n\r\n [part=root] {\r\n display: grid;\r\n grid-template-areas: var(--root-template-areas);\r\n grid-template-columns: var(--root-template-columns);\r\n gap: var(--root-gap);\r\n }\r\n \r\n [part=sidebar] {\r\n grid-area: sidebar;\r\n position: sticky;\r\n top: var(--sidebar-position-top);\r\n left: var(--sidebar-position-left);\r\n display: block;\r\n height: var(--sidebar-height);\r\n overflow-y: auto;\r\n }\r\n\r\n [part=main] {\r\n grid-area: main;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-split-layout': EPSplitLayout\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n@customElement('ep-timeline')\r\nexport class EPTimeline extends LitElement {\r\n\r\n render() {\r\n return html`\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n --timeline-padding: 60px;\r\n --border-muted: rgb(216, 222, 228);\r\n --border-default: rgb(208, 215, 222);\r\n --badge-background: rgb(234, 238, 242);\r\n --canvas-subtle: rgb(246, 248, 250);\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n font-family: var(--font-prose);\r\n }\r\n\r\n .timeline-wrapper {\r\n padding-left: var(--timeline-padding);\r\n }\r\n\r\n .timeline {\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-timeline': EPTimeline\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property, query } from 'lit/decorators.js'\r\n\r\n@customElement('ep-timeline-item')\r\nexport class EPTimelineItem extends LitElement {\r\n\r\n @property({ attribute: false })\r\n showBadge: boolean = false;\r\n\r\n @property({ attribute: false })\r\n showAvatar: boolean = false;\r\n\r\n @query('slot[name=badge]')\r\n badgeSlot?: HTMLSlotElement;\r\n\r\n @query('slot[name=avatar]')\r\n avatarSlot?: HTMLSlotElement;\r\n\r\n private _handleBadgeSlotChange(event: Event) {\r\n this.showBadge = (this.badgeSlot?.assignedNodes()?.length ?? 0) > 0;\r\n }\r\n\r\n private _handleAvatarSlotChange(event: Event) {\r\n this.showAvatar = (this.avatarSlot?.assignedNodes()?.length ?? 0) > 0;;\r\n }\r\n \r\n render() {\r\n return html`\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n --text-default: rgb(31, 35, 40);\r\n --text-muted: rgb(101, 109, 118);\r\n --border-muted: rgb(216, 222, 228);\r\n --border-default: rgb(208, 215, 222);\r\n --badge-background: rgb(234, 238, 242);\r\n --canvas-subtle: rgb(246, 248, 250);\r\n }\r\n\r\n .timeline-item {\r\n display: flex;\r\n position: relative;\r\n padding: 16px 0px;\r\n margin-left: 16px;\r\n }\r\n\r\n .timeline-item::before {\r\n position: absolute;\r\n top: 0px;\r\n bottom: 0px;\r\n left: 0px;\r\n display: block;\r\n width: 2px;\r\n content: \"\";\r\n background-color: var(--border-muted);\r\n }\r\n\r\n .timeline-item-badge {\r\n position: relative;\r\n z-index: 1;\r\n }\r\n\r\n .timeline-item-avatar {\r\n left: -72px;\r\n position: absolute;\r\n z-index: 1;\r\n }\r\n\r\n .timeline-item-badge * {\r\n margin-right: 8px;\r\n margin-left: -15px;\r\n color: var(--text-muted);\r\n background-color: var(--badge-background);\r\n display: flex;\r\n overflow: hidden;\r\n width: 32px;\r\n height: 32px;\r\n flex-shrink: 0;\r\n -moz-box-align: center;\r\n align-items: center;\r\n -moz-box-pack: center;\r\n justify-content: center;\r\n border-radius: 50%;\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: rgb(255, 255, 255);\r\n }\r\n\r\n .timeline-item-body {\r\n min-width: 0px;\r\n max-width: 100%;\r\n margin-top: 4px;\r\n color: var(--text-muted);\r\n flex: 1 1 auto;\r\n font-size: 14px;\r\n line-height: 1.5;\r\n }\r\n\r\n ::slotted(strong) {\r\n color: var(--text-default);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-timeline-item': EPTimelineItem\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property, query } from 'lit/decorators.js'\r\n\r\n@customElement('ep-timeline-comment')\r\nexport class EPTimelineComment extends LitElement {\r\n\r\n @property({ attribute: false })\r\n showAttachments: boolean = false;\r\n\r\n @query('slot[name=attachments]')\r\n attachmentsSlot?: HTMLSlotElement;\r\n\r\n private _handleAttachmentsSlotChange(event: Event) {\r\n this.showAttachments = (this.attachmentsSlot?.assignedNodes()?.length ?? 0) > 0;\r\n }\r\n\r\n render() {\r\n return html`\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n --text-default: rgb(31, 35, 40);\r\n --text-muted: rgb(101, 109, 118);\r\n --border-muted: rgb(216, 222, 228);\r\n --border-default: rgb(208, 215, 222);\r\n --badge-background: rgb(234, 238, 242);\r\n --canvas-subtle: rgb(246, 248, 250);\r\n }\r\n\r\n .timeline-item-body-comment {\r\n position: relative;\r\n color: #000000;\r\n background-color: #ffffff;\r\n border: 1px solid var(--border-default);\r\n border-radius: 6px;\r\n margin-left: -16px;\r\n }\r\n\r\n .timeline-item-body-comment::after {\r\n display: block;\r\n margin-left: 2px;\r\n background-color: #ffffff;\r\n background-image: linear-gradient(var(--canvas-subtle), var(--canvas-subtle));\r\n }\r\n\r\n .timeline-item-body-comment::after, .timeline-item-body-comment::before {\r\n position: absolute;\r\n top: 11px;\r\n right: 100%;\r\n left: -8px;\r\n display: block;\r\n width: 8px;\r\n height: 16px;\r\n pointer-events: none;\r\n content: \" \";\r\n clip-path: polygon(0 50%, 100% 0, 100% 100%);\r\n }\r\n\r\n .timeline-item-body-comment::before {\r\n background-color: var(--border-default);\r\n }\r\n\r\n .timeline-comment-header {\r\n display: flex;\r\n align-items: center;\r\n padding-right: 16px;\r\n padding-left: 16px;\r\n color: var(--text-muted);\r\n /* flex-direction: row-reverse; */\r\n background-color: var(--canvas-subtle);\r\n border-bottom: 1px solid var(--border-default);\r\n border-top-left-radius: 6px;\r\n border-top-right-radius: 6px;\r\n /* */\r\n min-height: 36px;\r\n --chip-height: 18px;\r\n }\r\n\r\n .timeline-comment-header h3 {\r\n flex: 1 1 auto;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n font-weight: 400;\r\n }\r\n\r\n ::slotted([slot=header]) {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n /* color: var(--text-muted); */\r\n }\r\n ::slotted([slot=header]>strong) {\r\n color: red;\r\n }\r\n\r\n .timeline-comment-body-message {\r\n padding: 16px;\r\n }\r\n \r\n .timeline-comment-body-message > :first-child {\r\n margin-top: 0;\r\n }\r\n\r\n .timeline-comment-body-message > :last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n ::slotted([slot=body]) {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n }\r\n\r\n .timeline-comment-body-attachments {\r\n display: flex;\r\n flex-wrap: wrap;\r\n padding-left: 16px;\r\n padding-bottom: 16px;\r\n gap: 8px;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-timeline-comment': EPTimelineComment\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n@customElement('ep-timeline-comment-header')\r\nexport class EPTimelineCommentHeader extends LitElement {\r\n\r\n render() {\r\n return html`\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n --text-default: rgb(31, 35, 40);\r\n --text-muted: rgb(101, 109, 118);\r\n --border-muted: rgb(216, 222, 228);\r\n --border-default: rgb(208, 215, 222);\r\n --badge-background: rgb(234, 238, 242);\r\n --canvas-subtle: rgb(246, 248, 250);\r\n }\r\n\r\n ::slotted([slot=header]) {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n /* color: var(--text-muted); */\r\n }\r\n ::slotted(strong) {\r\n color: var(--text-default);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-timeline-comment-header': EPTimelineCommentHeader\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport type { TemplateResult } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport '@github/clipboard-copy-element'\r\nimport { isNullishOrWhitespace } from '../../functions/nullish';\r\n\r\ntype UserClassification = 'internal' | 'external' | 'goodcontact' | 'organization';\r\n\r\n@customElement('ep-timeline-user')\r\nexport class EPTimelineUser extends LitElement {\r\n\r\n @property({ reflect: true })\r\n name: string = \"\";\r\n\r\n @property({ attribute: 'acting-role', reflect: true })\r\n actingRole?: string;\r\n\r\n @property({ reflect: true })\r\n department?: string;\r\n\r\n @property({ reflect: true })\r\n email?: string;\r\n\r\n @property({ reflect: true })\r\n phone?: string;\r\n\r\n @property({ reflect: true })\r\n type?: UserClassification;\r\n\r\n private renderRoleDepartment() {\r\n if (!isNullishOrWhitespace(this.actingRole) && !isNullishOrWhitespace(this.department)) {\r\n return html`\r\n ${this.actingRole} for ${this.department}\r\n `\r\n }\r\n else if (!isNullishOrWhitespace(this.actingRole)) {\r\n return html`\r\n ${this.actingRole}\r\n `\r\n }\r\n else if (!isNullishOrWhitespace(this.department)) {\r\n return html`\r\n Representing: ${this.department}\r\n `\r\n }\r\n return html``\r\n }\r\n\r\n private renderCopyableText(value: string, displayText?: string) {\r\n const disp = displayText ?? value;\r\n\r\n const handleCopy = (event: CustomEvent) => {\r\n if (event.target instanceof HTMLElement) {\r\n const parent = event.target.closest('.clipboardable');\r\n if (parent instanceof HTMLElement && !parent.classList.contains('copied')) {\r\n parent.classList.add('copied');\r\n setTimeout(() => {\r\n parent.classList.remove('copied')\r\n }, 1000);\r\n //console.log('copy?', parent);\r\n } \r\n }\r\n }\r\n \r\n return html`\r\n \r\n \r\n ${disp}\r\n \r\n \r\n `\r\n }\r\n\r\n private renderContactInfo() {\r\n const classification: Record, TemplateResult> = {\r\n internal: html`🏛️ Internal User`,\r\n external: html`🌎 External User`,\r\n goodcontact: html`📇 Good Contact`,\r\n organization: html`🏢 Organization`,\r\n }\r\n\r\n return html`\r\n
    \r\n ${ isNullishOrWhitespace(this.email) ? '' : html`📧 ${this.renderCopyableText(this.email)}` }\r\n ${ isNullishOrWhitespace(this.phone) ? '' : html`📞 ${this.renderCopyableText(this.phone)}` }\r\n ${\r\n this.type !== undefined\r\n ? classification[this.type.toLowerCase() as keyof Record]\r\n : ''\r\n }\r\n
    \r\n `\r\n }\r\n\r\n private renderTooltip() {\r\n return html`\r\n
    \r\n ${this.name}\r\n
    \r\n ${this.renderRoleDepartment()}\r\n
    \r\n ${this.renderContactInfo()}\r\n
    \r\n `\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n \r\n ${this.renderTooltip()}\r\n \r\n \r\n ${this.renderTooltip()}\r\n \r\n \r\n `\r\n } \r\n\r\n // \r\n\r\n static styles = css`\r\n :host {\r\n display: inline;\r\n --text-default: rgb(31, 35, 40);\r\n --text-muted: rgb(101, 109, 118);\r\n --border-muted: rgb(216, 222, 228);\r\n --border-default: rgb(208, 215, 222);\r\n --badge-background: rgb(234, 238, 242);\r\n --canvas-subtle: rgb(246, 248, 250);\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n font-family: var(--font-prose);\r\n color: var(--text-default);\r\n }\r\n\r\n .tooltip {\r\n display: flex;\r\n flex-direction: column;\r\n color: var(--text-default);\r\n }\r\n\r\n strong {\r\n font-weight: 600;\r\n }\r\n\r\n .deptRole, .contact-info {\r\n color: var(--text-muted);\r\n }\r\n\r\n .contact-info {\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n [part=trigger]:hover, .clipboardable:hover {\r\n text-decoration: 1px dashed underline;\r\n text-underline-offset: 2px;\r\n cursor: pointer;\r\n }\r\n\r\n @keyframes rise {\r\n from {\r\n transform: translateY(-25%);\r\n opacity: 1.0;\r\n }\r\n to {\r\n transform: translateY(-125%);\r\n opacity: 0.0;\r\n }\r\n }\r\n .clipboardable.copied::after {\r\n content: 'Copied ✔';\r\n color: green;\r\n position: absolute;\r\n right: calc(50% - 57px/2);\r\n user-select: none;\r\n animation: 1000ms rise;\r\n }\r\n .clipboardable:active {\r\n color: green;\r\n }\r\n .clipboardable clipboard-copy:focus-visible {\r\n outline: none;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-timeline-user': EPTimelineUser\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement } from 'lit/decorators.js'\r\n\r\n@customElement('ep-timeline-divider')\r\nexport class EPTimelineDivider extends LitElement {\r\n\r\n render() {\r\n return html``\r\n }\r\n \r\n // protected override createRenderRoot(): Element | ShadowRoot {\r\n // return this;\r\n // }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n margin: 0;\r\n border: 0;\r\n border-top: 2px solid var(--border-muted);\r\n /* margin-bottom: 10px; */\r\n --text-default: rgb(31, 35, 40);\r\n --text-muted: rgb(101, 109, 118);\r\n --border-muted: rgb(216, 222, 228);\r\n --border-default: rgb(208, 215, 222);\r\n --badge-background: rgb(234, 238, 242);\r\n --canvas-subtle: rgb(246, 248, 250);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-timeline-divider': EPTimelineDivider\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport type { Property } from 'csstype'\r\nimport chroma from 'chroma-js'\r\nimport type { Color, Scale } from 'chroma-js'\r\n\r\nconst COLOR_DOMAIN = [1,6,12]\r\nconst FOREGROUND_INDEX = 3;\r\nconst BACKGROUND_INDEX = 10;\r\n\r\n@customElement('ep-avatar')\r\nexport class EPAvatar extends LitElement {\r\n\r\n @property({ type: Number, reflect: true })\r\n size: number = 32;\r\n\r\n @property({ type: Boolean, reflect: true })\r\n active: boolean = false;\r\n\r\n @property({ reflect: true })\r\n initials?: string;\r\n\r\n get missingInitials(): boolean {\r\n return this.initials === undefined || `${this.initials}`.length === 0;\r\n }\r\n\r\n @property({ reflect: true })\r\n color: Property.Color = 'slategray';\r\n\r\n @property({ attribute: 'background-color', reflect: true })\r\n providedBackgroundColor?: Property.Color = undefined;\r\n\r\n @property({ reflect: true })\r\n image?: string;\r\n\r\n get fontSizeVariable(): string {\r\n if (this.size < 28) return '--font-size-100';\r\n if (this.size < 32) return '--font-size-200';\r\n if (this.size < 48) return '--font-size-300';\r\n if (this.size < 64) return '--font-size-400';\r\n if (this.size < 120) return '--font-size-500';\r\n return '--font-size-600';\r\n }\r\n\r\n get colorScale(): Scale {\r\n const primary = this.primary;\r\n // TODO: play with boundaries so that colors look the best\r\n const light = chroma('#fff');\r\n //const light = primary.brighten(3.0).desaturate(1.2);\r\n const dark = chroma('#000');\r\n //const dark = primary.darken(3.0);\r\n return chroma.scale([dark, primary, light])\r\n //.correctLightness()\r\n .domain(COLOR_DOMAIN);\r\n }\r\n\r\n get primary() {\r\n try {\r\n return chroma(this.color);\r\n }\r\n catch {\r\n return chroma('#000');\r\n }\r\n }\r\n\r\n get chroma() {\r\n return chroma(this.color);\r\n }\r\n\r\n get chromaBG() {\r\n return chroma(this.backgroundColor);\r\n }\r\n\r\n get foregroundColor(): Property.Color {\r\n if (this.providedBackgroundColor !== undefined) return this.color;\r\n // const temp = this.primary;\r\n // return temp.luminance(0.05).css();\r\n const fg = this.colorScale(FOREGROUND_INDEX);\r\n return fg.css();\r\n }\r\n\r\n get backgroundColor(): Property.Color {\r\n if (this.providedBackgroundColor !== undefined) return this.providedBackgroundColor;\r\n // const temp = this.primary;\r\n // return temp.luminance(0.6).css(); // .set('hsl.s', '0.53').set('hsl.l', '0.79')\r\n const bg = this.colorScale(BACKGROUND_INDEX);\r\n return bg.css();\r\n }\r\n\r\n testColorSpread() {\r\n let primary: Color;\r\n try {\r\n primary = chroma(this.color);\r\n }\r\n catch {\r\n primary = chroma('#000');\r\n }\r\n const scale = this.colorScale;\r\n for(let i = COLOR_DOMAIN[0]; i <= COLOR_DOMAIN[COLOR_DOMAIN.length-1]; i++) {\r\n const t = scale(i);\r\n let note = '';\r\n if (primary.css() === t.css()) note += '(Primary)';\r\n if (i === FOREGROUND_INDEX) note += '(Foreground)';\r\n if (i === BACKGROUND_INDEX) note += '(Background)';\r\n console.log(`%cColor ${i} (${t.hex()}) ${note}`, `background: ${t.css()};`)\r\n }\r\n }\r\n\r\n render() {\r\n // window.chroma = chroma;\r\n // this.testColorSpread();\r\n return html`\r\n \r\n ${this.initials}\r\n \r\n \r\n \r\n \r\n \r\n ${\r\n this.image !== undefined\r\n ? html`\r\n \r\n `\r\n : ''\r\n }\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n --font-family: 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif;\r\n --font-size: var(--font-size-300);\r\n --font-size-100: 10px;\r\n --font-size-200: 12px;\r\n --font-size-300: 14px;\r\n --font-size-400: 16px;\r\n --font-size-500: 20px;\r\n --font-size-600: 24px;\r\n --avatar-ring-width: 2px;\r\n --avatar-ring-color: #0f6cbd;\r\n --foreground-color: #616161;\r\n --background-color: #e6e6e6;\r\n /* shade50: '#200205',\r\n shade40: '#3b0509',\r\n shade30: '#6e0811',\r\n shade20: '#960b18',\r\n shade10: '#b10e1c',\r\n primary: '#c50f1f',\r\n tint10: '#cc2635',\r\n tint20: '#d33f4c',\r\n tint30: '#dc626d',\r\n tint40: '#eeacb2',\r\n tint50: '#f6d1d5',\r\n tint60: '#fdf3f4', */\r\n }\r\n\r\n .avatar[data-active]::before {\r\n content: \"\";\r\n }\r\n\r\n .avatar::before {\r\n color: var(--avatar-ring-color);\r\n border-style: solid;\r\n border-width: var(--avatar-ring-width);\r\n }\r\n\r\n .avatar::before, .avatar::after {\r\n position: absolute;\r\n inset: 0px;\r\n z-index: -1;\r\n margin: calc(-2 * var(--avatar-ring-width, 0px));\r\n border-radius: inherit;\r\n transition-property: margin, opacity;\r\n transition-timing-function: cubic-bezier(0.8, 0, 0.1, 1), cubic-bezier(0, 0, 1, 1);\r\n transition-duration: 0.5s, 0.4s;\r\n }\r\n\r\n .avatar {\r\n transform: perspective(1px);\r\n display: inline-block;\r\n flex-shrink: 0;\r\n position: relative;\r\n vertical-align: middle;\r\n border-radius: 10000px;\r\n font-family: var(--font-family);\r\n font-weight: 600;\r\n font-size: var(--font-size); /* How to scale? */\r\n width: var(--size); /* Replace with size */\r\n height: var(--size);\r\n }\r\n\r\n .initials, .icon {\r\n /* background-color: #e6e6e6; */\r\n /* background-color: rgba(var(--color-rgb),0.25); */\r\n background-color: var(--background-color);\r\n /* color: #616161; */\r\n /* color: rgba(0,0,0,0.96); */\r\n /* color: rgb(var(--color-rgb)); */\r\n color: var(--foreground-color);\r\n position: absolute;\r\n box-sizing: border-box;\r\n top: 0px;\r\n left: 0px;\r\n width: 100%;\r\n height: 100%;\r\n line-height: 1;\r\n border: 1px solid transparent;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n text-align: center;\r\n user-select: none;\r\n border-radius: inherit;\r\n }\r\n\r\n .icon svg {\r\n display: inline;\r\n line-height: 0;\r\n width: calc(var(--size) * 0.625);\r\n height: calc(var(--size) * 0.625);\r\n }\r\n\r\n .avatar img {\r\n position: absolute;\r\n top: 0px;\r\n left: 0px;\r\n width: 100%;\r\n height: 100%;\r\n border-radius: inherit;\r\n object-fit: cover;\r\n vertical-align: top;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-avatar': EPAvatar\r\n }\r\n}\r\n","import { html } from 'lit'\r\nimport type { TemplateResult } from 'lit'\r\nimport type { Property } from 'csstype'\r\n\r\nexport enum EventIconDefinition {\r\n 'issued',\r\n}\r\n\r\nexport type EventIcon = keyof typeof EventIconDefinition\r\n\r\nexport type EventIconRenderer = (primary: Property.Color | undefined, secondary: Property.Color | undefined) => TemplateResult;\r\n\r\nexport const EventIcons: Record = {\r\n issued: (primary = \"#656D76\", secondary = \"transparent\") => html`\r\n \r\n \r\n \r\n `\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { EventIcon, EventIcons } from './icons'\r\nimport type { Property } from 'csstype'\r\n\r\nfunction emptystr2undefined(x: string | undefined) {\r\n return x === '' ? undefined : x;\r\n}\r\n\r\n@customElement('ep-event-icon')\r\nexport class EPEventIcon extends LitElement {\r\n\r\n @property({ reflect: true })\r\n primary?: Property.Color;\r\n\r\n @property({ reflect: true })\r\n secondary?: Property.Color;\r\n\r\n @property({ reflect: true })\r\n icon?: EventIcon;\r\n\r\n render() {\r\n const primary = emptystr2undefined(this.primary)\r\n const secondary = emptystr2undefined(this.secondary)\r\n if (this.icon !== undefined && EventIcons[this.icon] !== undefined) {\r\n return EventIcons[this.icon](primary, secondary);\r\n }\r\n return html``\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --size: 24px;\r\n display: inline-block;\r\n width: var(--size);\r\n height: var(--size);\r\n }\r\n\r\n svg {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-event-icon': EPEventIcon\r\n }\r\n}\r\n","import { LitElement, css, html, svg } from 'lit'\r\nimport { customElement, property, query } from 'lit/decorators.js'\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\nimport { useEffect } from 'haunted';\r\nimport { clamp } from '../functions/clamp';\r\n\r\n@customElement('ep-progress-stepper')\r\nexport class EPProgressStepper extends LitHauntedElement {\r\n\r\n @property({ type: Number, attribute: 'active-index', reflect: true })\r\n activeIndex: number = -1;\r\n\r\n @query('slot')\r\n slotElement?: HTMLSlotElement;\r\n\r\n get steps(): EPProgressStepperItem[] {\r\n return (this.slotElement?.assignedElements() ?? []).filter(e => e instanceof EPProgressStepperItem) as EPProgressStepperItem[];\r\n }\r\n\r\n public previous() {\r\n this.activeIndex = Math.min(this.steps.length, Math.max(-1, this.activeIndex - 1));\r\n }\r\n\r\n public next() {\r\n this.activeIndex = Math.min(this.steps.length, Math.max(-1, this.activeIndex + 1));\r\n }\r\n \r\n render() {\r\n useEffect(() => {\r\n // Intentionally allows `-1` and `length` because it should be possible to show 0 progress or all completed\r\n this.activeIndex = clamp(-1, this.activeIndex, this.steps.length);\r\n }, [this.activeIndex])\r\n return html`\r\n
    \r\n this.requestUpdate()}>\r\n
    \r\n ${this.steps.map((item, index, { length }) => html`\r\n
    \r\n = index} ?data-current=${this.activeIndex === index} ?data-completed=${this.activeIndex > index}>\r\n \r\n ${svg`\r\n \r\n ${\r\n this.activeIndex > index\r\n ? svg`\r\n \r\n \r\n `\r\n : svg`\r\n \r\n \r\n ${index + 1}\r\n \r\n `\r\n }\r\n \r\n `}\r\n \r\n \r\n ${item.label}\r\n ${item.caption}\r\n \r\n \r\n
    \r\n ${\r\n index < length - 1\r\n ? html`\r\n
    \r\n \r\n
    \r\n `\r\n : ''\r\n }\r\n `)}\r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n font-family: var(--font-prose);\r\n --font-scale: 1.0;\r\n }\r\n\r\n .step {\r\n padding-left: 8px;\r\n padding-right: 8px;\r\n }\r\n\r\n .step .label {\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .step .label .icon-container {\r\n flex-shrink: 0;\r\n display: flex;\r\n padding-right: 8px;\r\n }\r\n\r\n svg {\r\n user-select: none;\r\n width: 1em;\r\n height: 1em;\r\n fill: currentColor;\r\n flex-shrink: 0;\r\n font-size: 1.5rem;\r\n display: block;\r\n transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);\r\n color: rgba(0, 0, 0, 0.38);\r\n }\r\n\r\n [data-active] svg {\r\n color: #1976d2;\r\n }\r\n\r\n [data-completed] svg {\r\n opacity: 0.65;\r\n transform: scale(0.75);\r\n }\r\n\r\n svg text {\r\n fill: #fff;\r\n font-size: 0.75rem;\r\n font-weight: 500;\r\n }\r\n\r\n .step .label .label-container {\r\n width: 100%;\r\n color: rgba(0, 0, 0, 0.6);\r\n }\r\n\r\n .step .label .label-container .text {\r\n font-weight: 400;\r\n font-size: 0.875rem;\r\n line-height: 1.43;\r\n letter-spacing: 0.01071em;\r\n display: block;\r\n transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n }\r\n\r\n .label[data-active] .label-container .text {\r\n color: rgba(0, 0, 0, 0.87);\r\n /* font-weight: 500; */\r\n }\r\n\r\n .label[data-current] .label-container .text {\r\n /* color: rgba(0, 0, 0, 0.87); */\r\n font-weight: 500;\r\n }\r\n\r\n .step .label .label-container .caption {\r\n margin: 0;\r\n font-weight: 400;\r\n font-size: 0.75rem;\r\n line-height: 1.66;\r\n letter-spacing: 0.03333em;\r\n }\r\n\r\n .connector {\r\n flex: 1 1 auto;\r\n }\r\n\r\n .connector .line {\r\n display: block;\r\n border-color: #bdbdbd;\r\n border-top-style: solid;\r\n border-top-width: 1px;\r\n }\r\n `\r\n}\r\n\r\n@customElement('ep-progress-stepper-item')\r\nexport class EPProgressStepperItem extends LitElement {\r\n\r\n @property({ reflect: true })\r\n label: string = '';\r\n\r\n @property({ reflect: true })\r\n caption?: string;\r\n\r\n render() {\r\n return html``;\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: none;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-progress-stepper': EPProgressStepper,\r\n 'ep-progress-stepper-item': EPProgressStepperItem,\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\n@customElement('ep-file-chip')\r\nexport class EPFileChip extends LitElement {\r\n\r\n @property({ attribute: 'file-name', reflect: true })\r\n fileName?: string;\r\n\r\n @property({ type: Number, attribute: 'file-size', reflect: true })\r\n fileSize?: number;\r\n\r\n @property({ reflect: true })\r\n icon: string = '📁';\r\n\r\n @property({ reflect: true })\r\n href?: string;\r\n\r\n @property({ reflect: true })\r\n target?: string;\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n ${this.icon}\r\n ${this.fileName}\r\n \r\n \r\n \r\n ${this.icon}\r\n
    \r\n \r\n ${this.fileName}\r\n \r\n \r\n File Size: \r\n \r\n
    \r\n
    \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-block;\r\n max-width: var(--max-width);\r\n --max-width: auto;\r\n --chip-background: rgba(0, 0, 0, 0.08);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-file-chip': EPFileChip\r\n }\r\n}\r\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\nvar objectToString = Object.prototype.toString;\nvar isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n};\n\nfunction isFunction (object) {\n return typeof object === 'function';\n}\n\n/**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\nfunction typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n}\n\nfunction escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\nfunction hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n}\n\n/**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\nfunction primitiveHasOwnProperty (primitive, propName) {\n return (\n primitive != null\n && typeof primitive !== 'object'\n && primitive.hasOwnProperty\n && primitive.hasOwnProperty(propName)\n );\n}\n\n// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n// See https://github.com/janl/mustache.js/issues/189\nvar regExpTest = RegExp.prototype.test;\nfunction testRegExp (re, string) {\n return regExpTest.call(re, string);\n}\n\nvar nonSpaceRe = /\\S/;\nfunction isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n}\n\nvar entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n};\n\nfunction escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n}\n\nvar whiteRe = /\\s*/;\nvar spaceRe = /\\s+/;\nvar equalsRe = /\\s*=/;\nvar curlyRe = /\\s*\\}/;\nvar tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n/**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\nfunction parseTemplate (template, tags) {\n if (!template)\n return [];\n var lineHasNonSpace = false;\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n var indentation = ''; // Tracks indentation for tags that use it\n var tagIndex = 0; // Stores a count of number of tags encountered on a line\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n indentation += chr;\n } else {\n nonSpace = true;\n lineHasNonSpace = true;\n indentation += ' ';\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n') {\n stripSpace();\n indentation = '';\n tagIndex = 0;\n lineHasNonSpace = false;\n }\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n if (type == '>') {\n token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n } else {\n token = [ type, value, start, scanner.pos ];\n }\n tagIndex++;\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n stripSpace();\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n}\n\n/**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\nfunction squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n}\n\n/**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\nfunction nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n}\n\n/**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\nfunction Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n}\n\n/**\n * Returns `true` if the tail is empty (end of string).\n */\nScanner.prototype.eos = function eos () {\n return this.tail === '';\n};\n\n/**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\nScanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n};\n\n/**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\nScanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n};\n\n/**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\nfunction Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n}\n\n/**\n * Creates a new context using the given view with this context\n * as the parent.\n */\nContext.prototype.push = function push (view) {\n return new Context(view, this);\n};\n\n/**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\nContext.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, intermediateValue, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n intermediateValue = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n *\n * In the case where dot notation is used, we consider the lookup\n * to be successful even if the last \"object\" in the path is\n * not actually an object but a primitive (e.g., a string, or an\n * integer), because it is sometimes useful to access a property\n * of an autoboxed primitive, such as the length of a string.\n **/\n while (intermediateValue != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = (\n hasProperty(intermediateValue, names[index])\n || primitiveHasOwnProperty(intermediateValue, names[index])\n );\n\n intermediateValue = intermediateValue[names[index++]];\n }\n } else {\n intermediateValue = context.view[name];\n\n /**\n * Only checking against `hasProperty`, which always returns `false` if\n * `context.view` is not an object. Deliberately omitting the check\n * against `primitiveHasOwnProperty` if dot notation is not used.\n *\n * Consider this example:\n * ```\n * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n * ```\n *\n * If we were to check also against `primitiveHasOwnProperty`, as we do\n * in the dot notation case, then render call would return:\n *\n * \"The length of a football field is 9.\"\n *\n * rather than the expected:\n *\n * \"The length of a football field is 100 yards.\"\n **/\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit) {\n value = intermediateValue;\n break;\n }\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n};\n\n/**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\nfunction Writer () {\n this.templateCache = {\n _cache: {},\n set: function set (key, value) {\n this._cache[key] = value;\n },\n get: function get (key) {\n return this._cache[key];\n },\n clear: function clear () {\n this._cache = {};\n }\n };\n}\n\n/**\n * Clears all cached templates in this writer.\n */\nWriter.prototype.clearCache = function clearCache () {\n if (typeof this.templateCache !== 'undefined') {\n this.templateCache.clear();\n }\n};\n\n/**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted, and returns the array of tokens\n * that is generated from the parse.\n */\nWriter.prototype.parse = function parse (template, tags) {\n var cache = this.templateCache;\n var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n var isCacheEnabled = typeof cache !== 'undefined';\n var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n\n if (tokens == undefined) {\n tokens = parseTemplate(template, tags);\n isCacheEnabled && cache.set(cacheKey, tokens);\n }\n return tokens;\n};\n\n/**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\nWriter.prototype.render = function render (template, view, partials, config) {\n var tags = this.getConfigTags(config);\n var tokens = this.parse(template, tags);\n var context = (view instanceof Context) ? view : new Context(view, undefined);\n return this.renderTokens(tokens, context, partials, template, config);\n};\n\n/**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\nWriter.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, config);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context, config);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n};\n\nWriter.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials, config);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n }\n return buffer;\n};\n\nWriter.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate, config);\n};\n\nWriter.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n var partialByNl = partial.split('\\n');\n for (var i = 0; i < partialByNl.length; i++) {\n if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n partialByNl[i] = filteredIndentation + partialByNl[i];\n }\n }\n return partialByNl.join('\\n');\n};\n\nWriter.prototype.renderPartial = function renderPartial (token, context, partials, config) {\n if (!partials) return;\n var tags = this.getConfigTags(config);\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null) {\n var lineHasNonSpace = token[6];\n var tagIndex = token[5];\n var indentation = token[4];\n var indentedValue = value;\n if (tagIndex == 0 && indentation) {\n indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n }\n var tokens = this.parse(indentedValue, tags);\n return this.renderTokens(tokens, context, partials, indentedValue, config);\n }\n};\n\nWriter.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n};\n\nWriter.prototype.escapedValue = function escapedValue (token, context, config) {\n var escape = this.getConfigEscape(config) || mustache.escape;\n var value = context.lookup(token[1]);\n if (value != null)\n return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);\n};\n\nWriter.prototype.rawValue = function rawValue (token) {\n return token[1];\n};\n\nWriter.prototype.getConfigTags = function getConfigTags (config) {\n if (isArray(config)) {\n return config;\n }\n else if (config && typeof config === 'object') {\n return config.tags;\n }\n else {\n return undefined;\n }\n};\n\nWriter.prototype.getConfigEscape = function getConfigEscape (config) {\n if (config && typeof config === 'object' && !isArray(config)) {\n return config.escape;\n }\n else {\n return undefined;\n }\n};\n\nvar mustache = {\n name: 'mustache.js',\n version: '4.2.0',\n tags: [ '{{', '}}' ],\n clearCache: undefined,\n escape: undefined,\n parse: undefined,\n render: undefined,\n Scanner: undefined,\n Context: undefined,\n Writer: undefined,\n /**\n * Allows a user to override the default caching strategy, by providing an\n * object with set, get and clear methods. This can also be used to disable\n * the cache by setting it to the literal `undefined`.\n */\n set templateCache (cache) {\n defaultWriter.templateCache = cache;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache () {\n return defaultWriter.templateCache;\n }\n};\n\n// All high-level mustache.* functions use this writer.\nvar defaultWriter = new Writer();\n\n/**\n * Clears all cached templates in the default writer.\n */\nmustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n};\n\n/**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\nmustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n};\n\n/**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\nmustache.render = function render (template, view, partials, config) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials, config);\n};\n\n// Export the escaping function so that the user may override it.\n// See https://github.com/janl/mustache.js/issues/244\nmustache.escape = escapeHtml;\n\n// Export these mainly for testing, but also for advanced usage.\nmustache.Scanner = Scanner;\nmustache.Context = Context;\nmustache.Writer = Writer;\n\nexport default mustache;\n","/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n * SPDX-License-Identifier: BSD-3-Clause\r\n */\r\n\r\nimport { noChange } from 'lit';\r\nimport { directive, Directive, PartInfo, PartType } from 'lit/directive.js';\r\nimport Mustache from 'mustache'\r\n\r\nclass MustacheTemplateContentDirective extends Directive {\r\n private _previousIdentifier?: string;\r\n\r\n constructor(partInfo: PartInfo) {\r\n super(partInfo);\r\n if (partInfo.type !== PartType.CHILD) {\r\n throw new Error('templateContent can only be used in child bindings');\r\n }\r\n }\r\n\r\n render(template: HTMLTemplateElement, data: any = {}, identifier: string | undefined = undefined) {\r\n if (this._previousIdentifier === identifier && identifier !== undefined) {\r\n return noChange;\r\n }\r\n this._previousIdentifier = identifier;\r\n const importedDocument = document.importNode(template.content, true);\r\n // use mustache.js to enter variables\r\n //debugger;\r\n for(let child of importedDocument.children) {\r\n // Render Inner HTML\r\n const mustacheResult = Mustache.render(child.innerHTML, data)\r\n if (child.innerHTML !== mustacheResult) {\r\n child.innerHTML = mustacheResult;\r\n }\r\n // Render to attributes\r\n for (let attr of child.attributes) {\r\n // If attribute has mustache-able templates\r\n if (this.TestAttributeHasTemplate(attr.value)) {\r\n attr.value = Mustache.render(attr.value, data);\r\n }\r\n }\r\n }\r\n return importedDocument;\r\n }\r\n\r\n private TestAttributeHasTemplate(value: string): boolean {\r\n try {\r\n const spans = Mustache.parse(value);\r\n return spans.some(([span, ..._]) => span === 'name')\r\n }\r\n catch {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Renders the content of a template element as HTML.\r\n *\r\n * Note, the template should be developer controlled and not user controlled.\r\n * Rendering a user-controlled template with this directive\r\n * could lead to cross-site-scripting vulnerabilities.\r\n */\r\nexport const mustacheTemplateContent = directive(MustacheTemplateContentDirective);\r\n\r\n/**\r\n * The type of the class that powers this directive. Necessary for naming the\r\n * directive's return type.\r\n */\r\nexport type {MustacheTemplateContentDirective};\r\n","import { LitElement, css, html, nothing } from 'lit'\r\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\r\nimport { styleMap } from 'lit/directives/style-map.js'\r\nimport { MutationController } from '@lit-labs/observers/mutation-controller.js';\r\nimport { mustacheTemplateContent } from '../directives/mustacheTemplateContent';\r\nimport { HasSlotController } from '../controllers/HasSlotController';\r\n\r\n//import UPLOAD_SVG from '../shared-assets/upload.svg'\r\n\r\ntype EPFileUploadVariant = 'tooltip' | 'flex-right'\r\n\r\n@customElement('ep-file-upload')\r\nexport class EPFileUpload extends LitElement {\r\n private hasSlotController = new HasSlotController(this, 'leading-icon', 'trailing-icon');\r\n private inputObserver = new MutationController(this, { \r\n target: null,\r\n callback: () => this._handleInputObservation(),\r\n config: { attributes: true, characterData: false, subtree: false, }\r\n })\r\n\r\n @property({ reflect: true })\r\n variant: EPFileUploadVariant = 'tooltip'\r\n\r\n @property({ type: Boolean, reflect: true })\r\n disabled: boolean = false;\r\n\r\n @queryAssignedElements({ slot: 'input', selector: 'input[type=file]', flatten: true })\r\n slottedInput?: HTMLInputElement[];\r\n\r\n @queryAssignedElements({ slot: 'file-template', selector: 'template' })\r\n slottedTemplate?: HTMLTemplateElement[];\r\n\r\n @queryAssignedElements({ slot: 'fake-input' })\r\n slottedFakeInput?: HTMLElement[];\r\n\r\n @property({ type: Boolean, attribute: 'hover-self', reflect: true })\r\n fileDraggedOverSelf: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'hover-body', reflect: true })\r\n fileDraggedOverBody: boolean = false;\r\n\r\n get input(): HTMLInputElement | undefined {\r\n if (this.slottedInput && this.slottedInput.length >= 1) {\r\n return this.slottedInput[0];\r\n }\r\n return undefined;\r\n }\r\n\r\n get files(): File[] {\r\n if (this.slottedInput && this.slottedInput.length >= 1) {\r\n return Array.from(this.slottedInput[0].files ?? []);\r\n }\r\n return [];\r\n }\r\n\r\n get fakeInput(): HTMLElement | undefined {\r\n if (this.slottedFakeInput && this.slottedFakeInput.length >= 1) {\r\n return this.slottedFakeInput[0];\r\n }\r\n return undefined\r\n }\r\n\r\n get hasFakeInputSlotted(): boolean {\r\n return this.hasSlotController.test('fake-input');\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n this.requestUpdate()} @slotchange=${this._handleInputSlotChange}\r\n style=${styleMap({ display: this.hasFakeInputSlotted ? 'none' : 'contents' })}>\r\n this.input?.click()}>\r\n ${\r\n this.variant === 'tooltip'\r\n ? html`\r\n ${\r\n this.files.length > 0\r\n ? html`\r\n \r\n ${this.files.length} file${this.files.length > 1 ? 's' : ''} attached\r\n \r\n ${\r\n this.slottedTemplate && this.slottedTemplate.length >= 1\r\n ? this.files.map(file => html`${mustacheTemplateContent(this.slottedTemplate![0], file)}`)\r\n : ''\r\n }\r\n \r\n \r\n `\r\n : html`\r\n No files attached\r\n `\r\n }\r\n `\r\n : nothing\r\n }\r\n ${\r\n this.variant === 'flex-right'\r\n ? html`\r\n
    \r\n ${\r\n this.slottedTemplate && this.slottedTemplate.length >= 1\r\n ? this.files.map(file => html`\r\n this._handleCancelEvent(e, file)}>\r\n ${mustacheTemplateContent(this.slottedTemplate![0], file)}\r\n \r\n `)\r\n : ''\r\n }\r\n
    \r\n `\r\n : nothing\r\n }\r\n
    \r\n `\r\n }\r\n\r\n private _handleInputSlotChange() {\r\n if (this.input) {\r\n this.inputObserver.observe(this.input);\r\n }\r\n }\r\n\r\n private _handleInputObservation() {\r\n //console.log('did something about this change?', this.input)\r\n if (this.input && this.fakeInput) {\r\n // If source input becomes disabled, we should be disabled\r\n this.disabled = this.input.disabled;\r\n if (this.input.disabled) {\r\n this.fakeInput.setAttribute('disabled', '');\r\n }\r\n else {\r\n this.fakeInput.removeAttribute('disabled');\r\n }\r\n }\r\n }\r\n\r\n private _handleCancelEvent(e: CustomEvent, file: File) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.removeFileFromFiles(file);\r\n this.requestUpdate();\r\n }\r\n\r\n private removeFileFromFiles(removal: File) {\r\n console.log('removeFileFromFiles?', removal)\r\n const dt = new DataTransfer();\r\n const index = this.files.findIndex(f => f === removal);\r\n // Check for undefined\r\n if (this.input && index >= 0) {\r\n // Copy files that aren't `removal` to \"dt\"\r\n for (let file of this.files) {\r\n if (file !== removal) {\r\n dt.items.add(file);\r\n }\r\n }\r\n // Replace input files\r\n this.input.files = dt.files;\r\n }\r\n }\r\n\r\n private addFileToFiles(addition: File) {\r\n console.log('addFileToFiles?', addition)\r\n if (this.input) {\r\n const dt = new DataTransfer();\r\n // Copy old files over\r\n for (let file of this.files) {\r\n dt.items.add(file);\r\n }\r\n // Add new file\r\n dt.items.add(addition);\r\n // Replace input files\r\n this.input.files = dt.files;\r\n }\r\n }\r\n\r\n private _handleSelfDragEnterLeave(event: DragEvent) {\r\n //console.log((event.target as HTMLElement)?.tagName, event.type, this.fileDraggedOverSelf, event.dataTransfer?.effectAllowed, event);\r\n event.preventDefault();\r\n const DRAG_LEAVE = event.type === 'dragleave';\r\n this.fileDraggedOverSelf = !DRAG_LEAVE;\r\n }\r\n\r\n private _handleBodyDragEnterLeave = ((event: DragEvent) => {\r\n //console.log((event.target as HTMLElement)?.tagName, event.type, this.fileDraggedOverSelf, event);\r\n event.preventDefault();\r\n const DRAG_LEAVE = event.type === 'dragleave';\r\n this.fileDraggedOverBody = !DRAG_LEAVE;\r\n }).bind(this);\r\n\r\n private _handleFileDropped(event: DragEvent) {\r\n event.preventDefault();\r\n // Check for undefined\r\n if (this.input && event.type === 'drop' && event.dataTransfer?.files instanceof FileList) {\r\n const attachments = event.dataTransfer.files\r\n // Clear old attachments\r\n this.input.value = '';\r\n // Copy new attachments\r\n for(let file of attachments) {\r\n this.addFileToFiles(file);\r\n }\r\n // Disable border\r\n setTimeout(() => {\r\n this.fileDraggedOverBody = false;\r\n this.fileDraggedOverSelf = false;\r\n }, 110);\r\n }\r\n //console.log(event)\r\n }\r\n\r\n public override connectedCallback() {\r\n super.connectedCallback()\r\n document.addEventListener('dragover', this._handleBodyDragEnterLeave);\r\n document.addEventListener('dragleave', this._handleBodyDragEnterLeave);\r\n }\r\n\r\n public override disconnectedCallback() {\r\n super.disconnectedCallback()\r\n document.removeEventListener('dragover', this._handleBodyDragEnterLeave);\r\n document.removeEventListener('dragleave', this._handleBodyDragEnterLeave);\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n padding: 4px;\r\n border: 2px solid transparent;\r\n border-radius: 4px;\r\n background-color: transparent;\r\n transition: border-color 100ms, background-color 100ms;\r\n }\r\n :host, file-attachment {\r\n display: inline-flex;\r\n gap: 8px;\r\n align-items: center;\r\n box-sizing: border-box;\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n }\r\n\r\n @keyframes pulse {\r\n from {\r\n border-color: rgb(213, 213, 213);\r\n }\r\n to {\r\n border-color: rgb(20, 122, 243);\r\n }\r\n }\r\n\r\n :host([hover-self]) {\r\n border-color: rgb(20, 122, 243);\r\n background-color: rgba(20, 122, 243, 0.1);\r\n }\r\n\r\n :host([hover-body]:not([hover-self])) {\r\n border-color: rgb(213, 213, 213);\r\n border-style: dashed;\r\n animation-name: pulse;\r\n animation-duration: 500ms;\r\n animation-iteration-count: infinite;\r\n animation-direction: alternate;\r\n animation-timing-function: linear;\r\n }\r\n\r\n .attach-message {\r\n font-family: var(--font-prose);\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: rgb(87, 96, 106);\r\n text-align: left;\r\n user-select: none;\r\n }\r\n\r\n .attach-message[data-attached]:hover {\r\n /* cursor: pointer; */\r\n text-decoration: underline;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-file-upload': EPFileUpload\r\n }\r\n}\r\n","import { MutationController } from '@lit-labs/observers/mutation-controller.js';\r\nimport { LitElement, css, html } from 'lit'\r\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\r\nimport { styleMap } from 'lit/directives/style-map.js'\r\n\r\nexport type EPPaywallActivationState = 'on' | 'off';\r\n\r\n@customElement('ep-paywall')\r\nexport class EPPaywall extends LitElement {\r\n private slotObserver = new MutationController(this, { \r\n target: this,\r\n callback: () => this._handleSlotObservation(),\r\n config: { attributes: true, attributeFilter: ['style'] }\r\n })\r\n\r\n @property({ reflect: true })\r\n state: EPPaywallActivationState = 'on';\r\n\r\n @property({ type: Boolean, attribute: 'slot-controls-state', reflect: true })\r\n slotControlsState: boolean = false;\r\n\r\n @queryAssignedElements({ slot: 'paywall', flatten: true })\r\n slottedPaywall?: HTMLElement[];\r\n\r\n get active(): boolean {\r\n return this.state === 'on';\r\n }\r\n set active(value: boolean) {\r\n this.state = value ? 'on' : 'off';\r\n }\r\n\r\n get slottedPaywallElement(): HTMLElement | undefined {\r\n if (this.slottedPaywall && this.slottedPaywall.length >= 1) {\r\n return this.slottedPaywall[0];\r\n }\r\n return undefined;\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n `\r\n }\r\n\r\n private _handleSlotChange() {\r\n if (this.slottedPaywallElement) {\r\n this.slotObserver.observe(this.slottedPaywallElement);\r\n }\r\n }\r\n\r\n private _handleSlotObservation() {\r\n if (this.slotControlsState && this.slottedPaywallElement) {\r\n const computedDisplay = window.getComputedStyle(this.slottedPaywallElement).display;\r\n this.active = computedDisplay !== 'none';\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n position: relative;\r\n --font-prose: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";\r\n }\r\n\r\n ::slotted([slot=\"paywall\"]) {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n backdrop-filter: blur(5px);\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n padding: 10px;\r\n box-sizing: border-box;\r\n z-index: 999;\r\n }\r\n\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-paywall': EPPaywall\r\n }\r\n}\r\n","import { css, html } from 'lit'\r\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\r\nimport { ifDefined } from 'lit/directives/if-defined.js'\r\nimport { SwatchRGB, accentBaseColor } from '@fluentui/web-components'\r\nimport type { ButtonAppearance, Swatch } from '@fluentui/web-components'\r\nimport type { CSSDesignToken } from '@microsoft/fast-foundation'\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element'\r\nimport type { Property } from 'csstype'\r\nimport { useEffect } from 'haunted'\r\nimport chroma from 'chroma-js'\r\n\r\n\r\n/**\r\n * Wrapper for that adds some extra features\r\n */\r\n@customElement('ep-fluent-button')\r\nexport class EPFluentButton extends LitHauntedElement {\r\n @property({ reflect: true })\r\n appearance: ButtonAppearance = 'neutral'\r\n\r\n @property({ type: Boolean, reflect: true })\r\n disabled: boolean = false;\r\n\r\n @property({ attribute: 'accent-color', reflect: true })\r\n accentColor?: Property.Color;\r\n\r\n @query('fluent-button')\r\n fluentButton?: HTMLElement;\r\n\r\n @queryAssignedElements({ slot: 'start', flatten: true })\r\n slottedStart?: HTMLInputElement[];\r\n @queryAssignedElements({ slot: 'end', flatten: true })\r\n slottedEnd?: HTMLInputElement[];\r\n\r\n get startSlot(): string | undefined {\r\n return this.slottedStart && this.slottedStart.length > 0 ? 'start' : undefined;\r\n }\r\n get endSlot(): string | undefined {\r\n return this.slottedEnd && this.slottedEnd.length > 0 ? 'end' : undefined;\r\n }\r\n\r\n render() {\r\n useEffect(() => this._handleColorChange(this.accentColor, accentBaseColor), [this.accentColor])\r\n\r\n return html`\r\n \r\n this.requestUpdate()}>\r\n \r\n this.requestUpdate()}>\r\n \r\n `\r\n }\r\n\r\n private _handleColorChange(color: Property.Color | undefined, token: CSSDesignToken) {\r\n if (this.fluentButton && color) {\r\n // Get original color for debugging\r\n const original = token.getValueFor(this.fluentButton);\r\n\r\n // Map CSS color to swatch representation\r\n const [r, g, b] = chroma(color).rgb();\r\n const swatch = SwatchRGB.create(r / 255, g / 255, b / 255);\r\n\r\n // Replace the swatch used for this token\r\n token.setValueFor(this.fluentButton, swatch);\r\n\r\n // Debug message\r\n console.debug(`[${this.tagName}] Color Token \"${token.name}\" overriden from %c Color %c to %c Color %c`,\r\n `background: ${original.toColorString()}; color: #fff;`,\r\n 'all: unset;',\r\n `background: rgb(${r},${g},${b}); color: #fff;`,\r\n 'all: unset;',\r\n );\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n /* display: contents; */\r\n display: inline-flex;\r\n }\r\n\r\n fluent-button::part(content) {\r\n display: inline-flex;\r\n }\r\n\r\n fluent-button::part(control) {\r\n /*\r\n The default here is what was set by . If possible, we don't want to hard-code it here.\r\n Too bad there isn't a better way in CSS to overwrite a property only if a variable is defined.\r\n */\r\n padding: var(--inner-padding, 0 calc((10 + (var(--design-unit) * 2 * var(--density))) * 1px));\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-fluent-button': EPFluentButton\r\n }\r\n}\r\n","/**!\n * Sortable 1.15.6\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.6\";\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 // Disabled on Safari: #1571; Enabled on Safari IOS: #2244\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && (!Safari || IOS),\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.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.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 if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._onDrop);\n // Native D&D triggers pointercancel\n !this.nativeDraggable && on(ownerDocument, 'pointercancel', _this._onDrop);\n } else {\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n }\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 if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._disableDelayedDrag);\n on(ownerDocument, 'pointercancel', _this._disableDelayedDrag);\n } else {\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n }\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, 'pointerup', this._disableDelayedDrag);\n off(ownerDocument, 'pointercancel', 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 _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 window.getSelection().removeAllRanges();\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, 'pointercancel', 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 (function () {\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 var filter = options.filter;\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n // Check if element is draggable\n if (!closest(children[i], options.draggable, parentEl, false)) continue;\n // Check if element is filtered\n var filtered = filter && (typeof filter === 'function' ? filter.call(sortable, evt, children[i], sortable) : filter.split(',').some(function (criteria) {\n return closest(children[i], criteria.trim(), parentEl, false);\n }));\n if (filtered) 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 }\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","import { css, html } from 'lit'\r\nimport { customElement, property, query, state } from 'lit/decorators.js'\r\nimport Sortable, { type SortableEvent, Swap as SwapPlugin } from 'sortablejs'\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\nimport { useEffect } from 'haunted';\r\nimport { differenceWith, isEqual } from 'lodash'\r\n\r\nSortable.mount(new SwapPlugin())\r\nexport interface EPSortableTreeNode {\r\n id: string;\r\n parentID: string | null;\r\n index: number;\r\n}\r\n\r\nexport interface EPSortableUpdateEvent {\r\n changedItems: EPSortableTreeNode[];\r\n rawEvent: SortableEvent;\r\n}\r\n\r\n@customElement('ep-sortable')\r\nexport class EPSortable extends LitHauntedElement {\r\n\r\n @property({ attribute: 'id-attr-name', reflect: true })\r\n dataIdAttrName?: string;\r\n \r\n @property({ attribute: 'nested-item-selector', reflect: true })\r\n nestedItemSelector: string = '[data-nested-sortable]';\r\n\r\n @property({ type: Boolean, attribute: 'disable-sorting', reflect: true })\r\n disableSorting: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'swap-mode', reflect: true })\r\n swapModeEnabled: boolean = false;\r\n\r\n @property({ type: Boolean, reflect: true })\r\n nested: boolean = false;\r\n\r\n @state()\r\n sortableInstances: Sortable[] = [];\r\n\r\n @state()\r\n _lastItems: EPSortableTreeNode[] = [];\r\n\r\n @query('slot')\r\n slotElement?: HTMLSlotElement;\r\n\r\n render() {\r\n useEffect(() => {\r\n for(let inst of this.sortableInstances) {\r\n //inst.options.sort = !this.disableSorting;\r\n inst.options.disabled = this.disableSorting;\r\n for(let child of inst.el.children) {\r\n if (this.disableSorting) {\r\n child.classList.add('sortable-disabled')\r\n }\r\n else {\r\n child.classList.remove('sortable-disabled')\r\n }\r\n }\r\n }\r\n }, [this.sortableInstances, this.disableSorting])\r\n useEffect(() => {\r\n this._lastItems = this.getItems();\r\n }, [])\r\n\r\n return html`\r\n this.requestUpdate()}>\r\n `\r\n }\r\n\r\n private _initSortable() {\r\n console.debug(`[${this.tagName}] Initialize Sortable`);\r\n const self = this;\r\n if (this.nested) {\r\n // Get nestable children\r\n const nestableChildren: HTMLElement[] = [this, ...Array.from(this.querySelectorAll(this.nestedItemSelector))]\r\n .filter(e => e instanceof HTMLElement)\r\n .map(e => e as HTMLElement);\r\n // Initialize SortableJS\r\n this.sortableInstances = [\r\n ...(nestableChildren.map(e => new Sortable(e, {\r\n group: 'nested',\r\n animation: 150,\r\n fallbackOnBody: true,\r\n swapThreshold: 0.65,\r\n onUpdate: (event) => this._dispatchOrderChanged.bind(self)(event),\r\n onAdd: (event) => this._dispatchOrderChanged.bind(self)(event),\r\n //onRemove: (event) => this._dispatchOrderChanged.bind(self)(event),\r\n dataIdAttr: this.dataIdAttrName,\r\n swap: this.swapModeEnabled,\r\n })))\r\n ];\r\n }\r\n else {\r\n this.sortableInstances = [\r\n new Sortable(this, {\r\n animation: 150,\r\n onUpdate: (event) => this._dispatchOrderChanged.bind(self)(event),\r\n onAdd: (event) => this._dispatchOrderChanged.bind(self)(event),\r\n //onRemove: (event) => this._dispatchOrderChanged.bind(self)(event),\r\n dataIdAttr: this.dataIdAttrName,\r\n swap: this.swapModeEnabled,\r\n })\r\n ];\r\n }\r\n\r\n // If we recycle this, it may be because items were added after was initialized.\r\n setTimeout(() => {\r\n this._lastItems = this.getItems();\r\n }, 20);\r\n }\r\n\r\n private _destroySortable() {\r\n console.debug(`[${this.tagName}] Destroy Sortable`);\r\n for(let inst of this.sortableInstances) {\r\n inst.destroy();\r\n }\r\n this.sortableInstances = [];\r\n }\r\n\r\n public recycleSortable() {\r\n this._destroySortable();\r\n this._initSortable();\r\n }\r\n\r\n public override connectedCallback() {\r\n super.connectedCallback();\r\n this._initSortable();\r\n }\r\n\r\n public override disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this._destroySortable();\r\n }\r\n\r\n public getItems(): EPSortableTreeNode[] {\r\n return this.sortableInstances\r\n .map(inst => inst.toArray().map((id, index) => ({\r\n id: id,\r\n parentID: inst.el.closest(`[${this.dataIdAttrName}]`)?.getAttribute(this.dataIdAttrName ?? '') ?? null,\r\n index,\r\n })))\r\n .flat(2);\r\n }\r\n \r\n private _dispatchOrderChanged(sortableEvent: SortableEvent) {\r\n //console.log('sortable?', sortableEvent);\r\n // Get the current items\r\n const currentItems = this.getItems();\r\n // Compare the current items with the last items using deep equality\r\n const diff = differenceWith(currentItems, this._lastItems, isEqual);\r\n const augmentedDiff = diff.map(e => ({\r\n ...e,\r\n previousIndex: this._lastItems.find(x => x.id === e.id)?.index,\r\n previousParentID: this._lastItems.find(x => x.id === e.id)?.parentID,\r\n }));\r\n // Update the last items\r\n this._lastItems = this.getItems();\r\n // Compose and dispatch the event\r\n const event = new CustomEvent('ep-sortable-update', { \r\n bubbles: true,\r\n composed: true,\r\n detail: {\r\n changedItems: augmentedDiff, // diff,\r\n rawEvent: sortableEvent,\r\n },\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-sortable': EPSortable\r\n }\r\n}\r\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%20class='lucide%20lucide-database-zap'%3e%3cellipse%20cx='12'%20cy='5'%20rx='9'%20ry='3'/%3e%3cpath%20d='M3%205V19A9%203%200%200%200%2015%2021.84'/%3e%3cpath%20d='M21%205V8'/%3e%3cpath%20d='M21%2012L18%2017H22L19%2022'/%3e%3cpath%20d='M3%2012A9%203%200%200%200%2014.59%2014.87'/%3e%3c/svg%3e\"","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\nimport DATABASE_SVG from '../shared-assets/database.svg'\r\n\r\nexport type EPDatabaseButtonVariant = 'default' | 'icon-only' | 'text-only'\r\n\r\n@customElement('ep-database-button')\r\nexport class EPDatabaseButton extends LitElement {\r\n\r\n @property({ reflect: true })\r\n variant: EPDatabaseButtonVariant = 'default'\r\n\r\n @property({ type: Boolean, reflect: true })\r\n disabled: boolean = false;\r\n\r\n renderContent() {\r\n switch (this.variant) {\r\n case 'default': return html`\r\n \r\n \r\n `;\r\n case 'icon-only': return html`\r\n \r\n `;\r\n case 'text-only': return html`\r\n \r\n `;\r\n }\r\n }\r\n\r\n render() { \r\n return html`\r\n \r\n ${this.renderContent()}\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n --og: #5c2d91;\r\n --temp: #3e1f62;\r\n }\r\n\r\n\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-database-button': EPDatabaseButton\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { classMap } from 'lit/directives/class-map.js'\r\n\r\nimport { stylesBootstrap } from '../styles/bootstrap'\r\nimport { isNullishOrWhitespace } from '../functions/nullish'\r\n\r\n/**\r\n * See: https://getbootstrap.com/docs/5.3/layout/containers/#how-they-work\r\n */\r\nexport type BootstrapContainerBreakpoint = null | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'fluid'\r\n\r\n@customElement('bootstrap-container')\r\nexport class BootstrapContainer extends LitElement {\r\n @property({ attribute: 'breakpoint' })\r\n breakpoint: BootstrapContainerBreakpoint = null;\r\n\r\n render() {\r\n return html`\r\n
    \r\n \r\n
    \r\n `\r\n }\r\n\r\n\r\n static styles = [stylesBootstrap, css`\r\n :host {\r\n display: block;\r\n }\r\n `]\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bootstrap-container': BootstrapContainer\r\n }\r\n}\r\n","\r\nimport type { ComplexAttributeConverter } from 'lit'\r\nimport type { LinkedToDataType } from '../mixins/dom-linkable-mixin';\r\nimport { b64DecodeUnicode, b64EncodeUnicode } from '../functions/base64';\r\n\r\nexport const PROXY_CONVERTERS: Record>> = {\r\n 'string': {\r\n toAttribute(value, type) {\r\n return value;\r\n },\r\n fromAttribute(value, type) {\r\n return value ?? '';\r\n },\r\n },\r\n 'json': {\r\n toAttribute(value, type) {\r\n return JSON.stringify(value);\r\n },\r\n fromAttribute(value, type) {\r\n try { return JSON.parse(value ?? 'null') }\r\n catch { return null; }\r\n },\r\n },\r\n 'base64(string)': {\r\n toAttribute(value, type) {\r\n return b64EncodeUnicode(`${PROXY_CONVERTERS['string'].toAttribute(value, type)}`);\r\n },\r\n fromAttribute(value, type) {\r\n return PROXY_CONVERTERS['string'].fromAttribute(b64DecodeUnicode(`${value}`), type)\r\n },\r\n },\r\n 'base64(json)': {\r\n toAttribute(value, type) {\r\n return b64EncodeUnicode(`${PROXY_CONVERTERS['json'].toAttribute(value, type)}`);\r\n },\r\n fromAttribute(value, type) {\r\n return PROXY_CONVERTERS['json'].fromAttribute(b64DecodeUnicode(`${value}`), type)\r\n },\r\n }\r\n};\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\r\nimport type { LinkedToDataType } from '../mixins/dom-linkable-mixin';\r\nimport { isNullishOrWhitespace } from '../functions/nullish';\r\nimport { PROXY_CONVERTERS } from '../directives/converters';\r\n\r\n@customElement('ep-element-proxy')\r\nexport class EPElementProxy extends LitElement {\r\n @property({ attribute: 'proxy-format', reflect: true })\r\n proxyFormat: LinkedToDataType = 'string';\r\n\r\n @property({ attribute: 'proxy-property', reflect: true })\r\n proxyProperty: string = 'value';\r\n\r\n @property({ attribute: 'display-property', reflect: true })\r\n displayProperty: string = 'value';\r\n\r\n @property({ attribute: 'pull-events', reflect: true })\r\n pullEventsStr: string = '';\r\n\r\n get pullEvents(): string[] {\r\n return this.pullEventsStr.split(',').map(e => e.trim()).filter(e => !isNullishOrWhitespace(e));\r\n }\r\n\r\n @state()\r\n initialized: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'debug', reflect: true })\r\n debug: boolean = false;\r\n\r\n //#region Slots\r\n @queryAssignedElements({ slot: 'display' })\r\n displayElements?: HTMLElement[];\r\n\r\n @queryAssignedElements({ slot: 'proxy' })\r\n proxyElements?: HTMLElement[];\r\n\r\n getDisplayElement(): HTMLElement | undefined {\r\n return (this.displayElements ?? [])[0];\r\n }\r\n\r\n getProxyElement(): HTMLElement | undefined {\r\n return (this.proxyElements ?? [])[0];\r\n }\r\n\r\n @state()\r\n currentDisplayElement?: HTMLElement = this.getDisplayElement();\r\n\r\n @state()\r\n currentProxyElement?: HTMLElement = this.getProxyElement();\r\n //#endregion\r\n \r\n render() {\r\n return html`\r\n \r\n \r\n `\r\n }\r\n\r\n private _handleProxySlotChange() {\r\n // store reference\r\n this.currentProxyElement = this.getProxyElement();\r\n // copy latest value to proxy\r\n this._readFromProxy();\r\n }\r\n\r\n private _handleDisplaySlotChange() {\r\n const displayElement = this.getDisplayElement();\r\n if (displayElement) {\r\n //console.log('handleDisplaySlotChange - setup listeners')\r\n // remove listeners from old element\r\n for(let eventName of this.pullEvents) {\r\n this.currentDisplayElement?.removeEventListener(eventName as any, this._writeToProxy.bind(this));\r\n }\r\n // set element as current element\r\n this.currentDisplayElement = displayElement\r\n // add listeners to new element\r\n for(let eventName of this.pullEvents) {\r\n this.currentDisplayElement.addEventListener(eventName as any, this._writeToProxy.bind(this));\r\n }\r\n // do first time callback with initial value\r\n if (!this.initialized) {\r\n this._readFromProxy();\r\n this.initialized = true;\r\n }\r\n }\r\n }\r\n\r\n private _writeToProxy() {\r\n const converter = PROXY_CONVERTERS[this.proxyFormat];\r\n if (this.currentDisplayElement && this.currentProxyElement && converter) {\r\n console.debug(`[${this.tagName}] Writing to proxy: <${this.currentDisplayElement.tagName}> ➡️ <${this.currentProxyElement.tagName}>`)\r\n try {\r\n // Get the value\r\n const nativeValue = this.currentDisplayElement[this.displayProperty as keyof HTMLElement];\r\n // Proxy converters is capable of encoding more than just strings, so use `as any`\r\n const proxyValue = converter.toAttribute(nativeValue as any)\r\n // @ts-ignore: We know TypeScript won't like this\r\n this.currentProxyElement[this.proxyProperty as keyof HTMLElement] = proxyValue\r\n }\r\n catch (err) {\r\n console.error('Oops!', err)\r\n }\r\n }\r\n }\r\n\r\n private _readFromProxy() {\r\n const converter = PROXY_CONVERTERS[this.proxyFormat];\r\n if (this.currentDisplayElement && this.currentProxyElement && converter) {\r\n console.debug(`[${this.tagName}] Reading from proxy: <${this.currentProxyElement.tagName}> ➡️ <${this.currentDisplayElement.tagName}>`)\r\n try {\r\n // Get the value from the proxy\r\n const proxyValue = this.currentProxyElement[this.proxyProperty as keyof HTMLElement];\r\n // Convert the proxy value\r\n const nativeValue = converter.fromAttribute(proxyValue as any)\r\n // @ts-ignore: We know TypeScript won't like this\r\n this.currentDisplayElement[this.displayProperty as keyof HTMLElement] = nativeValue\r\n }\r\n catch (err) {\r\n console.error('Oops!', err)\r\n }\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-element-proxy': EPElementProxy\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\r\nimport { isNullishOrWhitespace } from '../functions/nullish';\r\n\r\n@customElement('ep-event-proxy')\r\nexport class EPEventProxy extends LitElement {\r\n @property({ attribute: 'events', reflect: true })\r\n eventsStr: string = 'click';\r\n\r\n get events(): string[] {\r\n return this.eventsStr.split(',').map(e => e.trim()).filter(e => !isNullishOrWhitespace(e));\r\n }\r\n\r\n @property({ type: Boolean, attribute: 'debug', reflect: true })\r\n debug: boolean = false;\r\n\r\n //#region Slots\r\n @queryAssignedElements({ slot: 'display' })\r\n displayElements?: HTMLElement[];\r\n\r\n @queryAssignedElements({ slot: 'proxy' })\r\n proxyElements?: HTMLElement[];\r\n\r\n getDisplayElement(): HTMLElement | undefined {\r\n return (this.displayElements ?? [])[0];\r\n }\r\n\r\n getProxyElement(): HTMLElement | undefined {\r\n return (this.proxyElements ?? [])[0];\r\n }\r\n\r\n @state()\r\n currentDisplayElement?: HTMLElement = this.getDisplayElement();\r\n\r\n @state()\r\n currentProxyElement?: HTMLElement = this.getProxyElement();\r\n //#endregion\r\n \r\n render() {\r\n return html`\r\n \r\n \r\n `\r\n }\r\n\r\n private _handleProxySlotChange() {\r\n // store reference\r\n this.currentProxyElement = this.getProxyElement();\r\n }\r\n\r\n private _handleDisplaySlotChange() {\r\n const displayElement = this.getDisplayElement();\r\n if (displayElement) {\r\n //console.log('handleDisplaySlotChange - setup listeners')\r\n // remove listeners from old element\r\n for(let eventName of this.events) {\r\n this.currentDisplayElement?.removeEventListener(eventName as any, this._handleDisplayEvent.bind(this));\r\n }\r\n // set element as current element\r\n this.currentDisplayElement = displayElement\r\n // add listeners to new element\r\n for(let eventName of this.events) {\r\n this.currentDisplayElement.addEventListener(eventName as any, this._handleDisplayEvent.bind(this));\r\n }\r\n }\r\n }\r\n\r\n private _handleDisplayEvent(event: Event) {\r\n if (this.currentDisplayElement && this.currentProxyElement) {\r\n if(event.type === 'click') {\r\n this.currentProxyElement.click();\r\n }\r\n else {\r\n const synthEvent = new CustomEvent(event.type, { detail: { originalEvent: event }});\r\n this.currentProxyElement.dispatchEvent(synthEvent);\r\n }\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-event-proxy': EPEventProxy\r\n }\r\n}\r\n","\r\n/**\r\n * Gets the emoji flag for a country\r\n * \r\n * \r\n * \r\n * From: https://dev.to/jorik/country-code-to-flag-emoji-a21\r\n * \r\n * @param countryCode \r\n * @returns \r\n */\r\nexport const getFlagEmoji = (countryCode: string) => String.fromCodePoint(...[...countryCode.toUpperCase()].map(x=>0x1f1a5+x.charCodeAt(0)))\r\n\r\n\r\n// --- DEFAULTS START ---\r\nconst defaults = {\r\n aa: 'ET',\r\n ab: 'GE',\r\n abr: 'GH',\r\n ace: 'ID',\r\n ach: 'UG',\r\n ada: 'GH',\r\n ady: 'RU',\r\n ae: 'IR',\r\n aeb: 'TN',\r\n af: 'ZA',\r\n agq: 'CM',\r\n aho: 'IN',\r\n ak: 'GH',\r\n akk: 'IQ',\r\n aln: 'XK',\r\n alt: 'RU',\r\n am: 'ET',\r\n amo: 'NG',\r\n aoz: 'ID',\r\n apd: 'TG',\r\n ar: 'EG',\r\n arc: 'IR',\r\n 'arc-Nbat': 'JO',\r\n 'arc-Palm': 'SY',\r\n arn: 'CL',\r\n aro: 'BO',\r\n arq: 'DZ',\r\n ary: 'MA',\r\n arz: 'EG',\r\n as: 'IN',\r\n asa: 'TZ',\r\n ase: 'US',\r\n ast: 'ES',\r\n atj: 'CA',\r\n av: 'RU',\r\n awa: 'IN',\r\n ay: 'BO',\r\n az: 'AZ',\r\n 'az-Arab': 'IR',\r\n ba: 'RU',\r\n bal: 'PK',\r\n ban: 'ID',\r\n bap: 'NP',\r\n bar: 'AT',\r\n bas: 'CM',\r\n bax: 'CM',\r\n bbc: 'ID',\r\n bbj: 'CM',\r\n bci: 'CI',\r\n be: 'BY',\r\n bej: 'SD',\r\n bem: 'ZM',\r\n bew: 'ID',\r\n bez: 'TZ',\r\n bfd: 'CM',\r\n bfq: 'IN',\r\n bft: 'PK',\r\n bfy: 'IN',\r\n bg: 'BG',\r\n bgc: 'IN',\r\n bgn: 'PK',\r\n bgx: 'TR',\r\n bhb: 'IN',\r\n bhi: 'IN',\r\n bhk: 'PH',\r\n bho: 'IN',\r\n bi: 'VU',\r\n bik: 'PH',\r\n bin: 'NG',\r\n bjj: 'IN',\r\n bjn: 'ID',\r\n bjt: 'SN',\r\n bkm: 'CM',\r\n bku: 'PH',\r\n blt: 'VN',\r\n bm: 'ML',\r\n bmq: 'ML',\r\n bn: 'BD',\r\n bo: 'CN',\r\n bpy: 'IN',\r\n bqi: 'IR',\r\n bqv: 'CI',\r\n br: 'FR',\r\n bra: 'IN',\r\n brh: 'PK',\r\n brx: 'IN',\r\n bs: 'BA',\r\n bsq: 'LR',\r\n bss: 'CM',\r\n bto: 'PH',\r\n btv: 'PK',\r\n bua: 'RU',\r\n buc: 'YT',\r\n bug: 'ID',\r\n bum: 'CM',\r\n bvb: 'GQ',\r\n byn: 'ER',\r\n byv: 'CM',\r\n bze: 'ML',\r\n ca: 'ES',\r\n cch: 'NG',\r\n ccp: 'BD',\r\n ce: 'RU',\r\n ceb: 'PH',\r\n cgg: 'UG',\r\n ch: 'GU',\r\n chk: 'FM',\r\n chm: 'RU',\r\n cho: 'US',\r\n chp: 'CA',\r\n chr: 'US',\r\n cja: 'KH',\r\n cjm: 'VN',\r\n ckb: 'IQ',\r\n co: 'FR',\r\n cop: 'EG',\r\n cps: 'PH',\r\n cr: 'CA',\r\n crh: 'UA',\r\n crj: 'CA',\r\n crk: 'CA',\r\n crl: 'CA',\r\n crm: 'CA',\r\n crs: 'SC',\r\n cs: 'CZ',\r\n csb: 'PL',\r\n csw: 'CA',\r\n ctd: 'MM',\r\n cu: 'RU',\r\n 'cu-Glag': 'BG',\r\n cv: 'RU',\r\n cy: 'GB',\r\n da: 'DK',\r\n dak: 'US',\r\n dar: 'RU',\r\n dav: 'KE',\r\n dcc: 'IN',\r\n de: 'DE',\r\n den: 'CA',\r\n dgr: 'CA',\r\n dje: 'NE',\r\n dnj: 'CI',\r\n doi: 'IN',\r\n dsb: 'DE',\r\n dtm: 'ML',\r\n dtp: 'MY',\r\n dty: 'NP',\r\n dua: 'CM',\r\n dv: 'MV',\r\n dyo: 'SN',\r\n dyu: 'BF',\r\n dz: 'BT',\r\n ebu: 'KE',\r\n ee: 'GH',\r\n efi: 'NG',\r\n egl: 'IT',\r\n egy: 'EG',\r\n eky: 'MM',\r\n el: 'GR',\r\n en: 'US',\r\n 'en-Shaw': 'GB',\r\n es: 'ES',\r\n esu: 'US',\r\n et: 'EE',\r\n ett: 'IT',\r\n eu: 'ES',\r\n ewo: 'CM',\r\n ext: 'ES',\r\n fa: 'IR',\r\n fan: 'GQ',\r\n ff: 'SN',\r\n 'ff-Adlm': 'GN',\r\n ffm: 'ML',\r\n fi: 'FI',\r\n fia: 'SD',\r\n fil: 'PH',\r\n fit: 'SE',\r\n fj: 'FJ',\r\n fo: 'FO',\r\n fon: 'BJ',\r\n fr: 'FR',\r\n frc: 'US',\r\n frp: 'FR',\r\n frr: 'DE',\r\n frs: 'DE',\r\n fub: 'CM',\r\n fud: 'WF',\r\n fuf: 'GN',\r\n fuq: 'NE',\r\n fur: 'IT',\r\n fuv: 'NG',\r\n fvr: 'SD',\r\n fy: 'NL',\r\n ga: 'IE',\r\n gaa: 'GH',\r\n gag: 'MD',\r\n gan: 'CN',\r\n gay: 'ID',\r\n gbm: 'IN',\r\n gbz: 'IR',\r\n gcr: 'GF',\r\n gd: 'GB',\r\n gez: 'ET',\r\n ggn: 'NP',\r\n gil: 'KI',\r\n gjk: 'PK',\r\n gju: 'PK',\r\n gl: 'ES',\r\n glk: 'IR',\r\n gn: 'PY',\r\n gom: 'IN',\r\n gon: 'IN',\r\n gor: 'ID',\r\n gos: 'NL',\r\n got: 'UA',\r\n grc: 'CY',\r\n 'grc-Linb': 'GR',\r\n grt: 'IN',\r\n gsw: 'CH',\r\n gu: 'IN',\r\n gub: 'BR',\r\n guc: 'CO',\r\n gur: 'GH',\r\n guz: 'KE',\r\n gv: 'IM',\r\n gvr: 'NP',\r\n gwi: 'CA',\r\n ha: 'NG',\r\n hak: 'CN',\r\n haw: 'US',\r\n haz: 'AF',\r\n he: 'IL',\r\n hi: 'IN',\r\n hif: 'FJ',\r\n hil: 'PH',\r\n hlu: 'TR',\r\n hmd: 'CN',\r\n hnd: 'PK',\r\n hne: 'IN',\r\n hnj: 'LA',\r\n hnn: 'PH',\r\n hno: 'PK',\r\n ho: 'PG',\r\n hoc: 'IN',\r\n hoj: 'IN',\r\n hr: 'HR',\r\n hsb: 'DE',\r\n hsn: 'CN',\r\n ht: 'HT',\r\n hu: 'HU',\r\n hy: 'AM',\r\n hz: 'NA',\r\n ia: 'FR',\r\n iba: 'MY',\r\n ibb: 'NG',\r\n id: 'ID',\r\n ife: 'TG',\r\n ig: 'NG',\r\n ii: 'CN',\r\n ik: 'US',\r\n ikt: 'CA',\r\n ilo: 'PH',\r\n in: 'ID',\r\n inh: 'RU',\r\n is: 'IS',\r\n it: 'IT',\r\n iu: 'CA',\r\n iw: 'IL',\r\n izh: 'RU',\r\n ja: 'JP',\r\n jam: 'JM',\r\n jgo: 'CM',\r\n ji: 'UA',\r\n jmc: 'TZ',\r\n jml: 'NP',\r\n jut: 'DK',\r\n jv: 'ID',\r\n jw: 'ID',\r\n ka: 'GE',\r\n kaa: 'UZ',\r\n kab: 'DZ',\r\n kac: 'MM',\r\n kaj: 'NG',\r\n kam: 'KE',\r\n kao: 'ML',\r\n kbd: 'RU',\r\n kby: 'NE',\r\n kcg: 'NG',\r\n kck: 'ZW',\r\n kde: 'TZ',\r\n kdh: 'TG',\r\n kdt: 'TH',\r\n kea: 'CV',\r\n ken: 'CM',\r\n kfo: 'CI',\r\n kfr: 'IN',\r\n kfy: 'IN',\r\n kg: 'CD',\r\n kge: 'ID',\r\n kgp: 'BR',\r\n kha: 'IN',\r\n khb: 'CN',\r\n khn: 'IN',\r\n khq: 'ML',\r\n kht: 'IN',\r\n khw: 'PK',\r\n ki: 'KE',\r\n kiu: 'TR',\r\n kj: 'NA',\r\n kjg: 'LA',\r\n kk: 'KZ',\r\n 'kk-Arab': 'CN',\r\n kkj: 'CM',\r\n kl: 'GL',\r\n kln: 'KE',\r\n km: 'KH',\r\n kmb: 'AO',\r\n kn: 'IN',\r\n knf: 'SN',\r\n ko: 'KR',\r\n koi: 'RU',\r\n kok: 'IN',\r\n kos: 'FM',\r\n kpe: 'LR',\r\n krc: 'RU',\r\n kri: 'SL',\r\n krj: 'PH',\r\n krl: 'RU',\r\n kru: 'IN',\r\n ks: 'IN',\r\n ksb: 'TZ',\r\n ksf: 'CM',\r\n ksh: 'DE',\r\n ku: 'TR',\r\n 'ku-Arab': 'IQ',\r\n kum: 'RU',\r\n kv: 'RU',\r\n kvr: 'ID',\r\n kvx: 'PK',\r\n kw: 'GB',\r\n kxm: 'TH',\r\n kxp: 'PK',\r\n ky: 'KG',\r\n 'ky-Arab': 'CN',\r\n 'ky-Latn': 'TR',\r\n la: 'VA',\r\n lab: 'GR',\r\n lad: 'IL',\r\n lag: 'TZ',\r\n lah: 'PK',\r\n laj: 'UG',\r\n lb: 'LU',\r\n lbe: 'RU',\r\n lbw: 'ID',\r\n lcp: 'CN',\r\n lep: 'IN',\r\n lez: 'RU',\r\n lg: 'UG',\r\n li: 'NL',\r\n lif: 'NP',\r\n 'lif-Limb': 'IN',\r\n lij: 'IT',\r\n lis: 'CN',\r\n ljp: 'ID',\r\n lki: 'IR',\r\n lkt: 'US',\r\n lmn: 'IN',\r\n lmo: 'IT',\r\n ln: 'CD',\r\n lo: 'LA',\r\n lol: 'CD',\r\n loz: 'ZM',\r\n lrc: 'IR',\r\n lt: 'LT',\r\n ltg: 'LV',\r\n lu: 'CD',\r\n lua: 'CD',\r\n luo: 'KE',\r\n luy: 'KE',\r\n luz: 'IR',\r\n lv: 'LV',\r\n lwl: 'TH',\r\n lzh: 'CN',\r\n lzz: 'TR',\r\n mad: 'ID',\r\n maf: 'CM',\r\n mag: 'IN',\r\n mai: 'IN',\r\n mak: 'ID',\r\n man: 'GM',\r\n 'man-Nkoo': 'GN',\r\n mas: 'KE',\r\n maz: 'MX',\r\n mdf: 'RU',\r\n mdh: 'PH',\r\n mdr: 'ID',\r\n men: 'SL',\r\n mer: 'KE',\r\n mfa: 'TH',\r\n mfe: 'MU',\r\n mg: 'MG',\r\n mgh: 'MZ',\r\n mgo: 'CM',\r\n mgp: 'NP',\r\n mgy: 'TZ',\r\n mh: 'MH',\r\n mi: 'NZ',\r\n min: 'ID',\r\n mis: 'IQ',\r\n mk: 'MK',\r\n ml: 'IN',\r\n mls: 'SD',\r\n mn: 'MN',\r\n 'mn-Mong': 'CN',\r\n mni: 'IN',\r\n mnw: 'MM',\r\n moe: 'CA',\r\n moh: 'CA',\r\n mos: 'BF',\r\n mr: 'IN',\r\n mrd: 'NP',\r\n mrj: 'RU',\r\n mro: 'BD',\r\n ms: 'MY',\r\n mt: 'MT',\r\n mtr: 'IN',\r\n mua: 'CM',\r\n mus: 'US',\r\n mvy: 'PK',\r\n mwk: 'ML',\r\n mwr: 'IN',\r\n mwv: 'ID',\r\n mxc: 'ZW',\r\n my: 'MM',\r\n myv: 'RU',\r\n myx: 'UG',\r\n myz: 'IR',\r\n mzn: 'IR',\r\n na: 'NR',\r\n nan: 'CN',\r\n nap: 'IT',\r\n naq: 'NA',\r\n nb: 'NO',\r\n nch: 'MX',\r\n nd: 'ZW',\r\n ndc: 'MZ',\r\n nds: 'DE',\r\n ne: 'NP',\r\n new: 'NP',\r\n ng: 'NA',\r\n ngl: 'MZ',\r\n nhe: 'MX',\r\n nhw: 'MX',\r\n nij: 'ID',\r\n niu: 'NU',\r\n njo: 'IN',\r\n nl: 'NL',\r\n nmg: 'CM',\r\n nn: 'NO',\r\n nnh: 'CM',\r\n no: 'NO',\r\n nod: 'TH',\r\n noe: 'IN',\r\n non: 'SE',\r\n nqo: 'GN',\r\n nr: 'ZA',\r\n nsk: 'CA',\r\n nso: 'ZA',\r\n nus: 'SS',\r\n nv: 'US',\r\n nxq: 'CN',\r\n ny: 'MW',\r\n nym: 'TZ',\r\n nyn: 'UG',\r\n nzi: 'GH',\r\n oc: 'FR',\r\n om: 'ET',\r\n or: 'IN',\r\n os: 'GE',\r\n osa: 'US',\r\n otk: 'MN',\r\n pa: 'IN',\r\n 'pa-Arab': 'PK',\r\n pag: 'PH',\r\n pal: 'IR',\r\n 'pal-Phlp': 'CN',\r\n pam: 'PH',\r\n pap: 'AW',\r\n pau: 'PW',\r\n pcd: 'FR',\r\n pcm: 'NG',\r\n pdc: 'US',\r\n pdt: 'CA',\r\n peo: 'IR',\r\n pfl: 'DE',\r\n phn: 'LB',\r\n pka: 'IN',\r\n pko: 'KE',\r\n pl: 'PL',\r\n pms: 'IT',\r\n pnt: 'GR',\r\n pon: 'FM',\r\n pra: 'PK',\r\n prd: 'IR',\r\n ps: 'AF',\r\n pt: 'BR',\r\n puu: 'GA',\r\n qu: 'PE',\r\n quc: 'GT',\r\n qug: 'EC',\r\n raj: 'IN',\r\n rcf: 'RE',\r\n rej: 'ID',\r\n rgn: 'IT',\r\n ria: 'IN',\r\n rif: 'MA',\r\n rjs: 'NP',\r\n rkt: 'BD',\r\n rm: 'CH',\r\n rmf: 'FI',\r\n rmo: 'CH',\r\n rmt: 'IR',\r\n rmu: 'SE',\r\n rn: 'BI',\r\n rng: 'MZ',\r\n ro: 'RO',\r\n rob: 'ID',\r\n rof: 'TZ',\r\n rtm: 'FJ',\r\n ru: 'RU',\r\n rue: 'UA',\r\n rug: 'SB',\r\n rw: 'RW',\r\n rwk: 'TZ',\r\n ryu: 'JP',\r\n sa: 'IN',\r\n saf: 'GH',\r\n sah: 'RU',\r\n saq: 'KE',\r\n sas: 'ID',\r\n sat: 'IN',\r\n sav: 'SN',\r\n saz: 'IN',\r\n sbp: 'TZ',\r\n sc: 'IT',\r\n sck: 'IN',\r\n scn: 'IT',\r\n sco: 'GB',\r\n scs: 'CA',\r\n sd: 'PK',\r\n 'sd-Deva': 'IN',\r\n 'sd-Khoj': 'IN',\r\n 'sd-Sind': 'IN',\r\n sdc: 'IT',\r\n sdh: 'IR',\r\n se: 'NO',\r\n sef: 'CI',\r\n seh: 'MZ',\r\n sei: 'MX',\r\n ses: 'ML',\r\n sg: 'CF',\r\n sga: 'IE',\r\n sgs: 'LT',\r\n shi: 'MA',\r\n shn: 'MM',\r\n si: 'LK',\r\n sid: 'ET',\r\n sk: 'SK',\r\n skr: 'PK',\r\n sl: 'SI',\r\n sli: 'PL',\r\n sly: 'ID',\r\n sm: 'WS',\r\n sma: 'SE',\r\n smj: 'SE',\r\n smn: 'FI',\r\n smp: 'IL',\r\n sms: 'FI',\r\n sn: 'ZW',\r\n snk: 'ML',\r\n so: 'SO',\r\n sou: 'TH',\r\n sq: 'AL',\r\n sr: 'RS',\r\n srb: 'IN',\r\n srn: 'SR',\r\n srr: 'SN',\r\n srx: 'IN',\r\n ss: 'ZA',\r\n ssy: 'ER',\r\n st: 'ZA',\r\n stq: 'DE',\r\n su: 'ID',\r\n suk: 'TZ',\r\n sus: 'GN',\r\n sv: 'SE',\r\n sw: 'TZ',\r\n swb: 'YT',\r\n swc: 'CD',\r\n swg: 'DE',\r\n swv: 'IN',\r\n sxn: 'ID',\r\n syl: 'BD',\r\n syr: 'IQ',\r\n szl: 'PL',\r\n ta: 'IN',\r\n taj: 'NP',\r\n tbw: 'PH',\r\n tcy: 'IN',\r\n tdd: 'CN',\r\n tdg: 'NP',\r\n tdh: 'NP',\r\n te: 'IN',\r\n tem: 'SL',\r\n teo: 'UG',\r\n tet: 'TL',\r\n tg: 'TJ',\r\n 'tg-Arab': 'PK',\r\n th: 'TH',\r\n thl: 'NP',\r\n thq: 'NP',\r\n thr: 'NP',\r\n ti: 'ET',\r\n tig: 'ER',\r\n tiv: 'NG',\r\n tk: 'TM',\r\n tkl: 'TK',\r\n tkr: 'AZ',\r\n tkt: 'NP',\r\n tl: 'PH',\r\n tly: 'AZ',\r\n tmh: 'NE',\r\n tn: 'ZA',\r\n to: 'TO',\r\n tog: 'MW',\r\n tpi: 'PG',\r\n tr: 'TR',\r\n tru: 'TR',\r\n trv: 'TW',\r\n ts: 'ZA',\r\n tsd: 'GR',\r\n tsf: 'NP',\r\n tsg: 'PH',\r\n tsj: 'BT',\r\n tt: 'RU',\r\n ttj: 'UG',\r\n tts: 'TH',\r\n ttt: 'AZ',\r\n tum: 'MW',\r\n tvl: 'TV',\r\n twq: 'NE',\r\n txg: 'CN',\r\n ty: 'PF',\r\n tyv: 'RU',\r\n tzm: 'MA',\r\n udm: 'RU',\r\n ug: 'CN',\r\n 'ug-Cyrl': 'KZ',\r\n uga: 'SY',\r\n uk: 'UA',\r\n uli: 'FM',\r\n umb: 'AO',\r\n und: 'US',\r\n unr: 'IN',\r\n 'unr-Deva': 'NP',\r\n unx: 'IN',\r\n ur: 'PK',\r\n uz: 'UZ',\r\n 'uz-Arab': 'AF',\r\n vai: 'LR',\r\n ve: 'ZA',\r\n vec: 'IT',\r\n vep: 'RU',\r\n vi: 'VN',\r\n vic: 'SX',\r\n vls: 'BE',\r\n vmf: 'DE',\r\n vmw: 'MZ',\r\n vot: 'RU',\r\n vro: 'EE',\r\n vun: 'TZ',\r\n wa: 'BE',\r\n wae: 'CH',\r\n wal: 'ET',\r\n war: 'PH',\r\n wbp: 'AU',\r\n wbq: 'IN',\r\n wbr: 'IN',\r\n wls: 'WF',\r\n wni: 'KM',\r\n wo: 'SN',\r\n wtm: 'IN',\r\n wuu: 'CN',\r\n xav: 'BR',\r\n xcr: 'TR',\r\n xh: 'ZA',\r\n xlc: 'TR',\r\n xld: 'TR',\r\n xmf: 'GE',\r\n xmn: 'CN',\r\n xmr: 'SD',\r\n xna: 'SA',\r\n xnr: 'IN',\r\n xog: 'UG',\r\n xpr: 'IR',\r\n xsa: 'YE',\r\n xsr: 'NP',\r\n yao: 'MZ',\r\n yap: 'FM',\r\n yav: 'CM',\r\n ybb: 'CM',\r\n yo: 'NG',\r\n yrl: 'BR',\r\n yua: 'MX',\r\n yue: 'HK',\r\n 'yue-Hans': 'CN',\r\n za: 'CN',\r\n zag: 'SD',\r\n zdj: 'KM',\r\n zea: 'NL',\r\n zgh: 'MA',\r\n zh: 'CN',\r\n 'zh-Bopo': 'TW',\r\n 'zh-Hanb': 'TW',\r\n 'zh-Hant': 'TW',\r\n zlm: 'TG',\r\n zmi: 'MY',\r\n zu: 'ZA',\r\n zza: 'TR',\r\n};\r\n// --- DEFAULTS END ---\r\n\r\n/**\r\n * \r\n * @returns \r\n */\r\nexport function supportsFlagEmoji(): boolean {\r\n var canvas = document.createElement(\"canvas\");\r\n canvas.height = 10;\r\n canvas.width = canvas.height * 2;\r\n var ctx = canvas.getContext(\"2d\");\r\n ctx!.font = canvas.height + \"px Arial\";\r\n ctx!.fillText(\"🇬🇧\", 0, canvas.height);\r\n var data = ctx!.getImageData(0, 0, canvas.width, canvas.height).data;\r\n var i = 0;\r\n while (i < data.length) {\r\n if (data[i] !== data[i + 1] || data[i] !== data[i + 2]) return true;\r\n i += 4;\r\n }\r\n return false;\r\n}\r\n\r\nexport function estimateCountryCode(locale: string): string {\r\n const split = locale.toUpperCase().split(/-|_/);\r\n const lang = split.shift() ?? '';\r\n let code = split.pop();\r\n\r\n if (!/^[A-Z]{2}$/.test(code as any)) {\r\n code = (defaults as any)[lang.toLowerCase()];\r\n }\r\n\r\n if (code === undefined) {\r\n return '';\r\n }\r\n\r\n return code;\r\n}\r\n\r\nexport function getFlagEmoji2(locale: string) {\r\n const code = estimateCountryCode(locale);\r\n\r\n const a = String.fromCodePoint((code.codePointAt(0) ?? 0) - 0x41 + 0x1F1E6);\r\n const b = String.fromCodePoint((code.codePointAt(1) ?? 0) - 0x41 + 0x1F1E6);\r\n return a + b;\r\n};","import { css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\nimport { estimateCountryCode, getFlagEmoji2, supportsFlagEmoji } from '../functions/flag';\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\nimport { useEffect } from 'haunted';\r\nimport { isNullishOrWhitespace } from '../functions/nullish';\r\n\r\n@customElement('ep-flag')\r\nexport class EPFlag extends LitHauntedElement {\r\n\r\n /**\r\n * Country Code\r\n * https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\r\n */\r\n @property({ attribute: 'iso3166', reflect: true })\r\n iso3166?: string;\r\n\r\n /**\r\n * Language Code\r\n * https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes\r\n */\r\n @property({ attribute: 'iso639', reflect: true })\r\n iso639?: string;\r\n\r\n supportsFlagEmoji = supportsFlagEmoji();\r\n\r\n render() {\r\n useEffect(() => {\r\n if(this.iso639 !== undefined) {\r\n this.iso3166 = estimateCountryCode(this.iso639);\r\n }\r\n }, [this.iso639])\r\n\r\n if (this.iso3166 === undefined) {\r\n return html`❔`\r\n }\r\n\r\n if (this.supportsFlagEmoji) {\r\n return html`${getFlagEmoji2(this.iso3166)}`\r\n }\r\n else if (isNullishOrWhitespace(this.iso3166)) {\r\n return html`🌐`\r\n }\r\n else {\r\n return html``\r\n }\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: inline-flex;\r\n box-shadow: 0px 0px 1px #929292;\r\n }\r\n img {\r\n height: 1em;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-flag': EPFlag\r\n }\r\n}\r\n","export const bounce = [\n { offset: 0, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)', transform: 'translate3d(0, 0, 0)' },\n { offset: 0.2, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)', transform: 'translate3d(0, 0, 0)' },\n { offset: 0.4, easing: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)', transform: 'translate3d(0, -30px, 0) scaleY(1.1)' },\n { offset: 0.43, easing: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)', transform: 'translate3d(0, -30px, 0) scaleY(1.1)' },\n { offset: 0.53, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)', transform: 'translate3d(0, 0, 0)' },\n { offset: 0.7, easing: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)', transform: 'translate3d(0, -15px, 0) scaleY(1.05)' },\n {\n offset: 0.8,\n 'transition-timing-function': 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n transform: 'translate3d(0, 0, 0) scaleY(0.95)'\n },\n { offset: 0.9, transform: 'translate3d(0, -4px, 0) scaleY(1.02)' },\n { offset: 1, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)', transform: 'translate3d(0, 0, 0)' }\n];\n","export const flash = [\n { offset: 0, opacity: '1' },\n { offset: 0.25, opacity: '0' },\n { offset: 0.5, opacity: '1' },\n { offset: 0.75, opacity: '0' },\n { offset: 1, opacity: '1' }\n];\n","export const headShake = [\n { offset: 0, transform: 'translateX(0)' },\n { offset: 0.065, transform: 'translateX(-6px) rotateY(-9deg)' },\n { offset: 0.185, transform: 'translateX(5px) rotateY(7deg)' },\n { offset: 0.315, transform: 'translateX(-3px) rotateY(-5deg)' },\n { offset: 0.435, transform: 'translateX(2px) rotateY(3deg)' },\n { offset: 0.5, transform: 'translateX(0)' }\n];\n","export const heartBeat = [\n { offset: 0, transform: 'scale(1)' },\n { offset: 0.14, transform: 'scale(1.3)' },\n { offset: 0.28, transform: 'scale(1)' },\n { offset: 0.42, transform: 'scale(1.3)' },\n { offset: 0.7, transform: 'scale(1)' }\n];\n","export const jello = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 0.111, transform: 'translate3d(0, 0, 0)' },\n { offset: 0.222, transform: 'skewX(-12.5deg) skewY(-12.5deg)' },\n { offset: 0.33299999999999996, transform: 'skewX(6.25deg) skewY(6.25deg)' },\n { offset: 0.444, transform: 'skewX(-3.125deg) skewY(-3.125deg)' },\n { offset: 0.555, transform: 'skewX(1.5625deg) skewY(1.5625deg)' },\n { offset: 0.6659999999999999, transform: 'skewX(-0.78125deg) skewY(-0.78125deg)' },\n { offset: 0.777, transform: 'skewX(0.390625deg) skewY(0.390625deg)' },\n { offset: 0.888, transform: 'skewX(-0.1953125deg) skewY(-0.1953125deg)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const pulse = [\n { offset: 0, transform: 'scale3d(1, 1, 1)' },\n { offset: 0.5, transform: 'scale3d(1.05, 1.05, 1.05)' },\n { offset: 1, transform: 'scale3d(1, 1, 1)' }\n];\n","export const rubberBand = [\n { offset: 0, transform: 'scale3d(1, 1, 1)' },\n { offset: 0.3, transform: 'scale3d(1.25, 0.75, 1)' },\n { offset: 0.4, transform: 'scale3d(0.75, 1.25, 1)' },\n { offset: 0.5, transform: 'scale3d(1.15, 0.85, 1)' },\n { offset: 0.65, transform: 'scale3d(0.95, 1.05, 1)' },\n { offset: 0.75, transform: 'scale3d(1.05, 0.95, 1)' },\n { offset: 1, transform: 'scale3d(1, 1, 1)' }\n];\n","export const shake = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 0.1, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 0.2, transform: 'translate3d(10px, 0, 0)' },\n { offset: 0.3, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 0.4, transform: 'translate3d(10px, 0, 0)' },\n { offset: 0.5, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 0.6, transform: 'translate3d(10px, 0, 0)' },\n { offset: 0.7, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 0.8, transform: 'translate3d(10px, 0, 0)' },\n { offset: 0.9, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const shakeX = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 0.1, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 0.2, transform: 'translate3d(10px, 0, 0)' },\n { offset: 0.3, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 0.4, transform: 'translate3d(10px, 0, 0)' },\n { offset: 0.5, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 0.6, transform: 'translate3d(10px, 0, 0)' },\n { offset: 0.7, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 0.8, transform: 'translate3d(10px, 0, 0)' },\n { offset: 0.9, transform: 'translate3d(-10px, 0, 0)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const shakeY = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 0.1, transform: 'translate3d(0, -10px, 0)' },\n { offset: 0.2, transform: 'translate3d(0, 10px, 0)' },\n { offset: 0.3, transform: 'translate3d(0, -10px, 0)' },\n { offset: 0.4, transform: 'translate3d(0, 10px, 0)' },\n { offset: 0.5, transform: 'translate3d(0, -10px, 0)' },\n { offset: 0.6, transform: 'translate3d(0, 10px, 0)' },\n { offset: 0.7, transform: 'translate3d(0, -10px, 0)' },\n { offset: 0.8, transform: 'translate3d(0, 10px, 0)' },\n { offset: 0.9, transform: 'translate3d(0, -10px, 0)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const swing = [\n { offset: 0.2, transform: 'rotate3d(0, 0, 1, 15deg)' },\n { offset: 0.4, transform: 'rotate3d(0, 0, 1, -10deg)' },\n { offset: 0.6, transform: 'rotate3d(0, 0, 1, 5deg)' },\n { offset: 0.8, transform: 'rotate3d(0, 0, 1, -5deg)' },\n { offset: 1, transform: 'rotate3d(0, 0, 1, 0deg)' }\n];\n","export const tada = [\n { offset: 0, transform: 'scale3d(1, 1, 1)' },\n { offset: 0.1, transform: 'scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg)' },\n { offset: 0.2, transform: 'scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg)' },\n { offset: 0.3, transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)' },\n { offset: 0.4, transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)' },\n { offset: 0.5, transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)' },\n { offset: 0.6, transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)' },\n { offset: 0.7, transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)' },\n { offset: 0.8, transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)' },\n { offset: 0.9, transform: 'scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)' },\n { offset: 1, transform: 'scale3d(1, 1, 1)' }\n];\n","export const wobble = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 0.15, transform: 'translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg)' },\n { offset: 0.3, transform: 'translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)' },\n { offset: 0.45, transform: 'translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)' },\n { offset: 0.6, transform: 'translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)' },\n { offset: 0.75, transform: 'translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const backInDown = [\n { offset: 0, transform: 'translateY(-1200px) scale(0.7)', opacity: '0.7' },\n { offset: 0.8, transform: 'translateY(0px) scale(0.7)', opacity: '0.7' },\n { offset: 1, transform: 'scale(1)', opacity: '1' }\n];\n","export const backInLeft = [\n { offset: 0, transform: 'translateX(-2000px) scale(0.7)', opacity: '0.7' },\n { offset: 0.8, transform: 'translateX(0px) scale(0.7)', opacity: '0.7' },\n { offset: 1, transform: 'scale(1)', opacity: '1' }\n];\n","export const backInRight = [\n { offset: 0, transform: 'translateX(2000px) scale(0.7)', opacity: '0.7' },\n { offset: 0.8, transform: 'translateX(0px) scale(0.7)', opacity: '0.7' },\n { offset: 1, transform: 'scale(1)', opacity: '1' }\n];\n","export const backInUp = [\n { offset: 0, transform: 'translateY(1200px) scale(0.7)', opacity: '0.7' },\n { offset: 0.8, transform: 'translateY(0px) scale(0.7)', opacity: '0.7' },\n { offset: 1, transform: 'scale(1)', opacity: '1' }\n];\n","export const backOutDown = [\n { offset: 0, transform: 'scale(1)', opacity: '1' },\n { offset: 0.2, transform: 'translateY(0px) scale(0.7)', opacity: '0.7' },\n { offset: 1, transform: 'translateY(700px) scale(0.7)', opacity: '0.7' }\n];\n","export const backOutLeft = [\n { offset: 0, transform: 'scale(1)', opacity: '1' },\n { offset: 0.2, transform: 'translateX(0px) scale(0.7)', opacity: '0.7' },\n { offset: 1, transform: 'translateX(-2000px) scale(0.7)', opacity: '0.7' }\n];\n","export const backOutRight = [\n { offset: 0, transform: 'scale(1)', opacity: '1' },\n { offset: 0.2, transform: 'translateX(0px) scale(0.7)', opacity: '0.7' },\n { offset: 1, transform: 'translateX(2000px) scale(0.7)', opacity: '0.7' }\n];\n","export const backOutUp = [\n { offset: 0, transform: 'scale(1)', opacity: '1' },\n { offset: 0.2, transform: 'translateY(0px) scale(0.7)', opacity: '0.7' },\n { offset: 1, transform: 'translateY(-700px) scale(0.7)', opacity: '0.7' }\n];\n","export const bounceIn = [\n { offset: 0, opacity: '0', transform: 'scale3d(0.3, 0.3, 0.3)' },\n { offset: 0, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.2, transform: 'scale3d(1.1, 1.1, 1.1)' },\n { offset: 0.2, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.4, transform: 'scale3d(0.9, 0.9, 0.9)' },\n { offset: 0.4, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.6, opacity: '1', transform: 'scale3d(1.03, 1.03, 1.03)' },\n { offset: 0.6, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.8, transform: 'scale3d(0.97, 0.97, 0.97)' },\n { offset: 0.8, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 1, opacity: '1', transform: 'scale3d(1, 1, 1)' },\n { offset: 1, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' }\n];\n","export const bounceInDown = [\n { offset: 0, opacity: '0', transform: 'translate3d(0, -3000px, 0) scaleY(3)' },\n { offset: 0, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.6, opacity: '1', transform: 'translate3d(0, 25px, 0) scaleY(0.9)' },\n { offset: 0.6, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.75, transform: 'translate3d(0, -10px, 0) scaleY(0.95)' },\n { offset: 0.75, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.9, transform: 'translate3d(0, 5px, 0) scaleY(0.985)' },\n { offset: 0.9, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' },\n { offset: 1, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' }\n];\n","export const bounceInLeft = [\n { offset: 0, opacity: '0', transform: 'translate3d(-3000px, 0, 0) scaleX(3)' },\n { offset: 0, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.6, opacity: '1', transform: 'translate3d(25px, 0, 0) scaleX(1)' },\n { offset: 0.6, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.75, transform: 'translate3d(-10px, 0, 0) scaleX(0.98)' },\n { offset: 0.75, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.9, transform: 'translate3d(5px, 0, 0) scaleX(0.995)' },\n { offset: 0.9, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' },\n { offset: 1, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' }\n];\n","export const bounceInRight = [\n { offset: 0, opacity: '0', transform: 'translate3d(3000px, 0, 0) scaleX(3)' },\n { offset: 0, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.6, opacity: '1', transform: 'translate3d(-25px, 0, 0) scaleX(1)' },\n { offset: 0.6, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.75, transform: 'translate3d(10px, 0, 0) scaleX(0.98)' },\n { offset: 0.75, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.9, transform: 'translate3d(-5px, 0, 0) scaleX(0.995)' },\n { offset: 0.9, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' },\n { offset: 1, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' }\n];\n","export const bounceInUp = [\n { offset: 0, opacity: '0', transform: 'translate3d(0, 3000px, 0) scaleY(5)' },\n { offset: 0, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.6, opacity: '1', transform: 'translate3d(0, -20px, 0) scaleY(0.9)' },\n { offset: 0.6, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.75, transform: 'translate3d(0, 10px, 0) scaleY(0.95)' },\n { offset: 0.75, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 0.9, transform: 'translate3d(0, -5px, 0) scaleY(0.985)' },\n { offset: 0.9, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' },\n { offset: 1, easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)' }\n];\n","export const bounceOut = [\n { offset: 0.2, transform: 'scale3d(0.9, 0.9, 0.9)' },\n { offset: 0.5, opacity: '1', transform: 'scale3d(1.1, 1.1, 1.1)' },\n { offset: 0.55, opacity: '1', transform: 'scale3d(1.1, 1.1, 1.1)' },\n { offset: 1, opacity: '0', transform: 'scale3d(0.3, 0.3, 0.3)' }\n];\n","export const bounceOutDown = [\n { offset: 0.2, transform: 'translate3d(0, 10px, 0) scaleY(0.985)' },\n { offset: 0.4, opacity: '1', transform: 'translate3d(0, -20px, 0) scaleY(0.9)' },\n { offset: 0.45, opacity: '1', transform: 'translate3d(0, -20px, 0) scaleY(0.9)' },\n { offset: 1, opacity: '0', transform: 'translate3d(0, 2000px, 0) scaleY(3)' }\n];\n","export const bounceOutLeft = [\n { offset: 0.2, opacity: '1', transform: 'translate3d(20px, 0, 0) scaleX(0.9)' },\n { offset: 1, opacity: '0', transform: 'translate3d(-2000px, 0, 0) scaleX(2)' }\n];\n","export const bounceOutRight = [\n { offset: 0.2, opacity: '1', transform: 'translate3d(-20px, 0, 0) scaleX(0.9)' },\n { offset: 1, opacity: '0', transform: 'translate3d(2000px, 0, 0) scaleX(2)' }\n];\n","export const bounceOutUp = [\n { offset: 0.2, transform: 'translate3d(0, -10px, 0) scaleY(0.985)' },\n { offset: 0.4, opacity: '1', transform: 'translate3d(0, 20px, 0) scaleY(0.9)' },\n { offset: 0.45, opacity: '1', transform: 'translate3d(0, 20px, 0) scaleY(0.9)' },\n { offset: 1, opacity: '0', transform: 'translate3d(0, -2000px, 0) scaleY(3)' }\n];\n","export const fadeIn = [\n { offset: 0, opacity: '0' },\n { offset: 1, opacity: '1' }\n];\n","export const fadeInBottomLeft = [\n { offset: 0, opacity: '0', transform: 'translate3d(-100%, 100%, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInBottomRight = [\n { offset: 0, opacity: '0', transform: 'translate3d(100%, 100%, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInDown = [\n { offset: 0, opacity: '0', transform: 'translate3d(0, -100%, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInDownBig = [\n { offset: 0, opacity: '0', transform: 'translate3d(0, -2000px, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInLeft = [\n { offset: 0, opacity: '0', transform: 'translate3d(-100%, 0, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInLeftBig = [\n { offset: 0, opacity: '0', transform: 'translate3d(-2000px, 0, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInRight = [\n { offset: 0, opacity: '0', transform: 'translate3d(100%, 0, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInRightBig = [\n { offset: 0, opacity: '0', transform: 'translate3d(2000px, 0, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInTopLeft = [\n { offset: 0, opacity: '0', transform: 'translate3d(-100%, -100%, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInTopRight = [\n { offset: 0, opacity: '0', transform: 'translate3d(100%, -100%, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInUp = [\n { offset: 0, opacity: '0', transform: 'translate3d(0, 100%, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeInUpBig = [\n { offset: 0, opacity: '0', transform: 'translate3d(0, 2000px, 0)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const fadeOut = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0' }\n];\n","export const fadeOutBottomLeft = [\n { offset: 0, opacity: '1', transform: 'translate3d(0, 0, 0)' },\n { offset: 1, opacity: '0', transform: 'translate3d(-100%, 100%, 0)' }\n];\n","export const fadeOutBottomRight = [\n { offset: 0, opacity: '1', transform: 'translate3d(0, 0, 0)' },\n { offset: 1, opacity: '0', transform: 'translate3d(100%, 100%, 0)' }\n];\n","export const fadeOutDown = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(0, 100%, 0)' }\n];\n","export const fadeOutDownBig = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(0, 2000px, 0)' }\n];\n","export const fadeOutLeft = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(-100%, 0, 0)' }\n];\n","export const fadeOutLeftBig = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(-2000px, 0, 0)' }\n];\n","export const fadeOutRight = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(100%, 0, 0)' }\n];\n","export const fadeOutRightBig = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(2000px, 0, 0)' }\n];\n","export const fadeOutTopLeft = [\n { offset: 0, opacity: '1', transform: 'translate3d(0, 0, 0)' },\n { offset: 1, opacity: '0', transform: 'translate3d(-100%, -100%, 0)' }\n];\n","export const fadeOutTopRight = [\n { offset: 0, opacity: '1', transform: 'translate3d(0, 0, 0)' },\n { offset: 1, opacity: '0', transform: 'translate3d(100%, -100%, 0)' }\n];\n","export const fadeOutUp = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(0, -100%, 0)' }\n];\n","export const fadeOutUpBig = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(0, -2000px, 0)' }\n];\n","export const flip = [\n {\n offset: 0,\n transform: 'perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg)',\n easing: 'ease-out'\n },\n {\n offset: 0.4,\n transform: 'perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)\\n rotate3d(0, 1, 0, -190deg)',\n easing: 'ease-out'\n },\n {\n offset: 0.5,\n transform: 'perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)\\n rotate3d(0, 1, 0, -170deg)',\n easing: 'ease-in'\n },\n {\n offset: 0.8,\n transform: 'perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)\\n rotate3d(0, 1, 0, 0deg)',\n easing: 'ease-in'\n },\n {\n offset: 1,\n transform: 'perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg)',\n easing: 'ease-in'\n }\n];\n","export const flipInX = [\n { offset: 0, transform: 'perspective(400px) rotate3d(1, 0, 0, 90deg)', easing: 'ease-in', opacity: '0' },\n { offset: 0.4, transform: 'perspective(400px) rotate3d(1, 0, 0, -20deg)', easing: 'ease-in' },\n { offset: 0.6, transform: 'perspective(400px) rotate3d(1, 0, 0, 10deg)', opacity: '1' },\n { offset: 0.8, transform: 'perspective(400px) rotate3d(1, 0, 0, -5deg)' },\n { offset: 1, transform: 'perspective(400px)' }\n];\n","export const flipInY = [\n { offset: 0, transform: 'perspective(400px) rotate3d(0, 1, 0, 90deg)', easing: 'ease-in', opacity: '0' },\n { offset: 0.4, transform: 'perspective(400px) rotate3d(0, 1, 0, -20deg)', easing: 'ease-in' },\n { offset: 0.6, transform: 'perspective(400px) rotate3d(0, 1, 0, 10deg)', opacity: '1' },\n { offset: 0.8, transform: 'perspective(400px) rotate3d(0, 1, 0, -5deg)' },\n { offset: 1, transform: 'perspective(400px)' }\n];\n","export const flipOutX = [\n { offset: 0, transform: 'perspective(400px)' },\n { offset: 0.3, transform: 'perspective(400px) rotate3d(1, 0, 0, -20deg)', opacity: '1' },\n { offset: 1, transform: 'perspective(400px) rotate3d(1, 0, 0, 90deg)', opacity: '0' }\n];\n","export const flipOutY = [\n { offset: 0, transform: 'perspective(400px)' },\n { offset: 0.3, transform: 'perspective(400px) rotate3d(0, 1, 0, -15deg)', opacity: '1' },\n { offset: 1, transform: 'perspective(400px) rotate3d(0, 1, 0, 90deg)', opacity: '0' }\n];\n","export const lightSpeedInLeft = [\n { offset: 0, transform: 'translate3d(-100%, 0, 0) skewX(30deg)', opacity: '0' },\n { offset: 0.6, transform: 'skewX(-20deg)', opacity: '1' },\n { offset: 0.8, transform: 'skewX(5deg)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const lightSpeedInRight = [\n { offset: 0, transform: 'translate3d(100%, 0, 0) skewX(-30deg)', opacity: '0' },\n { offset: 0.6, transform: 'skewX(20deg)', opacity: '1' },\n { offset: 0.8, transform: 'skewX(-5deg)' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const lightSpeedOutLeft = [\n { offset: 0, opacity: '1' },\n { offset: 1, transform: 'translate3d(-100%, 0, 0) skewX(-30deg)', opacity: '0' }\n];\n","export const lightSpeedOutRight = [\n { offset: 0, opacity: '1' },\n { offset: 1, transform: 'translate3d(100%, 0, 0) skewX(30deg)', opacity: '0' }\n];\n","export const rotateIn = [\n { offset: 0, transform: 'rotate3d(0, 0, 1, -200deg)', opacity: '0' },\n { offset: 1, transform: 'translate3d(0, 0, 0)', opacity: '1' }\n];\n","export const rotateInDownLeft = [\n { offset: 0, transform: 'rotate3d(0, 0, 1, -45deg)', opacity: '0' },\n { offset: 1, transform: 'translate3d(0, 0, 0)', opacity: '1' }\n];\n","export const rotateInDownRight = [\n { offset: 0, transform: 'rotate3d(0, 0, 1, 45deg)', opacity: '0' },\n { offset: 1, transform: 'translate3d(0, 0, 0)', opacity: '1' }\n];\n","export const rotateInUpLeft = [\n { offset: 0, transform: 'rotate3d(0, 0, 1, 45deg)', opacity: '0' },\n { offset: 1, transform: 'translate3d(0, 0, 0)', opacity: '1' }\n];\n","export const rotateInUpRight = [\n { offset: 0, transform: 'rotate3d(0, 0, 1, -90deg)', opacity: '0' },\n { offset: 1, transform: 'translate3d(0, 0, 0)', opacity: '1' }\n];\n","export const rotateOut = [\n { offset: 0, opacity: '1' },\n { offset: 1, transform: 'rotate3d(0, 0, 1, 200deg)', opacity: '0' }\n];\n","export const rotateOutDownLeft = [\n { offset: 0, opacity: '1' },\n { offset: 1, transform: 'rotate3d(0, 0, 1, 45deg)', opacity: '0' }\n];\n","export const rotateOutDownRight = [\n { offset: 0, opacity: '1' },\n { offset: 1, transform: 'rotate3d(0, 0, 1, -45deg)', opacity: '0' }\n];\n","export const rotateOutUpLeft = [\n { offset: 0, opacity: '1' },\n { offset: 1, transform: 'rotate3d(0, 0, 1, -45deg)', opacity: '0' }\n];\n","export const rotateOutUpRight = [\n { offset: 0, opacity: '1' },\n { offset: 1, transform: 'rotate3d(0, 0, 1, 90deg)', opacity: '0' }\n];\n","export const slideInDown = [\n { offset: 0, transform: 'translate3d(0, -100%, 0)', visibility: 'visible' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const slideInLeft = [\n { offset: 0, transform: 'translate3d(-100%, 0, 0)', visibility: 'visible' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const slideInRight = [\n { offset: 0, transform: 'translate3d(100%, 0, 0)', visibility: 'visible' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const slideInUp = [\n { offset: 0, transform: 'translate3d(0, 100%, 0)', visibility: 'visible' },\n { offset: 1, transform: 'translate3d(0, 0, 0)' }\n];\n","export const slideOutDown = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 1, visibility: 'hidden', transform: 'translate3d(0, 100%, 0)' }\n];\n","export const slideOutLeft = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 1, visibility: 'hidden', transform: 'translate3d(-100%, 0, 0)' }\n];\n","export const slideOutRight = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 1, visibility: 'hidden', transform: 'translate3d(100%, 0, 0)' }\n];\n","export const slideOutUp = [\n { offset: 0, transform: 'translate3d(0, 0, 0)' },\n { offset: 1, visibility: 'hidden', transform: 'translate3d(0, -100%, 0)' }\n];\n","export const hinge = [\n { offset: 0, easing: 'ease-in-out' },\n { offset: 0.2, transform: 'rotate3d(0, 0, 1, 80deg)', easing: 'ease-in-out' },\n { offset: 0.4, transform: 'rotate3d(0, 0, 1, 60deg)', easing: 'ease-in-out', opacity: '1' },\n { offset: 0.6, transform: 'rotate3d(0, 0, 1, 80deg)', easing: 'ease-in-out' },\n { offset: 0.8, transform: 'rotate3d(0, 0, 1, 60deg)', easing: 'ease-in-out', opacity: '1' },\n { offset: 1, transform: 'translate3d(0, 700px, 0)', opacity: '0' }\n];\n","export const jackInTheBox = [\n { offset: 0, opacity: '0', transform: 'scale(0.1) rotate(30deg)', 'transform-origin': 'center bottom' },\n { offset: 0.5, transform: 'rotate(-10deg)' },\n { offset: 0.7, transform: 'rotate(3deg)' },\n { offset: 1, opacity: '1', transform: 'scale(1)' }\n];\n","export const rollIn = [\n { offset: 0, opacity: '0', transform: 'translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg)' },\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\n];\n","export const rollOut = [\n { offset: 0, opacity: '1' },\n { offset: 1, opacity: '0', transform: 'translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg)' }\n];\n","export const zoomIn = [\n { offset: 0, opacity: '0', transform: 'scale3d(0.3, 0.3, 0.3)' },\n { offset: 0.5, opacity: '1' }\n];\n","export const zoomInDown = [\n {\n offset: 0,\n opacity: '0',\n transform: 'scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0)',\n easing: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'\n },\n {\n offset: 0.6,\n opacity: '1',\n transform: 'scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0)',\n easing: 'cubic-bezier(0.175, 0.885, 0.32, 1)'\n }\n];\n","export const zoomInLeft = [\n {\n offset: 0,\n opacity: '0',\n transform: 'scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0)',\n easing: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'\n },\n {\n offset: 0.6,\n opacity: '1',\n transform: 'scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0)',\n easing: 'cubic-bezier(0.175, 0.885, 0.32, 1)'\n }\n];\n","export const zoomInRight = [\n {\n offset: 0,\n opacity: '0',\n transform: 'scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0)',\n easing: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'\n },\n {\n offset: 0.6,\n opacity: '1',\n transform: 'scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0)',\n easing: 'cubic-bezier(0.175, 0.885, 0.32, 1)'\n }\n];\n","export const zoomInUp = [\n {\n offset: 0,\n opacity: '0',\n transform: 'scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0)',\n easing: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'\n },\n {\n offset: 0.6,\n opacity: '1',\n transform: 'scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0)',\n easing: 'cubic-bezier(0.175, 0.885, 0.32, 1)'\n }\n];\n","export const zoomOut = [\n { offset: 0, opacity: '1' },\n { offset: 0.5, opacity: '0', transform: 'scale3d(0.3, 0.3, 0.3)' },\n { offset: 1, opacity: '0' }\n];\n","export const zoomOutDown = [\n {\n offset: 0.4,\n opacity: '1',\n transform: 'scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0)',\n easing: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'\n },\n {\n offset: 1,\n opacity: '0',\n transform: 'scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0)',\n easing: 'cubic-bezier(0.175, 0.885, 0.32, 1)'\n }\n];\n","export const zoomOutLeft = [\n { offset: 0.4, opacity: '1', transform: 'scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0)' },\n { offset: 1, opacity: '0', transform: 'scale(0.1) translate3d(-2000px, 0, 0)' }\n];\n","export const zoomOutRight = [\n { offset: 0.4, opacity: '1', transform: 'scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0)' },\n { offset: 1, opacity: '0', transform: 'scale(0.1) translate3d(2000px, 0, 0)' }\n];\n","export const zoomOutUp = [\n {\n offset: 0.4,\n opacity: '1',\n transform: 'scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0)',\n easing: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'\n },\n {\n offset: 1,\n opacity: '0',\n transform: 'scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0)',\n easing: 'cubic-bezier(0.175, 0.885, 0.32, 1)'\n }\n];\n","export const easings = {\n linear: 'linear',\n ease: 'ease',\n easeIn: 'ease-in',\n easeOut: 'ease-out',\n easeInOut: 'ease-in-out',\n easeInSine: 'cubic-bezier(0.47, 0, 0.745, 0.715)',\n easeOutSine: 'cubic-bezier(0.39, 0.575, 0.565, 1)',\n easeInOutSine: 'cubic-bezier(0.445, 0.05, 0.55, 0.95)',\n easeInQuad: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n easeOutQuad: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n easeInOutQuad: 'cubic-bezier(0.455, 0.03, 0.515, 0.955)',\n easeInCubic: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)',\n easeOutCubic: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n easeInOutCubic: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n easeInQuart: 'cubic-bezier(0.895, 0.03, 0.685, 0.22)',\n easeOutQuart: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\n easeInOutQuart: 'cubic-bezier(0.77, 0, 0.175, 1)',\n easeInQuint: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)',\n easeOutQuint: 'cubic-bezier(0.23, 1, 0.32, 1)',\n easeInOutQuint: 'cubic-bezier(0.86, 0, 0.07, 1)',\n easeInExpo: 'cubic-bezier(0.95, 0.05, 0.795, 0.035)',\n easeOutExpo: 'cubic-bezier(0.19, 1, 0.22, 1)',\n easeInOutExpo: 'cubic-bezier(1, 0, 0, 1)',\n easeInCirc: 'cubic-bezier(0.6, 0.04, 0.98, 0.335)',\n easeOutCirc: 'cubic-bezier(0.075, 0.82, 0.165, 1)',\n easeInOutCirc: 'cubic-bezier(0.785, 0.135, 0.15, 0.86)',\n easeInBack: 'cubic-bezier(0.6, -0.28, 0.735, 0.045)',\n easeOutBack: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n easeInOutBack: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)'\n};\n","import { css, html } from 'lit'\r\nimport { customElement, property, query, state } from 'lit/decorators.js'\r\nimport { styleMap } from 'lit/directives/style-map.js';\r\nimport { useEffect } from 'haunted';\r\nimport type { DataType } from 'csstype'\r\nimport * as animations from '@shoelace-style/animations'\r\nimport { easings } from '@shoelace-style/animations'\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element'\r\n\r\nconst DEFAULT_ENTRANCE: Keyframe[] = [\r\n { offset: 0, opacity: '0', transform: 'translate3d(calc(-1 * clamp(5px, 5%, 15px)), 0, 0)' },\r\n { offset: 1, opacity: '1', transform: 'translate3d(0, 0, 0)' }\r\n]; \r\nconst DEFAULT_EXIT: Keyframe[] = [\r\n { offset: 0, opacity: '1' },\r\n { offset: 1, opacity: '0', transform: 'translate3d(calc(1 * clamp(5px, 5%, 15px)), 0, 0)' }\r\n];\r\n\r\n//#region \r\n\r\n@customElement('ep-multi-view')\r\nexport class EPMultiView extends LitHauntedElement {\r\n #instanceNumber: number = Math.floor(Math.random() * 100) + 1;\r\n\r\n @property({ attribute: 'value', reflect: true })\r\n value?: string;\r\n\r\n @query('slot')\r\n slotElement?: HTMLSlotElement;\r\n\r\n get views(): EPView[] {\r\n return (this.slotElement?.assignedElements() ?? []).filter(e => e instanceof EPView) as EPView[];\r\n }\r\n\r\n @property({ type: Boolean, attribute: 'debug', reflect: true })\r\n debug: boolean = false;\r\n\r\n private _handleValueChange() {\r\n const views = this.views;\r\n // Get the views that will and won't disappear\r\n const willAppear = views.find(v => v.value === this.value);\r\n const willDisappear = views.filter(v => v !== willAppear);\r\n\r\n // Set the `visible` value and rely on the itself to animate itself\r\n if (willAppear !== undefined) {\r\n willAppear.visible = true;\r\n }\r\n for(let view of willDisappear) {\r\n view.visible = false;\r\n }\r\n\r\n console.debug(`[${this.tagName}#${this.#instanceNumber}] HandleValueChange`, 'hasUpdated?', this.hasUpdated, 'willAppear?', willAppear, 'willDisappear?', willDisappear);\r\n }\r\n\r\n render() {\r\n useEffect(() => this._handleValueChange(), [this.value])\r\n\r\n return html`\r\n ${\r\n this.debug\r\n ? html`ep-multi-view value: ${this.value}`\r\n : ''\r\n }\r\n
    \r\n \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n /* outline: 1px dashed blue; */\r\n }\r\n\r\n #debug {\r\n position: fixed;\r\n }\r\n\r\n /*\r\n Simple method for reliably stacking children in CSS without the \"gotchas\" of 'position'\r\n See: https://css-tricks.com/how-to-stack-elements-in-css/#aa-method-2-using-css-grid\r\n\r\n Explanation: Make a CSS grid and put every child in the same position.\r\n */\r\n .wrap {\r\n display: grid;\r\n grid-template-columns: 1fr;\r\n grid-template-rows: 1fr;\r\n height: 100%;\r\n }\r\n `\r\n}\r\n\r\n//#endregion\r\n//#region \r\n\r\n@customElement('ep-view')\r\nexport class EPView extends LitHauntedElement {\r\n #instanceNumber: number = Math.floor(Math.random() * 100) + 1;\r\n\r\n /**\r\n * This view will be visible if this property is equivalent to the value in EPMultiView.value\r\n */\r\n @property({ attribute: 'value', reflect: true })\r\n value?: string;\r\n\r\n @property({ type: Boolean, attribute: 'visible', reflect: true })\r\n visible: boolean = false;\r\n\r\n @state()\r\n shouldBeVisible: boolean = false;\r\n @state()\r\n isAnimating: boolean = false;\r\n\r\n //#region - Customize Animations\r\n\r\n @property({ attribute: 'animation-entrance' })\r\n entranceAnimationName?: string;\r\n\r\n @property({ attribute: 'animation-exit' })\r\n exitAnimationName?: string;\r\n\r\n @property({ attribute: false })\r\n entranceKeyframes: Keyframe[] = [...((animations as any)[this.entranceAnimationName ?? ''] ?? DEFAULT_ENTRANCE)];\r\n\r\n @property({ attribute: false })\r\n exitKeyframes: Keyframe[] = [...((animations as any)[this.exitAnimationName ?? ''] ?? DEFAULT_EXIT)];\r\n\r\n @property({ attribute: 'easing-function' })\r\n easingFunction: DataType.EasingFunction = easings.easeOutSine ?? 'ease-out';\r\n\r\n @property({ type: Number, attribute: 'animation-duration' })\r\n animationDuration: EffectTiming['duration'] = 125;\r\n\r\n //#endregion\r\n\r\n private _handleVisibleChange() {\r\n console.debug(`[${this.tagName}#${this.#instanceNumber}] HandleVisibleChange`, 'hasUpdated?', this.hasUpdated, 'visible?', this.visible);\r\n // On the first render, no special effects\r\n if (!this.hasUpdated) {\r\n this.shouldBeVisible = this.visible;\r\n return;\r\n }\r\n\r\n this.isAnimating = true;\r\n // Perform the animation\r\n const animation = this.animate(this.visible ? this.entranceKeyframes : this.exitKeyframes, {\r\n duration: this.animationDuration,\r\n iterations: 1,\r\n easing: this.easingFunction,\r\n });\r\n // Solidify the end-result of the animation after it has COMPLETED\r\n // This promise will NOT resolve if the animation is cancelled\r\n animation.finished.then(() => {\r\n this.shouldBeVisible = this.visible;\r\n this.isAnimating = false;\r\n //this.setAttribute('data-should-visible', `${this.visible}`)\r\n //this.style.opacity = this.visible ? '1.0' : '0.0';\r\n })\r\n animation.addEventListener('cancel', () => this.isAnimating = false);\r\n }\r\n\r\n render() {\r\n useEffect(() => this._handleVisibleChange(), [this.visible]);\r\n useEffect(() => {\r\n this.setAttribute('data-should-visible', `${this.shouldBeVisible}`)\r\n }, [this.shouldBeVisible]);\r\n useEffect(() => {\r\n this.setAttribute('data-is-animating', `${this.isAnimating}`)\r\n }, [this.isAnimating]);\r\n useEffect(() => {\r\n this.entranceKeyframes = [...((animations as any)[this.entranceAnimationName ?? ''] ?? DEFAULT_ENTRANCE)];\r\n }, [this.entranceAnimationName]);\r\n useEffect(() => {\r\n this.exitKeyframes = [...((animations as any)[this.exitAnimationName ?? ''] ?? DEFAULT_EXIT)];\r\n }, [this.exitAnimationName]);\r\n\r\n return html`\r\n
    \r\n \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: block;\r\n /*\r\n Put every within the same place of a CSS grid.\r\n This will cause them to \"stack\" on top of each other.\r\n See: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area\r\n */\r\n grid-area: 1 / 1 / 1 / 1;\r\n height: fit-content;\r\n }\r\n\r\n /*\r\n This whole mess with the [data-*] tags is so each can be a different size, and so that only the active and/or currently animating views take up DOM space\r\n */\r\n :host([data-should-visible=true]) {\r\n opacity: 1.0;\r\n pointer-events: auto;\r\n display: block;\r\n }\r\n :host([data-should-visible=false]) {\r\n opacity: 0.0;\r\n pointer-events: none;\r\n display: none;\r\n }\r\n :host([data-is-animating=true]) {\r\n display: block;\r\n }\r\n\r\n .view-wrap {\r\n height: 100%;\r\n /*\r\n Prevent the margin of children (such as

    and

    elements) from adding space \"outside\" the parent element\r\n See: https://stackoverflow.com/a/13573739/4852536\r\n */\r\n overflow: hidden;\r\n }\r\n `\r\n}\r\n//#endregion\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-multi-view': EPMultiView,\r\n 'ep-view': EPView,\r\n }\r\n}\r\n","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { styleMap } from 'lit/directives/style-map.js';\r\nimport type { SlInput } from '@shoelace-style/shoelace'\r\nimport { generateUUID } from '../functions/generateUUID';\r\n\r\n\r\n@customElement('ep-chip-input')\r\nexport class EPChipInput extends LitElement {\r\n @property({ attribute: 'type', reflect: true })\r\n type: SlInput['type'] = 'text';\r\n\r\n @property({ attribute: 'placeholder' })\r\n placeholder: string = ''\r\n \r\n @property({ type: Boolean, attribute: 'disabled', reflect: true })\r\n disabled: boolean = false\r\n\r\n @state()\r\n innerValues: { id: string, value: string}[] = [];\r\n\r\n get values(): string[] {\r\n return this.innerValues.map(v => v.value);\r\n }\r\n set values(vals: string[]) {\r\n this.innerValues = vals.map(v => ({ id: generateUUID(), value: v }));\r\n }\r\n\r\n @property({ attribute: false })\r\n draftedValue: string = '';\r\n\r\n private _handleAddDraftedValue() {\r\n if (this.draftedValue.length > 0) {\r\n this.innerValues = [...this.innerValues, { id: generateUUID(), value: this.draftedValue }]\r\n //this.values = [...this.values, this.draftedValue];\r\n this.draftedValue = '';\r\n // Dispatch event\r\n this.dispatchEvent(new CustomEvent('change', {\r\n bubbles: true,\r\n detail: this.values,\r\n }))\r\n }\r\n }\r\n\r\n private _handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n this._handleAddDraftedValue()\r\n }\r\n }\r\n\r\n private _handleRemoveClicked(id: string) {\r\n this.innerValues = [...this.innerValues.filter(v => v.id !== id)];\r\n // Dispatch event\r\n this.dispatchEvent(new CustomEvent('change', {\r\n bubbles: true,\r\n detail: this.values,\r\n }))\r\n }\r\n\r\n // firstUpdated(): void {\r\n // this.values = ['test', 'Hello']\r\n // }\r\n\r\n render() {\r\n return html`\r\n this.draftedValue = (event.target as HTMLInputElement).value}\r\n @keydown=${this._handleKeyDown}\r\n >\r\n
    \r\n ${this.innerValues.map(({ id, value }) => html`\r\n \r\n ${value}\r\n this._handleRemoveClicked(id)}>\r\n \r\n `)}\r\n
    \r\n \r\n 0 ? '1.0' : '0.0'\r\n })}\r\n @click=${this._handleAddDraftedValue}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n --chip-height: 28px;\r\n }\r\n .chips {\r\n display: inline-flex;\r\n gap: 5px;\r\n margin-inline-start: 8px;\r\n }\r\n ep-chip > sl-icon-button {\r\n --temp-font-size: 0.9em;\r\n font-size: var(--temp-font-size);\r\n width: var(--temp-font-size);\r\n height: var(--temp-font-size);\r\n\r\n margin-left: -4px;\r\n }\r\n ep-chip > sl-icon-button::part(base) {\r\n padding: 0;\r\n }\r\n\r\n .add-button {\r\n color: green;\r\n transition: 250ms opacity;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-chip-input': EPChipInput\r\n }\r\n}\r\n","import { css, html } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { useEffect } from 'haunted'\r\nimport { isNullishOrWhitespace } from '../functions/nullish'\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element'\r\n\r\n@customElement('ep-event-propagation-guard')\r\nexport class EPEventPropagationGuard extends LitHauntedElement {\r\n @property({ attribute: 'events', reflect: true })\r\n eventsStr: string = 'click';\r\n\r\n get events(): string[] {\r\n return this.eventsStr.split(',').map(e => e.trim()).filter(e => !isNullishOrWhitespace(e));\r\n }\r\n\r\n @state()\r\n boundEvents = new Set();\r\n\r\n @property({ type: Boolean, attribute: 'debug', reflect: true })\r\n debug: boolean = false;\r\n\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n }\r\n\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n }\r\n \r\n private _handleEvent(event: Event) {\r\n // Stop the propagation of the event\r\n console.debug(`[${this.tagName}] Event propagation blocked: ${event.type} from`, event.target)\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n render() {\r\n useEffect(() => {\r\n // Remove event listener\r\n for(let ev of this.boundEvents) {\r\n this.removeEventListener(ev as any, this._handleEvent.bind(this));\r\n }\r\n // Add event listener\r\n for(let ev of this.events) {\r\n this.addEventListener(ev as any, this._handleEvent.bind(this));\r\n this.boundEvents.add(ev);\r\n }\r\n }, [this.eventsStr])\r\n\r\n return html`\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-event-propagation-guard': EPEventPropagationGuard,\r\n }\r\n}\r\n","import { css, html } from 'lit'\r\nimport { customElement, queryAssignedElements, state } from 'lit/decorators.js'\r\nimport { useEffect } from 'haunted'\r\nimport { stylesBootstrap } from '../styles/bootstrap';\r\nimport { EPProgressStepper } from './ep-progress-stepper';\r\nimport { EPMultiView } from './ep-multi-view';\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\n\r\n@customElement('ep-multi-view-stepper')\r\nexport class EPMultiViewStepper extends LitHauntedElement {\r\n\r\n @queryAssignedElements({ slot: 'stepper', selector: 'ep-progress-stepper' })\r\n slottedStepper!: HTMLElement[];\r\n\r\n @queryAssignedElements({ slot: 'multiview', selector: 'ep-multi-view' })\r\n slottedMultiview!: HTMLElement[];\r\n\r\n get stepper(): EPProgressStepper | undefined {\r\n return this.slottedStepper.find(e => e instanceof EPProgressStepper) as EPProgressStepper;\r\n }\r\n\r\n get multiview(): EPMultiView | undefined {\r\n return this.slottedMultiview.find(e => e instanceof EPMultiView) as EPMultiView;\r\n }\r\n\r\n @state()\r\n instructionsStep: number = 0;\r\n\r\n private _previousStep() {\r\n this.instructionsStep = Math.min(this.stepper?.steps.length ?? 0, Math.max(-1, this.instructionsStep - 1));\r\n }\r\n private _nextStep() {\r\n this.instructionsStep = Math.min(this.stepper?.steps.length ?? 0, Math.max(-1, this.instructionsStep + 1));\r\n }\r\n get previousStepDisabled(): boolean {\r\n return this.instructionsStep <= 0;\r\n }\r\n get nextStepDisabled(): boolean {\r\n if (this.stepper === undefined) return true;\r\n return this.instructionsStep >= (this.stepper.steps.length - 1);\r\n }\r\n\r\n private _handleSlotChange() {\r\n this.requestUpdate('previousStepDisabled');\r\n this.requestUpdate('nextStepDisabled');\r\n }\r\n\r\n render() {\r\n useEffect(() => {\r\n if (this.stepper) this.stepper.activeIndex = this.instructionsStep;\r\n if (this.multiview) this.multiview.value = `${this.instructionsStep}`;\r\n }, [this.instructionsStep]);\r\n\r\n return html`\r\n
    \r\n \r\n
    \r\n \r\n \r\n Previous\r\n \r\n \r\n \r\n Next\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n `\r\n }\r\n\r\n //#region Styles\r\n static styles = [stylesBootstrap, css`\r\n :host {\r\n display: block;\r\n --font-mono: ui-monospace, SFMono-Regular, SF Mono, Menlo, \"Cascadia Mono\", Consolas, Liberation Mono, monospace;\r\n }\r\n\r\n .vstack, .hstack {\r\n display: flex;\r\n }\r\n .hstack {\r\n flex-direction: row;\r\n align-items: center;\r\n }\r\n .vstack {\r\n flex-direction: column;\r\n }\r\n .grid {\r\n display: grid;\r\n }\r\n\r\n .spacer {\r\n display: inline-block;\r\n flex: 1;\r\n }\r\n `]\r\n //#endregion\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-multi-view-stepper': EPMultiViewStepper\r\n }\r\n}\r\n","export default \"data:image/svg+xml,%3csvg%20aria-labelledby='__bolt-status-274-desc'%20fill='%23666666'%20height='16'%20role='img'%20viewBox='0%200%2016%2016'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdesc%20id='__bolt-status-274-desc'%3eCanceled%3c/desc%3e%3ccircle%20cx='8'%20cy='8'%20r='7'%20fill='%23fff'%3e%3c/circle%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M16%208A8%208%200%201%201%200%208a8%208%200%200%201%2016%200zm-1.5%200a6.5%206.5%200%201%201-13%200%206.5%206.5%200%200%201%2013%200zM6.41%205.124a.9.9%200%201%200-1.274%201.272l4.385%204.385a.9.9%200%201%200%201.272-1.273L6.41%205.124z'%3e%3c/path%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20aria-labelledby='__bolt-status-154-desc'%20fill='%2355a362'%20height='16'%20role='img'%20viewBox='0%200%2016%2016'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdesc%20id='__bolt-status-154-desc'%3eSuccess%3c/desc%3e%3ccircle%20cx='8'%20cy='8'%20r='8'%3e%3c/circle%3e%3cpath%20d='M6.062%2011.144l-.003-.002-1.784-1.785A.937.937%200%201%201%205.6%208.031l1.125%201.124%203.88-3.88A.937.937%200%201%201%2011.931%206.6l-4.54%204.54-.004.004a.938.938%200%200%201-1.325%200z'%20fill='%23fff'%3e%3c/path%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20aria-labelledby='__bolt-status-495-desc'%20fill='%23cd4a45'%20height='16'%20role='img'%20viewBox='0%200%2016%2016'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdesc%20id='__bolt-status-495-desc'%3eFailed%3c/desc%3e%3ccircle%20cx='8'%20cy='8'%20r='8'%3e%3c/circle%3e%3cpath%20d='M10.984%205.004a.9.9%200%200%201%200%201.272L9.27%207.99l1.74%201.741a.9.9%200%201%201-1.272%201.273l-1.74-1.741-1.742%201.74a.9.9%200%201%201-1.272-1.272l1.74-1.74-1.713-1.714a.9.9%200%200%201%201.273-1.273l1.713%201.713%201.714-1.713a.9.9%200%200%201%201.273%200z'%20fill='%23fff'%3e%3c/path%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20aria-labelledby='__bolt-status-1061-desc'%20fill='%230078d4'%20height='16'%20role='img'%20viewBox='0%200%2016%2016'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%3e%3canimateTransform%20attributeName='transform'%20attributeType='XML'%20type='rotate'%20from='0'%20to='360'%20dur='8s'%20repeatCount='indefinite'%20/%3e%3cdesc%20id='__bolt-status-1061-desc'%3eRunning%3c/desc%3e%3ccircle%20cx='8'%20cy='8'%20r='8'%3e%3c/circle%3e%3cpath%20d='M4.75%208a3.25%203.25%200%200%201%201.917-2.965c.33-.148.583-.453.583-.814%200-.479-.432-.848-.881-.683A4.752%204.752%200%200%200%203.29%208.62c.064.49.616.697%201.043.45.303-.175.443-.528.423-.877A3.304%203.304%200%200%201%204.75%208zm6.5%200c0%20.065-.002.13-.006.194-.02.349.12.702.422.877.428.247.98.04%201.044-.45a4.752%204.752%200%200%200-3.078-5.084c-.45-.164-.882.205-.882.684%200%20.36.253.666.583.814A3.25%203.25%200%200%201%2011.25%208zM8%2011.25c.758%200%201.455-.26%202.008-.694.293-.23.696-.31%201.019-.123.402.233.51.77.167%201.083A4.733%204.733%200%200%201%208%2012.75c-1.23%200-2.35-.467-3.194-1.234-.344-.312-.235-.85.168-1.083.322-.186.725-.108%201.018.123.553.435%201.25.694%202.008.694z'%20fill='%23fff'%3e%3c/path%3e%3c/svg%3e%3c!--%20runningAnimation%208s%20infinite%20linear%20--%3e%3c!--%20100%25%20{%20transform:%20rotate(360deg);%20}%20--%3e\"","export default \"data:image/svg+xml,%3csvg%20fill='%23666666'%20height='16'%20role='presentation'%20viewBox='0%200%2016%2016'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='8'%20cy='8'%20r='7'%20fill='%23fff'%3e%3c/circle%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016A8%208%200%201%200%208%200a8%208%200%200%200%200%2016zm0-1.5a6.5%206.5%200%201%200%200-13%206.5%206.5%200%200%200%200%2013z'%3e%3c/path%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20fill='%230078d4'%20height='16'%20role='presentation'%20viewBox='0%200%2016%2016'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='8'%20cy='8'%20r='8'%3e%3c/circle%3e%3cpath%20d='M8%203.5a.9.9%200%200%201%20.9.9v3.325l2.002%202.001A.9.9%200%201%201%209.629%2011L7.408%208.778A.898.898%200%200%201%207.1%208.1V4.4a.9.9%200%200%201%20.9-.9z'%20fill='%23fff'%3e%3c/path%3e%3c/svg%3e\"","import { LitElement, css, html } from 'lit'\r\nimport { customElement, property } from 'lit/decorators.js'\r\n\r\nexport type PipelineIcon = 'cancelled' | 'completed' | 'failed' | 'in_progress' | 'neutral' | 'pending'\r\n\r\nimport CANCELLED_SVG from './cancelled.svg'\r\nimport COMPLETED_SVG from './completed.svg'\r\nimport FAILED_SVG from './failed.svg'\r\nimport IN_PROGRESS_SVG from './in_progress.svg'\r\nimport NEUTRAL_SVG from './neutral.svg'\r\nimport PENDING_SVG from './pending.svg'\r\n\r\nconst Icons: Record = {\r\n 'cancelled': CANCELLED_SVG,\r\n 'completed': COMPLETED_SVG,\r\n 'failed': FAILED_SVG,\r\n 'in_progress': IN_PROGRESS_SVG,\r\n 'neutral': NEUTRAL_SVG,\r\n 'pending': PENDING_SVG,\r\n}\r\n\r\n@customElement('ep-pipeline-icon')\r\nexport class EPPipelineIcon extends LitElement {\r\n\r\n @property({ type: String, attribute: 'name', reflect: true })\r\n name?: PipelineIcon;\r\n\r\n render() {\r\n return html`\r\n \r\n `\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n --size: 16px;\r\n display: inline-block;\r\n width: var(--size);\r\n height: var(--size);\r\n /* background-color: blue; */\r\n }\r\n\r\n svg, img {\r\n display: block;\r\n width: var(--size);\r\n height: var(--size);\r\n margin: 0;\r\n padding: 0;\r\n /* background-color: red; */\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-pipeline-icon': EPPipelineIcon\r\n }\r\n}\r\n","import { css, html } from 'lit'\r\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\r\nimport { useEffect } from 'haunted'\r\nimport { isNullishOrWhitespace } from '../functions/nullish';\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\n\r\nconst Z_INDEX_MAX_VALUE = 2147483647;\r\n\r\nexport type EPVisualAssociationScope = 'root' | 'global'\r\n\r\n@customElement('ep-visual-association')\r\nexport class EPVisualAssociation extends LitHauntedElement {\r\n @property({ attribute: 'target', reflect: true })\r\n target?: string = '';\r\n\r\n @property({ attribute: 'scope', reflect: true })\r\n scope: EPVisualAssociationScope = 'root'\r\n\r\n @queryAssignedElements()\r\n slotted!: HTMLElement[];\r\n\r\n @property({ type: Boolean, attribute: 'open', reflect: true })\r\n isMouseOver = false;\r\n\r\n @property({ type: Number, attribute: 'cooldown' })\r\n castTime: number = 500;\r\n castTimeoutID?: number;\r\n\r\n runningAnimations = new Set();\r\n\r\n render() { \r\n useEffect(() => {\r\n if (this.isMouseOver) {\r\n this.castTimeoutID = window.setTimeout(() => {\r\n // If we're still holding the mouse over it after the delay, actually do the animations\r\n if (this.isMouseOver) {\r\n for(let target of this.acquireTarget()) {\r\n const animations = this.startSpotlight(target);\r\n animations.forEach(anim => this.runningAnimations.add(anim));\r\n //this.runningAnimations.add(animations);\r\n }\r\n }\r\n }, this.castTime);\r\n }\r\n else {\r\n clearTimeout(this.castTimeoutID);\r\n for(let animation of this.runningAnimations) {\r\n animation.cancel();\r\n this.runningAnimations.delete(animation);\r\n }\r\n }\r\n }, [this.isMouseOver]);\r\n \r\n return html`\r\n \r\n \r\n
    \r\n `\r\n }\r\n\r\n public acquireRootNode(): Document | ShadowRoot | null {\r\n if (this.scope === 'root') {\r\n const node = this.getRootNode();\r\n if (node instanceof Document || node instanceof ShadowRoot) {\r\n return node;\r\n }\r\n }\r\n else if (this.scope === 'global') {\r\n return document;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public acquireTarget(): HTMLElement[] {\r\n // Acquire root node\r\n const root = this.acquireRootNode();\r\n\r\n // Return early if we had trouble getting the root node\r\n if (root === null) return [];\r\n if (isNullishOrWhitespace(this.target)) return [];\r\n\r\n return Array.from(root.querySelectorAll(this.target));\r\n }\r\n\r\n private startSpotlight(target: HTMLElement): Animation[] {\r\n const layerChange = target.animate([\r\n {\r\n //transform: 'scale(1.15)',\r\n //filter: 'invert(1)',\r\n position: 'relative',\r\n zIndex: Z_INDEX_MAX_VALUE - 1,\r\n //boxShadow: SHADOW_64,\r\n boxShadow: '0 0 25px 25px rgba(255,255,255,0.45)',\r\n //opacity: 0.0,\r\n },\r\n {\r\n //transform: 'scale(1.15)',\r\n //filter: 'invert(1)',\r\n position: 'relative',\r\n zIndex: Z_INDEX_MAX_VALUE - 1,\r\n //boxShadow: SHADOW_64,\r\n boxShadow: '0 0 25px 25px rgba(255,255,255,0.45)',\r\n //opacity: 1.0,\r\n },\r\n ], {\r\n duration: 1,\r\n iterations: Infinity,\r\n });\r\n const scale = target.animate([\r\n {\r\n transform: 'scale(1.0)',\r\n },\r\n {\r\n transform: 'scale(1.1)',\r\n },\r\n ], {\r\n duration: 2000,\r\n direction: 'alternate',\r\n iterations: Infinity,\r\n delay: 2000 * 3,\r\n });\r\n const flash = target.animate([\r\n {\r\n filter: 'brightness(0.75)',\r\n },\r\n {\r\n filter: 'brightness(1.25)',\r\n },\r\n ], {\r\n duration: 2000,\r\n direction: 'alternate',\r\n iterations: Infinity,\r\n delay: 2000 * 5,\r\n });\r\n return [layerChange, scale, flash];\r\n }\r\n\r\n private _handleMouseOver() {\r\n console.debug(`[${this.tagName}] Mouse over!`);\r\n this.isMouseOver = true;\r\n }\r\n\r\n private _handleMouseOut() {\r\n console.debug(`[${this.tagName}] Mouse out!`);\r\n this.isMouseOver = false;\r\n }\r\n\r\n static styles = css`\r\n :host {\r\n display: contents;\r\n }\r\n\r\n .spotlight-backdrop {\r\n position: fixed;\r\n z-index: ${Z_INDEX_MAX_VALUE - 2};\r\n top: 0;\r\n left: 0;\r\n width: 100vw;\r\n height: 100vh;\r\n margin: 0;\r\n padding: 0;\r\n background: rgba(0, 0, 0, 0.3);\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 500ms;\r\n }\r\n\r\n @media (prefers-reduced-motion) {\r\n .spotlight-backdrop {\r\n transition: none;\r\n }\r\n }\r\n \r\n .spotlight-backdrop[data-mouseover=true] {\r\n opacity: 1;\r\n transition-delay: var(--transition-activate-delay);\r\n }\r\n `\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-visual-association': EPVisualAssociation\r\n }\r\n}\r\n","import { css, html } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport { useEffect } from 'haunted'\r\nimport { LitHauntedElement } from '../mixins/lit-haunted-element';\r\nimport { ReportsAPI } from '../modules/mng-custom-reports/WebMethods';\r\nimport { FileReferenceAPI, FileReferenceClientStatus, FileReferenceMetadata } from './file-io/FileReference';\r\nimport { stylesBootstrap } from '../styles/bootstrap';\r\nimport { IntervalController } from '../controllers/interval-controller';\r\nimport { isNullishOrWhitespace } from '../functions/nullish';\r\n\r\ntype RunnerStatus = 'idle' | 'running' | 'completed' | 'failed'\r\n\r\n@customElement('ep-report-runner')\r\nexport class EPReportRunner extends LitHauntedElement {\r\n\r\n @property({ attribute: 'api-origin', reflect: false })\r\n apiOrigin: string = window.origin;\r\n\r\n @property({ attribute: 'definition', reflect: true })\r\n definition?: string = '';\r\n\r\n @property({ attribute: 'size', reflect: true })\r\n size: 'small' | 'medium' | 'large' = 'medium';\r\n\r\n @property({ type: Boolean, attribute: 'outline', reflect: true })\r\n outline: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'pill', reflect: true })\r\n pill: boolean = false;\r\n\r\n @property({ type: Boolean, attribute: 'circle', reflect: true })\r\n circle: boolean = false;\r\n\r\n // -----------------\r\n\r\n @state()\r\n reportsProvider?: ReportsAPI;\r\n\r\n @state()\r\n fileReferenceProvider?: FileReferenceAPI;\r\n\r\n @state()\r\n metadata?: FileReferenceMetadata;\r\n private _isFetchingMetadata: boolean = false;\r\n\r\n @state()\r\n fileReferenceID?: string;\r\n\r\n @state()\r\n status: RunnerStatus = 'idle'\r\n\r\n\r\n //#region Event Handlers\r\n\r\n public fileCheckInterval = new IntervalController(this, () => {\r\n (async () => {\r\n await this._updateFileMetadata();\r\n })();\r\n }, 2 * 1000); // 2 seconds\r\n\r\n private async _updateFileMetadata() {\r\n try {\r\n if (this.status !== 'running') return;\r\n if (this._isFetchingMetadata) return;\r\n if (this.fileReferenceProvider && this.fileReferenceID) {\r\n this._isFetchingMetadata = true;\r\n this.metadata = await this.fileReferenceProvider.GetFileReferenceMetadata(this.fileReferenceID);\r\n\r\n // Define \"final\" statuses\r\n const FINAL_STATUSES: FileReferenceClientStatus[] = ['InvalidFileReferenceID', 'Cancelled', 'TemporaryDowntime', 'Complete'];\r\n // If we were given back a \"final\" status that should mean we stop future checks\r\n if (this.metadata && FINAL_STATUSES.includes(this.metadata.Status)) {\r\n console.timeEnd(`Running report: ${this.fileReferenceID}`);\r\n // Regardless, we stop future checks\r\n this.fileCheckInterval.stopInterval();\r\n // Reset the button back after 5 seconds\r\n setTimeout(() => {\r\n this._reset();\r\n }, 5000);\r\n\r\n // If something good happened\r\n if (this.metadata.Status === 'Complete' && this.metadata.ContentDownloadUrl !== null) {\r\n this.status = 'completed';\r\n console.debug(`[${this.tagName}] Attempting to download: `, this.metadata.ContentDownloadUrl);\r\n /**\r\n * This is the best method for doing this that doesn't trigger popup blockers\r\n * Most browsers will download the file if there's `Content-Disposition` headers\r\n * without ever leaving the original page.\r\n */\r\n window.location.href = this.metadata.ContentDownloadUrl;\r\n }\r\n else {\r\n this.status = 'failed';\r\n console.error(`[${this.tagName}] Metadata did not indicate success: `, this.metadata);\r\n }\r\n }\r\n }\r\n }\r\n catch(err) {\r\n console.error(err);\r\n }\r\n finally {\r\n this._isFetchingMetadata = false;\r\n }\r\n }\r\n\r\n private _reset() {\r\n this.status = 'idle';\r\n this.metadata = undefined;\r\n this.fileReferenceID = undefined;\r\n }\r\n\r\n private async _handleClick() {\r\n if (!this.reportsProvider) return;\r\n if (!this.fileReferenceProvider) return;\r\n if (isNullishOrWhitespace(this.definition)) return;\r\n if (this.status !== 'idle') return;\r\n this.status = 'running';\r\n try {\r\n this.fileReferenceID = await this.reportsProvider.RunReport(this.definition);\r\n console.time(`Running report: ${this.fileReferenceID}`);\r\n this.fileCheckInterval.startInterval();\r\n await this._updateFileMetadata();\r\n }\r\n catch(err) {\r\n console.error(err);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Renders\r\n\r\n render() { \r\n //#region Effects\r\n\r\n // Whenever the API URL is updated, create a new provider\r\n useEffect(() => {\r\n try {\r\n const url = new URL(this.apiOrigin, window.origin);\r\n this.reportsProvider = new ReportsAPI(url);\r\n this.fileReferenceProvider = new FileReferenceAPI(url);\r\n }\r\n catch {}\r\n }, [this.apiOrigin]);\r\n\r\n //#endregion\r\n\r\n //#region Main Render\r\n\r\n return html`\r\n \r\n ${\r\n this.status === 'running'\r\n ? html`Preparing document...`\r\n : this.status === 'failed'\r\n ? html`There was a problem preparing the document`\r\n : this.status === 'completed'\r\n ? html`Your document was prepared successfully and is downloading now`\r\n : ''\r\n }\r\n \r\n ${\r\n this.status === 'completed'\r\n ? html`\r\n \r\n \r\n `\r\n : this.status === 'failed'\r\n ? html`\r\n \r\n 🛑\r\n `\r\n : this.status === 'idle'\r\n ? html`\r\n \r\n \r\n 🖨️\r\n \r\n `\r\n : ''\r\n }\r\n \r\n \r\n \r\n `\r\n //#endregion\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Styles\r\n static styles = [stylesBootstrap, css`\r\n :host {\r\n display: inline-block;\r\n width: auto;\r\n font-family: var(--bs-body-font-family);\r\n font-size: var(--bs-body-font-size);\r\n font-weight: var(--bs-body-font-weight);\r\n line-height: var(--bs-body-line-height);\r\n color: var(--bs-body-color);\r\n --font-mono: ui-monospace, SFMono-Regular, SF Mono, Menlo, \"Cascadia Mono\", Consolas, Liberation Mono, monospace;\r\n }\r\n .text-white-outline {\r\n text-shadow: -1px -1px 0 #fff, \r\n 1px -1px 0 #fff,\r\n -1px 1px 0 #fff,\r\n 1px 1px 0 #fff;\r\n }\r\n `]\r\n //#endregion\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-report-runner': EPReportRunner\r\n }\r\n}\r\n","import { css, html, unsafeCSS } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { createRef, ref, Ref } from 'lit/directives/ref.js';\r\nimport type Uppy from '@uppy/core'\r\nimport { useEffect } from 'haunted'\r\nimport { LitHauntedElement } from '../../mixins/lit-haunted-element';\r\nimport { FileReferenceAPI } from './FileReference';\r\nimport { isNullishOrWhitespace } from '../../functions/nullish';\r\nimport { IntervalController } from '../../controllers/interval-controller';\r\n\r\ntype UploadMode = 'single' | 'multiple' | 'uninitialized'\r\n\r\n@customElement('ep-async-file-uploader')\r\nexport class EPAsyncFileUploader extends LitHauntedElement {\r\n private uppyContainerRef: Ref = createRef();\r\n\r\n @property({ attribute: 'api-origin', reflect: false })\r\n apiOrigin: string = window.origin;\r\n\r\n @property({ attribute: 'file-reference', reflect: true })\r\n fileReferenceID?: string = '';\r\n\r\n @property({ attribute: 'file-reference-group', reflect: true })\r\n fileReferenceGroupID?: string = '';\r\n\r\n @property({ type: Boolean, attribute: 'show-existing-files', reflect: true })\r\n showExistingFiles: boolean = false;\r\n\r\n get mode(): UploadMode {\r\n if (!isNullishOrWhitespace(this.fileReferenceID)) {\r\n return 'single'\r\n }\r\n else if (!isNullishOrWhitespace(this.fileReferenceGroupID)) {\r\n return 'multiple'\r\n }\r\n return 'uninitialized';\r\n }\r\n\r\n // Used to keep the session alive during long running uploads\r\n public sessionKeepAliveInterval = new IntervalController(this, () => {\r\n (async () => {\r\n try {\r\n if (this.provider) {\r\n await this.provider.Ping();\r\n }\r\n }\r\n catch {}\r\n })();\r\n }, 120 * 1000); // 2 minutes\r\n\r\n // -----------------\r\n\r\n @state()\r\n provider?: FileReferenceAPI;\r\n\r\n private uppy?: Uppy | null = undefined;\r\n\r\n //#region Event Handlers\r\n\r\n private async _updateUppyRestrictions() {\r\n if (!this.provider) return;\r\n if (!this.uppy) return;\r\n \r\n const setDashboardDisabled = (disabled: boolean) => {\r\n if (this.uppy) {\r\n const { plugins } = this.uppy.getState();\r\n if (plugins['Dashboard']) {\r\n plugins['Dashboard'].disabled = disabled;\r\n }\r\n this.uppy.setState({\r\n plugins: {\r\n ...plugins,\r\n }\r\n })\r\n }\r\n }\r\n \r\n if (this.mode === 'single') {\r\n setDashboardDisabled(false);\r\n this.uppy.setOptions({\r\n ...this.uppy.opts,\r\n restrictions: {\r\n minFileSize: 1,\r\n maxFileSize: null,\r\n minNumberOfFiles: 1,\r\n maxNumberOfFiles: 1,\r\n }\r\n });\r\n }\r\n else if (this.mode === 'multiple') {\r\n setDashboardDisabled(false);\r\n // Get information about the group and set \r\n const groupMeta = await this.provider.GetGroupMetadata(this.fileReferenceGroupID ?? '');\r\n this.uppy.setOptions({\r\n ...this.uppy.opts,\r\n restrictions: {\r\n minFileSize: 1,\r\n maxFileSize: groupMeta.FileSizeLimit,\r\n minNumberOfFiles: 1,\r\n maxNumberOfFiles: groupMeta.RemainingFiles,\r\n }\r\n });\r\n\r\n // Pre-populate files that have already been uploaded (if we are configured to do so)\r\n if (this.showExistingFiles) {\r\n const existingFiles = await this.provider.GetManyFileReferenceMetadata(groupMeta.FileReferences);\r\n for(let fileMeta of existingFiles) {\r\n if (fileMeta.Status === 'Complete' && fileMeta.FileName !== null && fileMeta.EstimatedFileSize !== null) {\r\n // Based on: https://github.com/transloadit/uppy/issues/1112#issuecomment-432339569\r\n const fileID = this.uppy.addFile({\r\n name: fileMeta.FileName,\r\n lastModified: fileMeta.CreationDate?.valueOf() ?? undefined,\r\n meta: {\r\n //name: fakeName,\r\n relativePath: `FR/${fileMeta.FileReferenceID}/${fileMeta.FileName}`,\r\n // Re-use author field to show file date and download link\r\n // author: fileMeta.CreationDate === null ? undefined : {\r\n // name: '⬇️ ',\r\n // url: fileMeta.ContentDownloadUrl,\r\n // },\r\n },\r\n data: {\r\n size: fileMeta.EstimatedFileSize\r\n },\r\n isRemote: true,\r\n });\r\n this.uppy.setFileState(fileID, {\r\n progress: {\r\n // @ts-ignore\r\n uploadStarted: true,\r\n uploadComplete: true,\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n setDashboardDisabled(true);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Renders\r\n\r\n render() { \r\n //#region Effects\r\n\r\n // Whenever the API URL is updated, create a new provider\r\n useEffect(() => {\r\n try {\r\n const url = new URL(this.apiOrigin, window.origin);\r\n this.provider = new FileReferenceAPI(url);\r\n }\r\n catch {}\r\n }, [this.apiOrigin]);\r\n\r\n useEffect(async () => {\r\n if (!this.provider) return;\r\n if (!this.uppyContainerRef.value) return;\r\n if (this.uppy !== undefined) return;\r\n this.uppy = null;\r\n\r\n const { Uppy } = await import('@uppy/core');\r\n const { default: Dashboard } = await import('@uppy/dashboard');\r\n const { FileReferenceUppyPlugin } = await import('./FileReferenceUppyPlugin');\r\n const stylesUppy = await import('@uppy/core/dist/style.css?inline');\r\n const stylesUppyDashboard = await import('@uppy/dashboard/dist/style.css?inline');\r\n\r\n if (this.renderRoot instanceof ShadowRoot) {\r\n this.renderRoot.adoptedStyleSheets = [\r\n ...this.renderRoot.adoptedStyleSheets,\r\n unsafeCSS(stylesUppy.default).styleSheet!,\r\n unsafeCSS(stylesUppyDashboard.default).styleSheet!,\r\n ];\r\n }\r\n\r\n this.uppy = new Uppy({\r\n debug: true,\r\n autoProceed: false,\r\n allowMultipleUploadBatches: true,\r\n restrictions: {\r\n minFileSize: 0,\r\n maxFileSize: 0,\r\n minNumberOfFiles: 0,\r\n maxNumberOfFiles: 0,\r\n }\r\n //@ts-ignore Consider removing once this has fixed and we can update our @uppy/* dependencies: https://github.com/transloadit/uppy/issues/5585\r\n }).use(Dashboard, {\r\n target: this.uppyContainerRef.value,\r\n inline: true,\r\n showProgressDetails: true,\r\n proudlyDisplayPoweredByUppy: false,\r\n disabled: false,\r\n }).use(FileReferenceUppyPlugin, {\r\n provider: this.provider,\r\n getHost: () => this,\r\n });\r\n\r\n await this._updateUppyRestrictions();\r\n }, [this.provider, this.uppyContainerRef]);\r\n\r\n useEffect(async () => {\r\n await this._updateUppyRestrictions();\r\n }, [this.fileReferenceID, this.fileReferenceGroupID])\r\n\r\n //#endregion\r\n\r\n //#region Main Render\r\n\r\n return html`\r\n
    \r\n `\r\n //#endregion\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Styles\r\n static styles = [css`\r\n :host {\r\n display: block;\r\n width: auto;\r\n font-family: var(--bs-body-font-family);\r\n font-size: var(--bs-body-font-size);\r\n font-weight: var(--bs-body-font-weight);\r\n line-height: var(--bs-body-line-height);\r\n color: var(--bs-body-color);\r\n --font-mono: ui-monospace, SFMono-Regular, SF Mono, Menlo, \"Cascadia Mono\", Consolas, Liberation Mono, monospace;\r\n }\r\n .container {\r\n display: grid;\r\n grid-template-columns: 1fr;\r\n grid-template-rows: 1fr;\r\n height: 100%;\r\n }\r\n .uppy-Dashboard {\r\n height: 100%;\r\n }\r\n .uppy-Dashboard-inner {\r\n /* width: 750px;\r\n height: 550px; */\r\n width: auto!important;\r\n height: 100%!important;\r\n }\r\n `]\r\n //#endregion\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-async-file-uploader': EPAsyncFileUploader\r\n }\r\n}\r\n","// src/subscribable.ts\nvar Subscribable = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n this.listeners.add(listener);\n this.onSubscribe();\n return () => {\n this.listeners.delete(listener);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n};\nexport {\n Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/utils.ts\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive = query.isActive();\n if (type === \"active\" && !isActive) {\n return false;\n }\n if (type === \"inactive\" && isActive) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const { exact, status, predicate, mutationKey } = filters;\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (status && mutation.state.status !== status) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = options?.queryKeyHashFn || hashKey;\n return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n return JSON.stringify(\n queryKey,\n (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val\n );\n}\nfunction partialMatchKey(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]));\n }\n return false;\n}\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n const array = isPlainArray(a) && isPlainArray(b);\n if (array || isPlainObject(a) && isPlainObject(b)) {\n const aItems = array ? a : Object.keys(a);\n const aSize = aItems.length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n if ((!array && aItems.includes(key) || array) && a[key] === void 0 && b[key] === void 0) {\n copy[key] = void 0;\n equalItems++;\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key]);\n if (copy[key] === a[key] && a[key] !== void 0) {\n equalItems++;\n }\n }\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n return b;\n}\nfunction shallowEqualObjects(a, b) {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (ctor === void 0) {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout);\n });\n}\nfunction replaceData(prevData, data, options) {\n if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n return replaceEqualDeep(prevData, data);\n } catch (error) {\n console.error(\n `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n );\n }\n }\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nfunction keepPreviousData(previousData) {\n return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n );\n }\n }\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise;\n }\n if (!options.queryFn || options.queryFn === skipToken) {\n return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n }\n return options.queryFn;\n}\nexport {\n addToEnd,\n addToStart,\n ensureQueryFn,\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n isPlainArray,\n isPlainObject,\n isServer,\n isValidTimeout,\n keepPreviousData,\n matchMutation,\n matchQuery,\n noop,\n partialMatchKey,\n replaceData,\n replaceEqualDeep,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.#focused !== focused;\n if (changed) {\n this.#focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n const isFocused = this.isFocused();\n this.listeners.forEach((listener) => {\n listener(isFocused);\n });\n }\n isFocused() {\n if (typeof this.#focused === \"boolean\") {\n return this.#focused;\n }\n return globalThis.document?.visibilityState !== \"hidden\";\n }\n};\nvar focusManager = new FocusManager();\nexport {\n FocusManager,\n focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true);\n const offlineListener = () => onOnline(false);\n window.addEventListener(\"online\", onlineListener, false);\n window.addEventListener(\"offline\", offlineListener, false);\n return () => {\n window.removeEventListener(\"online\", onlineListener);\n window.removeEventListener(\"offline\", offlineListener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup(this.setOnline.bind(this));\n }\n setOnline(online) {\n const changed = this.#online !== online;\n if (changed) {\n this.#online = online;\n this.listeners.forEach((listener) => {\n listener(online);\n });\n }\n }\n isOnline() {\n return this.#online;\n }\n};\nvar onlineManager = new OnlineManager();\nexport {\n OnlineManager,\n onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/thenable.ts\nfunction pendingThenable() {\n let resolve;\n let reject;\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n thenable.status = \"pending\";\n thenable.catch(() => {\n });\n function finalize(data) {\n Object.assign(thenable, data);\n delete thenable.resolve;\n delete thenable.reject;\n }\n thenable.resolve = (value) => {\n finalize({\n status: \"fulfilled\",\n value\n });\n resolve(value);\n };\n thenable.reject = (reason) => {\n finalize({\n status: \"rejected\",\n reason\n });\n reject(reason);\n };\n return thenable;\n}\nexport {\n pendingThenable\n};\n//# sourceMappingURL=thenable.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n constructor(options) {\n super(\"CancelledError\");\n this.revert = options?.revert;\n this.silent = options?.silent;\n }\n};\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n const thenable = pendingThenable();\n const cancel = (cancelOptions) => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort?.();\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n const canStart = () => canFetch(config.networkMode) && config.canRun();\n const resolve = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onSuccess?.(value);\n continueFn?.();\n thenable.resolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved) {\n isResolved = true;\n config.onError?.(value);\n continueFn?.();\n thenable.reject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || canContinue()) {\n continueResolve(value);\n }\n };\n config.onPause?.();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved) {\n config.onContinue?.();\n }\n });\n };\n const run = () => {\n if (isResolved) {\n return;\n }\n let promiseOrValue;\n const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n try {\n promiseOrValue = initialPromise ?? config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n if (isResolved) {\n return;\n }\n const retry = config.retry ?? (isServer ? 0 : 3);\n const retryDelay = config.retryDelay ?? defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n if (isRetryCancelled || !shouldRetry) {\n reject(error);\n return;\n }\n failureCount++;\n config.onFail?.(failureCount, error);\n sleep(delay).then(() => {\n return canContinue() ? void 0 : pause();\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n };\n return {\n promise: thenable,\n cancel,\n continue: () => {\n continueFn?.();\n return thenable;\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n if (canStart()) {\n run();\n } else {\n pause().then(run);\n }\n return thenable;\n }\n };\n}\nexport {\n CancelledError,\n canFetch,\n createRetryer,\n isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/notifyManager.ts\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = (cb) => setTimeout(cb, 0);\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n return {\n batch: (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n },\n /**\n * All calls to the wrapped function will be batched.\n */\n batchCalls: (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n },\n schedule,\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n setNotifyFunction: (fn) => {\n notifyFn = fn;\n },\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n setBatchNotifyFunction: (fn) => {\n batchNotifyFn = fn;\n },\n setScheduler: (fn) => {\n scheduleFn = fn;\n }\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/removable.ts\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n #gcTimeout;\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport {\n ensureQueryFn,\n noop,\n replaceData,\n resolveEnabled,\n skipToken,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { canFetch, createRetryer, isCancelledError } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n #initialState;\n #revertState;\n #cache;\n #retryer;\n #defaultOptions;\n #abortSignalConsumed;\n constructor(config) {\n super();\n this.#abortSignalConsumed = false;\n this.#defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.#cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.#initialState = getDefaultState(this.options);\n this.state = config.state ?? this.#initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n get promise() {\n return this.#retryer?.promise;\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n this.updateGcTime(this.options.gcTime);\n }\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n this.#cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.#dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual\n });\n return data;\n }\n setState(state, setStateOptions) {\n this.#dispatch({ type: \"setState\", state, setStateOptions });\n }\n cancel(options) {\n const promise = this.#retryer?.promise;\n this.#retryer?.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({ silent: true });\n }\n reset() {\n this.destroy();\n this.setState(this.#initialState);\n }\n isActive() {\n return this.observers.some(\n (observer) => resolveEnabled(observer.options.enabled, this) !== false\n );\n }\n isDisabled() {\n if (this.getObserversCount() > 0) {\n return !this.isActive();\n }\n return this.options.queryFn === skipToken || this.state.dataUpdateCount + this.state.errorUpdateCount === 0;\n }\n isStale() {\n if (this.state.isInvalidated) {\n return true;\n }\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale\n );\n }\n return this.state.data === void 0;\n }\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || this.state.data === void 0 || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n onOnline() {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n }\n }\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer);\n if (!this.observers.length) {\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true });\n } else {\n this.#retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n }\n }\n getObserversCount() {\n return this.observers.length;\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\") {\n if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n this.cancel({ silent: true });\n } else if (this.#retryer) {\n this.#retryer.continueRetry();\n return this.#retryer.promise;\n }\n }\n if (options) {\n this.setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn);\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n );\n }\n }\n const abortController = new AbortController();\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true;\n return abortController.signal;\n }\n });\n };\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions);\n const queryFnContext = {\n queryKey: this.queryKey,\n meta: this.meta\n };\n addSignalProperty(queryFnContext);\n this.#abortSignalConsumed = false;\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this\n );\n }\n return queryFn(queryFnContext);\n };\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n this.options.behavior?.onFetch(\n context,\n this\n );\n this.#revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n }\n const onError = (error) => {\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: \"error\",\n error\n });\n }\n if (!isCancelledError(error)) {\n this.#cache.config.onError?.(\n error,\n this\n );\n this.#cache.config.onSettled?.(\n this.state.data,\n error,\n this\n );\n }\n this.scheduleGc();\n };\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise,\n fn: context.fetchFn,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === void 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n );\n }\n onError(new Error(`${this.queryHash} data is undefined`));\n return;\n }\n try {\n this.setData(data);\n } catch (error) {\n onError(error);\n return;\n }\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n this.scheduleGc();\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true\n });\n return this.#retryer.start();\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\",\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n case \"error\":\n const error = action.error;\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: \"idle\" };\n }\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: \"idle\",\n status: \"error\"\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate();\n });\n this.#cache.notify({ query: this, type: \"updated\", action });\n });\n }\n};\nfunction fetchState(data, options) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n ...data === void 0 && {\n error: null,\n status: \"pending\"\n }\n };\n}\nfunction getDefaultState(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = data !== void 0;\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"pending\",\n fetchStatus: \"idle\"\n };\n}\nexport {\n Query,\n fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (!restored) {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Set();\n this.#scopes = /* @__PURE__ */ new Map();\n this.#mutationId = 0;\n }\n #mutations;\n #scopes;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.#mutations.add(mutation);\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n scopedMutations.push(mutation);\n } else {\n this.#scopes.set(scope, [mutation]);\n }\n }\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n if (this.#mutations.delete(mutation)) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n if (scopedMutations.length > 1) {\n const index = scopedMutations.indexOf(mutation);\n if (index !== -1) {\n scopedMutations.splice(index, 1);\n }\n } else if (scopedMutations[0] === mutation) {\n this.#scopes.delete(scope);\n }\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const mutationsWithSameScope = this.#scopes.get(scope);\n const firstPendingMutation = mutationsWithSameScope?.find(\n (m) => m.state.status === \"pending\"\n );\n return !firstPendingMutation || firstPendingMutation === mutation;\n } else {\n return true;\n }\n }\n runNext(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.notify({ type: \"removed\", mutation });\n });\n this.#mutations.clear();\n this.#scopes.clear();\n });\n }\n getAll() {\n return Array.from(this.#mutations);\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id;\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = { pages: [], pageParams: [] };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n const cachedData = query.state.data;\n if (cachedData === void 0) {\n return this.fetchQuery(options);\n }\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(\n options.queryHash\n )?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters?.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters?.refetchType ?? filters?.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters, options = {}) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.ensureQueryData(options);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.#currentThenable = pendingThenable();\n if (!this.options.experimental_prefetchInRender) {\n this.#currentThenable.reject(\n new Error(\"experimental_prefetchInRender feature flag is not enabled\")\n );\n }\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #currentThenable;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options, notifyOptions) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveEnabled(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult(notifyOptions);\n if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n const trackedResult = {};\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key);\n onPropTracked?.(key);\n return result[key];\n }\n });\n });\n return trackedResult;\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (isServer || resolveEnabled(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n if (options.select && newState.data !== void 0) {\n if (prevResult && newState.data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(newState.data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n } else {\n data = newState.data;\n }\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n if (options.select && placeholderData !== void 0) {\n try {\n placeholderData = options.select(placeholderData);\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n promise: this.#currentThenable\n };\n const nextResult = result;\n if (this.options.experimental_prefetchInRender) {\n const finalizeThenableIfPossible = (thenable) => {\n if (nextResult.status === \"error\") {\n thenable.reject(nextResult.error);\n } else if (nextResult.data !== void 0) {\n thenable.resolve(nextResult.data);\n }\n };\n const recreateThenable = () => {\n const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n finalizeThenableIfPossible(pending);\n };\n const prevThenable = this.#currentThenable;\n switch (prevThenable.status) {\n case \"pending\":\n if (query.queryHash === prevQuery.queryHash) {\n finalizeThenableIfPossible(prevThenable);\n }\n break;\n case \"fulfilled\":\n if (nextResult.status === \"error\" || nextResult.data !== prevThenable.value) {\n recreateThenable();\n }\n break;\n case \"rejected\":\n if (nextResult.status !== \"error\" || nextResult.error !== prevThenable.reason) {\n recreateThenable();\n }\n break;\n }\n }\n return nextResult;\n }\n updateResult(notifyOptions) {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const defaultNotifyOptions = {};\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true;\n }\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveEnabled(options.enabled, query) !== false) {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveEnabled(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","import{ContextRequestEvent as t}from\"../context-request-event.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class s{constructor(t,s,i,h){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(t,s)=>{this.unsubscribe&&(this.unsubscribe!==s&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=t,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(t,s)),this.unsubscribe=s},this.host=t,void 0!==s.context){const t=s;this.context=t.context,this.callback=t.callback,this.subscribe=t.subscribe??!1}else this.context=s,this.callback=i,this.subscribe=h??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new t(this.context,this.t,this.subscribe))}}export{s as ContextConsumer};\n//# sourceMappingURL=context-consumer.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s{get value(){return this.o}set value(s){this.setValue(s)}setValue(s,t=!1){const i=t||!Object.is(s,this.o);this.o=s,i&&this.updateObservers()}constructor(s){this.subscriptions=new Map,this.updateObservers=()=>{for(const[s,{disposer:t}]of this.subscriptions)s(this.o,t)},void 0!==s&&(this.value=s)}addCallback(s,t,i){if(!i)return void s(this.value);this.subscriptions.has(s)||this.subscriptions.set(s,{disposer:()=>{this.subscriptions.delete(s)},consumerHost:t});const{disposer:h}=this.subscriptions.get(s);s(this.value,h)}clearCallbacks(){this.subscriptions.clear()}}export{s as ValueNotifier};\n//# sourceMappingURL=value-notifier.js.map\n","import{ContextRequestEvent as t}from\"../context-request-event.js\";import{ValueNotifier as s}from\"../value-notifier.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends Event{constructor(t){super(\"context-provider\",{bubbles:!0,composed:!0}),this.context=t}}class i extends s{constructor(s,e,i){super(void 0!==e.context?e.initialValue:i),this.onContextRequest=t=>{const s=t.composedPath()[0];t.context===this.context&&s!==this.host&&(t.stopPropagation(),this.addCallback(t.callback,s,t.subscribe))},this.onProviderRequest=s=>{const e=s.composedPath()[0];if(s.context!==this.context||e===this.host)return;const i=new Set;for(const[s,{consumerHost:e}]of this.subscriptions)i.has(s)||(i.add(s),e.dispatchEvent(new t(this.context,s,!0)));s.stopPropagation()},this.host=s,void 0!==e.context?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener(\"context-request\",this.onContextRequest),this.host.addEventListener(\"context-provider\",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new e(this.context))}}export{i as ContextProvider,e as ContextProviderEvent};\n//# sourceMappingURL=context-provider.js.map\n","import{ContextProvider as t}from\"../controllers/context-provider.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e({context:e}){return(n,r)=>{const i=new WeakMap;if(\"object\"==typeof r)return r.addInitializer((function(){i.set(this,new t(this,{context:e}))})),{get(){return n.get.call(this)},set(t){return i.get(this)?.setValue(t),n.set.call(this,t)},init(t){return i.get(this)?.setValue(t),t}};{n.constructor.addInitializer((n=>{i.set(n,new t(n,{context:e}))}));const o=Object.getOwnPropertyDescriptor(n,r);let s;if(void 0===o){const t=new WeakMap;s={get(){return t.get(this)},set(e){i.get(this).setValue(e),t.set(this,e)},configurable:!0,enumerable:!0}}else{const t=o.set;s={...o,set(e){i.get(this).setValue(e),t?.call(this,e)}}}return void Object.defineProperty(n,r,s)}}}export{e as provide};\n//# sourceMappingURL=provide.js.map\n","import { createContext } from '@lit/context';\nexport const QueryContext = createContext(Symbol.for('tanstack-lit-query'));\n","import { ContextConsumer } from '@lit/context';\nimport { QueryObserver } from '@tanstack/query-core';\nimport { QueryContext } from './context';\n/**\n * QueryController is a class that integrates a query-based data fetching system\n * into a Lit component as a ReactiveController.\n *\n * @template TQueryFnData - The data type returned by the query function.\n * @template TError - The error type for query errors.\n * @template TData - The data type to be used in the component.\n * @template TQueryData - The data type returned by the query (may differ from TData).\n * @template TQueryKey - The query key type.\n */\nexport class QueryController {\n /**\n * The query client.\n * This can be set manually or using a lit query client context provider.\n */\n set queryClient(queryClient) {\n this._queryClient = queryClient;\n if (queryClient) {\n this.whenQueryClient.resolve(queryClient);\n }\n this.host.requestUpdate();\n }\n get queryClient() {\n return this._queryClient;\n }\n /**\n * Creates a new QueryController instance.\n *\n * @param host - The host component to which this controller is added.\n * @param optionsFn - A function that provides QueryObserverOptions for the query.\n * @param _queryClient - Optionally set the query client.\n * @link [QueryObserverOptions API Docs](). //TODO: Add the correct doc\n */\n constructor(host, optionsFn, _queryClient) {\n this.host = host;\n this.optionsFn = optionsFn;\n this._queryClient = _queryClient;\n /**\n * Promise that is resolved when the query client is set.\n */\n this.whenQueryClient = Promise.withResolvers();\n /**\n * Promise that resolves when the query observer is created.\n */\n this.whenQueryObserver = Promise.withResolvers();\n this.host.addController(this);\n // Initialize the context\n this.context = new ContextConsumer(this.host, {\n context: QueryContext,\n subscribe: true,\n callback: (value) => {\n if (value) {\n this.queryClient = value;\n }\n },\n });\n // Observe the query if a query function is provided\n if (this.optionsFn) {\n this.observeQuery(this.optionsFn);\n }\n // TODO: allow query client to be supplied, but currently calls `this.host.requestUpdate()` twice\n // if (this._queryClient) {\n // this.queryClient = this._queryClient;\n // }\n }\n /**\n * Creates a query observer. The query is subscribed whenever the host is connected to the dom.\n *\n * @param options - Options for the query observer\n * @param optimistic - Get an initial optimistic result. Defaults to true.\n */\n async observeQuery(options, optimistic = true) {\n const queryClient = await this.whenQueryClient.promise;\n // Initialize the QueryObserver with defaulted options.\n const defaultedOptions = await this.getDefaultedOptions(typeof options === 'function' ? options() : options);\n this.queryObserver = new QueryObserver(queryClient, defaultedOptions);\n // Get an optimistic result based on the defaulted options.\n if (optimistic) {\n this.result = this.queryObserver.getOptimisticResult(defaultedOptions);\n }\n else {\n this.result = undefined;\n }\n this.host.requestUpdate();\n this.whenQueryObserver.resolve(this.queryObserver);\n }\n /**\n * Invoked when the host component updates.\n * Updates the query observer options with default options if a query function is set.\n */\n async hostUpdate() {\n if (this.optionsFn) {\n const queryObserver = await this.whenQueryObserver.promise;\n // Update options from the options function\n const defaultedOptions = await this.getDefaultedOptions(this.optionsFn());\n queryObserver.setOptions(defaultedOptions);\n }\n }\n /**\n * Invoked when the host component is connected.\n */\n hostConnected() {\n this.subscribe();\n }\n /**\n * Subscribes to the query observer and updates the result.\n */\n async subscribe() {\n const queryObserver = await this.whenQueryObserver.promise;\n // Unsubscribe any previous subscription before subscribing\n this.unsubscribe?.();\n this.unsubscribe = queryObserver.subscribe((result) => {\n this.result = result;\n this.host.requestUpdate();\n });\n queryObserver.updateResult();\n this.host.requestUpdate();\n }\n /**\n * Invoked when the host component is disconnected.\n * Unsubscribes from the query observer to clean up.\n */\n hostDisconnected() {\n this.unsubscribe?.();\n this.unsubscribe = undefined;\n }\n /**\n * Retrieves the default query options by combining the user-provided options\n * with the default options from the query client.\n *\n * @returns The default query options.\n */\n async getDefaultedOptions(options) {\n const queryClient = await this.whenQueryClient.promise;\n return queryClient.defaultQueryOptions(options);\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\nimport { provide } from '@lit/context';\nimport { QueryClient } from '@tanstack/query-core';\nimport { QueryContext } from './context.js';\n/**\n * Query Client Context as mixin class.\n * Extend this mixin class to make any LitElement class a context provider.\n *\n * @param Base - The base class to extend. Must be or inherit LitElement.\n * @returns Class extended with query client context provider property.\n */\nexport const QueryClientMixin = (Base) => {\n class QueryClientContextProvider extends Base {\n constructor() {\n super(...arguments);\n /**\n * The query client provided as a context.\n * May be overridden to set a custom configuration.\n */\n this.queryClient = new QueryClient();\n }\n connectedCallback() {\n super.connectedCallback();\n this.queryClient.mount();\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.queryClient.unmount();\n }\n }\n __decorate([\n provide({ context: QueryContext }),\n state()\n ], QueryClientContextProvider.prototype, \"queryClient\", void 0);\n // Cast return type to the mixin's interface intersected with the Base type\n return QueryClientContextProvider;\n};\n/**\n * Query client context provided as a Custom Component.\n * Place any components that should use the query client context as children.\n */\nlet QueryClientProvider = class QueryClientProvider extends QueryClientMixin(LitElement) {\n render() {\n return html ``;\n }\n};\nQueryClientProvider = __decorate([\n customElement('query-client-provider')\n], QueryClientProvider);\nexport { QueryClientProvider };\n","import { css, html } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { useEffect } from 'haunted'\r\nimport { QueryClient } from '@tanstack/query-core'\r\nimport { QueryController } from '@epermits/lit-query'\r\nimport { LitHauntedElement } from '../../mixins/lit-haunted-element';\r\nimport { FileReferenceAPI } from './FileReference';\r\nimport { isNullishOrWhitespace } from '../../functions/nullish';\r\nimport { formatBytes } from '../../functions/format_bytes';\r\n\r\nimport { stylesBootstrap } from '../../styles/bootstrap'\r\nimport { stylesFluentTable } from '../../styles/fluentTable'\r\n\r\n\r\n@customElement('ep-file-reference-group-display')\r\nexport class EPFileReferenceGroupDisplay extends LitHauntedElement {\r\n \r\n @property({ attribute: 'api-origin', reflect: false })\r\n apiOrigin: string = window.origin;\r\n\r\n @property({ attribute: 'file-reference-group', reflect: true })\r\n fileReferenceGroupID?: string = '';\r\n\r\n // -----------------\r\n\r\n @state()\r\n provider?: FileReferenceAPI;\r\n\r\n groupQuery = new QueryController(this, () => ({\r\n queryKey: ['provider', this.provider ? 1 : 0, 'group', this.fileReferenceGroupID],\r\n queryFn: async () => {\r\n if (!this.provider) return;\r\n if (isNullishOrWhitespace(this.fileReferenceGroupID)) return;\r\n //console.log('Fetching files');\r\n\r\n const groupMeta = await this.provider.GetGroupMetadata(this.fileReferenceGroupID);\r\n const allFiles = await this.provider.GetManyFileReferenceMetadata(groupMeta.FileReferences);\r\n const completedFiles = allFiles.filter(f => f.Status === 'Complete' || f.Status === 'TemporaryDowntime');\r\n\r\n return {\r\n metadata: groupMeta,\r\n files: completedFiles,\r\n }\r\n },\r\n }), new QueryClient());\r\n\r\n //#region Event Handlers\r\n\r\n //#endregion\r\n\r\n //#region Renders\r\n\r\n render() { \r\n //#region Effects\r\n\r\n // Whenever the API URL is updated, create a new provider\r\n useEffect(() => {\r\n try {\r\n const url = new URL(this.apiOrigin, window.origin);\r\n this.provider = new FileReferenceAPI(url);\r\n }\r\n catch {}\r\n }, [this.apiOrigin]);\r\n\r\n //#endregion\r\n\r\n //#region Main Render\r\n\r\n return html`\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ${\r\n this.groupQuery.result?.isPending\r\n ? html`\r\n \r\n \r\n \r\n `\r\n : ''\r\n }\r\n ${this.groupQuery.result?.data?.files.map(file => html`\r\n \r\n \r\n \r\n \r\n \r\n \r\n `)}\r\n \r\n
    File NameCreation DateFile SizeActions
    \r\n \r\n
    ${file.FileName}
    ${file.CreationDate?.toLocaleString()}
    ${file.EstimatedFileSize ? formatBytes(file.EstimatedFileSize) : ''}
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Row Actions\r\n \r\n Download\r\n \r\n \r\n Download\r\n \r\n \r\n \r\n {}}\r\n >\r\n \r\n Delete\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n `\r\n //#endregion\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Styles\r\n static styles = [stylesBootstrap, stylesFluentTable, css`\r\n :host {\r\n display: inline-block;\r\n width: auto;\r\n font-family: var(--bs-body-font-family);\r\n font-size: var(--bs-body-font-size);\r\n font-weight: var(--bs-body-font-weight);\r\n line-height: var(--bs-body-line-height);\r\n color: var(--bs-body-color);\r\n --font-mono: ui-monospace, SFMono-Regular, SF Mono, Menlo, \"Cascadia Mono\", Consolas, Liberation Mono, monospace;\r\n }\r\n table.fluent thead tr th {\r\n white-space: normal;\r\n }\r\n table.fluent tbody td {\r\n white-space: normal;\r\n }\r\n table.fluent tbody td .ellipsis {\r\n display: block;\r\n overflow: hidden!important;\r\n white-space: nowrap!important;\r\n text-overflow: ellipsis!important;\r\n }\r\n `]\r\n //#endregion\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'ep-file-reference-group-display': EPFileReferenceGroupDisplay\r\n }\r\n}\r\n"],"names":["$global","n","r","propConfig","FAST","storage","id","initialize","found","emptyArray","createMetadataLocator","metadataLookup","target","metadata","currentTarget","updateQueue","tasks","pendingErrors","throwFirstError","tryRunTask","task","error","process","index","scan","newLength","enqueue","callable","fastHTMLPolicy","html","htmlPolicy","marker","_interpolationStart","_interpolationEnd","DOM","policy","node","attributeName","element","value","parent","child","fragment","SubscriberSet","source","initialSubscriber","subscriber","spillover","args","sub1","sub2","ii","PropertyChangeNotifier","propertyName","_a","subscribers","propertyToWatch","propertyToUnwatch","Observable","volatileRegex","notifierLookup","queueUpdate","watcher","createArrayObserver","array","getNotifier","getAccessors","DefaultObservableAccessor","name","newValue","field","oldValue","callback","BindingObserverImplementation","binding","isVolatileBinding","context","previousWatcher","result","current","propertySource","prev","notifier","prevValue","next","factory","nameOrAccessor","observable","volatile","descriptor","contextEvent","event","ExecutionContext","defaultExecutionContext","ElementStyles","behaviors","styleSheetCache","styles","AdoptedStyleSheetsStyles","StyleElementStyles","reduceStyles","x","curr","reduceBehaviors","prependToAdoptedStyleSheetsSymbol","separateSheetsToPrepend","sheets","prepend","append","addAdoptedStyleSheets","removeAdoptedStyleSheets","sheet","styleClassId","getNextStyleClass","styleSheets","styleClass","i","AttributeConfiguration","booleanConverter","nullableNumberConverter","number","AttributeDefinition","Owner","attribute","mode","converter","guards","latestValue","attributeLists","attributes","list","j","jj","config","attr","configOrTarget","prop","decorator","$target","$prop","defaultShadowOptions","defaultElementOptions","fastRegistry","typeToDefinition","definition","key","FASTElementDefinition","type","nameOrConfig","observedAttributes","propertyLookup","attributeLookup","registry","proto","shadowRoots","defaultEventOptions","getShadowRoot","Controller","shadowOptions","shadowRoot","accessors","boundObservables","sourceBehaviors","targetBehaviors","length","behaviorsToBind","behavior","force","behaviorsToUnbind","count","view","attrDef","detail","options","propertyNames","template","host","controller","createFASTElement","BaseType","FASTElement","nameOrDef","CSSDirective","__decorate","decorators","desc","c","d","Direction","composedParent","parentNode","rootNode","composedContains","reference","test","defaultElement","isFastElement","QueuedStyleSheetTarget","ConstructableStyleSheetTarget","DocumentStyleSheetTarget","HeadStyleElementStyleSheetTarget","StyleElementStyleSheetTarget","ElementStyleSheetTarget","RootStyleSheetTarget","PropertyTargetManager","root","roots","propertyTargetCache","propertyTargetCtor","DesignTokenImpl","configuration","token","DesignTokenNode","subscriberSet","record","sub","CustomPropertyReflector","DesignTokenBindingObserver","Store","nodeCache","childToParent","arg","start","reflecting","parentValue","sourceValue","raw","upstream","reParent","childIndex","deleted","property","observer","create","DesignToken","clamp","min","max","normalize","denormalize","getHexStringForByte","s","lerp","roundToPrecisionSmall","precision","factor","ColorHSL","hue","sat","lum","data","rhs","ColorLAB","l","a","b","ColorRGBA64","red","green","blue","alpha","ColorXYZ","y","z","rgbToLinearLuminance","rgb","rgbToRelativeLuminance","luminanceHelper","calcChannelOverlay","match","background","overlay","calcRgbOverlay","rgbMatch","rgbBackground","rgbOverlay","rChannel","gChannel","bChannel","calculateOverlayColor","rgbToHSL","delta","hslToRGB","hsl","m","g","labToXYZ","lab","fy","fx","fz","xcubed","ycubed","zcubed","xyzToLAB","xyz","xyzToLABHelper","rgbToXYZ","rgbToXYZHelper","xyzToRGB","xyzToRGBHelper","rgbToLAB","labToRGB","ColorBlendMode","computeAlphaBlend","bottom","top","interpolateRGB","position","left","right","ColorInterpolationSpace","hexRGBRegex","parseColorHexRGB","digits","rawInt","contrast","L1","L2","SwatchRGB","SwatchRGBImpl","obj","isSwatchRGB","binarySearch","valuesToSearch","searchCondition","startIndex","endIndex","middleIndex","isDark","color","directionByIsDark","defaultPaletteRGBOptions","rOrSource","PaletteRGB","from","PaletteRGBImpl","swatches","contrastTarget","initialSearchIndex","direction","endSearchIndex","startSearchIndex","condition","closest","previous","saturationTarget","hslColor","hslNew","inputval","labSource","lab0","lab50","lab100","rgbMin","rgbMax","lAbove","lBelow","percentFromRgbMinToLab0","percentFromLab100ToRgbMax","swatchContrast","referencePalette","targetPalette","refSwatches","refIndex","swatch","targetContrast","safeSecondSwatch","safeSecondRefIndex","targetSwatchCurrentRefIndex","swatchesToSpace","space","currentRefIndex","nextRefIndex","nextContrast","ref","opts","white","black","middleGrey","base","accentBase","foregroundOnAccentSet","restFill","hoverFill","activeFill","focusFill","defaultRule","fill","restForeground","hoverForeground","activeForeground","focusForeground","GradientSwatchRGB","cssGradient","gradientShadowStroke","palette","restDelta","hoverDelta","activeDelta","focusDelta","shadowDelta","shadowPercentage","blendWithReference","referenceIndex","overlayHelper","refSwatch","overlaySolid","overlayColor","blend","restIndex","hoverIndex","activeIndex","focusIndex","startPosition","endPosition","gradientHelper","applyShadow","shadowColor","startColor","endColor","underlineStroke","width","midPosition","underlineColor","contrastSwatch","contrastAndDeltaSwatchSet","baseContrast","baseIndex","contrastAndDeltaSwatchSetByLuminance","lightBaseContrast","lightRestDelta","lightHoverDelta","lightActiveDelta","lightFocusDelta","lightDirection","darkBaseContrast","darkRestDelta","darkHoverDelta","darkActiveDelta","darkFocusDelta","darkDirection","deltaSwatch","deltaSwatchSet","deltaSwatchSetByLuminance","focusStrokeOuter","focusStrokeInner","focusColor","baseLayerLuminanceSwatch","luminance","StandardLuminance","neutralLayer1Index","baseLayerLuminance","neutralLayer1","neutralLayerFloating","layerDelta","neutralLayer2","neutralLayer3","neutralLayer4","StandardFontWeight","createNonCss","disabledOpacity","baseHeightMultiplier","baseHorizontalSpacingMultiplier","density","designUnit","controlCornerRadius","layerCornerRadius","strokeWidth","focusStrokeWidth","bodyFont","fontWeight","fontVariations","sizeToken","size","weight","px","typeRampBaseFontSize","typeRampBaseLineHeight","typeRampBaseFontVariations","typeRampMinus1FontSize","typeRampMinus1LineHeight","typeRampMinus1FontVariations","typeRampMinus2FontSize","typeRampMinus2LineHeight","typeRampMinus2FontVariations","typeRampPlus1FontSize","typeRampPlus1LineHeight","typeRampPlus1FontVariations","typeRampPlus2FontSize","typeRampPlus2LineHeight","typeRampPlus2FontVariations","typeRampPlus3FontSize","typeRampPlus3LineHeight","typeRampPlus3FontVariations","typeRampPlus4FontSize","typeRampPlus4LineHeight","typeRampPlus4FontVariations","typeRampPlus5FontSize","typeRampPlus5LineHeight","typeRampPlus5FontVariations","typeRampPlus6FontSize","typeRampPlus6LineHeight","typeRampPlus6FontVariations","accentFillRestDelta","accentFillHoverDelta","accentFillActiveDelta","accentFillFocusDelta","accentForegroundRestDelta","accentForegroundHoverDelta","accentForegroundActiveDelta","accentForegroundFocusDelta","neutralFillRestDelta","neutralFillHoverDelta","neutralFillActiveDelta","neutralFillFocusDelta","neutralFillInputRestDelta","neutralFillInputHoverDelta","neutralFillInputActiveDelta","neutralFillInputFocusDelta","neutralFillInputAltRestDelta","neutralFillInputAltHoverDelta","neutralFillInputAltActiveDelta","neutralFillInputAltFocusDelta","neutralFillLayerRestDelta","neutralFillLayerHoverDelta","neutralFillLayerActiveDelta","neutralFillLayerAltRestDelta","neutralFillSecondaryRestDelta","neutralFillSecondaryHoverDelta","neutralFillSecondaryActiveDelta","neutralFillSecondaryFocusDelta","neutralFillStealthRestDelta","neutralFillStealthHoverDelta","neutralFillStealthActiveDelta","neutralFillStealthFocusDelta","neutralFillStrongRestDelta","neutralFillStrongHoverDelta","neutralFillStrongActiveDelta","neutralFillStrongFocusDelta","neutralStrokeRestDelta","neutralStrokeHoverDelta","neutralStrokeActiveDelta","neutralStrokeFocusDelta","neutralStrokeControlRestDelta","neutralStrokeControlHoverDelta","neutralStrokeControlActiveDelta","neutralStrokeControlFocusDelta","neutralStrokeDividerRestDelta","neutralStrokeLayerRestDelta","neutralStrokeLayerHoverDelta","neutralStrokeLayerActiveDelta","neutralStrokeStrongHoverDelta","neutralStrokeStrongActiveDelta","neutralStrokeStrongFocusDelta","neutralBaseColor","neutralPalette","accentBaseColor","accentPalette","neutralLayerCardContainerRecipe","neutralLayer2Algorithm","neutralLayerFloatingRecipe","neutralLayerFloatingAlgorithm","neutralLayer1Recipe","neutralLayer1Algorithm","neutralLayer2Recipe","neutralLayer3Recipe","neutralLayer3Algorithm","neutralLayer4Recipe","neutralLayer4Algorithm","fillColor","ContrastTarget","accentFillRecipe","accentFillRest","accentFillHover","accentFillActive","accentFillFocus","foregroundOnAccentRecipe","foregroundOnAccentSetAlgorithm","foregroundOnAccentRest","foregroundOnAccentHover","foregroundOnAccentActive","accentForegroundRecipe","accentForegroundRest","accentForegroundHover","accentForegroundActive","accentStrokeControlRecipe","gradientShadowStrokeAlgorithm","accentStrokeControlRest","accentStrokeControlHover","accentStrokeControlActive","neutralFillRecipe","neutralFillRest","neutralFillHover","neutralFillActive","neutralFillInputRecipe","neutralFillInputRest","neutralFillInputHover","neutralFillInputFocus","neutralFillInputAltRecipe","neutralFillInputAltRest","neutralFillInputAltHover","neutralFillInputAltActive","neutralFillInputAltFocus","neutralFillLayerRecipe","neutralFillLayerRest","neutralFillLayerAltRecipe","neutralFillLayerAltRest","neutralFillSecondaryRecipe","neutralFillSecondaryRest","neutralFillSecondaryHover","neutralFillSecondaryActive","neutralFillSecondaryFocus","neutralFillStealthRecipe","neutralFillStealthRest","neutralFillStealthHover","neutralFillStealthActive","neutralFillStealthFocus","neutralFillStrongRecipe","neutralFillStrongRest","neutralFillStrongHover","neutralFillStrongActive","neutralForegroundRecipe","neutralForegroundRest","neutralForegroundHover","neutralForegroundActive","neutralForegroundHintRecipe","neutralForegroundHint","neutralStrokeRecipe","neutralStrokeRest","neutralStrokeHover","neutralStrokeActive","neutralStrokeControlRecipe","neutralStrokeControlRest","neutralStrokeControlHover","neutralStrokeControlActive","neutralStrokeDividerRecipe","neutralStrokeDividerRest","neutralStrokeInputRecipe","underlineStrokeAlgorithm","neutralStrokeInputRest","neutralStrokeInputHover","neutralStrokeLayerRecipe","neutralStrokeLayerRest","neutralStrokeStrongRecipe","neutralStrokeStrongRest","neutralStrokeStrongHover","neutralStrokeStrongActive","focusStrokeOuterRecipe","focusStrokeOuterAlgorithm","focusStrokeInnerRecipe","focusStrokeInnerAlgorithm","foregroundOnAccentLargeRecipe","neutralFillInverseRestDelta","neutralFillInverseHoverDelta","neutralFillInverseActiveDelta","neutralFillInverseFocusDelta","neutralFillInverse","accessibleIndex","accessibleIndex2","indexOneIsRest","neutralFillInverseRecipe","isNotNullOrWhitespace","EPChip","LitHauntedElement","HasSlotController","useEffect","ifDefined","css","__decorateClass","customElement","EPContents","LitElement","EPErrorMessageList","msg","explicitBooleanAttributeConverter","getLongestTransitionMS","cssTimeUnitRegex","getHighestValueMS","str","_","unit","transitionDelay","transitionDuration","transitionDelayMS","transitionDurationMS","EPFluentDialog","_b","animatedParts","delay","e","keyframes","anim","bypass","state","query","EPShareUrlButton","shareData","tuple","CONTROL_HORIZONTAL_POSITIONS","isHorizontalPosition","CONTROL_VERTICAL_POSITIONS","isVerticalPosition","getPositions","pos","defaultVertical","defaultHorizontal","temp","getFlexPositions","vertical","horizontal","Control2FlexVertical","Control2FlexHorizontal","ARROW_HOOK_SVG","CHEVRON_UP","CHEVRON_SVG","CHEVRON_RIGHT","CHEVRON_DOWN","CHEVRON_LEFT","ARROW_HORIZ_BACK","ARROW_HORIZ_FORWARD","ARROW_VERTI_BACK","ARROW_VERTI_FORWARD","EPSlidingPages","mod","_changedProperties","translate","StatusBadgeIcons","primary","secondary","svg","emptystr2undefined","EPStatusBadge","t","h","o","EPSegmentedPickerOption","item","EPSegmentedPicker","selectedOption","pickerBoundingBox","optionBoundingBox","_d","_c","optionWidth","optionOffsetFromParent","option","ResizeController","createContext","EPNavListSubNav","EPNavList","slotted","v","provide","EPNavListItem","generateUUID","hasSubNav","consume","EPNavListHeader","EPNavListDivider","EPNavListGroup","EPNavListBox","EPNavListSearch","items","satisfies","HAS_NO_RESULTS","noResultIndicators","EPButtonGroup","toHex_1","hex","num","toHex","fromHex","exports","createMatch","leaf","isMatchingNode","tree","path","head","arr","tail","merge","currentByte","currentTree","matchingNode","createNode","typename","bytes","info","createComplexNode","currentKey","patternTree","require$$0","tree_1","require$$1","add","signature","additionalInfo","offset","existing","merged","__importDefault","this","pattern_tree_1","filetypeinfo","k","guessed","walkTree","step","guessFile","filetypename","filetypemime","filetypeextension","DataURIToBlob","dataUri","blob","GetMagicNumber","fileType","GuessMimeType","magic","EPBlobDownloader","baseName","fileName","saveAs","guess","formatBytes","EPFormControlCheckbox","EPFormControlTextbox","MASK","MASK_CONTENT","strippedValue","isCharsetPresent","isInteger","isLetter","maskedNumber","maskedLetter","EPMaskedInput","val","input","placeholder","el","len","charIndex","strippedVal","isInt","isLet","matchesNumber","matchesLetter","mask","props","p","EPSelectSearchable","createRef","debounce","newVal","opt","styleMap","queryAssignedElements","EPTooltip","EPTextFormLabel","embedColor2","EPText","EPCode","classMap","EPDialog","delayForAnimation","INITIAL_DELAY","EPSessionDisclaimer","IS_SCROLLED_TO_BOTTOM","scrollingDiv","DELAY","EPClipboardCopy","EPButton","EPAbsoluteTime","dtf","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","locale","prettyBytes","UNITS","separator","isNegative","prefix","localeOptions","numberString","exponent","EPFileSize","EPSplitLayout","EPTimeline","EPTimelineItem","EPTimelineComment","EPTimelineCommentHeader","EPTimelineUser","isNullishOrWhitespace","displayText","classification","EPTimelineDivider","COLOR_DOMAIN","FOREGROUND_INDEX","BACKGROUND_INDEX","EPAvatar","light","chroma","dark","scale","note","EventIcons","EPEventIcon","EPProgressStepper","EPProgressStepperItem","EPFileChip","objectToString","isArray","object","isFunction","typeStr","escapeRegExp","string","hasProperty","propName","primitiveHasOwnProperty","primitive","regExpTest","testRegExp","re","nonSpaceRe","isWhitespace","entityMap","escapeHtml","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","parseTemplate","tags","lineHasNonSpace","sections","tokens","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","openingTagRe","closingTagRe","closingCurlyRe","compileTags","tagsToCompile","mustache","scanner","Scanner","chr","openSection","valueLength","nestTokens","squashTokens","squashedTokens","lastToken","numTokens","nestedTokens","collector","section","Context","parentContext","cache","intermediateValue","names","lookupHit","Writer","cacheKey","isCacheEnabled","partials","originalTemplate","buffer","symbol","self","subRender","partial","filteredIndentation","partialByNl","indentedValue","escape","defaultWriter","MustacheTemplateContentDirective","Directive","partInfo","PartType","identifier","noChange","importedDocument","mustacheResult","Mustache","span","mustacheTemplateContent","directive","EPFileUpload","MutationController","DRAG_LEAVE","file","nothing","removal","dt","f","addition","attachments","EPPaywall","computedDisplay","EPFluentButton","original","ownKeys","enumerableOnly","keys","symbols","sym","_objectSpread2","_defineProperty","_typeof","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","version","userAgent","pattern","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","on","fn","off","matches","selector","getParentOrHost","ctx","includeCTX","R_SPACE","toggleClass","className","style","matrix","selfOnly","appliedTransforms","transform","matrixFn","find","tagName","iterator","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","elRect","height","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","elem","gotSelf","elemCSS","extend","dst","src","isRectEqual","rect1","rect2","_throttleTimeout","throttle","ms","_this","cancelThrottle","scrollBy","clone","Polymer","$","getChildContainingRectFromElement","ghostEl","rect","_rect$left","_rect$top","_rect$right","_rect$bottom","childRect","expando","AnimationStateManager","animationStates","animationCallbackId","fromRect","childMatrix","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","duration","translateX","translateY","repaint","plugins","defaults","PluginManager","plugin","eventName","sortable","evt","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","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","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","threshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","to","sameGroup","otherGroup","group","originalGroup","nearestEmptyInsertDetectEvent","nearest","_checkOutsideTargetEl","dataTransfer","preventOnFilter","touch","originalTarget","filter","_saveInputCheckedState","criteria","ownerDocument","dragStartFn","_disableDraggable","_nextTick","fallback","inserted","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","extra","completed","after","_onMove","changed","capture","insertion","elLastChild","_ghostIsLast","_ghostIsFirst","firstChild","targetBeforeFirstSwap","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","sibling","dragIndex","nextSibling","moveVector","_unsilent","_cancelNextTick","_globalDragOver","order","_generateId","useAnimation","store","willInsertAfter","onMoveFn","retVal","firstElRect","childContainingRect","spacer","lastElRect","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","sum","inputs","idx","_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","lastSwapEl","SwapPlugin","Swap","onMove","cancel","prevSwapEl","swapNodes","n1","n2","p1","p2","i1","i2","EPSortable","inst","nestableChildren","sortableEvent","currentItems","augmentedDiff","differenceWith","isEqual","DATABASE_SVG","EPDatabaseButton","BootstrapContainer","stylesBootstrap","PROXY_CONVERTERS","b64EncodeUnicode","b64DecodeUnicode","EPElementProxy","displayElement","nativeValue","proxyValue","err","EPEventProxy","synthEvent","supportsFlagEmoji","canvas","estimateCountryCode","split","lang","code","getFlagEmoji2","EPFlag","bounce","flash","headShake","heartBeat","jello","pulse","rubberBand","shake","shakeX","shakeY","swing","tada","wobble","backInDown","backInLeft","backInRight","backInUp","backOutDown","backOutLeft","backOutRight","backOutUp","bounceIn","bounceInDown","bounceInLeft","bounceInRight","bounceInUp","bounceOut","bounceOutDown","bounceOutLeft","bounceOutRight","bounceOutUp","fadeIn","fadeInBottomLeft","fadeInBottomRight","fadeInDown","fadeInDownBig","fadeInLeft","fadeInLeftBig","fadeInRight","fadeInRightBig","fadeInTopLeft","fadeInTopRight","fadeInUp","fadeInUpBig","fadeOut","fadeOutBottomLeft","fadeOutBottomRight","fadeOutDown","fadeOutDownBig","fadeOutLeft","fadeOutLeftBig","fadeOutRight","fadeOutRightBig","fadeOutTopLeft","fadeOutTopRight","fadeOutUp","fadeOutUpBig","flip","flipInX","flipInY","flipOutX","flipOutY","lightSpeedInLeft","lightSpeedInRight","lightSpeedOutLeft","lightSpeedOutRight","rotateIn","rotateInDownLeft","rotateInDownRight","rotateInUpLeft","rotateInUpRight","rotateOut","rotateOutDownLeft","rotateOutDownRight","rotateOutUpLeft","rotateOutUpRight","slideInDown","slideInLeft","slideInRight","slideInUp","slideOutDown","slideOutLeft","slideOutRight","slideOutUp","hinge","jackInTheBox","rollIn","rollOut","zoomIn","zoomInDown","zoomInLeft","zoomInRight","zoomInUp","zoomOut","zoomOutDown","zoomOutLeft","zoomOutRight","zoomOutUp","easings","_instanceNumber","DEFAULT_ENTRANCE","DEFAULT_EXIT","EPMultiView","__privateAdd","EPView","views","willAppear","willDisappear","__privateGet","animations","animation","EPChipInput","vals","EPEventPropagationGuard","ev","EPMultiViewStepper","CANCELLED_SVG","COMPLETED_SVG","FAILED_SVG","IN_PROGRESS_SVG","NEUTRAL_SVG","PENDING_SVG","Icons","EPPipelineIcon","Z_INDEX_MAX_VALUE","EPVisualAssociation","layerChange","EPReportRunner","IntervalController","FINAL_STATUSES","url","ReportsAPI","FileReferenceAPI","EPAsyncFileUploader","setDashboardDisabled","disabled","groupMeta","existingFiles","fileMeta","fileID","Uppy","Dashboard","FileReferenceUppyPlugin","stylesUppy","stylesUppyDashboard","unsafeCSS","Subscribable","listener","isServer","noop","functionalUpdate","updater","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveStaleTime","resolveEnabled","enabled","matchQuery","filters","exact","fetchStatus","predicate","queryKey","stale","hashQueryKeyByOptions","partialMatchKey","isActive","matchMutation","mutation","status","mutationKey","hashKey","isPlainObject","replaceEqualDeep","isPlainArray","aItems","aSize","bItems","bSize","copy","equalItems","shallowEqualObjects","hasObjectPrototype","ctor","prot","sleep","timeout","resolve","replaceData","prevData","define_process_env_default","addToEnd","newItems","addToStart","skipToken","ensureQueryFn","fetchOptions","FocusManager","_focused","_cleanup","_setup","__privateSet","onFocus","setup","focused","isFocused","focusManager","OnlineManager","_online","onOnline","onlineListener","offlineListener","online","onlineManager","pendingThenable","reject","thenable","_resolve","_reject","finalize","reason","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","isCancelledError","createRetryer","isRetryCancelled","isResolved","continueFn","cancelOptions","cancelRetry","continueRetry","canContinue","canStart","pause","continueResolve","run","promiseOrValue","initialPromise","retry","retryDelay","shouldRetry","createNotifyManager","queue","transactions","notifyFn","batchNotifyFn","scheduleFn","cb","schedule","flush","originalQueue","notifyManager","Removable","_gcTimeout","newGcTime","Query","_Query_instances","_initialState","_revertState","_cache","_retryer","_defaultOptions","_abortSignalConsumed","getDefaultState","newData","__privateMethod","dispatch_fn","setStateOptions","promise","abortController","addSignalProperty","fetchFn","queryFn","queryFnContext","onError","action","reducer","fetchState","hasData","initialDataUpdatedAt","QueryCache","_queries","client","queryHash","queryInMap","defaultedFilters","queries","Mutation","_Mutation_instances","_observers","_mutationCache","variables","restored","isPaused","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","MutationCache","_mutations","_scopes","_mutationId","__privateWrapper","scope","scopeFor","scopedMutations","mutationsWithSameScope","firstPendingMutation","foundMutation","pausedMutations","infiniteQueryBehavior","pages","oldPages","oldPageParams","currentPage","cancelled","fetchPage","param","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","QueryClient","_queryCache","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","defaultedOptions","cachedData","queryCache","refetchFilters","defaultedCancelOptions","promises","queryDefault","QueryObserver","_QueryObserver_instances","_client","_currentQuery","_currentQueryInitialState","_currentResult","_currentResultState","_currentResultOptions","_currentThenable","_selectError","_selectFn","_selectResult","_lastQueryWithDefinedData","_staleTimeoutId","_refetchIntervalId","_currentRefetchInterval","_trackedProps","shouldFetchOnMount","executeFetch_fn","updateTimers_fn","shouldFetchOn","clearStaleTimeout_fn","clearRefetchInterval_fn","notifyOptions","prevOptions","prevQuery","updateQuery_fn","mounted","shouldFetchOptionally","updateStaleTimeout_fn","nextRefetchInterval","computeRefetchInterval_fn","updateRefetchInterval_fn","shouldAssignObserverCurrentProperties","onPropTracked","trackedResult","prevResult","prevResultState","prevResultOptions","queryInitialState","newState","isPlaceholderData","fetchOnMount","fetchOptionally","errorUpdatedAt","selectError","placeholderData","isFetching","isPending","isError","isLoading","nextResult","isStale","finalizeThenableIfPossible","recreateThenable","pending","prevThenable","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","notify_fn","nextInterval","shouldLoadOnMount","optimisticResult","s$1","e$1","QueryContext","QueryController","queryClient","optionsFn","_queryClient","ContextConsumer","optimistic","queryObserver","QueryClientMixin","Base","QueryClientContextProvider","QueryClientProvider","EPFileReferenceGroupDisplay","completedFiles","stylesFluentTable"],"mappings":"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CL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EA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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,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,62,72,73,74,75,90,104,109,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,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250]}