@nhtio/common-vue 1.20251216.2 → 1.20251216.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"inline_image_field.mjs","sources":["../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/bindProps.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/deepEqual.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/dom.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/getScrollParent.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/isFixedPosition.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VResponsive/VResponsive.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VImg/VImg.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/delay.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VHover/VHover.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/util/point.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/locationStrategies.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/requestNewFrame.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/scrollStrategies.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VMenu/shared.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/useActivator.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/focusTrap.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/display.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/hydration.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/lazy.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/router.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/scopeId.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/stack.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/teleport.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/directives/click-outside/index.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/VOverlay.js","../node_modules/.pnpm/image-blob-reduce@4.1.0/node_modules/image-blob-reduce/dist/image-blob-reduce.esm.mjs","../src/inline_image_field.ts"],"sourcesContent":["// Utilities\nimport { eventName, isOn } from \"./helpers.js\";\nconst handlers = new WeakMap();\nexport function bindProps(el, props) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k);\n const handler = handlers.get(el);\n if (props[k] == null) {\n handler?.forEach(v => {\n const [n, fn] = v;\n if (n === name) {\n el.removeEventListener(name, fn);\n handler.delete(v);\n }\n });\n } else if (!handler || ![...handler]?.some(v => v[0] === name && v[1] === props[k])) {\n el.addEventListener(name, props[k]);\n const _handler = handler || new Set();\n _handler.add([name, props[k]]);\n if (!handlers.has(el)) handlers.set(el, _handler);\n }\n } else {\n if (props[k] == null) {\n el.removeAttribute(k);\n } else {\n el.setAttribute(k, props[k]);\n }\n }\n });\n}\nexport function unbindProps(el, props) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k);\n const handler = handlers.get(el);\n handler?.forEach(v => {\n const [n, fn] = v;\n if (n === name) {\n el.removeEventListener(name, fn);\n handler.delete(v);\n }\n });\n } else {\n el.removeAttribute(k);\n }\n });\n}\n//# sourceMappingURL=bindProps.js.map","import { isPrimitive } from \"./helpers.js\";\nfunction updateRecursionCache(a, b, cache, result) {\n if (!cache || isPrimitive(a) || isPrimitive(b)) return;\n const visitedObject = cache.get(a);\n if (visitedObject) {\n visitedObject.set(b, result);\n } else {\n const newCacheItem = new WeakMap();\n newCacheItem.set(b, result);\n cache.set(a, newCacheItem);\n }\n}\nfunction findCachedComparison(a, b, cache) {\n if (!cache || isPrimitive(a) || isPrimitive(b)) return null;\n const r1 = cache.get(a)?.get(b);\n if (typeof r1 === 'boolean') return r1;\n const r2 = cache.get(b)?.get(a);\n if (typeof r2 === 'boolean') return r2;\n return null;\n}\nexport function deepEqual(a, b) {\n let recursionCache = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakMap();\n if (a === b) return true;\n if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {\n // If the values are Date, compare them as timestamps\n return false;\n }\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false;\n }\n const props = Object.keys(a);\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false;\n }\n const cachedComparisonResult = findCachedComparison(a, b, recursionCache);\n if (cachedComparisonResult) {\n return cachedComparisonResult;\n }\n updateRecursionCache(a, b, recursionCache, true);\n return props.every(p => deepEqual(a[p], b[p], recursionCache));\n}\n//# sourceMappingURL=deepEqual.js.map","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot(node) {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode;\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null;\n return document;\n }\n const root = node.getRootNode();\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({\n composed: true\n }) !== document) return null;\n return root;\n}\n//# sourceMappingURL=dom.js.map","export function getScrollParent(el) {\n let includeHidden = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n while (el) {\n if (includeHidden ? isPotentiallyScrollable(el) : hasScrollbar(el)) return el;\n el = el.parentElement;\n }\n return document.scrollingElement;\n}\nexport function getScrollParents(el, stopAt) {\n const elements = [];\n if (stopAt && el && !stopAt.contains(el)) return elements;\n while (el) {\n if (hasScrollbar(el)) elements.push(el);\n if (el === stopAt) break;\n el = el.parentElement;\n }\n return elements;\n}\nexport function hasScrollbar(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n const hasVerticalScrollbar = style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;\n const hasHorizontalScrollbar = style.overflowX === 'scroll' || style.overflowX === 'auto' && el.scrollWidth > el.clientWidth;\n return hasVerticalScrollbar || hasHorizontalScrollbar;\n}\nfunction isPotentiallyScrollable(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n return ['scroll', 'auto'].includes(style.overflowY);\n}\n//# sourceMappingURL=getScrollParent.js.map","export function isFixedPosition(el) {\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n return true;\n }\n el = el.offsetParent;\n }\n return false;\n}\n//# sourceMappingURL=isFixedPosition.js.map","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\";\n// Styles\nimport \"./VResponsive.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.js\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport function useAspectStyles(props) {\n return {\n aspectStyles: computed(() => {\n const ratio = Number(props.aspectRatio);\n return ratio ? {\n paddingBottom: String(1 / ratio * 100) + '%'\n } : undefined;\n })\n };\n}\nexport const makeVResponsiveProps = propsFactory({\n aspectRatio: [String, Number],\n contentClass: null,\n inline: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VResponsive');\nexport const VResponsive = genericComponent()({\n name: 'VResponsive',\n props: makeVResponsiveProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n aspectStyles\n } = useAspectStyles(props);\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-responsive', {\n 'v-responsive--inline': props.inline\n }, props.class]),\n \"style\": _normalizeStyle([dimensionStyles.value, props.style])\n }, [_createElementVNode(\"div\", {\n \"class\": \"v-responsive__sizer\",\n \"style\": _normalizeStyle(aspectStyles.value)\n }, null), slots.additional?.(), slots.default && _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-responsive__content', props.contentClass])\n }, [slots.default()])]));\n return {};\n }\n});\n//# sourceMappingURL=VResponsive.js.map","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createVNode as _createVNode, Fragment as _Fragment, mergeProps as _mergeProps, withDirectives as _withDirectives } from \"vue\";\n// Styles\nimport \"./VImg.css\";\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from \"../VResponsive/VResponsive.js\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.js\"; // Directives\nimport vIntersect from \"../../directives/intersect/index.js\"; // Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, ref, shallowRef, toRef, vShow, watch, withDirectives } from 'vue';\nimport { convertToUnit, genericComponent, getCurrentInstance, propsFactory, SUPPORTS_INTERSECTION, useRender } from \"../../util/index.js\"; // Types\n// not intended for public use, this is passed in by vuetify-loader\nexport const makeVImgProps = propsFactory({\n absolute: Boolean,\n alt: String,\n cover: Boolean,\n color: String,\n draggable: {\n type: [Boolean, String],\n default: undefined\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined\n })\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: ''\n },\n crossorigin: String,\n referrerpolicy: String,\n srcset: String,\n position: String,\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTransitionProps()\n}, 'VImg');\nexport const VImg = genericComponent()({\n name: 'VImg',\n directives: {\n vIntersect\n },\n props: makeVImgProps(),\n emits: {\n loadstart: value => true,\n load: value => true,\n error: value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(() => props.color);\n const {\n roundedClasses\n } = useRounded(props);\n const vm = getCurrentInstance('VImg');\n const currentSrc = shallowRef(''); // Set from srcset\n const image = ref();\n const state = shallowRef(props.eager ? 'loading' : 'idle');\n const naturalWidth = shallowRef();\n const naturalHeight = shallowRef();\n const normalisedSrc = computed(() => {\n return props.src && typeof props.src === 'object' ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0)\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0)\n };\n });\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value / naturalHeight.value || 0;\n });\n watch(() => props.src, () => {\n init(state.value !== 'idle');\n });\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value);\n }\n });\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init());\n function init(isIntersecting) {\n if (props.eager && isIntersecting) return;\n if (SUPPORTS_INTERSECTION && !isIntersecting && !props.eager) return;\n state.value = 'loading';\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image();\n lazyImg.src = normalisedSrc.value.lazySrc;\n pollForSize(lazyImg, null);\n }\n if (!normalisedSrc.value.src) return;\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src);\n setTimeout(() => {\n if (vm.isUnmounted) return;\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError();\n }\n if (state.value === 'error') return;\n if (!aspectRatio.value) pollForSize(image.value, null);\n if (state.value === 'loading') onLoad();\n } else {\n if (!aspectRatio.value) pollForSize(image.value);\n getSrc();\n }\n });\n });\n }\n function onLoad() {\n if (vm.isUnmounted) return;\n getSrc();\n pollForSize(image.value);\n state.value = 'loaded';\n emit('load', image.value?.currentSrc || normalisedSrc.value.src);\n }\n function onError() {\n if (vm.isUnmounted) return;\n state.value = 'error';\n emit('error', image.value?.currentSrc || normalisedSrc.value.src);\n }\n function getSrc() {\n const img = image.value;\n if (img) currentSrc.value = img.currentSrc || img.src;\n }\n let timer = -1;\n onBeforeUnmount(() => {\n clearTimeout(timer);\n });\n function pollForSize(img) {\n let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;\n const poll = () => {\n clearTimeout(timer);\n if (vm.isUnmounted) return;\n const {\n naturalHeight: imgHeight,\n naturalWidth: imgWidth\n } = img;\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth;\n naturalHeight.value = imgHeight;\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout);\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1;\n naturalHeight.value = 1;\n }\n };\n poll();\n }\n const containClasses = toRef(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover\n }));\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null;\n const img = _createElementVNode(\"img\", {\n \"class\": _normalizeClass(['v-img__img', containClasses.value]),\n \"style\": {\n objectPosition: props.position\n },\n \"crossorigin\": props.crossorigin,\n \"src\": normalisedSrc.value.src,\n \"srcset\": normalisedSrc.value.srcset,\n \"alt\": props.alt,\n \"referrerpolicy\": props.referrerpolicy,\n \"draggable\": props.draggable,\n \"sizes\": props.sizes,\n \"ref\": image,\n \"onLoad\": onLoad,\n \"onError\": onError\n }, null);\n const sources = slots.sources?.();\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [withDirectives(sources ? _createElementVNode(\"picture\", {\n \"class\": \"v-img__picture\"\n }, [sources, img]) : img, [[vShow, state.value === 'loaded']])]\n });\n };\n const __preloadImage = () => _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && _createElementVNode(\"img\", {\n \"class\": _normalizeClass(['v-img__img', 'v-img__img--preload', containClasses.value]),\n \"style\": {\n objectPosition: props.position\n },\n \"crossorigin\": props.crossorigin,\n \"src\": normalisedSrc.value.lazySrc,\n \"alt\": props.alt,\n \"referrerpolicy\": props.referrerpolicy,\n \"draggable\": props.draggable\n }, null)]\n });\n const __placeholder = () => {\n if (!slots.placeholder) return null;\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) && _createElementVNode(\"div\", {\n \"class\": \"v-img__placeholder\"\n }, [slots.placeholder()])]\n });\n };\n const __error = () => {\n if (!slots.error) return null;\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [state.value === 'error' && _createElementVNode(\"div\", {\n \"class\": \"v-img__error\"\n }, [slots.error()])]\n });\n };\n const __gradient = () => {\n if (!props.gradient) return null;\n return _createElementVNode(\"div\", {\n \"class\": \"v-img__gradient\",\n \"style\": {\n backgroundImage: `linear-gradient(${props.gradient})`\n }\n }, null);\n };\n const isBooted = shallowRef(false);\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true;\n });\n });\n stop();\n }\n });\n }\n useRender(() => {\n const responsiveProps = VResponsive.filterProps(props);\n return _withDirectives(_createVNode(VResponsive, _mergeProps({\n \"class\": ['v-img', {\n 'v-img--absolute': props.absolute,\n 'v-img--booting': !isBooted.value\n }, backgroundColorClasses.value, roundedClasses.value, props.class],\n \"style\": [{\n width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)\n }, backgroundColorStyles.value, props.style]\n }, responsiveProps, {\n \"aspectRatio\": aspectRatio.value,\n \"aria-label\": props.alt,\n \"role\": props.alt ? 'img' : undefined\n }), {\n additional: () => _createElementVNode(_Fragment, null, [_createVNode(__image, null, null), _createVNode(__preloadImage, null, null), _createVNode(__gradient, null, null), _createVNode(__placeholder, null, null), _createVNode(__error, null, null)]),\n default: slots.default\n }), [[vIntersect, {\n handler: init,\n options: props.options\n }, null, {\n once: true\n }]]);\n });\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight\n };\n }\n});\n//# sourceMappingURL=VImg.js.map","// Utilities\nimport { defer, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeDelayProps = propsFactory({\n closeDelay: [Number, String],\n openDelay: [Number, String]\n}, 'delay');\nexport function useDelay(props, cb) {\n let clearDelay = () => {};\n function runDelay(isOpening, options) {\n clearDelay?.();\n const delay = isOpening ? props.openDelay : props.closeDelay;\n const normalizedDelay = Math.max(options?.minDelay ?? 0, Number(delay ?? 0));\n return new Promise(resolve => {\n clearDelay = defer(normalizedDelay, () => {\n cb?.(isOpening);\n resolve(isOpening);\n });\n });\n }\n function runOpenDelay() {\n return runDelay(true);\n }\n function runCloseDelay(options) {\n return runDelay(false, options);\n }\n return {\n clearDelay,\n runOpenDelay,\n runCloseDelay\n };\n}\n//# sourceMappingURL=delay.js.map","// Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.js\";\nexport const makeVHoverProps = propsFactory({\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n ...makeDelayProps()\n}, 'VHover');\nexport const VHover = genericComponent()({\n name: 'VHover',\n props: makeVHoverProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isHovering = useProxiedModel(props, 'modelValue');\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => !props.disabled && (isHovering.value = value));\n return () => slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: runOpenDelay,\n onMouseleave: runCloseDelay\n }\n });\n }\n});\n//# sourceMappingURL=VHover.js.map","// Types\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport(point, offset) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y\n };\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement(point, offset) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y\n };\n}\n\n/** Get the difference between two points */\nexport function getOffset(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint(anchor, box) {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const {\n side,\n align\n } = anchor;\n const x = align === 'left' ? 0 : align === 'center' ? box.width / 2 : align === 'right' ? box.width : align;\n const y = side === 'top' ? 0 : side === 'bottom' ? box.height : side;\n return elementToViewport({\n x,\n y\n }, box);\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const {\n side,\n align\n } = anchor;\n const x = side === 'left' ? 0 : side === 'right' ? box.width : side;\n const y = align === 'top' ? 0 : align === 'center' ? box.height / 2 : align === 'bottom' ? box.height : align;\n return elementToViewport({\n x,\n y\n }, box);\n }\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2\n }, box);\n}\n//# sourceMappingURL=point.js.map","// Composables\nimport { useToggleScope } from \"../../composables/toggleScope.js\"; // Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue';\nimport { anchorToPoint, getOffset } from \"./util/point.js\";\nimport { CircularBuffer, clamp, consoleError, convertToUnit, deepEqual, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from \"../../util/index.js\";\nimport { Box, getElementBox, getOverflow, getTargetBox } from \"../../util/box.js\"; // Types\nconst locationStrategies = {\n static: staticLocationStrategy,\n // specific viewport position, usually centered\n connected: connectedLocationStrategy // connected to a certain element\n};\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function],\n default: 'static',\n validator: val => typeof val === 'function' || val in locationStrategies\n },\n location: {\n type: String,\n default: 'bottom'\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: [Number, String, Array],\n stickToTarget: Boolean,\n viewportMargin: {\n type: [Number, String],\n default: 12\n }\n}, 'VOverlay-location-strategies');\nexport function useLocationStrategies(props, data) {\n const contentStyles = ref({});\n const updateLocation = ref();\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset);\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n visualViewport?.removeEventListener('resize', onVisualResize);\n visualViewport?.removeEventListener('scroll', onVisualScroll);\n updateLocation.value = undefined;\n });\n window.addEventListener('resize', onResize, {\n passive: true\n });\n visualViewport?.addEventListener('resize', onVisualResize, {\n passive: true\n });\n visualViewport?.addEventListener('scroll', onVisualScroll, {\n passive: true\n });\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation;\n }\n });\n }\n function onResize(e) {\n updateLocation.value?.(e);\n }\n function onVisualResize(e) {\n updateLocation.value?.(e);\n }\n function onVisualScroll(e) {\n updateLocation.value?.(e);\n }\n return {\n contentStyles,\n updateLocation\n };\n}\nfunction staticLocationStrategy() {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize(el, isRtl) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el);\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0);\n } else {\n contentBox.x -= parseFloat(el.style.left || 0);\n }\n contentBox.y -= parseFloat(el.style.top || 0);\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox;\n}\nfunction connectedLocationStrategy(data, props, contentStyles) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value);\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0\n });\n }\n const {\n preferredAnchor,\n preferredOrigin\n } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value);\n const parsedOrigin = props.origin === 'overlap' ? parsedAnchor : props.origin === 'auto' ? flipSide(parsedAnchor) : parseAnchor(props.origin, data.isRtl.value);\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin)\n };\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin\n };\n }\n });\n const [minWidth, minHeight, maxWidth, maxHeight] = ['minWidth', 'minHeight', 'maxWidth', 'maxHeight'].map(key => {\n return computed(() => {\n const val = parseFloat(props[key]);\n return isNaN(val) ? Infinity : val;\n });\n });\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset;\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];\n });\n let observe = false;\n let lastFrame = -1;\n const flipped = new CircularBuffer(4);\n const observer = new ResizeObserver(() => {\n if (!observe) return;\n\n // Detect consecutive frames\n requestAnimationFrame(newTime => {\n if (newTime !== lastFrame) flipped.clear();\n requestAnimationFrame(newNewTime => {\n lastFrame = newNewTime;\n });\n });\n if (flipped.isFull) {\n const values = flipped.values();\n if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {\n // Flipping is causing a container resize loop\n return;\n }\n }\n const result = updateLocation();\n if (result) flipped.push(result.flipped);\n });\n let targetBox = new Box({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n watch(data.target, (newTarget, oldTarget) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget);\n if (!Array.isArray(newTarget)) {\n if (newTarget) observer.observe(newTarget);\n } else if (!deepEqual(newTarget, oldTarget)) {\n updateLocation();\n }\n }, {\n immediate: true\n });\n watch(data.contentEl, (newContentEl, oldContentEl) => {\n if (oldContentEl) observer.unobserve(oldContentEl);\n if (newContentEl) observer.observe(newContentEl);\n }, {\n immediate: true\n });\n onScopeDispose(() => {\n observer.disconnect();\n });\n\n // eslint-disable-next-line max-statements\n function updateLocation() {\n observe = false;\n requestAnimationFrame(() => observe = true);\n if (!data.target.value || !data.contentEl.value) return;\n if (Array.isArray(data.target.value) || data.target.value.offsetParent || data.target.value.getClientRects().length) {\n targetBox = getTargetBox(data.target.value);\n } // Otherwise target element is hidden, use last known value\n\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);\n const scrollParents = getScrollParents(data.contentEl.value);\n const viewportMargin = Number(props.viewportMargin);\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement);\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0);\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0);\n }\n }\n const viewport = scrollParents.reduce((box, el) => {\n const scrollBox = getElementBox(el);\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top)\n });\n }\n return scrollBox;\n }, undefined);\n if (props.stickToTarget) {\n viewport.x += Math.min(viewportMargin, targetBox.x);\n viewport.y += Math.min(viewportMargin, targetBox.y);\n viewport.width = Math.max(viewport.width - viewportMargin * 2, targetBox.x + targetBox.width - viewportMargin);\n viewport.height = Math.max(viewport.height - viewportMargin * 2, targetBox.y + targetBox.height - viewportMargin);\n } else {\n viewport.x += viewportMargin;\n viewport.y += viewportMargin;\n viewport.width -= viewportMargin * 2;\n viewport.height -= viewportMargin * 2;\n }\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value\n };\n function checkOverflow(_placement) {\n const box = new Box(contentBox);\n const targetPoint = anchorToPoint(_placement.anchor, targetBox);\n const contentPoint = anchorToPoint(_placement.origin, box);\n let {\n x,\n y\n } = getOffset(targetPoint, contentPoint);\n switch (_placement.anchor.side) {\n case 'top':\n y -= offset.value[0];\n break;\n case 'bottom':\n y += offset.value[0];\n break;\n case 'left':\n x -= offset.value[0];\n break;\n case 'right':\n x += offset.value[0];\n break;\n }\n switch (_placement.anchor.align) {\n case 'top':\n y -= offset.value[1];\n break;\n case 'bottom':\n y += offset.value[1];\n break;\n case 'left':\n x -= offset.value[1];\n break;\n case 'right':\n x += offset.value[1];\n break;\n }\n box.x += x;\n box.y += y;\n box.width = Math.min(box.width, maxWidth.value);\n box.height = Math.min(box.height, maxHeight.value);\n const overflows = getOverflow(box, viewport);\n return {\n overflows,\n x,\n y\n };\n }\n let x = 0;\n let y = 0;\n const available = {\n x: 0,\n y: 0\n };\n const flipped = {\n x: false,\n y: false\n };\n let resets = -1;\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy');\n break;\n }\n const {\n x: _x,\n y: _y,\n overflows\n } = checkOverflow(placement);\n x += _x;\n y += _y;\n contentBox.x += _x;\n contentBox.y += _y;\n\n // flip\n {\n const axis = getAxis(placement.anchor);\n const hasOverflowX = overflows.x.before || overflows.x.after;\n const hasOverflowY = overflows.y.before || overflows.y.after;\n let reset = false;\n ['x', 'y'].forEach(key => {\n if (key === 'x' && hasOverflowX && !flipped.x || key === 'y' && hasOverflowY && !flipped.y) {\n const newPlacement = {\n anchor: {\n ...placement.anchor\n },\n origin: {\n ...placement.origin\n }\n };\n const flip = key === 'x' ? axis === 'y' ? flipAlign : flipSide : axis === 'y' ? flipSide : flipAlign;\n newPlacement.anchor = flip(newPlacement.anchor);\n newPlacement.origin = flip(newPlacement.origin);\n const {\n overflows: newOverflows\n } = checkOverflow(newPlacement);\n if (newOverflows[key].before <= overflows[key].before && newOverflows[key].after <= overflows[key].after || newOverflows[key].before + newOverflows[key].after < (overflows[key].before + overflows[key].after) / 2) {\n placement = newPlacement;\n reset = flipped[key] = true;\n }\n }\n });\n if (reset) continue;\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n }\n if (overflows.x.after) {\n x -= overflows.x.after;\n contentBox.x -= overflows.x.after;\n }\n if (overflows.y.before) {\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n if (overflows.y.after) {\n y -= overflows.y.after;\n contentBox.y -= overflows.y.after;\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport);\n available.x = viewport.width - overflows.x.before - overflows.x.after;\n available.y = viewport.height - overflows.y.before - overflows.y.after;\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n break;\n }\n const axis = getAxis(placement.anchor);\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))\n });\n return {\n available,\n contentBox,\n flipped\n };\n }\n watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());\n nextTick(() => {\n const result = updateLocation();\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return;\n const {\n available,\n contentBox\n } = result;\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation();\n requestAnimationFrame(() => {\n updateLocation();\n });\n });\n }\n });\n return {\n updateLocation\n };\n}\nfunction pixelRound(val) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio;\n}\nfunction pixelCeil(val) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio;\n}\n//# sourceMappingURL=locationStrategies.js.map","let clean = true;\nconst frames = [];\n\n/**\n * Schedule a task to run in an animation frame on its own\n * This is useful for heavy tasks that may cause jank if all ran together\n */\nexport function requestNewFrame(cb) {\n if (!clean || frames.length) {\n frames.push(cb);\n run();\n } else {\n clean = false;\n cb();\n run();\n }\n}\nlet raf = -1;\nfunction run() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n const frame = frames.shift();\n if (frame) frame();\n if (frames.length) run();else clean = true;\n });\n}\n//# sourceMappingURL=requestNewFrame.js.map","// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue';\nimport { requestNewFrame } from \"./requestNewFrame.js\";\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from \"../../util/index.js\"; // Types\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy\n};\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function],\n default: 'block',\n validator: val => typeof val === 'function' || val in scrollStrategies\n }\n}, 'VOverlay-scroll-strategies');\nexport function useScrollStrategies(props, data) {\n if (!IN_BROWSER) return;\n let scope;\n watchEffect(async () => {\n scope?.stop();\n if (!(data.isActive.value && props.scrollStrategy)) return;\n scope = effectScope();\n await new Promise(resolve => setTimeout(resolve));\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope);\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope);\n }\n });\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n}\nfunction closeScrollStrategy(data) {\n function onScroll(e) {\n data.isActive.value = false;\n }\n bindScroll(getTargetEl(data.target.value, data.contentEl.value), onScroll);\n}\nfunction blockScrollStrategy(data, props) {\n const offsetParent = data.root.value?.offsetParent;\n const target = getTargetEl(data.target.value, data.contentEl.value);\n const scrollElements = [...new Set([...getScrollParents(target, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);\n if (scrollableParent) {\n data.root.value.classList.add('v-overlay--scroll-blocked');\n }\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft));\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop));\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth));\n }\n el.classList.add('v-overlay-scroll-blocked');\n });\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));\n const scrollBehavior = el.style.scrollBehavior;\n el.style.scrollBehavior = 'auto';\n el.style.removeProperty('--v-body-scroll-x');\n el.style.removeProperty('--v-body-scroll-y');\n el.style.removeProperty('--v-scrollbar-offset');\n el.classList.remove('v-overlay-scroll-blocked');\n el.scrollLeft = -x;\n el.scrollTop = -y;\n el.style.scrollBehavior = scrollBehavior;\n });\n if (scrollableParent) {\n data.root.value.classList.remove('v-overlay--scroll-blocked');\n }\n });\n}\nfunction repositionScrollStrategy(data, props, scope) {\n let slow = false;\n let raf = -1;\n let ric = -1;\n function update(e) {\n requestNewFrame(() => {\n const start = performance.now();\n data.updateLocation.value?.(e);\n const time = performance.now() - start;\n slow = time / (1000 / 60) > 2;\n });\n }\n ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(getTargetEl(data.target.value, data.contentEl.value), e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e);\n });\n });\n } else {\n update(e);\n }\n });\n });\n });\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);\n cancelAnimationFrame(raf);\n });\n}\nfunction getTargetEl(target, contentEl) {\n return Array.isArray(target) ? document.elementsFromPoint(...target).find(el => !contentEl?.contains(el)) : target ?? contentEl;\n}\nfunction bindScroll(el, onScroll) {\n const scrollElements = [document, ...getScrollParents(el)];\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll);\n });\n });\n}\n//# sourceMappingURL=scrollStrategies.js.map","// Types\n\nexport const VMenuSymbol = Symbol.for('vuetify:v-menu');\n//# sourceMappingURL=shared.js.map","// Components\nimport { VMenuSymbol } from \"../VMenu/shared.js\"; // Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.js\"; // Utilities\nimport { computed, effectScope, inject, mergeProps, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';\nimport { bindProps, getCurrentInstance, IN_BROWSER, matchesSelector, propsFactory, templateRef, unbindProps } from \"../../util/index.js\"; // Types\nexport const makeActivatorProps = propsFactory({\n target: [String, Object],\n activator: [String, Object],\n activatorProps: {\n type: Object,\n default: () => ({})\n },\n openOnClick: {\n type: Boolean,\n default: undefined\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined\n },\n closeOnContentClick: Boolean,\n ...makeDelayProps()\n}, 'VOverlay-activator');\nexport function useActivator(props, _ref) {\n let {\n isActive,\n isTop,\n contentEl\n } = _ref;\n const vm = getCurrentInstance('useActivator');\n const activatorEl = ref();\n let isHovered = false;\n let isFocused = false;\n let firstEnter = true;\n const openOnFocus = computed(() => props.openOnFocus || props.openOnFocus == null && props.openOnHover);\n const openOnClick = computed(() => props.openOnClick || props.openOnClick == null && !props.openOnHover && !openOnFocus.value);\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => {\n if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused) && !(props.openOnHover && isActive.value && !isTop.value)) {\n if (isActive.value !== value) {\n firstEnter = true;\n }\n isActive.value = value;\n }\n });\n const cursorTarget = ref();\n const availableEvents = {\n onClick: e => {\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY];\n }\n isActive.value = !isActive.value;\n },\n onMouseenter: e => {\n isHovered = true;\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onMouseleave: e => {\n isHovered = false;\n runCloseDelay();\n },\n onFocus: e => {\n if (matchesSelector(e.target, ':focus-visible') === false) return;\n isFocused = true;\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onBlur: e => {\n isFocused = false;\n e.stopPropagation();\n runCloseDelay({\n minDelay: 1\n });\n }\n };\n const activatorEvents = computed(() => {\n const events = {};\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick;\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter;\n events.onMouseleave = availableEvents.onMouseleave;\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus;\n events.onBlur = availableEvents.onBlur;\n }\n return events;\n });\n const contentEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true;\n runOpenDelay();\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n if (openOnFocus.value) {\n events.onFocusin = e => {\n if (!e.target.matches(':focus-visible')) return;\n isFocused = true;\n runOpenDelay();\n };\n events.onFocusout = () => {\n isFocused = false;\n runCloseDelay({\n minDelay: 1\n });\n };\n }\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null);\n events.onClick = () => {\n isActive.value = false;\n menu?.closeParents();\n };\n }\n return events;\n });\n const scrimEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true;\n firstEnter = false;\n runOpenDelay();\n }\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n return events;\n });\n watch(isTop, val => {\n if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false;\n }\n });\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined;\n });\n }\n }, {\n flush: 'post'\n });\n const activatorRef = templateRef();\n watchEffect(() => {\n if (!activatorRef.value) return;\n nextTick(() => {\n activatorEl.value = activatorRef.el;\n });\n });\n const targetRef = templateRef();\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;\n if (targetRef.value) return targetRef.el;\n return getTarget(props.target, vm) || activatorEl.value;\n });\n const targetEl = computed(() => {\n return Array.isArray(target.value) ? undefined : target.value;\n });\n let scope;\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope();\n scope.run(() => {\n _useActivator(props, vm, {\n activatorEl,\n activatorEvents\n });\n });\n } else if (scope) {\n scope.stop();\n }\n }, {\n flush: 'post',\n immediate: true\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n return {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n };\n}\nfunction _useActivator(props, vm, _ref2) {\n let {\n activatorEl,\n activatorEvents\n } = _ref2;\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal);\n activator && unbindActivatorProps(activator);\n }\n if (val) {\n nextTick(() => bindActivatorProps());\n }\n }, {\n immediate: true\n });\n watch(() => props.activatorProps, () => {\n bindActivatorProps();\n });\n onScopeDispose(() => {\n unbindActivatorProps();\n });\n function bindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n bindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function unbindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n unbindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function getActivator() {\n let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : props.activator;\n const activator = getTarget(selector, vm);\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined;\n return activatorEl.value;\n }\n}\nfunction getTarget(selector, vm) {\n if (!selector) return;\n let target;\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode;\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode;\n }\n target = el;\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector);\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el;\n } else {\n // HTMLElement | Element | [x, y]\n target = selector;\n }\n return target;\n}\n//# sourceMappingURL=useActivator.js.map","// Utilities\nimport { nextTick, onScopeDispose, toRef, toValue, watch } from 'vue';\nimport { focusableChildren, IN_BROWSER, propsFactory } from \"../util/index.js\"; // Types\n// Types\n// Composables\nexport const makeFocusTrapProps = propsFactory({\n retainFocus: Boolean,\n captureFocus: Boolean,\n /** @deprecated */\n disableInitialFocus: Boolean\n}, 'focusTrap');\nconst registry = new Map();\nlet subscribers = 0;\nfunction onKeydown(e) {\n const activeElement = document.activeElement;\n if (e.key !== 'Tab' || !activeElement) return;\n const parentTraps = Array.from(registry.values()).filter(_ref => {\n let {\n isActive,\n contentEl\n } = _ref;\n return isActive.value && contentEl.value?.contains(activeElement);\n }).map(x => x.contentEl.value);\n let closestTrap;\n let currentParent = activeElement.parentElement;\n while (currentParent) {\n if (parentTraps.includes(currentParent)) {\n closestTrap = currentParent;\n break;\n }\n currentParent = currentParent.parentElement;\n }\n if (!closestTrap) return;\n const focusable = focusableChildren(closestTrap)\n // excluding VListItems with tabindex=\"-2\"\n .filter(x => x.tabIndex >= 0);\n if (!focusable.length) return;\n const active = document.activeElement;\n if (focusable.length === 1 && focusable[0].classList.contains('v-list') && focusable[0].contains(active)) {\n e.preventDefault();\n return;\n }\n const firstElement = focusable[0];\n const lastElement = focusable[focusable.length - 1];\n if (e.shiftKey && (active === firstElement || firstElement.classList.contains('v-list') && firstElement.contains(active))) {\n e.preventDefault();\n lastElement.focus();\n }\n if (!e.shiftKey && (active === lastElement || lastElement.classList.contains('v-list') && lastElement.contains(active))) {\n e.preventDefault();\n firstElement.focus();\n }\n}\nexport function useFocusTrap(props, _ref2) {\n let {\n isActive,\n localTop,\n activatorEl,\n contentEl\n } = _ref2;\n const trapId = Symbol('trap');\n let focusTrapSuppressed = false;\n let focusTrapSuppressionTimeout = -1;\n async function onPointerdown() {\n focusTrapSuppressed = true;\n focusTrapSuppressionTimeout = window.setTimeout(() => {\n focusTrapSuppressed = false;\n }, 100);\n }\n async function captureOnFocus(e) {\n const before = e.relatedTarget;\n const after = e.target;\n document.removeEventListener('pointerdown', onPointerdown);\n document.removeEventListener('keydown', captureOnKeydown);\n await nextTick();\n if (isActive.value && !focusTrapSuppressed && before !== after && contentEl.value &&\n // We're the menu without open submenus or overlays\n toValue(localTop) &&\n // It isn't the document or the container body\n ![document, contentEl.value].includes(after) &&\n // It isn't inside the container body\n !contentEl.value.contains(after)) {\n const focusable = focusableChildren(contentEl.value);\n focusable[0]?.focus();\n }\n }\n function captureOnKeydown(e) {\n if (e.key !== 'Tab') return;\n document.removeEventListener('keydown', captureOnKeydown);\n if (isActive.value && contentEl.value && e.target && !contentEl.value.contains(e.target)) {\n const allFocusableElements = focusableChildren(document.documentElement);\n if (e.shiftKey && e.target === allFocusableElements.at(0) || !e.shiftKey && e.target === allFocusableElements.at(-1)) {\n const focusable = focusableChildren(contentEl.value);\n if (focusable.length > 0) {\n e.preventDefault();\n focusable[0].focus();\n }\n }\n }\n }\n const shouldCapture = toRef(() => isActive.value && props.captureFocus && !props.disableInitialFocus);\n if (IN_BROWSER) {\n watch(() => props.retainFocus, val => {\n if (val) {\n registry.set(trapId, {\n isActive,\n contentEl\n });\n } else {\n registry.delete(trapId);\n }\n }, {\n immediate: true\n });\n watch(shouldCapture, val => {\n if (val) {\n document.addEventListener('pointerdown', onPointerdown);\n document.addEventListener('focusin', captureOnFocus, {\n once: true\n });\n document.addEventListener('keydown', captureOnKeydown);\n } else {\n document.removeEventListener('pointerdown', onPointerdown);\n document.removeEventListener('focusin', captureOnFocus);\n document.removeEventListener('keydown', captureOnKeydown);\n }\n }, {\n immediate: true\n });\n if (subscribers++ < 1) {\n document.addEventListener('keydown', onKeydown);\n }\n }\n onScopeDispose(() => {\n registry.delete(trapId);\n clearTimeout(focusTrapSuppressionTimeout);\n document.removeEventListener('pointerdown', onPointerdown);\n document.removeEventListener('focusin', captureOnFocus);\n document.removeEventListener('keydown', captureOnKeydown);\n if (--subscribers < 1) {\n document.removeEventListener('keydown', onKeydown);\n }\n });\n}\n//# sourceMappingURL=focusTrap.js.map","// Utilities\nimport { computed, inject, onScopeDispose, reactive, shallowRef, toRef, toRefs, watchEffect } from 'vue';\nimport { getCurrentInstanceName, mergeDeep, propsFactory } from \"../util/index.js\";\nimport { IN_BROWSER, SUPPORTS_TOUCH } from \"../util/globals.js\"; // Types\nexport const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs\n\nexport const DisplaySymbol = Symbol.for('vuetify:display');\nconst defaultDisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n }\n};\nconst parseDisplayOptions = function () {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;\n return mergeDeep(defaultDisplayOptions, options);\n};\nfunction getClientWidth(ssr) {\n return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;\n}\nfunction getClientHeight(ssr) {\n return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;\n}\nfunction getPlatform(ssr) {\n const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : 'ssr';\n function match(regexp) {\n return Boolean(userAgent.match(regexp));\n }\n const android = match(/android/i);\n const ios = match(/iphone|ipad|ipod/i);\n const cordova = match(/cordova/i);\n const electron = match(/electron/i);\n const chrome = match(/chrome/i);\n const edge = match(/edge/i);\n const firefox = match(/firefox/i);\n const opera = match(/opera/i);\n const win = match(/win/i);\n const mac = match(/mac/i);\n const linux = match(/linux/i);\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr'\n };\n}\nexport function createDisplay(options, ssr) {\n const {\n thresholds,\n mobileBreakpoint\n } = parseDisplayOptions(options);\n const height = shallowRef(getClientHeight(ssr));\n const platform = shallowRef(getPlatform(ssr));\n const state = reactive({});\n const width = shallowRef(getClientWidth(ssr));\n function updateSize() {\n height.value = getClientHeight();\n width.value = getClientWidth();\n }\n function update() {\n updateSize();\n platform.value = getPlatform();\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm;\n const sm = width.value < thresholds.md && !xs;\n const md = width.value < thresholds.lg && !(sm || xs);\n const lg = width.value < thresholds.xl && !(md || sm || xs);\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);\n const xxl = width.value >= thresholds.xxl;\n const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];\n const mobile = width.value < breakpointValue;\n state.xs = xs;\n state.sm = sm;\n state.md = md;\n state.lg = lg;\n state.xl = xl;\n state.xxl = xxl;\n state.smAndUp = !xs;\n state.mdAndUp = !(xs || sm);\n state.lgAndUp = !(xs || sm || md);\n state.xlAndUp = !(xs || sm || md || lg);\n state.smAndDown = !(md || lg || xl || xxl);\n state.mdAndDown = !(lg || xl || xxl);\n state.lgAndDown = !(xl || xxl);\n state.xlAndDown = !xxl;\n state.name = name;\n state.height = height.value;\n state.width = width.value;\n state.mobile = mobile;\n state.mobileBreakpoint = mobileBreakpoint;\n state.platform = platform.value;\n state.thresholds = thresholds;\n });\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, {\n passive: true\n });\n onScopeDispose(() => {\n window.removeEventListener('resize', updateSize);\n }, true);\n }\n return {\n ...toRefs(state),\n update,\n ssr: !!ssr\n };\n}\nexport const makeDisplayProps = propsFactory({\n mobile: {\n type: Boolean,\n default: false\n },\n mobileBreakpoint: [Number, String]\n}, 'display');\nexport function useDisplay() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n mobile: null\n };\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const display = inject(DisplaySymbol);\n if (!display) throw new Error('Could not find Vuetify display injection');\n const mobile = computed(() => {\n if (props.mobile) {\n return true;\n } else if (typeof props.mobileBreakpoint === 'number') {\n return display.width.value < props.mobileBreakpoint;\n } else if (props.mobileBreakpoint) {\n return display.width.value < display.thresholds.value[props.mobileBreakpoint];\n } else if (props.mobile === null) {\n return display.mobile.value;\n } else {\n return false;\n }\n });\n const displayClasses = toRef(() => {\n if (!name) return {};\n return {\n [`${name}--mobile`]: mobile.value\n };\n });\n return {\n ...display,\n displayClasses,\n mobile\n };\n}\n//# sourceMappingURL=display.js.map","// Composables\nimport { useDisplay } from \"./display.js\"; // Utilities\nimport { onMounted, shallowRef } from 'vue';\nimport { IN_BROWSER } from \"../util/index.js\";\nexport function useHydration() {\n if (!IN_BROWSER) return shallowRef(false);\n const {\n ssr\n } = useDisplay();\n if (ssr) {\n const isMounted = shallowRef(false);\n onMounted(() => {\n isMounted.value = true;\n });\n return isMounted;\n } else {\n return shallowRef(true);\n }\n}\n//# sourceMappingURL=hydration.js.map","// Utilities\nimport { shallowRef, toRef, watch } from 'vue';\nimport { propsFactory } from \"../util/index.js\"; // Types\nexport const makeLazyProps = propsFactory({\n eager: Boolean\n}, 'lazy');\nexport function useLazy(props, active) {\n const isBooted = shallowRef(false);\n const hasContent = toRef(() => isBooted.value || props.eager || active.value);\n watch(active, () => isBooted.value = true);\n function onAfterLeave() {\n if (!props.eager) isBooted.value = false;\n }\n return {\n isBooted,\n hasContent,\n onAfterLeave\n };\n}\n//# sourceMappingURL=lazy.js.map","// Utilities\nimport { computed, nextTick, onScopeDispose, reactive, resolveDynamicComponent, toRef } from 'vue';\nimport { deepEqual, getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from \"../util/index.js\"; // Types\nexport function useRoute() {\n const vm = getCurrentInstance('useRoute');\n return computed(() => vm?.proxy?.$route);\n}\nexport function useRouter() {\n return getCurrentInstance('useRouter')?.proxy?.$router;\n}\nexport function useLink(props, attrs) {\n const RouterLink = resolveDynamicComponent('RouterLink');\n const isLink = toRef(() => !!(props.href || props.to));\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');\n });\n if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {\n const href = toRef(() => props.href);\n return {\n isLink,\n isRouterLink: toRef(() => false),\n isClickable,\n href,\n linkProps: reactive({\n href\n })\n };\n }\n\n // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined\n const routerLink = RouterLink.useLink({\n to: toRef(() => props.to || ''),\n replace: toRef(() => props.replace)\n });\n // Actual link needs to be undefined when to prop is not used\n const link = computed(() => props.to ? routerLink : undefined);\n const route = useRoute();\n const isActive = computed(() => {\n if (!link.value) return false;\n if (!props.exact) return link.value.isActive?.value ?? false;\n if (!route.value) return link.value.isExactActive?.value ?? false;\n return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);\n });\n const href = computed(() => props.to ? link.value?.route.value.href : props.href);\n const isRouterLink = toRef(() => !!props.to);\n return {\n isLink,\n isRouterLink,\n isClickable,\n isActive,\n route: link.value?.route,\n navigate: link.value?.navigate,\n href,\n linkProps: reactive({\n href,\n 'aria-current': toRef(() => isActive.value ? 'page' : undefined),\n 'aria-disabled': toRef(() => props.disabled && isLink.value ? 'true' : undefined),\n tabindex: toRef(() => props.disabled && isLink.value ? '-1' : undefined)\n })\n };\n}\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object],\n exact: Boolean\n}, 'router');\nlet inTransition = false;\nexport function useBackButton(router, cb) {\n let popped = false;\n let removeBefore;\n let removeAfter;\n if (IN_BROWSER && router?.beforeEach) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate);\n removeBefore = router.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next());\n } else {\n popped ? cb(next) : next();\n }\n inTransition = true;\n });\n removeAfter = router?.afterEach(() => {\n inTransition = false;\n });\n });\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate);\n removeBefore?.();\n removeAfter?.();\n });\n }\n function onPopstate(e) {\n if (e.state?.replaced) return;\n popped = true;\n setTimeout(() => popped = false);\n }\n}\n//# sourceMappingURL=router.js.map","// Utilities\nimport { getCurrentInstance } from \"../util/index.js\";\nexport function useScopeId() {\n const vm = getCurrentInstance('useScopeId');\n const scopeId = vm.vnode.scopeId;\n return {\n scopeId: scopeId ? {\n [scopeId]: ''\n } : undefined\n };\n}\n//# sourceMappingURL=scopeId.js.map","// Composables\nimport { useToggleScope } from \"./toggleScope.js\"; // Utilities\nimport { inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, toRef, toValue, watchEffect } from 'vue';\nimport { getCurrentInstance } from \"../util/index.js\"; // Types\nconst StackSymbol = Symbol.for('vuetify:stack');\nconst globalStack = reactive([]);\nexport function useStack(isActive, zIndex, disableGlobalStack) {\n const vm = getCurrentInstance('useStack');\n const createStackEntry = !disableGlobalStack;\n const parent = inject(StackSymbol, undefined);\n const stack = reactive({\n activeChildren: new Set()\n });\n provide(StackSymbol, stack);\n const _zIndex = shallowRef(Number(toValue(zIndex)));\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1];\n _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(toValue(zIndex));\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value]);\n }\n parent?.activeChildren.add(vm.uid);\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid);\n globalStack.splice(idx, 1);\n }\n parent?.activeChildren.delete(vm.uid);\n });\n });\n const globalTop = shallowRef(true);\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid;\n setTimeout(() => globalTop.value = _isTop);\n });\n }\n const localTop = toRef(() => !stack.activeChildren.size);\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: toRef(() => ({\n zIndex: _zIndex.value\n }))\n };\n}\n//# sourceMappingURL=stack.js.map","// Utilities\nimport { computed, warn } from 'vue';\nimport { IN_BROWSER } from \"../util/index.js\";\nexport function useTeleport(target) {\n const teleportTarget = computed(() => {\n const _target = target();\n if (_target === true || !IN_BROWSER) return undefined;\n const targetElement = _target === false ? document.body : typeof _target === 'string' ? document.querySelector(_target) : _target;\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`);\n return undefined;\n }\n let container = [...targetElement.children].find(el => el.matches('.v-overlay-container'));\n if (!container) {\n container = document.createElement('div');\n container.className = 'v-overlay-container';\n targetElement.appendChild(container);\n }\n return container;\n });\n return {\n teleportTarget\n };\n}\n//# sourceMappingURL=teleport.js.map","// Utilities\nimport { attachedRoot } from \"../../util/index.js\"; // Types\nfunction defaultConditional() {\n return true;\n}\nfunction checkEvent(e, el, binding) {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false;\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot && root.host === e.target) return false;\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = (typeof binding.value === 'object' && binding.value.include || (() => []))();\n // Add the root element for the component this directive was defined on\n elements.push(el);\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target));\n}\nfunction checkIsActive(e, binding) {\n const isActive = typeof binding.value === 'object' && binding.value.closeConditional || defaultConditional;\n return isActive(e);\n}\nfunction directive(e, el, binding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;\n\n // Clicks in the Shadow DOM change their target while using setTimeout, so the original target is saved here\n e.shadowTarget = e.target;\n el._clickOutside.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e);\n }, 0);\n}\nfunction handleShadow(el, callback) {\n const root = attachedRoot(el);\n callback(document);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root);\n }\n}\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted(el, binding) {\n const onClick = e => directive(e, el, binding);\n const onMousedown = e => {\n el._clickOutside.lastMousedownWasOutside = checkEvent(e, el, binding);\n };\n handleShadow(el, app => {\n app.addEventListener('click', onClick, true);\n app.addEventListener('mousedown', onMousedown, true);\n });\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: false\n };\n }\n el._clickOutside[binding.instance.$.uid] = {\n onClick,\n onMousedown\n };\n },\n beforeUnmount(el, binding) {\n if (!el._clickOutside) return;\n handleShadow(el, app => {\n if (!app || !el._clickOutside?.[binding.instance.$.uid]) return;\n const {\n onClick,\n onMousedown\n } = el._clickOutside[binding.instance.$.uid];\n app.removeEventListener('click', onClick, true);\n app.removeEventListener('mousedown', onMousedown, true);\n });\n delete el._clickOutside[binding.instance.$.uid];\n }\n};\nexport default ClickOutside;\n//# sourceMappingURL=index.js.map","import { mergeProps as _mergeProps, createElementVNode as _createElementVNode, createVNode as _createVNode, Fragment as _Fragment, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\n// Styles\nimport \"./VOverlay.css\";\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from \"./locationStrategies.js\";\nimport { makeScrollStrategyProps, useScrollStrategies } from \"./scrollStrategies.js\";\nimport { makeActivatorProps, useActivator } from \"./useActivator.js\";\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.js\";\nimport { makeFocusTrapProps, useFocusTrap } from \"../../composables/focusTrap.js\";\nimport { useHydration } from \"../../composables/hydration.js\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.js\";\nimport { useRtl } from \"../../composables/locale.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\";\nimport { useBackButton, useRouter } from \"../../composables/router.js\";\nimport { useScopeId } from \"../../composables/scopeId.js\";\nimport { useStack } from \"../../composables/stack.js\";\nimport { useTeleport } from \"../../composables/teleport.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\";\nimport { useToggleScope } from \"../../composables/toggleScope.js\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.js\"; // Directives\nimport vClickOutside from \"../../directives/click-outside/index.js\"; // Utilities\nimport { computed, mergeProps, onBeforeUnmount, ref, Teleport, Transition, watch } from 'vue';\nimport { animate, convertToUnit, genericComponent, getCurrentInstance, getScrollParent, IN_BROWSER, omit, propsFactory, standardEasing, useRender } from \"../../util/index.js\"; // Types\nfunction Scrim(props) {\n const {\n modelValue,\n color,\n ...rest\n } = props;\n return _createVNode(Transition, {\n \"name\": \"fade-transition\",\n \"appear\": true\n }, {\n default: () => [props.modelValue && _createElementVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay__scrim', props.color.backgroundColorClasses.value],\n \"style\": props.color.backgroundColorStyles.value\n }, rest), null)]\n });\n}\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object],\n closeOnBack: {\n type: Boolean,\n default: true\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true\n },\n zIndex: {\n type: [Number, String],\n default: 2000\n },\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeFocusTrapProps(),\n ...makeThemeProps(),\n ...makeTransitionProps()\n}, 'VOverlay');\nexport const VOverlay = genericComponent()({\n name: 'VOverlay',\n directives: {\n vClickOutside\n },\n inheritAttrs: false,\n props: {\n _disableGlobalStack: Boolean,\n ...omit(makeVOverlayProps(), ['disableInitialFocus'])\n },\n emits: {\n 'click:outside': e => true,\n 'update:modelValue': value => true,\n keydown: e => true,\n afterEnter: () => true,\n afterLeave: () => true\n },\n setup(props, _ref) {\n let {\n slots,\n attrs,\n emit\n } = _ref;\n const vm = getCurrentInstance('VOverlay');\n const root = ref();\n const scrimEl = ref();\n const contentEl = ref();\n const model = useProxiedModel(props, 'modelValue');\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v;\n }\n });\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses,\n isRtl\n } = useRtl();\n const {\n hasContent,\n onAfterLeave: _onAfterLeave\n } = useLazy(props, isActive);\n const scrimColor = useBackgroundColor(() => {\n return typeof props.scrim === 'string' ? props.scrim : null;\n });\n const {\n globalTop,\n localTop,\n stackStyles\n } = useStack(isActive, () => props.zIndex, props._disableGlobalStack);\n const {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n } = useActivator(props, {\n isActive,\n isTop: localTop,\n contentEl\n });\n const {\n teleportTarget\n } = useTeleport(() => {\n const target = props.attach || props.contained;\n if (target) return target;\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode();\n if (rootNode instanceof ShadowRoot) return rootNode;\n return false;\n });\n const {\n dimensionStyles\n } = useDimension(props);\n const isMounted = useHydration();\n const {\n scopeId\n } = useScopeId();\n watch(() => props.disabled, v => {\n if (v) isActive.value = false;\n });\n const {\n contentStyles,\n updateLocation\n } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive\n });\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n target,\n isActive,\n updateLocation\n });\n function onClickOutside(e) {\n emit('click:outside', e);\n if (!props.persistent) isActive.value = false;else animateClick();\n }\n function closeConditional(e) {\n return isActive.value && localTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || e instanceof MouseEvent && e.shadowTarget === scrimEl.value);\n }\n useFocusTrap(props, {\n isActive,\n localTop,\n contentEl,\n activatorEl\n });\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown);\n } else {\n window.removeEventListener('keydown', onKeydown);\n }\n }, {\n immediate: true\n });\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return;\n window.removeEventListener('keydown', onKeydown);\n });\n function onKeydown(e) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!contentEl.value?.contains(document.activeElement)) {\n emit('keydown', e);\n }\n if (!props.persistent) {\n isActive.value = false;\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus();\n }\n } else animateClick();\n }\n }\n function onKeydownSelf(e) {\n if (e.key === 'Escape' && !globalTop.value) return;\n emit('keydown', e);\n }\n const router = useRouter();\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false);\n if (!props.persistent) isActive.value = false;else animateClick();\n } else {\n next();\n }\n });\n });\n const top = ref();\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value);\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop;\n }\n }\n });\n\n // Add a quick \"bounce\" animation to the content\n function animateClick() {\n if (props.noClickAnimation) return;\n contentEl.value && animate(contentEl.value, [{\n transformOrigin: 'center'\n }, {\n transform: 'scale(1.03)'\n }, {\n transformOrigin: 'center'\n }], {\n duration: 150,\n easing: standardEasing\n });\n }\n function onAfterEnter() {\n emit('afterEnter');\n }\n function onAfterLeave() {\n _onAfterLeave();\n emit('afterLeave');\n }\n useRender(() => _createElementVNode(_Fragment, null, [slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef\n }, activatorEvents.value, props.activatorProps)\n }), isMounted.value && hasContent.value && _createVNode(Teleport, {\n \"disabled\": !teleportTarget.value,\n \"to\": teleportTarget.value\n }, {\n default: () => [_createElementVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay', {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained\n }, themeClasses.value, rtlClasses.value, props.class],\n \"style\": [stackStyles.value, {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value)\n }, props.style],\n \"ref\": root,\n \"onKeydown\": onKeydownSelf\n }, scopeId, attrs), [_createVNode(Scrim, _mergeProps({\n \"color\": scrimColor,\n \"modelValue\": isActive.value && !!props.scrim,\n \"ref\": scrimEl\n }, scrimEvents.value), null), _createVNode(MaybeTransition, {\n \"appear\": true,\n \"persisted\": true,\n \"transition\": props.transition,\n \"target\": target.value,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, {\n default: () => [_withDirectives(_createElementVNode(\"div\", _mergeProps({\n \"ref\": contentEl,\n \"class\": ['v-overlay__content', props.contentClass],\n \"style\": [dimensionStyles.value, contentStyles.value]\n }, contentEvents.value, props.contentProps), [slots.default?.({\n isActive\n })]), [[_vShow, isActive.value], [vClickOutside, {\n handler: onClickOutside,\n closeConditional,\n include: () => [activatorEl.value]\n }]])]\n })])]\n })]));\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n rootEl: root,\n globalTop,\n localTop,\n updateLocation\n };\n }\n});\n//# sourceMappingURL=VOverlay.js.map","\n/*! image-blob-reduce 4.1.0 https://github.com/nodeca/image-blob-reduce @license MIT */\nfunction commonjsRequire (path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar utils$1 = {};\n\nutils$1.assign = function assign(to) {\n var from;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (Object.prototype.hasOwnProperty.call(from, key)) to[key] = from[key];\n }\n }\n\n return to;\n};\n\n\nfunction pick(from, props) {\n var to = {};\n\n props.forEach(function (key) {\n if (Object.prototype.hasOwnProperty.call(from, key)) to[key] = from[key];\n });\n\n return to;\n}\n\n\nfunction pick_pica_resize_options(from) {\n return pick(from, [\n 'alpha',\n 'unsharpAmount',\n 'unsharpRadius',\n 'unsharpThreshold',\n 'cancelToken'\n ]);\n}\n\n\nutils$1.pick = pick;\nutils$1.pick_pica_resize_options = pick_pica_resize_options;\n\nvar pica$1 = {exports: {}};\n\n/*!\n\npica\nhttps://github.com/nodeca/pica\n\n*/\n\n(function (module, exports) {\n(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof commonjsRequire&&commonjsRequire,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){\n\nvar Multimath = _dereq_('multimath');\n\nvar mm_unsharp_mask = _dereq_('./mm_unsharp_mask');\n\nvar mm_resize = _dereq_('./mm_resize');\n\nfunction MathLib(requested_features) {\n var __requested_features = requested_features || [];\n\n var features = {\n js: __requested_features.indexOf('js') >= 0,\n wasm: __requested_features.indexOf('wasm') >= 0\n };\n Multimath.call(this, features);\n this.features = {\n js: features.js,\n wasm: features.wasm && this.has_wasm()\n };\n this.use(mm_unsharp_mask);\n this.use(mm_resize);\n}\n\nMathLib.prototype = Object.create(Multimath.prototype);\nMathLib.prototype.constructor = MathLib;\n\nMathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {\n var result = this.resize(options, cache);\n\n if (options.unsharpAmount) {\n this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);\n }\n\n return result;\n};\n\nmodule.exports = MathLib;\n\n},{\"./mm_resize\":4,\"./mm_unsharp_mask\":9,\"multimath\":19}],2:[function(_dereq_,module,exports){\n//var FIXED_FRAC_BITS = 14;\n\nfunction clampTo8(i) {\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampNegative(i) {\n return i >= 0 ? i : 0;\n} // Convolve image data in horizontal direction. Can be used for:\n//\n// 1. bitmap with premultiplied alpha\n// 2. bitmap without alpha (all values 255)\n//\n// Notes:\n//\n// - output is transposed\n// - output resolution is ~15 bits per channel(for better precision).\n//\n\n\nfunction convolveHor(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Store 15 bits between passes for better precision\n // Instead of shift to 14 (FIXED_FRAC_BITS), shift to 7 only\n //\n\n\n dest[destOffset + 3] = clampNegative(a >> 7);\n dest[destOffset + 2] = clampNegative(b >> 7);\n dest[destOffset + 1] = clampNegative(g >> 7);\n dest[destOffset] = clampNegative(r >> 7);\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Supplementary method for `convolveHor()`\n//\n\n\nfunction convolveVert(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Sync with premultiplied version for exact result match\n\n\n r >>= 7;\n g >>= 7;\n b >>= 7;\n a >>= 7; // Bring this value back in range + round result.\n //\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14);\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14);\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14);\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14);\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Premultiply & convolve image data in horizontal direction. Can be used for:\n//\n// - Any bitmap data, extracted with `.getImageData()` method (with\n// non-premultiplied alpha)\n//\n// For images without alpha channel this method is slower than `convolveHor()`\n//\n\n\nfunction convolveHorWithPre(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a, alpha;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n alpha = src[srcPtr + 3];\n a = a + filterVal * alpha | 0;\n b = b + filterVal * src[srcPtr + 2] * alpha | 0;\n g = g + filterVal * src[srcPtr + 1] * alpha | 0;\n r = r + filterVal * src[srcPtr] * alpha | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Premultiply is (* alpha / 255).\n // Postpone division for better performance\n\n\n b = b / 255 | 0;\n g = g / 255 | 0;\n r = r / 255 | 0; // Store 15 bits between passes for better precision\n // Instead of shift to 14 (FIXED_FRAC_BITS), shift to 7 only\n //\n\n dest[destOffset + 3] = clampNegative(a >> 7);\n dest[destOffset + 2] = clampNegative(b >> 7);\n dest[destOffset + 1] = clampNegative(g >> 7);\n dest[destOffset] = clampNegative(r >> 7);\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Supplementary method for `convolveHorWithPre()`\n//\n\n\nfunction convolveVertWithPre(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Downscale to leave room for un-premultiply\n\n\n r >>= 7;\n g >>= 7;\n b >>= 7;\n a >>= 7; // Un-premultiply\n\n a = clampTo8(a + (1 << 13) >> 14);\n\n if (a > 0) {\n r = r * 255 / a | 0;\n g = g * 255 / a | 0;\n b = b * 255 / a | 0;\n } // Bring this value back in range + round result.\n // Shift value = FIXED_FRAC_BITS + 7\n //\n\n\n dest[destOffset + 3] = a;\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14);\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14);\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14);\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n}\n\nmodule.exports = {\n convolveHor: convolveHor,\n convolveVert: convolveVert,\n convolveHorWithPre: convolveHorWithPre,\n convolveVertWithPre: convolveVertWithPre\n};\n\n},{}],3:[function(_dereq_,module,exports){\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],4:[function(_dereq_,module,exports){\n\nmodule.exports = {\n name: 'resize',\n fn: _dereq_('./resize'),\n wasm_fn: _dereq_('./resize_wasm'),\n wasm_src: _dereq_('./convolve_wasm_base64')\n};\n\n},{\"./convolve_wasm_base64\":3,\"./resize\":5,\"./resize_wasm\":8}],5:[function(_dereq_,module,exports){\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nvar _require = _dereq_('./convolve'),\n convolveHor = _require.convolveHor,\n convolveVert = _require.convolveVert,\n convolveHorWithPre = _require.convolveHorWithPre,\n convolveVertWithPre = _require.convolveVertWithPre;\n\nfunction hasAlpha(src, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n if (src[ptr] !== 255) return true;\n ptr = ptr + 4 | 0;\n }\n\n return false;\n}\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nmodule.exports = function resize(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0;\n var offsetY = options.offsetY || 0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var filter = typeof options.filter === 'undefined' ? 'mks2013' : options.filter;\n var filtersX = createFilters(filter, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(filter, srcH, destH, scaleY, offsetY);\n var tmp = new Uint16Array(destW * srcH * 4); // Autodetect if alpha channel exists, and use appropriate method\n\n if (hasAlpha(src, srcW, srcH)) {\n convolveHorWithPre(src, tmp, srcW, srcH, destW, filtersX);\n convolveVertWithPre(tmp, dest, srcH, destW, destH, filtersY);\n } else {\n convolveHor(src, tmp, srcW, srcH, destW, filtersX);\n convolveVert(tmp, dest, srcH, destW, destH, filtersY);\n resetAlpha(dest, destW, destH);\n }\n\n return dest;\n};\n\n},{\"./convolve\":2,\"./resize_filter_gen\":6}],6:[function(_dereq_,module,exports){\n\nvar FILTER_INFO = _dereq_('./resize_filter_info'); // Precision of fixed FP values\n\n\nvar FIXED_FRAC_BITS = 14;\n\nfunction toFixedPoint(num) {\n return Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));\n}\n\nmodule.exports = function resizeFilterGen(filter, srcSize, destSize, scale, offset) {\n var filterFunction = FILTER_INFO.filter[filter].fn;\n var scaleInverted = 1.0 / scale;\n var scaleClamped = Math.min(1.0, scale); // For upscale\n // Filter window (averaging interval), scaled to src image\n\n var srcWindow = FILTER_INFO.filter[filter].win / scaleClamped;\n var destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;\n var leftNotEmpty, rightNotEmpty, filterShift, filterSize;\n var maxFilterElementSize = Math.floor((srcWindow + 1) * 2);\n var packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);\n var packedFilterPtr = 0;\n var slowCopy = !packedFilter.subarray || !packedFilter.set; // For each destination pixel calculate source range and built filter values\n\n for (destPixel = 0; destPixel < destSize; destPixel++) {\n // Scaling should be done relative to central pixel point\n srcPixel = (destPixel + 0.5) * scaleInverted + offset;\n srcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));\n srcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));\n filterElementSize = srcLast - srcFirst + 1;\n floatFilter = new Float32Array(filterElementSize);\n fxpFilter = new Int16Array(filterElementSize);\n total = 0.0; // Fill filter values for calculated range\n\n for (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {\n floatVal = filterFunction((pxl + 0.5 - srcPixel) * scaleClamped);\n total += floatVal;\n floatFilter[idx] = floatVal;\n } // Normalize filter, convert to fixed point and accumulate conversion error\n\n\n filterTotal = 0;\n\n for (idx = 0; idx < floatFilter.length; idx++) {\n filterVal = floatFilter[idx] / total;\n filterTotal += filterVal;\n fxpFilter[idx] = toFixedPoint(filterVal);\n } // Compensate normalization error, to minimize brightness drift\n\n\n fxpFilter[destSize >> 1] += toFixedPoint(1.0 - filterTotal); //\n // Now pack filter to useable form\n //\n // 1. Trim heading and tailing zero values, and compensate shitf/length\n // 2. Put all to single array in this format:\n //\n // [ pos shift, data length, value1, value2, value3, ... ]\n //\n\n leftNotEmpty = 0;\n\n while (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) {\n leftNotEmpty++;\n }\n\n if (leftNotEmpty < fxpFilter.length) {\n rightNotEmpty = fxpFilter.length - 1;\n\n while (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) {\n rightNotEmpty--;\n }\n\n filterShift = srcFirst + leftNotEmpty;\n filterSize = rightNotEmpty - leftNotEmpty + 1;\n packedFilter[packedFilterPtr++] = filterShift; // shift\n\n packedFilter[packedFilterPtr++] = filterSize; // size\n\n if (!slowCopy) {\n packedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);\n packedFilterPtr += filterSize;\n } else {\n // fallback for old IE < 11, without subarray/set methods\n for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) {\n packedFilter[packedFilterPtr++] = fxpFilter[idx];\n }\n }\n } else {\n // zero data, write header only\n packedFilter[packedFilterPtr++] = 0; // shift\n\n packedFilter[packedFilterPtr++] = 0; // size\n }\n }\n\n return packedFilter;\n};\n\n},{\"./resize_filter_info\":7}],7:[function(_dereq_,module,exports){\n\nvar filter = {\n // Nearest neibor\n box: {\n win: 0.5,\n fn: function fn(x) {\n if (x < 0) x = -x;\n return x < 0.5 ? 1.0 : 0.0;\n }\n },\n // // Hamming\n hamming: {\n win: 1.0,\n fn: function fn(x) {\n if (x < 0) x = -x;\n\n if (x >= 1.0) {\n return 0.0;\n }\n\n if (x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * (0.54 + 0.46 * Math.cos(xpi / 1.0));\n }\n },\n // Lanczos, win = 2\n lanczos2: {\n win: 2.0,\n fn: function fn(x) {\n if (x < 0) x = -x;\n\n if (x >= 2.0) {\n return 0.0;\n }\n\n if (x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 2.0) / (xpi / 2.0);\n }\n },\n // Lanczos, win = 3\n lanczos3: {\n win: 3.0,\n fn: function fn(x) {\n if (x < 0) x = -x;\n\n if (x >= 3.0) {\n return 0.0;\n }\n\n if (x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 3.0) / (xpi / 3.0);\n }\n },\n // Magic Kernel Sharp 2013, win = 2.5\n // http://johncostella.com/magic/\n mks2013: {\n win: 2.5,\n fn: function fn(x) {\n if (x < 0) x = -x;\n\n if (x >= 2.5) {\n return 0.0;\n }\n\n if (x >= 1.5) {\n return -0.125 * (x - 2.5) * (x - 2.5);\n }\n\n if (x >= 0.5) {\n return 0.25 * (4 * x * x - 11 * x + 7);\n }\n\n return 1.0625 - 1.75 * x * x;\n }\n }\n};\nmodule.exports = {\n filter: filter,\n // Legacy mapping\n f2q: {\n box: 0,\n hamming: 1,\n lanczos2: 2,\n lanczos3: 3\n },\n q2f: ['box', 'hamming', 'lanczos2', 'lanczos3']\n};\n\n},{}],8:[function(_dereq_,module,exports){\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nfunction hasAlpha(src, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n if (src[ptr] !== 255) return true;\n ptr = ptr + 4 | 0;\n }\n\n return false;\n}\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nfunction asUint8Array(src) {\n return new Uint8Array(src.buffer, 0, src.byteLength);\n}\n\nvar IS_LE = true; // should not crash everything on module load in old browsers\n\ntry {\n IS_LE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;\n} catch (__) {}\n\nfunction copyInt16asLE(src, target, target_offset) {\n if (IS_LE) {\n target.set(asUint8Array(src), target_offset);\n return;\n }\n\n for (var ptr = target_offset, i = 0; i < src.length; i++) {\n var data = src[i];\n target[ptr++] = data & 0xFF;\n target[ptr++] = data >> 8 & 0xFF;\n }\n}\n\nmodule.exports = function resize_wasm(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0.0;\n var offsetY = options.offsetY || 0.0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var filter = typeof options.filter === 'undefined' ? 'mks2013' : options.filter;\n var filtersX = createFilters(filter, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(filter, srcH, destH, scaleY, offsetY); // destination is 0 too.\n\n var src_offset = 0;\n var src_size = Math.max(src.byteLength, dest.byteLength); // buffer between convolve passes\n\n var tmp_offset = this.__align(src_offset + src_size);\n\n var tmp_size = srcH * destW * 4 * 2; // 2 bytes per channel\n\n var filtersX_offset = this.__align(tmp_offset + tmp_size);\n\n var filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);\n\n var alloc_bytes = filtersY_offset + filtersY.byteLength;\n\n var instance = this.__instance('resize', alloc_bytes); //\n // Fill memory block with data to process\n //\n\n\n var mem = new Uint8Array(this.__memory.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer); // 32-bit copy is much faster in chrome\n\n var src32 = new Uint32Array(src.buffer);\n mem32.set(src32); // We should guarantee LE bytes order. Filters are not big, so\n // speed difference is not significant vs direct .set()\n\n copyInt16asLE(filtersX, mem, filtersX_offset);\n copyInt16asLE(filtersY, mem, filtersY_offset); // Now call webassembly method\n // emsdk does method names with '_'\n\n var fn = instance.exports.convolveHV || instance.exports._convolveHV;\n\n if (hasAlpha(src, srcW, srcH)) {\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH, 1);\n } else {\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH, 0);\n resetAlpha(dest, destW, destH);\n } //\n // Copy data back to typed array\n //\n // 32-bit copy is much faster in chrome\n\n\n var dest32 = new Uint32Array(dest.buffer);\n dest32.set(new Uint32Array(this.__memory.buffer, 0, destH * destW));\n return dest;\n};\n\n},{\"./resize_filter_gen\":6}],9:[function(_dereq_,module,exports){\n\nmodule.exports = {\n name: 'unsharp_mask',\n fn: _dereq_('./unsharp_mask'),\n wasm_fn: _dereq_('./unsharp_mask_wasm'),\n wasm_src: _dereq_('./unsharp_mask_wasm_base64')\n};\n\n},{\"./unsharp_mask\":10,\"./unsharp_mask_wasm\":11,\"./unsharp_mask_wasm_base64\":12}],10:[function(_dereq_,module,exports){\n\nvar glur_mono16 = _dereq_('glur/mono16');\n\nfunction hsv_v16(img, width, height) {\n var size = width * height;\n var out = new Uint16Array(size);\n var r, g, b, max;\n\n for (var i = 0; i < size; i++) {\n r = img[4 * i];\n g = img[4 * i + 1];\n b = img[4 * i + 2];\n max = r >= g && r >= b ? r : g >= b && g >= r ? g : b;\n out[i] = max << 8;\n }\n\n return out;\n}\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n var v1, v2, vmul;\n var diff, iTimes4;\n\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var brightness = hsv_v16(img, width, height);\n var blured = new Uint16Array(brightness); // copy, because blur modify src\n\n glur_mono16(blured, width, height, radius);\n var amountFp = amount / 100 * 0x1000 + 0.5 | 0;\n var thresholdFp = threshold << 8;\n var size = width * height;\n /* eslint-disable indent */\n\n for (var i = 0; i < size; i++) {\n v1 = brightness[i];\n diff = v1 - blured[i];\n\n if (Math.abs(diff) >= thresholdFp) {\n // add unsharp mask to the brightness channel\n v2 = v1 + (amountFp * diff + 0x800 >> 12); // Both v1 and v2 are within [0.0 .. 255.0] (0000-FF00) range, never going into\n // [255.003 .. 255.996] (FF01-FFFF). This allows to round this value as (x+.5)|0\n // later without overflowing.\n\n v2 = v2 > 0xff00 ? 0xff00 : v2;\n v2 = v2 < 0x0000 ? 0x0000 : v2; // Avoid division by 0. V=0 means rgb(0,0,0), unsharp with unsharpAmount>0 cannot\n // change this value (because diff between colors gets inflated), so no need to verify correctness.\n\n v1 = v1 !== 0 ? v1 : 1; // Multiplying V in HSV model by a constant is equivalent to multiplying each component\n // in RGB by the same constant (same for HSL), see also:\n // https://beesbuzz.biz/code/16-hsv-color-transforms\n\n vmul = (v2 << 12) / v1 | 0; // Result will be in [0..255] range because:\n // - all numbers are positive\n // - r,g,b <= (v1/256)\n // - r,g,b,(v1/256),(v2/256) <= 255\n // So highest this number can get is X*255/X+0.5=255.5 which is < 256 and rounds down.\n\n iTimes4 = i * 4;\n img[iTimes4] = img[iTimes4] * vmul + 0x800 >> 12; // R\n\n img[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 0x800 >> 12; // G\n\n img[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 0x800 >> 12; // B\n }\n }\n};\n\n},{\"glur/mono16\":18}],11:[function(_dereq_,module,exports){\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var pixels = width * height;\n var img_bytes_cnt = pixels * 4;\n var hsv_bytes_cnt = pixels * 2;\n var blur_bytes_cnt = pixels * 2;\n var blur_line_byte_cnt = Math.max(width, height) * 4; // float32 array\n\n var blur_coeffs_byte_cnt = 8 * 4; // float32 array\n\n var img_offset = 0;\n var hsv_offset = img_bytes_cnt;\n var blur_offset = hsv_offset + hsv_bytes_cnt;\n var blur_tmp_offset = blur_offset + blur_bytes_cnt;\n var blur_line_offset = blur_tmp_offset + blur_bytes_cnt;\n var blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;\n\n var instance = this.__instance('unsharp_mask', img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, {\n exp: Math.exp\n }); // 32-bit copy is much faster in chrome\n\n\n var img32 = new Uint32Array(img.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer);\n mem32.set(img32); // HSL\n\n var fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;\n fn(img_offset, hsv_offset, width, height); // BLUR\n\n fn = instance.exports.blurMono16 || instance.exports._blurMono16;\n fn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius); // UNSHARP\n\n fn = instance.exports.unsharp || instance.exports._unsharp;\n fn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold); // 32-bit copy is much faster in chrome\n\n img32.set(new Uint32Array(this.__memory.buffer, 0, pixels));\n};\n\n},{}],12:[function(_dereq_,module,exports){\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],13:[function(_dereq_,module,exports){\n\nvar GC_INTERVAL = 100;\n\nfunction Pool(create, idle) {\n this.create = create;\n this.available = [];\n this.acquired = {};\n this.lastId = 1;\n this.timeoutId = 0;\n this.idle = idle || 2000;\n}\n\nPool.prototype.acquire = function () {\n var _this = this;\n\n var resource;\n\n if (this.available.length !== 0) {\n resource = this.available.pop();\n } else {\n resource = this.create();\n resource.id = this.lastId++;\n\n resource.release = function () {\n return _this.release(resource);\n };\n }\n\n this.acquired[resource.id] = resource;\n return resource;\n};\n\nPool.prototype.release = function (resource) {\n var _this2 = this;\n\n delete this.acquired[resource.id];\n resource.lastUsed = Date.now();\n this.available.push(resource);\n\n if (this.timeoutId === 0) {\n this.timeoutId = setTimeout(function () {\n return _this2.gc();\n }, GC_INTERVAL);\n }\n};\n\nPool.prototype.gc = function () {\n var _this3 = this;\n\n var now = Date.now();\n this.available = this.available.filter(function (resource) {\n if (now - resource.lastUsed > _this3.idle) {\n resource.destroy();\n return false;\n }\n\n return true;\n });\n\n if (this.available.length !== 0) {\n this.timeoutId = setTimeout(function () {\n return _this3.gc();\n }, GC_INTERVAL);\n } else {\n this.timeoutId = 0;\n }\n};\n\nmodule.exports = Pool;\n\n},{}],14:[function(_dereq_,module,exports){\n// min size = 1 can consume large amount of memory\n\nvar MIN_INNER_TILE_SIZE = 2;\n\nmodule.exports = function createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize, destTileBorder) {\n var scaleX = toWidth / fromWidth;\n var scaleY = toHeight / fromHeight; // derived from createRegions equation:\n // innerTileWidth = pixelFloor(srcTileSize * scaleX) - 2 * destTileBorder;\n\n var minScale = (2 * destTileBorder + MIN_INNER_TILE_SIZE + 1) / srcTileSize; // refuse to scale image multiple times by less than twice each time,\n // it could only happen because of invalid options\n\n if (minScale > 0.5) return [[toWidth, toHeight]];\n var stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale)); // no additional resizes are necessary,\n // stageCount can be zero or be negative when enlarging the image\n\n if (stageCount <= 1) return [[toWidth, toHeight]];\n var result = [];\n\n for (var i = 0; i < stageCount; i++) {\n var width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));\n var height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));\n result.push([width, height]);\n }\n\n return result;\n};\n\n},{}],15:[function(_dereq_,module,exports){\n/*\n * pixelFloor and pixelCeil are modified versions of Math.floor and Math.ceil\n * functions which take into account floating point arithmetic errors.\n * Those errors can cause undesired increments/decrements of sizes and offsets:\n * Math.ceil(36 / (36 / 500)) = 501\n * pixelCeil(36 / (36 / 500)) = 500\n */\n\nvar PIXEL_EPSILON = 1e-5;\n\nfunction pixelFloor(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.floor(x);\n}\n\nfunction pixelCeil(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.ceil(x);\n}\n\nmodule.exports = function createRegions(options) {\n var scaleX = options.toWidth / options.width;\n var scaleY = options.toHeight / options.height;\n var innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;\n var innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder; // prevent infinite loop, this should never happen\n\n if (innerTileWidth < 1 || innerTileHeight < 1) {\n throw new Error('Internal error in pica: target tile width/height is too small.');\n }\n\n var x, y;\n var innerX, innerY, toTileWidth, toTileHeight;\n var tiles = [];\n var tile; // we go top-to-down instead of left-to-right to make image displayed from top to\n // doesn in the browser\n\n for (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) {\n for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {\n x = innerX - options.destTileBorder;\n\n if (x < 0) {\n x = 0;\n }\n\n toTileWidth = innerX + innerTileWidth + options.destTileBorder - x;\n\n if (x + toTileWidth >= options.toWidth) {\n toTileWidth = options.toWidth - x;\n }\n\n y = innerY - options.destTileBorder;\n\n if (y < 0) {\n y = 0;\n }\n\n toTileHeight = innerY + innerTileHeight + options.destTileBorder - y;\n\n if (y + toTileHeight >= options.toHeight) {\n toTileHeight = options.toHeight - y;\n }\n\n tile = {\n toX: x,\n toY: y,\n toWidth: toTileWidth,\n toHeight: toTileHeight,\n toInnerX: innerX,\n toInnerY: innerY,\n toInnerWidth: innerTileWidth,\n toInnerHeight: innerTileHeight,\n offsetX: x / scaleX - pixelFloor(x / scaleX),\n offsetY: y / scaleY - pixelFloor(y / scaleY),\n scaleX: scaleX,\n scaleY: scaleY,\n x: pixelFloor(x / scaleX),\n y: pixelFloor(y / scaleY),\n width: pixelCeil(toTileWidth / scaleX),\n height: pixelCeil(toTileHeight / scaleY)\n };\n tiles.push(tile);\n }\n }\n\n return tiles;\n};\n\n},{}],16:[function(_dereq_,module,exports){\n\nfunction objClass(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nmodule.exports.isCanvas = function isCanvas(element) {\n var cname = objClass(element);\n return cname === '[object HTMLCanvasElement]'\n /* browser */\n || cname === '[object OffscreenCanvas]' || cname === '[object Canvas]'\n /* node-canvas */\n ;\n};\n\nmodule.exports.isImage = function isImage(element) {\n return objClass(element) === '[object HTMLImageElement]';\n};\n\nmodule.exports.isImageBitmap = function isImageBitmap(element) {\n return objClass(element) === '[object ImageBitmap]';\n};\n\nmodule.exports.limiter = function limiter(concurrency) {\n var active = 0,\n queue = [];\n\n function roll() {\n if (active < concurrency && queue.length) {\n active++;\n queue.shift()();\n }\n }\n\n return function limit(fn) {\n return new Promise(function (resolve, reject) {\n queue.push(function () {\n fn().then(function (result) {\n resolve(result);\n active--;\n roll();\n }, function (err) {\n reject(err);\n active--;\n roll();\n });\n });\n roll();\n });\n };\n};\n\nmodule.exports.cib_quality_name = function cib_quality_name(num) {\n switch (num) {\n case 0:\n return 'pixelated';\n\n case 1:\n return 'low';\n\n case 2:\n return 'medium';\n }\n\n return 'high';\n};\n\nmodule.exports.cib_support = function cib_support(createCanvas) {\n return Promise.resolve().then(function () {\n if (typeof createImageBitmap === 'undefined') {\n return false;\n }\n\n var c = createCanvas(100, 100);\n return createImageBitmap(c, 0, 0, 100, 100, {\n resizeWidth: 10,\n resizeHeight: 10,\n resizeQuality: 'high'\n }).then(function (bitmap) {\n var status = bitmap.width === 10; // Branch below is filtered on upper level. We do not call resize\n // detection for basic ImageBitmap.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap\n // old Crome 51 has ImageBitmap without .close(). Then this code\n // will throw and return 'false' as expected.\n //\n\n bitmap.close();\n c = null;\n return status;\n });\n })[\"catch\"](function () {\n return false;\n });\n};\n\nmodule.exports.worker_offscreen_canvas_support = function worker_offscreen_canvas_support() {\n return new Promise(function (resolve, reject) {\n if (typeof OffscreenCanvas === 'undefined') {\n // if OffscreenCanvas is present, we assume browser supports Worker and built-in Promise as well\n resolve(false);\n return;\n }\n\n function workerPayload(self) {\n if (typeof createImageBitmap === 'undefined') {\n self.postMessage(false);\n return;\n }\n\n Promise.resolve().then(function () {\n var canvas = new OffscreenCanvas(10, 10); // test that 2d context can be used in worker\n\n var ctx = canvas.getContext('2d');\n ctx.rect(0, 0, 1, 1); // test that cib can be used to return image bitmap from worker\n\n return createImageBitmap(canvas, 0, 0, 1, 1);\n }).then(function () {\n return self.postMessage(true);\n }, function () {\n return self.postMessage(false);\n });\n }\n\n var code = btoa(\"(\".concat(workerPayload.toString(), \")(self);\"));\n var w = new Worker(\"data:text/javascript;base64,\".concat(code));\n\n w.onmessage = function (ev) {\n return resolve(ev.data);\n };\n\n w.onerror = reject;\n }).then(function (result) {\n return result;\n }, function () {\n return false;\n });\n}; // Check if canvas.getContext('2d').getImageData can be used,\n// FireFox randomizes the output of that function in `privacy.resistFingerprinting` mode\n\n\nmodule.exports.can_use_canvas = function can_use_canvas(createCanvas) {\n var usable = false;\n\n try {\n var canvas = createCanvas(2, 1);\n var ctx = canvas.getContext('2d');\n var d = ctx.createImageData(2, 1);\n d.data[0] = 12;\n d.data[1] = 23;\n d.data[2] = 34;\n d.data[3] = 255;\n d.data[4] = 45;\n d.data[5] = 56;\n d.data[6] = 67;\n d.data[7] = 255;\n ctx.putImageData(d, 0, 0);\n d = null;\n d = ctx.getImageData(0, 0, 2, 1);\n\n if (d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255) {\n usable = true;\n }\n } catch (err) {}\n\n return usable;\n}; // Check if createImageBitmap(img, sx, sy, sw, sh) signature works correctly\n// with JPEG images oriented with Exif;\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n// TODO: remove after it's fixed in chrome for at least 2 releases\n\n\nmodule.exports.cib_can_use_region = function cib_can_use_region() {\n return new Promise(function (resolve) {\n if (typeof createImageBitmap === 'undefined') {\n resolve(false);\n return;\n }\n\n var image = new Image();\n image.src = 'data:image/jpeg;base64,' + '/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAA' + 'AABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9' + 'sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRc' + 'ZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoa' + 'GhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRA' + 'f/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAA' + 'IQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAA' + 'AAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIB' + 'AT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAA' + 'AAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAA' + 'AAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQ' + 'QAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z';\n\n image.onload = function () {\n createImageBitmap(image, 0, 0, image.width, image.height).then(function (bitmap) {\n if (bitmap.width === image.width && bitmap.height === image.height) {\n resolve(true);\n } else {\n resolve(false);\n }\n }, function () {\n return resolve(false);\n });\n };\n\n image.onerror = function () {\n return resolve(false);\n };\n });\n};\n\n},{}],17:[function(_dereq_,module,exports){\n\nmodule.exports = function () {\n var MathLib = _dereq_('./mathlib');\n\n var mathLib;\n /* eslint-disable no-undef */\n\n onmessage = function onmessage(ev) {\n var tileOpts = ev.data.opts;\n\n if (!tileOpts.src && tileOpts.srcBitmap) {\n var canvas = new OffscreenCanvas(tileOpts.width, tileOpts.height);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(tileOpts.srcBitmap, 0, 0);\n tileOpts.src = ctx.getImageData(0, 0, tileOpts.width, tileOpts.height).data;\n canvas.width = canvas.height = 0;\n canvas = null;\n tileOpts.srcBitmap.close();\n tileOpts.srcBitmap = null; // Temporary force out data to typed array, because Chrome have artefacts\n // https://github.com/nodeca/pica/issues/223\n // returnBitmap = true;\n }\n\n if (!mathLib) mathLib = new MathLib(ev.data.features); // Use multimath's sync auto-init. Avoid Promise use in old browsers,\n // because polyfills are not propagated to webworker.\n\n var data = mathLib.resizeAndUnsharp(tileOpts);\n\n {\n postMessage({\n data: data\n }, [data.buffer]);\n }\n };\n};\n\n},{\"./mathlib\":1}],18:[function(_dereq_,module,exports){\n// Calculate Gaussian blur of an image using IIR filter\n// The method is taken from Intel's white paper and code example attached to it:\n// https://software.intel.com/en-us/articles/iir-gaussian-blur-filter\n// -implementation-using-intel-advanced-vector-extensions\n\nvar a0, a1, a2, a3, b1, b2, left_corner, right_corner;\n\nfunction gaussCoef(sigma) {\n if (sigma < 0.5) {\n sigma = 0.5;\n }\n\n var a = Math.exp(0.726 * 0.726) / sigma,\n g1 = Math.exp(-a),\n g2 = Math.exp(-2 * a),\n k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);\n\n a0 = k;\n a1 = k * (a - 1) * g1;\n a2 = k * (a + 1) * g1;\n a3 = -k * g2;\n b1 = 2 * g1;\n b2 = -g2;\n left_corner = (a0 + a1) / (1 - b1 - b2);\n right_corner = (a2 + a3) / (1 - b1 - b2);\n\n // Attempt to force type to FP32.\n return new Float32Array([ a0, a1, a2, a3, b1, b2, left_corner, right_corner ]);\n}\n\nfunction convolveMono16(src, out, line, coeff, width, height) {\n // takes src image and writes the blurred and transposed result into out\n\n var prev_src, curr_src, curr_out, prev_out, prev_prev_out;\n var src_index, out_index, line_index;\n var i, j;\n var coeff_a0, coeff_a1, coeff_b1, coeff_b2;\n\n for (i = 0; i < height; i++) {\n src_index = i * width;\n out_index = i;\n line_index = 0;\n\n // left to right\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[6];\n prev_out = prev_prev_out;\n\n coeff_a0 = coeff[0];\n coeff_a1 = coeff[1];\n coeff_b1 = coeff[4];\n coeff_b2 = coeff[5];\n\n for (j = 0; j < width; j++) {\n curr_src = src[src_index];\n\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n prev_src = curr_src;\n\n line[line_index] = prev_out;\n line_index++;\n src_index++;\n }\n\n src_index--;\n line_index--;\n out_index += height * (width - 1);\n\n // right to left\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[7];\n prev_out = prev_prev_out;\n curr_src = prev_src;\n\n coeff_a0 = coeff[2];\n coeff_a1 = coeff[3];\n\n for (j = width - 1; j >= 0; j--) {\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n\n prev_src = curr_src;\n curr_src = src[src_index];\n\n out[out_index] = line[line_index] + prev_out;\n\n src_index--;\n line_index--;\n out_index -= height;\n }\n }\n}\n\n\nfunction blurMono16(src, width, height, radius) {\n // Quick exit on zero radius\n if (!radius) { return; }\n\n var out = new Uint16Array(src.length),\n tmp_line = new Float32Array(Math.max(width, height));\n\n var coeff = gaussCoef(radius);\n\n convolveMono16(src, out, tmp_line, coeff, width, height);\n convolveMono16(out, src, tmp_line, coeff, height, width);\n}\n\nmodule.exports = blurMono16;\n\n},{}],19:[function(_dereq_,module,exports){\n\n\nvar assign = _dereq_('object-assign');\nvar base64decode = _dereq_('./lib/base64decode');\nvar hasWebAssembly = _dereq_('./lib/wa_detect');\n\n\nvar DEFAULT_OPTIONS = {\n js: true,\n wasm: true\n};\n\n\nfunction MultiMath(options) {\n if (!(this instanceof MultiMath)) return new MultiMath(options);\n\n var opts = assign({}, DEFAULT_OPTIONS, options || {});\n\n this.options = opts;\n\n this.__cache = {};\n\n this.__init_promise = null;\n this.__modules = opts.modules || {};\n this.__memory = null;\n this.__wasm = {};\n\n this.__isLE = ((new Uint32Array((new Uint8Array([ 1, 0, 0, 0 ])).buffer))[0] === 1);\n\n if (!this.options.js && !this.options.wasm) {\n throw new Error('mathlib: at least \"js\" or \"wasm\" should be enabled');\n }\n}\n\n\nMultiMath.prototype.has_wasm = hasWebAssembly;\n\n\nMultiMath.prototype.use = function (module) {\n this.__modules[module.name] = module;\n\n // Pin the best possible implementation\n if (this.options.wasm && this.has_wasm() && module.wasm_fn) {\n this[module.name] = module.wasm_fn;\n } else {\n this[module.name] = module.fn;\n }\n\n return this;\n};\n\n\nMultiMath.prototype.init = function () {\n if (this.__init_promise) return this.__init_promise;\n\n if (!this.options.js && this.options.wasm && !this.has_wasm()) {\n return Promise.reject(new Error('mathlib: only \"wasm\" was enabled, but it\\'s not supported'));\n }\n\n var self = this;\n\n this.__init_promise = Promise.all(Object.keys(self.__modules).map(function (name) {\n var module = self.__modules[name];\n\n if (!self.options.wasm || !self.has_wasm() || !module.wasm_fn) return null;\n\n // If already compiled - exit\n if (self.__wasm[name]) return null;\n\n // Compile wasm source\n return WebAssembly.compile(self.__base64decode(module.wasm_src))\n .then(function (m) { self.__wasm[name] = m; });\n }))\n .then(function () { return self; });\n\n return this.__init_promise;\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Methods below are for internal use from plugins\n\n\n// Simple decode base64 to typed array. Useful to load embedded webassembly\n// code. You probably don't need to call this method directly.\n//\nMultiMath.prototype.__base64decode = base64decode;\n\n\n// Increase current memory to include specified number of bytes. Do nothing if\n// size is already ok. You probably don't need to call this method directly,\n// because it will be invoked from `.__instance()`.\n//\nMultiMath.prototype.__reallocate = function mem_grow_to(bytes) {\n if (!this.__memory) {\n this.__memory = new WebAssembly.Memory({\n initial: Math.ceil(bytes / (64 * 1024))\n });\n return this.__memory;\n }\n\n var mem_size = this.__memory.buffer.byteLength;\n\n if (mem_size < bytes) {\n this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));\n }\n\n return this.__memory;\n};\n\n\n// Returns instantinated webassembly item by name, with specified memory size\n// and environment.\n// - use cache if available\n// - do sync module init, if async init was not called earlier\n// - allocate memory if not enougth\n// - can export functions to webassembly via \"env_extra\",\n// for example, { exp: Math.exp }\n//\nMultiMath.prototype.__instance = function instance(name, memsize, env_extra) {\n if (memsize) this.__reallocate(memsize);\n\n // If .init() was not called, do sync compile\n if (!this.__wasm[name]) {\n var module = this.__modules[name];\n this.__wasm[name] = new WebAssembly.Module(this.__base64decode(module.wasm_src));\n }\n\n if (!this.__cache[name]) {\n var env_base = {\n memoryBase: 0,\n memory: this.__memory,\n tableBase: 0,\n table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' })\n };\n\n this.__cache[name] = new WebAssembly.Instance(this.__wasm[name], {\n env: assign(env_base, env_extra || {})\n });\n }\n\n return this.__cache[name];\n};\n\n\n// Helper to calculate memory aligh for pointers. Webassembly does not require\n// this, but you may wish to experiment. Default base = 8;\n//\nMultiMath.prototype.__align = function align(number, base) {\n base = base || 8;\n var reminder = number % base;\n return number + (reminder ? base - reminder : 0);\n};\n\n\nmodule.exports = MultiMath;\n\n},{\"./lib/base64decode\":20,\"./lib/wa_detect\":21,\"object-assign\":22}],20:[function(_dereq_,module,exports){\n\n\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\nmodule.exports = function base64decode(str) {\n var input = str.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length;\n\n var out = new Uint8Array((max * 3) >> 2);\n\n // Collect by 6*4 bits (3 bytes)\n\n var bits = 0;\n var ptr = 0;\n\n for (var idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n }\n\n bits = (bits << 6) | BASE64_MAP.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n var tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n } else if (tailbits === 18) {\n out[ptr++] = (bits >> 10) & 0xFF;\n out[ptr++] = (bits >> 2) & 0xFF;\n } else if (tailbits === 12) {\n out[ptr++] = (bits >> 4) & 0xFF;\n }\n\n return out;\n};\n\n},{}],21:[function(_dereq_,module,exports){\n\n\nvar wa;\n\n\nmodule.exports = function hasWebAssembly() {\n // use cache if called before;\n if (typeof wa !== 'undefined') return wa;\n\n wa = false;\n\n if (typeof WebAssembly === 'undefined') return wa;\n\n // If WebAssenbly is disabled, code can throw on compile\n try {\n // https://github.com/brion/min-wasm-fail/blob/master/min-wasm-fail.in.js\n // Additional check that WA internals are correct\n\n /* eslint-disable comma-spacing, max-len */\n var bin = new Uint8Array([ 0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11 ]);\n var module = new WebAssembly.Module(bin);\n var instance = new WebAssembly.Instance(module, {});\n\n // test storing to and loading from a non-zero location via a parameter.\n // Safari on iOS 11.2.5 returns 0 unexpectedly at non-zero locations\n if (instance.exports.test(4) !== 0) wa = true;\n\n return wa;\n } catch (__) {}\n\n return wa;\n};\n\n},{}],22:[function(_dereq_,module,exports){\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n},{}],23:[function(_dereq_,module,exports){\nvar bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n 'function(require,module,exports){' + fn + '(self); }',\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n\n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n 'function(require,module,exports){' +\n // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);' +\n '}',\n scache\n ];\n\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({'\n + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n var blob = new Blob([src], { type: 'text/javascript' });\n if (options && options.bare) { return blob; }\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n},{}],\"/index.js\":[function(_dereq_,module,exports){\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar assign = _dereq_('object-assign');\n\nvar webworkify = _dereq_('webworkify');\n\nvar MathLib = _dereq_('./lib/mathlib');\n\nvar Pool = _dereq_('./lib/pool');\n\nvar utils = _dereq_('./lib/utils');\n\nvar worker = _dereq_('./lib/worker');\n\nvar createStages = _dereq_('./lib/stepper');\n\nvar createRegions = _dereq_('./lib/tiler');\n\nvar filter_info = _dereq_('./lib/mm_resize/resize_filter_info'); // Deduplicate pools & limiters with the same configs\n// when user creates multiple pica instances.\n\n\nvar singletones = {};\nvar NEED_SAFARI_FIX = false;\n\ntry {\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n NEED_SAFARI_FIX = navigator.userAgent.indexOf('Safari') >= 0;\n }\n} catch (e) {}\n\nvar concurrency = 1;\n\nif (typeof navigator !== 'undefined') {\n concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);\n}\n\nvar DEFAULT_PICA_OPTS = {\n tile: 1024,\n concurrency: concurrency,\n features: ['js', 'wasm', 'ww'],\n idle: 2000,\n createCanvas: function createCanvas(width, height) {\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n return tmpCanvas;\n }\n};\nvar DEFAULT_RESIZE_OPTS = {\n filter: 'mks2013',\n unsharpAmount: 0,\n unsharpRadius: 0.0,\n unsharpThreshold: 0\n};\nvar CAN_NEW_IMAGE_DATA = false;\nvar CAN_CREATE_IMAGE_BITMAP = false;\nvar CAN_USE_CANVAS_GET_IMAGE_DATA = false;\nvar CAN_USE_OFFSCREEN_CANVAS = false;\nvar CAN_USE_CIB_REGION_FOR_IMAGE = false;\n\nfunction workerFabric() {\n return {\n value: webworkify(worker),\n destroy: function destroy() {\n this.value.terminate();\n\n if (typeof window !== 'undefined') {\n var url = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n if (url && url.revokeObjectURL && this.value.objectURL) {\n url.revokeObjectURL(this.value.objectURL);\n }\n }\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// API methods\n\n\nfunction Pica(options) {\n if (!(this instanceof Pica)) return new Pica(options);\n this.options = assign({}, DEFAULT_PICA_OPTS, options || {});\n var limiter_key = \"lk_\".concat(this.options.concurrency); // Share limiters to avoid multiple parallel workers when user creates\n // multiple pica instances.\n\n this.__limit = singletones[limiter_key] || utils.limiter(this.options.concurrency);\n if (!singletones[limiter_key]) singletones[limiter_key] = this.__limit; // List of supported features, according to options & browser/node.js\n\n this.features = {\n js: false,\n // pure JS implementation, can be disabled for testing\n wasm: false,\n // webassembly implementation for heavy functions\n cib: false,\n // resize via createImageBitmap (only FF at this moment)\n ww: false // webworkers\n\n };\n this.__workersPool = null; // Store requested features for webworkers\n\n this.__requested_features = [];\n this.__mathlib = null;\n}\n\nPica.prototype.init = function () {\n var _this = this;\n\n if (this.__initPromise) return this.__initPromise; // Test if we can create ImageData without canvas and memory copy\n\n if (typeof ImageData !== 'undefined' && typeof Uint8ClampedArray !== 'undefined') {\n try {\n /* eslint-disable no-new */\n new ImageData(new Uint8ClampedArray(400), 10, 10);\n CAN_NEW_IMAGE_DATA = true;\n } catch (__) {}\n } // ImageBitmap can be effective in 2 places:\n //\n // 1. Threaded jpeg unpack (basic)\n // 2. Built-in resize (blocked due problem in chrome, see issue #89)\n //\n // For basic use we also need ImageBitmap wo support .close() method,\n // see https://developer.mozilla.org/ru/docs/Web/API/ImageBitmap\n\n\n if (typeof ImageBitmap !== 'undefined') {\n if (ImageBitmap.prototype && ImageBitmap.prototype.close) {\n CAN_CREATE_IMAGE_BITMAP = true;\n } else {\n this.debug('ImageBitmap does not support .close(), disabled');\n }\n }\n\n var features = this.options.features.slice();\n\n if (features.indexOf('all') >= 0) {\n features = ['cib', 'wasm', 'js', 'ww'];\n }\n\n this.__requested_features = features;\n this.__mathlib = new MathLib(features); // Check WebWorker support if requested\n\n if (features.indexOf('ww') >= 0) {\n if (typeof window !== 'undefined' && 'Worker' in window) {\n // IE <= 11 don't allow to create webworkers from string. We should check it.\n // https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11\n try {\n var wkr = _dereq_('webworkify')(function () {});\n\n wkr.terminate();\n this.features.ww = true; // pool uniqueness depends on pool config + webworker config\n\n var wpool_key = \"wp_\".concat(JSON.stringify(this.options));\n\n if (singletones[wpool_key]) {\n this.__workersPool = singletones[wpool_key];\n } else {\n this.__workersPool = new Pool(workerFabric, this.options.idle);\n singletones[wpool_key] = this.__workersPool;\n }\n } catch (__) {}\n }\n }\n\n var initMath = this.__mathlib.init().then(function (mathlib) {\n // Copy detected features\n assign(_this.features, mathlib.features);\n });\n\n var checkCibResize;\n\n if (!CAN_CREATE_IMAGE_BITMAP) {\n checkCibResize = Promise.resolve(false);\n } else {\n checkCibResize = utils.cib_support(this.options.createCanvas).then(function (status) {\n if (_this.features.cib && features.indexOf('cib') < 0) {\n _this.debug('createImageBitmap() resize supported, but disabled by config');\n\n return;\n }\n\n if (features.indexOf('cib') >= 0) _this.features.cib = status;\n });\n }\n\n CAN_USE_CANVAS_GET_IMAGE_DATA = utils.can_use_canvas(this.options.createCanvas);\n var checkOffscreenCanvas;\n\n if (CAN_CREATE_IMAGE_BITMAP && CAN_NEW_IMAGE_DATA && features.indexOf('ww') !== -1) {\n checkOffscreenCanvas = utils.worker_offscreen_canvas_support();\n } else {\n checkOffscreenCanvas = Promise.resolve(false);\n }\n\n checkOffscreenCanvas = checkOffscreenCanvas.then(function (result) {\n CAN_USE_OFFSCREEN_CANVAS = result;\n }); // we use createImageBitmap to crop image data and pass it to workers,\n // so need to check whether function works correctly;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n\n var checkCibRegion = utils.cib_can_use_region().then(function (result) {\n CAN_USE_CIB_REGION_FOR_IMAGE = result;\n }); // Init math lib. That's async because can load some\n\n this.__initPromise = Promise.all([initMath, checkCibResize, checkOffscreenCanvas, checkCibRegion]).then(function () {\n return _this;\n });\n return this.__initPromise;\n}; // Call resizer in webworker or locally, depending on config\n\n\nPica.prototype.__invokeResize = function (tileOpts, opts) {\n var _this2 = this;\n\n // Share cache between calls:\n //\n // - wasm instance\n // - wasm memory object\n //\n opts.__mathCache = opts.__mathCache || {};\n return Promise.resolve().then(function () {\n if (!_this2.features.ww) {\n // not possible to have ImageBitmap here if user disabled WW\n return {\n data: _this2.__mathlib.resizeAndUnsharp(tileOpts, opts.__mathCache)\n };\n }\n\n return new Promise(function (resolve, reject) {\n var w = _this2.__workersPool.acquire();\n\n if (opts.cancelToken) opts.cancelToken[\"catch\"](function (err) {\n return reject(err);\n });\n\n w.value.onmessage = function (ev) {\n w.release();\n if (ev.data.err) reject(ev.data.err);else resolve(ev.data);\n };\n\n var transfer = [];\n if (tileOpts.src) transfer.push(tileOpts.src.buffer);\n if (tileOpts.srcBitmap) transfer.push(tileOpts.srcBitmap);\n w.value.postMessage({\n opts: tileOpts,\n features: _this2.__requested_features,\n preload: {\n wasm_nodule: _this2.__mathlib.__\n }\n }, transfer);\n });\n });\n}; // this function can return promise if createImageBitmap is used\n\n\nPica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extractTo) {\n if (this.features.ww && CAN_USE_OFFSCREEN_CANVAS && ( // createImageBitmap doesn't work for images (Image, ImageBitmap) with Exif orientation in Chrome,\n // can use canvas because canvas doesn't have orientation;\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n utils.isCanvas(from) || CAN_USE_CIB_REGION_FOR_IMAGE)) {\n this.debug('Create tile for OffscreenCanvas');\n return createImageBitmap(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height).then(function (bitmap) {\n extractTo.srcBitmap = bitmap;\n return extractTo;\n });\n } // Extract tile RGBA buffer, depending on input type\n\n\n if (utils.isCanvas(from)) {\n if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d'); // If input is Canvas - extract region data directly\n\n this.debug('Get tile pixel data');\n extractTo.src = stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data;\n return extractTo;\n } // If input is Image or decoded to ImageBitmap,\n // draw region to temporary canvas and extract data from it\n //\n // Note! Attempt to reuse this canvas causes significant slowdown in chrome\n //\n\n\n this.debug('Draw tile imageBitmap/image to temporary canvas');\n var tmpCanvas = this.options.createCanvas(tile.width, tile.height);\n var tmpCtx = tmpCanvas.getContext('2d');\n tmpCtx.globalCompositeOperation = 'copy';\n tmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n this.debug('Get tile pixel data');\n extractTo.src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data; // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n return extractTo;\n};\n\nPica.prototype.__landTileData = function (tile, result, stageEnv) {\n var toImageData;\n this.debug('Convert raw rgba tile result to ImageData');\n\n if (result.bitmap) {\n stageEnv.toCtx.drawImage(result.bitmap, tile.toX, tile.toY);\n return null;\n }\n\n if (CAN_NEW_IMAGE_DATA) {\n // this branch is for modern browsers\n // If `new ImageData()` & Uint8ClampedArray suported\n toImageData = new ImageData(new Uint8ClampedArray(result.data), tile.toWidth, tile.toHeight);\n } else {\n // fallback for `node-canvas` and old browsers\n // (IE11 has ImageData but does not support `new ImageData()`)\n toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);\n\n if (toImageData.data.set) {\n toImageData.data.set(result.data);\n } else {\n // IE9 don't have `.set()`\n for (var i = toImageData.data.length - 1; i >= 0; i--) {\n toImageData.data[i] = result.data[i];\n }\n }\n }\n\n this.debug('Draw tile');\n\n if (NEED_SAFARI_FIX) {\n // Safari draws thin white stripes between tiles without this fix\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);\n } else {\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);\n }\n\n return null;\n};\n\nPica.prototype.__tileAndResize = function (from, to, opts) {\n var _this3 = this;\n\n var stageEnv = {\n srcCtx: null,\n srcImageBitmap: null,\n isImageBitmapReused: false,\n toCtx: null\n };\n\n var processTile = function processTile(tile) {\n return _this3.__limit(function () {\n if (opts.canceled) return opts.cancelToken;\n var tileOpts = {\n width: tile.width,\n height: tile.height,\n toWidth: tile.toWidth,\n toHeight: tile.toHeight,\n scaleX: tile.scaleX,\n scaleY: tile.scaleY,\n offsetX: tile.offsetX,\n offsetY: tile.offsetY,\n filter: opts.filter,\n unsharpAmount: opts.unsharpAmount,\n unsharpRadius: opts.unsharpRadius,\n unsharpThreshold: opts.unsharpThreshold\n };\n\n _this3.debug('Invoke resize math');\n\n return Promise.resolve(tileOpts).then(function (tileOpts) {\n return _this3.__extractTileData(tile, from, opts, stageEnv, tileOpts);\n }).then(function (tileOpts) {\n _this3.debug('Invoke resize math');\n\n return _this3.__invokeResize(tileOpts, opts);\n }).then(function (result) {\n if (opts.canceled) return opts.cancelToken;\n stageEnv.srcImageData = null;\n return _this3.__landTileData(tile, result, stageEnv);\n });\n });\n }; // Need to normalize data source first. It can be canvas or image.\n // If image - try to decode in background if possible\n\n\n return Promise.resolve().then(function () {\n stageEnv.toCtx = to.getContext('2d');\n if (utils.isCanvas(from)) return null;\n\n if (utils.isImageBitmap(from)) {\n stageEnv.srcImageBitmap = from;\n stageEnv.isImageBitmapReused = true;\n return null;\n }\n\n if (utils.isImage(from)) {\n // try do decode image in background for faster next operations;\n // if we're using offscreen canvas, cib is called per tile, so not needed here\n if (!CAN_CREATE_IMAGE_BITMAP) return null;\n\n _this3.debug('Decode image via createImageBitmap');\n\n return createImageBitmap(from).then(function (imageBitmap) {\n stageEnv.srcImageBitmap = imageBitmap;\n }) // Suppress error to use fallback, if method fails\n // https://github.com/nodeca/pica/issues/190\n\n /* eslint-disable no-unused-vars */\n [\"catch\"](function (e) {\n return null;\n });\n }\n\n throw new Error('Pica: \".from\" should be Image, Canvas or ImageBitmap');\n }).then(function () {\n if (opts.canceled) return opts.cancelToken;\n\n _this3.debug('Calculate tiles'); //\n // Here we are with \"normalized\" source,\n // follow to tiling\n //\n\n\n var regions = createRegions({\n width: opts.width,\n height: opts.height,\n srcTileSize: _this3.options.tile,\n toWidth: opts.toWidth,\n toHeight: opts.toHeight,\n destTileBorder: opts.__destTileBorder\n });\n var jobs = regions.map(function (tile) {\n return processTile(tile);\n });\n\n function cleanup(stageEnv) {\n if (stageEnv.srcImageBitmap) {\n if (!stageEnv.isImageBitmapReused) stageEnv.srcImageBitmap.close();\n stageEnv.srcImageBitmap = null;\n }\n }\n\n _this3.debug('Process tiles');\n\n return Promise.all(jobs).then(function () {\n _this3.debug('Finished!');\n\n cleanup(stageEnv);\n return to;\n }, function (err) {\n cleanup(stageEnv);\n throw err;\n });\n });\n};\n\nPica.prototype.__processStages = function (stages, from, to, opts) {\n var _this4 = this;\n\n if (opts.canceled) return opts.cancelToken;\n\n var _stages$shift = stages.shift(),\n _stages$shift2 = _slicedToArray(_stages$shift, 2),\n toWidth = _stages$shift2[0],\n toHeight = _stages$shift2[1];\n\n var isLastStage = stages.length === 0; // Optimization for legacy filters -\n // only use user-defined quality for the last stage,\n // use simpler (Hamming) filter for the first stages where\n // scale factor is large enough (more than 2-3)\n //\n // For advanced filters (mks2013 and custom) - skip optimization,\n // because need to apply sharpening every time\n\n var filter;\n if (isLastStage || filter_info.q2f.indexOf(opts.filter) < 0) filter = opts.filter;else if (opts.filter === 'box') filter = 'box';else filter = 'hamming';\n opts = assign({}, opts, {\n toWidth: toWidth,\n toHeight: toHeight,\n filter: filter\n });\n var tmpCanvas;\n\n if (!isLastStage) {\n // create temporary canvas\n tmpCanvas = this.options.createCanvas(toWidth, toHeight);\n }\n\n return this.__tileAndResize(from, isLastStage ? to : tmpCanvas, opts).then(function () {\n if (isLastStage) return to;\n opts.width = toWidth;\n opts.height = toHeight;\n return _this4.__processStages(stages, tmpCanvas, to, opts);\n }).then(function (res) {\n if (tmpCanvas) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n tmpCanvas.width = tmpCanvas.height = 0;\n }\n\n return res;\n });\n};\n\nPica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {\n var _this5 = this;\n\n var toCtx = to.getContext('2d');\n this.debug('Resize via createImageBitmap()');\n return createImageBitmap(from, {\n resizeWidth: opts.toWidth,\n resizeHeight: opts.toHeight,\n resizeQuality: utils.cib_quality_name(filter_info.f2q[opts.filter])\n }).then(function (imageBitmap) {\n if (opts.canceled) return opts.cancelToken; // if no unsharp - draw directly to output canvas\n\n if (!opts.unsharpAmount) {\n toCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n }\n\n _this5.debug('Unsharp result');\n\n var tmpCanvas = _this5.options.createCanvas(opts.toWidth, opts.toHeight);\n\n var tmpCtx = tmpCanvas.getContext('2d');\n tmpCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n var iData = tmpCtx.getImageData(0, 0, opts.toWidth, opts.toHeight);\n\n _this5.__mathlib.unsharp_mask(iData.data, opts.toWidth, opts.toHeight, opts.unsharpAmount, opts.unsharpRadius, opts.unsharpThreshold);\n\n toCtx.putImageData(iData, 0, 0); // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n iData = tmpCtx = tmpCanvas = toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n });\n};\n\nPica.prototype.resize = function (from, to, options) {\n var _this6 = this;\n\n this.debug('Start resize...');\n var opts = assign({}, DEFAULT_RESIZE_OPTS);\n\n if (!isNaN(options)) {\n opts = assign(opts, {\n quality: options\n });\n } else if (options) {\n opts = assign(opts, options);\n }\n\n opts.toWidth = to.width;\n opts.toHeight = to.height;\n opts.width = from.naturalWidth || from.width;\n opts.height = from.naturalHeight || from.height; // Legacy `.quality` option\n\n if (Object.prototype.hasOwnProperty.call(opts, 'quality')) {\n if (opts.quality < 0 || opts.quality > 3) {\n throw new Error(\"Pica: .quality should be [0..3], got \".concat(opts.quality));\n }\n\n opts.filter = filter_info.q2f[opts.quality];\n } // Prevent stepper from infinite loop\n\n\n if (to.width === 0 || to.height === 0) {\n return Promise.reject(new Error(\"Invalid output size: \".concat(to.width, \"x\").concat(to.height)));\n }\n\n if (opts.unsharpRadius > 2) opts.unsharpRadius = 2;\n opts.canceled = false;\n\n if (opts.cancelToken) {\n // Wrap cancelToken to avoid successive resolve & set flag\n opts.cancelToken = opts.cancelToken.then(function (data) {\n opts.canceled = true;\n throw data;\n }, function (err) {\n opts.canceled = true;\n throw err;\n });\n }\n\n var DEST_TILE_BORDER = 3; // Max possible filter window size\n\n opts.__destTileBorder = Math.ceil(Math.max(DEST_TILE_BORDER, 2.5 * opts.unsharpRadius | 0));\n return this.init().then(function () {\n if (opts.canceled) return opts.cancelToken; // if createImageBitmap supports resize, just do it and return\n\n if (_this6.features.cib) {\n if (filter_info.q2f.indexOf(opts.filter) >= 0) {\n return _this6.__resizeViaCreateImageBitmap(from, to, opts);\n }\n\n _this6.debug('cib is enabled, but not supports provided filter, fallback to manual math');\n }\n\n if (!CAN_USE_CANVAS_GET_IMAGE_DATA) {\n var err = new Error('Pica: cannot use getImageData on canvas, ' + \"make sure fingerprinting protection isn't enabled\");\n err.code = 'ERR_GET_IMAGE_DATA';\n throw err;\n } //\n // No easy way, let's resize manually via arrays\n //\n\n\n var stages = createStages(opts.width, opts.height, opts.toWidth, opts.toHeight, _this6.options.tile, opts.__destTileBorder);\n return _this6.__processStages(stages, from, to, opts);\n });\n}; // RGBA buffer resize\n//\n\n\nPica.prototype.resizeBuffer = function (options) {\n var _this7 = this;\n\n var opts = assign({}, DEFAULT_RESIZE_OPTS, options); // Legacy `.quality` option\n\n if (Object.prototype.hasOwnProperty.call(opts, 'quality')) {\n if (opts.quality < 0 || opts.quality > 3) {\n throw new Error(\"Pica: .quality should be [0..3], got \".concat(opts.quality));\n }\n\n opts.filter = filter_info.q2f[opts.quality];\n }\n\n return this.init().then(function () {\n return _this7.__mathlib.resizeAndUnsharp(opts);\n });\n};\n\nPica.prototype.toBlob = function (canvas, mimeType, quality) {\n mimeType = mimeType || 'image/png';\n return new Promise(function (resolve) {\n if (canvas.toBlob) {\n canvas.toBlob(function (blob) {\n return resolve(blob);\n }, mimeType, quality);\n return;\n }\n\n if (canvas.convertToBlob) {\n resolve(canvas.convertToBlob({\n type: mimeType,\n quality: quality\n }));\n return;\n } // Fallback for old browsers\n\n\n var asString = atob(canvas.toDataURL(mimeType, quality).split(',')[1]);\n var len = asString.length;\n var asBuffer = new Uint8Array(len);\n\n for (var i = 0; i < len; i++) {\n asBuffer[i] = asString.charCodeAt(i);\n }\n\n resolve(new Blob([asBuffer], {\n type: mimeType\n }));\n });\n};\n\nPica.prototype.debug = function () {};\n\nmodule.exports = Pica;\n\n},{\"./lib/mathlib\":1,\"./lib/mm_resize/resize_filter_info\":7,\"./lib/pool\":13,\"./lib/stepper\":14,\"./lib/tiler\":15,\"./lib/utils\":16,\"./lib/worker\":17,\"object-assign\":22,\"webworkify\":23}]},{},[])(\"/index.js\")\n});\n}(pica$1));\n\nvar jpeg_plugins = {};\n\nvar image_traverse$1 = {exports: {}};\n\n(function (module) {\n\n//////////////////////////////////////////////////////////////////////////\n// Helpers\n//\nfunction error(message, code) {\n var err = new Error(message);\n err.code = code;\n return err;\n}\n\n\n// Convert number to 0xHH string\n//\nfunction to_hex(number) {\n var n = number.toString(16).toUpperCase();\n for (var i = 2 - n.length; i > 0; i--) n = '0' + n;\n return '0x' + n;\n}\n\n\nfunction utf8_encode(str) {\n try {\n return unescape(encodeURIComponent(str));\n } catch (_) {\n return str;\n }\n}\n\n\nfunction utf8_decode(str) {\n try {\n return decodeURIComponent(escape(str));\n } catch (_) {\n return str;\n }\n}\n\n\n// Check if input is a Uint8Array\n//\nfunction is_uint8array(bin) {\n return Object.prototype.toString.call(bin) === '[object Uint8Array]';\n}\n\n\n//////////////////////////////////////////////////////////////////////////\n// Exif parser\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - exif_start: Number - start of TIFF header (after Exif\\0\\0)\n// - exif_end: Number - end of Exif segment\n// - on_entry: Number - callback\n//\nfunction ExifParser(jpeg_bin, exif_start, exif_end) {\n // Uint8Array, exif without signature (which isn't included in offsets)\n this.input = jpeg_bin.subarray(exif_start, exif_end);\n\n // offset correction for `on_entry` callback\n this.start = exif_start;\n\n // Check TIFF header (includes byte alignment and first IFD offset)\n var sig = String.fromCharCode.apply(null, this.input.subarray(0, 4));\n\n if (sig !== 'II\\x2A\\0' && sig !== 'MM\\0\\x2A') {\n throw error('invalid TIFF signature', 'EBADDATA');\n }\n\n // true if motorola (big endian) byte alignment, false if intel\n this.big_endian = sig[0] === 'M';\n}\n\n\nExifParser.prototype.each = function (on_entry) {\n // allow premature exit\n this.aborted = false;\n\n var offset = this.read_uint32(4);\n\n this.ifds_to_read = [ {\n id: 0,\n offset: offset\n } ];\n\n while (this.ifds_to_read.length > 0 && !this.aborted) {\n var i = this.ifds_to_read.shift();\n if (!i.offset) continue;\n this.scan_ifd(i.id, i.offset, on_entry);\n }\n};\n\n\nExifParser.prototype.filter = function (on_entry) {\n var ifds = {};\n\n // make sure IFD0 always exists\n ifds.ifd0 = { id: 0, entries: [] };\n\n this.each(function (entry) {\n if (on_entry(entry) === false && !entry.is_subifd_link) return;\n if (entry.is_subifd_link && entry.count !== 1 && entry.format !== 4) return; // filter out bogus links\n\n if (!ifds['ifd' + entry.ifd]) {\n ifds['ifd' + entry.ifd] = { id: entry.ifd, entries: [] };\n }\n\n ifds['ifd' + entry.ifd].entries.push(entry);\n });\n\n // thumbnails are not supported just yet, so delete all information related to it\n delete ifds.ifd1;\n\n // Calculate output size\n var length = 8;\n Object.keys(ifds).forEach(function (ifd_no) {\n length += 2;\n\n ifds[ifd_no].entries.forEach(function (entry) {\n length += 12 + (entry.data_length > 4 ? Math.ceil(entry.data_length / 2) * 2 : 0);\n });\n\n length += 4;\n });\n\n this.output = new Uint8Array(length);\n this.output[0] = this.output[1] = (this.big_endian ? 'M' : 'I').charCodeAt(0);\n this.write_uint16(2, 0x2A);\n\n var offset = 8;\n var self = this;\n this.write_uint32(4, offset);\n\n Object.keys(ifds).forEach(function (ifd_no) {\n ifds[ifd_no].written_offset = offset;\n\n var ifd_start = offset;\n var ifd_end = ifd_start + 2 + ifds[ifd_no].entries.length * 12 + 4;\n offset = ifd_end;\n\n self.write_uint16(ifd_start, ifds[ifd_no].entries.length);\n\n ifds[ifd_no].entries.sort(function (a, b) {\n // IFD entries must be in order of increasing tag IDs\n return a.tag - b.tag;\n }).forEach(function (entry, idx) {\n var entry_offset = ifd_start + 2 + idx * 12;\n\n self.write_uint16(entry_offset, entry.tag);\n self.write_uint16(entry_offset + 2, entry.format);\n self.write_uint32(entry_offset + 4, entry.count);\n\n if (entry.is_subifd_link) {\n // filled in later\n if (ifds['ifd' + entry.tag]) ifds['ifd' + entry.tag].link_offset = entry_offset + 8;\n } else if (entry.data_length <= 4) {\n self.output.set(\n self.input.subarray(entry.data_offset - self.start, entry.data_offset - self.start + 4),\n entry_offset + 8\n );\n } else {\n self.write_uint32(entry_offset + 8, offset);\n self.output.set(\n self.input.subarray(entry.data_offset - self.start, entry.data_offset - self.start + entry.data_length),\n offset\n );\n offset += Math.ceil(entry.data_length / 2) * 2;\n }\n });\n\n var next_ifd = ifds['ifd' + (ifds[ifd_no].id + 1)];\n if (next_ifd) next_ifd.link_offset = ifd_end - 4;\n });\n\n Object.keys(ifds).forEach(function (ifd_no) {\n if (ifds[ifd_no].written_offset && ifds[ifd_no].link_offset) {\n self.write_uint32(ifds[ifd_no].link_offset, ifds[ifd_no].written_offset);\n }\n });\n\n if (this.output.length !== offset) throw error('internal error: incorrect buffer size allocated');\n\n return this.output;\n};\n\n\nExifParser.prototype.read_uint16 = function (offset) {\n var d = this.input;\n if (offset + 2 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n return this.big_endian ?\n d[offset] * 0x100 + d[offset + 1] :\n d[offset] + d[offset + 1] * 0x100;\n};\n\n\nExifParser.prototype.read_uint32 = function (offset) {\n var d = this.input;\n if (offset + 4 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n return this.big_endian ?\n d[offset] * 0x1000000 + d[offset + 1] * 0x10000 + d[offset + 2] * 0x100 + d[offset + 3] :\n d[offset] + d[offset + 1] * 0x100 + d[offset + 2] * 0x10000 + d[offset + 3] * 0x1000000;\n};\n\n\nExifParser.prototype.write_uint16 = function (offset, value) {\n var d = this.output;\n\n if (this.big_endian) {\n d[offset] = (value >>> 8) & 0xFF;\n d[offset + 1] = value & 0xFF;\n } else {\n d[offset] = value & 0xFF;\n d[offset + 1] = (value >>> 8) & 0xFF;\n }\n};\n\n\nExifParser.prototype.write_uint32 = function (offset, value) {\n var d = this.output;\n\n if (this.big_endian) {\n d[offset] = (value >>> 24) & 0xFF;\n d[offset + 1] = (value >>> 16) & 0xFF;\n d[offset + 2] = (value >>> 8) & 0xFF;\n d[offset + 3] = value & 0xFF;\n } else {\n d[offset] = value & 0xFF;\n d[offset + 1] = (value >>> 8) & 0xFF;\n d[offset + 2] = (value >>> 16) & 0xFF;\n d[offset + 3] = (value >>> 24) & 0xFF;\n }\n};\n\n\nExifParser.prototype.is_subifd_link = function (ifd, tag) {\n return (ifd === 0 && tag === 0x8769) || // SubIFD\n (ifd === 0 && tag === 0x8825) || // GPS Info\n (ifd === 0x8769 && tag === 0xA005); // Interop IFD\n};\n\n\n// Returns byte length of a single component of a given format\n//\nExifParser.prototype.exif_format_length = function (format) {\n switch (format) {\n case 1: // byte\n case 2: // ascii\n case 6: // sbyte\n case 7: // undefined\n return 1;\n\n case 3: // short\n case 8: // sshort\n return 2;\n\n case 4: // long\n case 9: // slong\n case 11: // float\n return 4;\n\n case 5: // rational\n case 10: // srational\n case 12: // double\n return 8;\n\n default:\n // unknown type\n return 0;\n }\n};\n\n\n// Reads Exif data\n//\nExifParser.prototype.exif_format_read = function (format, offset) {\n var v;\n\n switch (format) {\n case 1: // byte\n case 2: // ascii\n v = this.input[offset];\n return v;\n\n case 6: // sbyte\n v = this.input[offset];\n return v | (v & 0x80) * 0x1fffffe;\n\n case 3: // short\n v = this.read_uint16(offset);\n return v;\n\n case 8: // sshort\n v = this.read_uint16(offset);\n return v | (v & 0x8000) * 0x1fffe;\n\n case 4: // long\n v = this.read_uint32(offset);\n return v;\n\n case 9: // slong\n v = this.read_uint32(offset);\n return v | 0;\n\n case 5: // rational\n case 10: // srational\n case 11: // float\n case 12: // double\n return null; // not implemented\n\n case 7: // undefined\n return null; // blob\n\n default:\n // unknown type\n return null;\n }\n};\n\n\nExifParser.prototype.scan_ifd = function (ifd_no, offset, on_entry) {\n var entry_count = this.read_uint16(offset);\n\n offset += 2;\n\n for (var i = 0; i < entry_count; i++) {\n var tag = this.read_uint16(offset);\n var format = this.read_uint16(offset + 2);\n var count = this.read_uint32(offset + 4);\n\n var comp_length = this.exif_format_length(format);\n var data_length = count * comp_length;\n var data_offset = data_length <= 4 ? offset + 8 : this.read_uint32(offset + 8);\n var is_subifd_link = false;\n\n if (data_offset + data_length > this.input.length) {\n throw error('unexpected EOF', 'EBADDATA');\n }\n\n var value = [];\n var comp_offset = data_offset;\n\n for (var j = 0; j < count; j++, comp_offset += comp_length) {\n var item = this.exif_format_read(format, comp_offset);\n if (item === null) {\n value = null;\n break;\n }\n value.push(item);\n }\n\n if (Array.isArray(value) && format === 2) {\n try {\n value = utf8_decode(String.fromCharCode.apply(null, value));\n } catch (_) {\n value = null;\n }\n\n if (value && value[value.length - 1] === '\\0') value = value.slice(0, -1);\n }\n\n if (this.is_subifd_link(ifd_no, tag)) {\n if (Array.isArray(value) && Number.isInteger(value[0]) && value[0] > 0) {\n this.ifds_to_read.push({\n id: tag,\n offset: value[0]\n });\n is_subifd_link = true;\n }\n }\n\n var entry = {\n is_big_endian: this.big_endian,\n ifd: ifd_no,\n tag: tag,\n format: format,\n count: count,\n entry_offset: offset + this.start,\n data_length: data_length,\n data_offset: data_offset + this.start,\n value: value,\n is_subifd_link: is_subifd_link\n };\n\n if (on_entry(entry) === false) {\n this.aborted = true;\n return;\n }\n\n offset += 12;\n }\n\n if (ifd_no === 0) {\n this.ifds_to_read.push({\n id: 1,\n offset: this.read_uint32(offset)\n });\n }\n};\n\n\n// Check whether input is a JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n//\n// Returns true if it is and false otherwise\n//\nmodule.exports.is_jpeg = function (jpeg_bin) {\n return jpeg_bin.length >= 4 && jpeg_bin[0] === 0xFF && jpeg_bin[1] === 0xD8 && jpeg_bin[2] === 0xFF;\n};\n\n\n// Call an iterator on each segment in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_segment: Function - callback executed on each JPEG marker segment\n// - segment: Object\n// - code: Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n// - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n// - length: Number - length of the entire marker segment including first two bytes and length\n// - 2 for standalone markers\n// - 4+length for markers with data\n//\n// Iteration stops when `EOI` (0xFFD9) marker is reached or if `on_segment`\n// function returns `false`.\n//\nmodule.exports.jpeg_segments_each = function (jpeg_bin, on_segment) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_segment !== 'function') {\n throw error('Invalid argument (on_segment), Function expected', 'EINVAL');\n }\n\n if (!module.exports.is_jpeg(jpeg_bin)) {\n throw error('Unknown file format', 'ENOTJPEG');\n }\n\n var offset = 0, length = jpeg_bin.length, inside_scan = false;\n\n for (;;) {\n var segment_code, segment_length;\n\n if (offset + 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n var byte1 = jpeg_bin[offset];\n var byte2 = jpeg_bin[offset + 1];\n\n if (byte1 === 0xFF && byte2 === 0xFF) {\n // padding\n segment_code = 0xFF;\n segment_length = 1;\n\n } else if (byte1 === 0xFF && byte2 !== 0) {\n // marker\n segment_code = byte2;\n segment_length = 2;\n\n if ((0xD0 <= segment_code && segment_code <= 0xD9) || segment_code === 0x01) ; else {\n if (offset + 3 >= length) throw error('Unexpected EOF', 'EBADDATA');\n segment_length += jpeg_bin[offset + 2] * 0x100 + jpeg_bin[offset + 3];\n if (segment_length < 2) throw error('Invalid segment length', 'EBADDATA');\n if (offset + segment_length - 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n }\n\n if (inside_scan) {\n if (segment_code >= 0xD0 && segment_code <= 0xD7) ; else {\n inside_scan = false;\n }\n }\n\n if (segment_code === 0xDA /* SOS */) inside_scan = true;\n } else if (inside_scan) {\n // entropy-encoded segment\n for (var pos = offset + 1; ; pos++) {\n // scan until we find FF\n if (pos >= length) throw error('Unexpected EOF', 'EBADDATA');\n if (jpeg_bin[pos] === 0xFF) {\n if (pos + 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n if (jpeg_bin[pos + 1] !== 0) {\n segment_code = 0;\n segment_length = pos - offset;\n break;\n }\n }\n }\n } else {\n throw error('Unexpected byte at segment start: ' + to_hex(byte1) +\n ' (offset ' + to_hex(offset) + ')', 'EBADDATA');\n }\n\n if (on_segment({ code: segment_code, offset: offset, length: segment_length }) === false) break;\n if (segment_code === 0xD9 /* EOI */) break;\n offset += segment_length;\n }\n};\n\n\n// Replace or remove segments in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_segment: Function - callback executed on each JPEG marker segment\n// - segment: Object\n// - code: Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n// - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n// - length: Number - length of the entire marker segment including first two bytes and length\n// - 2 for standalone markers\n// - 4+length for markers with data\n//\n// `on_segment` function should return one of the following:\n// - `false` - segment is removed from the output\n// - Uint8Array - segment is replaced with the new data\n// - [ Uint8Array ] - segment is replaced with the new data\n// - anything else - segment is copied to the output as is\n//\n// Any data after `EOI` (0xFFD9) marker is removed.\n//\nmodule.exports.jpeg_segments_filter = function (jpeg_bin, on_segment) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_segment !== 'function') {\n throw error('Invalid argument (on_segment), Function expected', 'EINVAL');\n }\n\n var ranges = [];\n var out_length = 0;\n\n module.exports.jpeg_segments_each(jpeg_bin, function (segment) {\n var new_segment = on_segment(segment);\n\n if (is_uint8array(new_segment)) {\n ranges.push({ data: new_segment });\n out_length += new_segment.length;\n } else if (Array.isArray(new_segment)) {\n new_segment.filter(is_uint8array).forEach(function (s) {\n ranges.push({ data: s });\n out_length += s.length;\n });\n } else if (new_segment !== false) {\n var new_range = { start: segment.offset, end: segment.offset + segment.length };\n\n if (ranges.length > 0 && ranges[ranges.length - 1].end === new_range.start) {\n ranges[ranges.length - 1].end = new_range.end;\n } else {\n ranges.push(new_range);\n }\n\n out_length += segment.length;\n }\n });\n\n var result = new Uint8Array(out_length);\n var offset = 0;\n\n ranges.forEach(function (range) {\n var data = range.data || jpeg_bin.subarray(range.start, range.end);\n result.set(data, offset);\n offset += data.length;\n });\n\n return result;\n};\n\n\n// Call an iterator on each Exif entry in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_entry: Function - callback executed on each Exif entry\n// - entry: Object\n// - is_big_endian: Boolean - whether Exif uses big or little endian byte alignment\n// - ifd: Number - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n// 0x8825 for GPS Info, 0xA005 for Interop IFD)\n// - tag: Number - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n// - format: Number - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n// - count: Number - number of components of the given format inside data\n// (usually 1, or string length for ascii format)\n// - entry_offset: Number - start of Exif entry (entry length is always 12, so not included)\n// - data_offset: Number - start of data attached to Exif entry (will overlap with entry if length <= 4)\n// - data_length: Number - length of data attached to Exif entry\n// - value: Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n// - is_subifd_link: Boolean - whether this entry is recognized to be a link to subifd (can't filter these out)\n//\n// Iteration stops early if iterator returns `false`.\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed.\n//\nmodule.exports.jpeg_exif_tags_each = function (jpeg_bin, on_exif_entry) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_exif_entry !== 'function') {\n throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL');\n }\n\n /* eslint-disable consistent-return */\n module.exports.jpeg_segments_each(jpeg_bin, function (segment) {\n if (segment.code === 0xDA /* SOS */) return false;\n\n // look for APP1 segment and compare header with 'Exif\\0\\0'\n if (segment.code === 0xE1 && segment.length >= 10 &&\n jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n\n new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length).each(on_exif_entry);\n return false;\n }\n });\n};\n\n\n// Remove Exif entries in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_entry: Function - callback executed on each Exif entry\n// - entry: Object\n// - is_big_endian: Boolean - whether Exif uses big or little endian byte alignment\n// - ifd: Number - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n// 0x8825 for GPS Info, 0xA005 for Interop IFD)\n// - tag: Number - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n// - format: Number - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n// - count: Number - number of components of the given format inside data\n// (usually 1, or string length for ascii format)\n// - entry_offset: Number - start of Exif entry (entry length is always 12, so not included)\n// - data_offset: Number - start of data attached to Exif entry (will overlap with entry if length <= 4)\n// - data_length: Number - length of data attached to Exif entry\n// - value: Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n// - is_subifd_link: Boolean - whether this entry is recognized to be a link to subifd (can't filter these out)\n//\n// This function removes following from Exif:\n// - all entries where iterator returned false (except subifd links which are mandatory)\n// - IFD1 and thumbnail image (the purpose of this function is to reduce file size,\n// so thumbnail is usually the first thing to go)\n// - all other data that isn't in IFD0, SubIFD, GPSIFD, InteropIFD\n// (theoretically possible proprietary extensions, I haven't seen any of these yet)\n//\n// Changing data inside Exif entries is NOT supported yet (modifying `entry` object inside callback may break stuff).\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed, and original JPEG is returned as is.\n//\nmodule.exports.jpeg_exif_tags_filter = function (jpeg_bin, on_exif_entry) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_exif_entry !== 'function') {\n throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL');\n }\n\n var stop_search = false;\n\n return module.exports.jpeg_segments_filter(jpeg_bin, function (segment) {\n if (stop_search) return;\n if (segment.code === 0xDA /* SOS */) stop_search = true;\n\n // look for APP1 segment and compare header with 'Exif\\0\\0'\n if (segment.code === 0xE1 && segment.length >= 10 &&\n jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n\n var new_exif = new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length)\n .filter(on_exif_entry);\n if (!new_exif) return false;\n\n var header = new Uint8Array(10);\n\n header.set(jpeg_bin.slice(segment.offset, segment.offset + 10));\n header[2] = ((new_exif.length + 8) >>> 8) & 0xFF;\n header[3] = (new_exif.length + 8) & 0xFF;\n\n stop_search = true;\n return [ header, new_exif ];\n }\n });\n};\n\n\n// Inserts a custom comment marker segment into JPEG file.\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - comment: String\n//\n// Comment is inserted after first two bytes (FFD8, SOI).\n//\n// If JFIF (APP0) marker exists immediately after SOI (as mandated by the JFIF\n// spec), we insert comment after it instead.\n//\nmodule.exports.jpeg_add_comment = function (jpeg_bin, comment) {\n var comment_inserted = false, segment_count = 0;\n\n return module.exports.jpeg_segments_filter(jpeg_bin, function (segment) {\n segment_count++;\n if (segment_count === 1 && segment.code === 0xD8 /* SOI */) return;\n if (segment_count === 2 && segment.code === 0xE0 /* APP0 */) return;\n\n if (comment_inserted) return;\n comment = utf8_encode(comment);\n\n // comment segment\n var csegment = new Uint8Array(5 + comment.length);\n var offset = 0;\n\n csegment[offset++] = 0xFF;\n csegment[offset++] = 0xFE;\n csegment[offset++] = ((comment.length + 3) >>> 8) & 0xFF;\n csegment[offset++] = (comment.length + 3) & 0xFF;\n\n comment.split('').forEach(function (c) {\n csegment[offset++] = c.charCodeAt(0) & 0xFF;\n });\n\n csegment[offset++] = 0;\n comment_inserted = true;\n\n return [ csegment, jpeg_bin.subarray(segment.offset, segment.offset + segment.length) ];\n });\n};\n}(image_traverse$1));\n\nvar image_traverse = image_traverse$1.exports;\n\n\nfunction jpeg_patch_exif(env) {\n return this._getUint8Array(env.blob).then(function (data) {\n env.is_jpeg = image_traverse.is_jpeg(data);\n\n if (!env.is_jpeg) return Promise.resolve(env);\n\n env.orig_blob = env.blob;\n\n try {\n var exif_is_big_endian, orientation_offset;\n\n /* eslint-disable consistent-return */\n image_traverse.jpeg_exif_tags_each(data, function (entry) {\n if (entry.ifd === 0 && entry.tag === 0x112 && Array.isArray(entry.value)) {\n env.orientation = entry.value[0] || 1;\n exif_is_big_endian = entry.is_big_endian;\n orientation_offset = entry.data_offset;\n return false;\n }\n });\n\n if (orientation_offset) {\n var orientation_patch = exif_is_big_endian ?\n new Uint8Array([ 0, 1 ]) :\n new Uint8Array([ 1, 0 ]);\n\n env.blob = new Blob([\n data.slice(0, orientation_offset),\n orientation_patch,\n data.slice(orientation_offset + 2)\n ], { type: 'image/jpeg' });\n }\n } catch (_) {}\n\n return env;\n });\n}\n\n\nfunction jpeg_rotate_canvas(env) {\n if (!env.is_jpeg) return Promise.resolve(env);\n\n var orientation = env.orientation - 1;\n if (!orientation) return Promise.resolve(env);\n\n var canvas;\n\n if (orientation & 4) {\n canvas = this.pica.options.createCanvas(env.out_canvas.height, env.out_canvas.width);\n } else {\n canvas = this.pica.options.createCanvas(env.out_canvas.width, env.out_canvas.height);\n }\n\n var ctx = canvas.getContext('2d');\n\n ctx.save();\n\n if (orientation & 1) ctx.transform(-1, 0, 0, 1, canvas.width, 0);\n if (orientation & 2) ctx.transform(-1, 0, 0, -1, canvas.width, canvas.height);\n if (orientation & 4) ctx.transform(0, 1, 1, 0, 0, 0);\n\n ctx.drawImage(env.out_canvas, 0, 0);\n ctx.restore();\n\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n env.out_canvas.width = env.out_canvas.height = 0;\n\n env.out_canvas = canvas;\n\n return Promise.resolve(env);\n}\n\n\nfunction jpeg_attach_orig_segments(env) {\n if (!env.is_jpeg) return Promise.resolve(env);\n\n return Promise.all([\n this._getUint8Array(env.blob),\n this._getUint8Array(env.out_blob)\n ]).then(function (res) {\n var data = res[0];\n var data_out = res[1];\n\n if (!image_traverse.is_jpeg(data)) return Promise.resolve(env);\n\n var segments = [];\n\n image_traverse.jpeg_segments_each(data, function (segment) {\n if (segment.code === 0xDA /* SOS */) return false;\n segments.push(segment);\n });\n\n segments = segments\n .filter(function (segment) {\n // Drop ICC_PROFILE\n //\n if (segment.code === 0xE2) return false;\n\n // Keep all APPn segments excluding APP2 (ICC_PROFILE),\n // remove others because most of them depend on image data (DCT and such).\n //\n // APP0 - JFIF, APP1 - Exif, the rest are photoshop metadata and such\n //\n // See full list at https://www.w3.org/Graphics/JPEG/itu-t81.pdf (table B.1 on page 32)\n //\n if (segment.code >= 0xE0 && segment.code < 0xF0) return true;\n\n // Keep comments\n //\n if (segment.code === 0xFE) return true;\n\n return false;\n })\n .map(function (segment) {\n return data.slice(segment.offset, segment.offset + segment.length);\n });\n\n env.out_blob = new Blob(\n // intentionally omitting expected JFIF segment (offset 2 to 20)\n [ data_out.slice(0, 2) ].concat(segments).concat([ data_out.slice(20) ]),\n { type: 'image/jpeg' }\n );\n\n return env;\n });\n}\n\n\nfunction assign(reducer) {\n reducer.before('_blob_to_image', jpeg_patch_exif);\n reducer.after('_transform', jpeg_rotate_canvas);\n reducer.after('_create_blob', jpeg_attach_orig_segments);\n}\n\n\njpeg_plugins.jpeg_patch_exif = jpeg_patch_exif;\njpeg_plugins.jpeg_rotate_canvas = jpeg_rotate_canvas;\njpeg_plugins.jpeg_attach_orig_segments = jpeg_attach_orig_segments;\njpeg_plugins.assign = assign;\n\nvar utils = utils$1;\nvar pica = pica$1.exports;\n\nfunction ImageBlobReduce(options) {\n if (!(this instanceof ImageBlobReduce)) return new ImageBlobReduce(options);\n\n options = options || {};\n\n this.pica = options.pica || pica({});\n this.initialized = false;\n\n this.utils = utils;\n}\n\n\nImageBlobReduce.prototype.use = function (plugin /*, params, ... */) {\n var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n\n\nImageBlobReduce.prototype.init = function () {\n this.use(jpeg_plugins.assign);\n};\n\n\nImageBlobReduce.prototype.toBlob = function (blob, options) {\n var opts = utils.assign({ max: Infinity }, options);\n var env = {\n blob: blob,\n opts: opts\n };\n\n if (!this.initialized) {\n this.init();\n this.initialized = true;\n }\n\n return Promise.resolve(env)\n .then(this._blob_to_image)\n .then(this._calculate_size)\n .then(this._transform)\n .then(this._cleanup)\n .then(this._create_blob)\n .then(function (_env) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n _env.out_canvas.width = _env.out_canvas.height = 0;\n\n return _env.out_blob;\n });\n};\n\n\nImageBlobReduce.prototype.toCanvas = function (blob, options) {\n var opts = utils.assign({ max: Infinity }, options);\n var env = {\n blob: blob,\n opts: opts\n };\n\n if (!this.initialized) {\n this.init();\n this.initialized = true;\n }\n\n return Promise.resolve(env)\n .then(this._blob_to_image)\n .then(this._calculate_size)\n .then(this._transform)\n .then(this._cleanup)\n .then(function (_env) { return _env.out_canvas; });\n};\n\n\nImageBlobReduce.prototype.before = function (method_name, fn) {\n if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist');\n if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected');\n\n var old_fn = this[method_name];\n var self = this;\n\n this[method_name] = function (env) {\n return fn.call(self, env).then(function (_env) {\n return old_fn.call(self, _env);\n });\n };\n\n return this;\n};\n\n\nImageBlobReduce.prototype.after = function (method_name, fn) {\n if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist');\n if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected');\n\n var old_fn = this[method_name];\n var self = this;\n\n this[method_name] = function (env) {\n return old_fn.call(self, env).then(function (_env) {\n return fn.call(self, _env);\n });\n };\n\n return this;\n};\n\n\nImageBlobReduce.prototype._blob_to_image = function (env) {\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n env.image = document.createElement('img');\n env.image_url = URL.createObjectURL(env.blob);\n env.image.src = env.image_url;\n\n return new Promise(function (resolve, reject) {\n env.image.onerror = function () { reject(new Error('ImageBlobReduce: failed to create Image() from blob')); };\n env.image.onload = function () { resolve(env); };\n });\n};\n\n\nImageBlobReduce.prototype._calculate_size = function (env) {\n //\n // Note, if your need not \"symmetric\" resize logic, you MUST check\n // `env.orientation` (set by plugins) and swap width/height appropriately.\n //\n var scale_factor = env.opts.max / Math.max(env.image.width, env.image.height);\n\n if (scale_factor > 1) scale_factor = 1;\n\n env.transform_width = Math.max(Math.round(env.image.width * scale_factor), 1);\n env.transform_height = Math.max(Math.round(env.image.height * scale_factor), 1);\n\n // Info for user plugins, to check if scaling applied\n env.scale_factor = scale_factor;\n\n return Promise.resolve(env);\n};\n\n\nImageBlobReduce.prototype._transform = function (env) {\n env.out_canvas = this.pica.options.createCanvas(env.transform_width, env.transform_height);\n\n // Dim env temporary vars to prohibit use and avoid confusion when orientation\n // changed. You should take real size from canvas.\n env.transform_width = null;\n env.transform_height = null;\n\n // By default use alpha for png only\n var pica_opts = { alpha: env.blob.type === 'image/png' };\n\n // Extract pica options if been passed\n this.utils.assign(pica_opts, this.utils.pick_pica_resize_options(env.opts));\n\n return this.pica\n .resize(env.image, env.out_canvas, pica_opts)\n .then(function () { return env; });\n};\n\n\nImageBlobReduce.prototype._cleanup = function (env) {\n env.image.src = '';\n env.image = null;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n if (URL.revokeObjectURL) URL.revokeObjectURL(env.image_url);\n\n env.image_url = null;\n\n return Promise.resolve(env);\n};\n\n\nImageBlobReduce.prototype._create_blob = function (env) {\n return this.pica.toBlob(env.out_canvas, env.blob.type)\n .then(function (blob) {\n env.out_blob = blob;\n return env;\n });\n};\n\n\nImageBlobReduce.prototype._getUint8Array = function (blob) {\n if (blob.arrayBuffer) {\n return blob.arrayBuffer().then(function (buf) {\n return new Uint8Array(buf);\n });\n }\n\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n\n fr.readAsArrayBuffer(blob);\n\n fr.onload = function () { resolve(new Uint8Array(fr.result)); };\n fr.onerror = function () {\n reject(new Error('ImageBlobReduce: failed to load data from input blob'));\n fr.abort();\n };\n fr.onabort = function () {\n reject(new Error('ImageBlobReduce: failed to load data from input blob (aborted)'));\n };\n });\n};\n\n\nImageBlobReduce.pica = pica;\n\nvar imageBlobReduce = ImageBlobReduce;\n\nexport { imageBlobReduce as default };\n","/* eslint-disable @nht/require-function-slots-for-programmatic-components */\n/**\n * InlineImageField component provides an image upload field with drag-and-drop support, file type validation, automatic image reduction, and customizable dropzone styling.\n *\n * @example\n * ```typescript\n * import { InlineImageField } from '@nhtio/common-vue/inline_image_field'\n * import type { InlineImageFieldProps, InlineImageFieldSlots } from '@nhtio/common-vue/inline_image_field'\n * ```\n *\n * @module @nhtio/common-vue/inline_image_field\n */\n\nimport { useTheme } from 'vuetify'\nimport { VImg } from 'vuetify/components/VImg'\nimport { VHover } from 'vuetify/components/VHover'\nimport { VOverlay } from 'vuetify/components/VOverlay'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { default as ImageBlobReduce } from 'image-blob-reduce'\nimport { omit, convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { parseColor, RGBtoCSS } from '@nhtio/vuetifiable/util/colorUtils'\nimport { makeDimensionProps } from '@nhtio/vuetifiable/composables/dimensions'\nimport {\n defineComponent,\n h,\n toRefs,\n ref,\n computed,\n mergeProps,\n onMounted,\n onBeforeUnmount,\n} from 'vue'\nimport {\n propsAndEmitsFactory,\n makeBaseProps,\n baseFieldBaseRawEmits,\n BaseField,\n useBaseProps,\n useBaseHooks,\n useBaseSlots,\n usePassthroughHook,\n useSlot,\n} from './base'\nimport type { PropType, SlotsType } from 'vue'\nimport type { Color, RGB } from '@nhtio/vuetifiable/util/colorUtils'\nimport type {\n ComponentPublicInstanceType,\n ExtractPublicPropTypesFromFactory,\n BaseSlots,\n HookableEvents,\n FieldHookHandler,\n} from './base'\n\nconst reduce = ImageBlobReduce()\n\n/**\n * Emit validators for the InlineImageField component.\n * Extends base field emits with image-specific events including model value updates\n * and invalid file type validation.\n * @category Constants\n */\nconst inlineImageFieldRawEmits = {\n ...baseFieldBaseRawEmits,\n 'update:modelValue': (value: string | null) => null === value || typeof value === 'string',\n 'update:model-value': (value: string | null) => null === value || typeof value === 'string',\n 'invalid-file-type': (type: string, acceptedTypes: string[]) =>\n typeof type === 'string' && Array.isArray(acceptedTypes),\n}\n\nexport type { inlineImageFieldRawEmits }\n\n/**\n * Type for the raw emit validators of InlineImageField\n * @interface\n * @category Types\n */\nexport type InlineImageFieldHookableRawEvents = typeof inlineImageFieldRawEmits\n/**\n * Type for the hookable events of InlineImageField with cleanup support\n * @interface\n * @category Types\n */\nexport type InlineImageFieldHookableEvents = HookableEvents<InlineImageFieldHookableRawEvents>\n/**\n * Handler type for InlineImageField hooks.\n * @typeParam T - The specific event key from InlineImageFieldHookableEvents\n * @category Types\n */\nexport type InlineImageFieldHookHandlers<T extends keyof InlineImageFieldHookableEvents> =\n FieldHookHandler<InlineImageFieldHookableRawEvents, InlineImageFieldHookableEvents, T>\n\nconst { makeProps: makeInlineImageFieldProps, emits: inlineImageFieldEmits } = propsAndEmitsFactory(\n {\n ...omit(\n makeBaseProps({\n variant: 'plain' as const,\n }),\n ['modelValue']\n ),\n modelValue: {\n type: [String, null] as PropType<string | null>,\n default: null,\n },\n accept: {\n type: [String, Array] as PropType<string | string[]>,\n default: 'image/*',\n },\n ...omit(makeDimensionProps({}), ['width', 'maxWidth', 'minWidth']),\n imageAspectRatio: {\n type: [String, Number] as PropType<string | number | undefined>,\n default: undefined,\n },\n callOnInvalidFileType: {\n type: Array as PropType<Array<InlineImageFieldHookHandlers<'invalid-file-type'>>>,\n default: () => [],\n },\n dropzoneBorderColor: {\n type: [String, Number, Object] as PropType<Color>,\n default: 'primary',\n },\n dropzoneBorderThickness: {\n type: [Number, String] as PropType<number | string>,\n default: 2,\n },\n dropzoneBorderStyle: {\n type: String as PropType<string>,\n default: 'dashed',\n },\n },\n inlineImageFieldRawEmits,\n 'InlineImageField'\n)\n\nexport type { makeInlineImageFieldProps }\n\n/**\n * Public prop types for the InlineImageField component.\n * Includes base field props plus image-specific configuration for file acceptance,\n * aspect ratio, dimensions, and dropzone styling.\n * @interface\n * @category Types\n */\nexport type InlineImageFieldProps = ExtractPublicPropTypesFromFactory<\n typeof makeInlineImageFieldProps\n>\n\n/**\n * Slot definitions for the InlineImageField component.\n * Extends base slots with a placeholder slot for empty/hover states.\n * @interface\n * @category Types\n */\nexport type InlineImageFieldSlots = Omit<BaseSlots, 'default'> & {\n /** Slot for custom placeholder content displayed when hovering or when no image is set */\n placeholder: () => any\n}\n\n/**\n * Minimum height constraint for the inline image field dropzone.\n * Ensures the dropzone remains usable even with very small height values.\n * @category Constants\n */\nconst INLINE_IMAGE_FIELD_MIN_HEIGHT = 80\n\n/**\n * InlineImageField component provides an image upload field with drag-and-drop support,\n * file type validation, automatic image reduction, and customizable dropzone styling.\n *\n * Features:\n * - Drag-and-drop file upload from external sources (Finder/Explorer)\n * - File type validation with customizable accepted types\n * - Automatic image reduction for non-SVG images (max 1024px)\n * - SVG passthrough without modification\n * - Hover overlay with customizable placeholder\n * - Visual drag feedback with themed border styling\n * - File picker integration with modern showPicker API fallback\n * @class\n * @hideconstructor\n * @category Components\n *\n * @remarks\n * - Uses ImageBlobReduce for automatic image optimization\n * - Registers global window/document listeners to detect external drags\n * - Supports theme color integration via Vuetify's useTheme\n * - Extends BaseField for consistent field behavior\n * - Cleans up all event listeners on component unmount\n *\n * @example\n * ```vue\n * <InlineImageField\n * v-model=\"imageData\"\n * label=\"Profile Picture\"\n * accept=\"image/png,image/jpeg\"\n * :image-aspect-ratio=\"1\"\n * dropzone-border-color=\"primary\"\n * placeholder=\"Drop an image or click to upload\"\n * />\n * ```\n */\nexport const InlineImageField = defineComponent({\n name: 'InlineImageField',\n props: makeInlineImageFieldProps(),\n emits: inlineImageFieldEmits,\n slots: Object as SlotsType<InlineImageFieldSlots>,\n setup(props, { emit, attrs, slots }) {\n const theme = useTheme()\n const {\n accept,\n imageAspectRatio,\n height,\n maxHeight,\n minHeight,\n modelValue,\n dropzoneBorderColor,\n dropzoneBorderThickness,\n dropzoneBorderStyle,\n placeholder,\n } = toRefs(props)\n const parseThemeColor = (color: Color): RGB => {\n if ('string' === typeof color && color in theme.current.value.colors) {\n color = theme.current.value.colors[\n color as keyof typeof theme.current.value.colors\n ] as string\n }\n return parseColor(color)\n }\n const resolvedDropzoneBorderColor = computed(() => parseThemeColor(dropzoneBorderColor.value))\n const resolvedDropzoneBorderThickness = computed(() =>\n convertToUnit(dropzoneBorderThickness.value, 'px')\n )\n const resolveDropzoneBorder = computed(() =>\n [\n dropzoneBorderStyle.value,\n resolvedDropzoneBorderThickness.value,\n RGBtoCSS(resolvedDropzoneBorderColor.value),\n ]\n .filter(Boolean)\n .join(' ')\n )\n const resolvedDropzoneInactiveBorder = computed(() =>\n [dropzoneBorderStyle.value, resolvedDropzoneBorderThickness.value, 'rgba(0,0,0,0)']\n .filter(Boolean)\n .join(' ')\n )\n const { filtered: baseProps } = useBaseProps(props)\n const baseHooks = useBaseHooks(emit, props, attrs)\n const handleInvalidFileType = usePassthroughHook(\n 'invalid-file-type',\n emit,\n 'callOnInvalidFileType',\n props,\n attrs,\n {\n fallback: (type: string, acceptedTypes: string[]) => {\n alert(`File type ${type} is not allowed. Accepted types: ${acceptedTypes.join(', ')}`)\n },\n }\n )\n const baseSlots = useBaseSlots(slots)\n const isDragging = ref(false)\n /**\n * Detects if a drag event carries files before drop.\n * Checks dataTransfer.types for 'Files' indicator and items for file kind.\n * Works across browsers including Chrome, Firefox, Safari, and Edge.\n *\n * @param e - The drag event to inspect\n * @returns True if the drag contains files, false otherwise\n * @category Utilities\n */\n const isFileDrag = (e: DragEvent): boolean => {\n const dt = e.dataTransfer\n if (!dt) return false\n // Chrome/Edge/Safari expose 'Files' in types during external drags\n if (Array.isArray((dt as any).types) && (dt as any).types.includes('Files')) return true\n // Firefox sometimes relies on items\n if (dt.items && dt.items.length) {\n for (let i = 0; i < dt.items.length; i++) {\n if (dt.items[i].kind === 'file') return true\n }\n }\n return false\n }\n /**\n * Normalized array of accepted file types.\n * Converts string or array prop into consistent array format.\n */\n const acceptedTypes = computed(() =>\n Array.isArray(accept.value)\n ? accept.value\n : [accept.value].filter((v) => 'string' === typeof v)\n )\n /**\n * Computed HTML accept attribute for the file input.\n * Converts short type names (svg, png, jpg) to proper MIME types.\n * @returns Comma-separated list of MIME types for the file input's accept attribute\n */\n const acceptAttribute = computed(() => {\n if (acceptedTypes.value.length > 0) {\n // Convert types like 'svg', 'png', 'jpg' to 'image/svg+xml', 'image/png', 'image/jpeg'\n const mimeTypes = acceptedTypes.value.map((type) => {\n const normalizedType = type.toLowerCase().replace(/^\\./, '') // Remove leading dot if present\n switch (normalizedType) {\n case 'svg':\n return 'image/svg+xml'\n case 'jpg':\n case 'jpeg':\n return 'image/jpeg'\n case 'png':\n return 'image/png'\n case 'gif':\n return 'image/gif'\n case 'webp':\n return 'image/webp'\n case 'bmp':\n return 'image/bmp'\n case 'tiff':\n case 'tif':\n return 'image/tiff'\n default:\n // For custom types, assume it's already a proper MIME type or add image/ prefix\n return normalizedType.includes('/') ? normalizedType : `image/${normalizedType}`\n }\n })\n return mimeTypes.join(',')\n }\n return 'image/*'\n })\n /**\n * Computed minimum height with enforced floor value.\n * Ensures dropzone remains usable by enforcing INLINE_IMAGE_FIELD_MIN_HEIGHT minimum.\n */\n const computedMinHeight = computed(() => {\n const numeric = minHeight.value ? Number.parseFloat(minHeight.value.toString()) : 0\n if (Number.isNaN(numeric)) {\n return INLINE_IMAGE_FIELD_MIN_HEIGHT\n }\n return Math.max(numeric, INLINE_IMAGE_FIELD_MIN_HEIGHT)\n })\n /**\n * Computed maximum height constraint.\n * Returns POSITIVE_INFINITY if not specified or invalid, allowing unconstrained growth.\n */\n const computedMaxHeight = computed(() => {\n const numeric = maxHeight.value\n ? Number.parseFloat(maxHeight.value.toString())\n : Number.POSITIVE_INFINITY\n if (Number.isNaN(numeric)) {\n return Number.POSITIVE_INFINITY\n }\n return Math.min(numeric, Number.POSITIVE_INFINITY)\n })\n /**\n * Computed height clamped between min and max constraints.\n * Defaults to computedMinHeight if height prop is not provided or invalid.\n * @returns CSS unit string (e.g., '80px')\n */\n const computedHeight = computed(() => {\n let numeric: number = height.value\n ? Number.parseFloat(height.value.toString())\n : computedMinHeight.value\n if (Number.isNaN(numeric)) {\n numeric = computedMinHeight.value\n }\n if (numeric < computedMinHeight.value) {\n numeric = computedMinHeight.value\n } else if (numeric > computedMaxHeight.value) {\n numeric = computedMaxHeight.value\n }\n return convertToUnit(numeric, 'px')\n })\n /**\n * Validates if a file's type matches the accepted types.\n * Checks both MIME type and file extension for comprehensive validation.\n *\n * @param file - The file to validate\n * @returns True if the file type is accepted, false otherwise\n * @category Utilities\n */\n const isValidFileType = (file: File): boolean => {\n if (acceptedTypes.value.length === 0) {\n return true // Accept all types if no specific types are defined\n }\n const fileType = file.type.toLowerCase()\n const fileName = file.name.toLowerCase()\n\n return acceptedTypes.value.some((type) => {\n const normalizedType = type.toLowerCase().replace(/^\\./, '')\n if (type === normalizedType) return true\n // Check by MIME type\n switch (normalizedType) {\n case 'svg':\n return fileType === 'image/svg+xml' || fileName.endsWith('.svg')\n case 'jpg':\n case 'jpeg':\n return (\n fileType === 'image/jpeg' || fileName.endsWith('.jpg') || fileName.endsWith('.jpeg')\n )\n case 'png':\n return fileType === 'image/png' || fileName.endsWith('.png')\n case 'gif':\n return fileType === 'image/gif' || fileName.endsWith('.gif')\n case 'webp':\n return fileType === 'image/webp' || fileName.endsWith('.webp')\n case 'bmp':\n return fileType === 'image/bmp' || fileName.endsWith('.bmp')\n case 'tiff':\n case 'tif':\n return (\n fileType === 'image/tiff' || fileName.endsWith('.tiff') || fileName.endsWith('.tif')\n )\n default:\n // For custom types, check both MIME type and file extension\n const mimeType = normalizedType.includes('/')\n ? normalizedType\n : `image/${normalizedType}`\n return fileType === mimeType || fileName.endsWith(`.${normalizedType}`)\n }\n })\n }\n /** Flag indicating if a file is currently being processed (reading or reducing) */\n const handlingFile = ref(false)\n /**\n * Reads a file or blob as a data URL and updates the model value.\n * Sets handlingFile to false after successful read.\n *\n * @param file - The file or blob to read and convert to base64 data URL\n * @category Utilities\n */\n const handleUpdateModelValueFromFile = (file: File | Blob) => {\n const reader = new FileReader()\n reader.onload = () => {\n handlingFile.value = false\n baseHooks.onUpdateModelValue(reader.result as string)\n }\n reader.onerror = () => {}\n reader.readAsDataURL(file)\n }\n /**\n * Processes an uploaded file with validation and optional image reduction.\n * SVG files are passed through without modification.\n * Other image types are reduced to max 1024px using ImageBlobReduce.\n *\n * @param file - The file to process\n * @category Utilities\n */\n const handleFile = (file: File) => {\n if (!isValidFileType(file)) {\n console.warn(\n `File type ${file.type} is not allowed. Accepted types: ${acceptedTypes.value.join(', ')}`\n )\n handleInvalidFileType(file.type, acceptedTypes.value)\n return\n }\n if (file.type.includes('svg') || file.name.toLowerCase().endsWith('.svg')) {\n return handleUpdateModelValueFromFile(file)\n }\n if (handlingFile.value) return\n handlingFile.value = true\n reduce\n .toBlob(file, {\n max: 1024,\n })\n .then((reducedBlob) => {\n handleUpdateModelValueFromFile(reducedBlob)\n })\n }\n /**\n * Handles file input change events from the hidden file input element.\n * Processes all selected files and resets the input value for repeat selections.\n *\n * @param e - The input change event\n * @category Utilities\n */\n const onFileInputFieldChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n if (!target.files || target.files.length === 0) return\n for (const file of target.files) {\n handleFile(file)\n }\n target.value = ''\n }\n /** Reference to the hidden file input element */\n const fileInputField = ref<HTMLInputElement | null>(null)\n /**\n * Opens the native file picker dialog.\n * Uses modern showPicker API when available, falls back to click() method.\n * Prevents action when an image is already set (reserved for future image editor integration).\n *\n * @param e - Optional mouse event to prevent default behavior\n * @category Utilities\n */\n const doOpenFilePicker = (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n e.stopPropagation()\n }\n if (null !== modelValue.value) {\n // If there's already an image, do not open the file picker\n // instead, open the image editor\n } else if (fileInputField.value) {\n if ('showPicker' in HTMLInputElement.prototype) {\n try {\n fileInputField.value.showPicker()\n } catch (error) {\n console.error('Error opening file picker:', error)\n }\n } else {\n fileInputField.value.click()\n }\n } else {\n console.warn('File input field is not available')\n }\n }\n /** Placeholder slot renderer function if provided by parent */\n const placeholderSlot = useSlot<InlineImageFieldSlots, 'placeholder'>('placeholder', slots)\n /**\n * Computed active state for the field.\n * Field is active when base field is active, dragging, or placeholder content exists.\n */\n const isActive = computed<boolean>(() =>\n Boolean(\n baseProps.value.active ||\n isDragging.value ||\n placeholderSlot ||\n placeholder.value ||\n modelValue.value !== null\n )\n )\n useRender(() =>\n h(\n BaseField,\n {\n ...baseProps.value,\n ...baseHooks,\n loading: handlingFile.value || baseProps.value.loading,\n clearable: baseProps.value.clearable && !handlingFile.value && null !== modelValue.value,\n active: isActive.value,\n ...mergeProps(\n {\n style: baseProps.value.style || {},\n },\n {\n style: attrs.style || {},\n },\n {\n style: {\n border: isDragging.value\n ? resolveDropzoneBorder.value\n : resolvedDropzoneInactiveBorder.value,\n },\n }\n ),\n onDrop: (e: DragEvent) => {\n e.preventDefault()\n // e.stopPropagation()\n isDragging.value = false\n if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length) {\n for (const file of e.dataTransfer.files) {\n handleFile(file)\n }\n }\n },\n onDragover: (e: DragEvent) => {\n e.preventDefault()\n // e.stopPropagation()\n if (isFileDrag(e)) {\n if (e.dataTransfer) e.dataTransfer.dropEffect = 'copy'\n isDragging.value = true\n }\n },\n onDragenter: (e: DragEvent) => {\n e.preventDefault()\n // e.stopPropagation()\n if (isFileDrag(e)) {\n isDragging.value = true\n }\n },\n onDragleave: (e: DragEvent) => {\n e.preventDefault()\n // e.stopPropagation()\n isDragging.value = false\n },\n },\n {\n 'clear': baseSlots.clearSlot,\n 'prepend-inner': baseSlots.prependInnerSlot,\n 'append-inner': baseSlots.appendInnerSlot,\n 'label': baseSlots.labelSlot,\n 'loader': baseSlots.loaderSlot,\n 'prepend': baseSlots.prependSlot,\n 'append': baseSlots.appendSlot,\n 'details': baseSlots.detailsSlot,\n 'message': baseSlots.messageSlot,\n 'default': () => [\n h('input', {\n ref: fileInputField,\n type: 'file',\n accept: acceptAttribute.value,\n style: {\n opacity: 0,\n position: 'absolute',\n width: '0.1px',\n height: '0.1px',\n pointerEvents: 'none',\n },\n onChange: onFileInputFieldChange,\n multiple: false,\n }),\n h(\n VHover,\n {},\n {\n default: ({\n isHovering,\n props: hoverBindings,\n }: {\n isHovering: boolean\n props: Record<string, any>\n }) =>\n h(\n 'div',\n {\n ...hoverBindings,\n onClick: doOpenFilePicker,\n style: {\n height: computedHeight.value,\n cursor: isDragging.value ? 'grabbing' : 'pointer',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px',\n position: 'relative',\n },\n },\n [\n h(VImg, {\n src: modelValue.value || undefined,\n aspectRatio: imageAspectRatio.value,\n style: {\n opacity: isHovering || !modelValue.value || isDragging.value ? 0.05 : 1,\n transition: 'opacity 0.3s ease-in-out',\n maxWidth: '100%',\n maxHeight: '100%',\n },\n }),\n h(\n VOverlay,\n {\n contained: true,\n modelValue: (isHovering || !modelValue.value) && !isDragging.value,\n class: ['align-center', 'justify-center'],\n scrim: false,\n persistent: true,\n },\n () =>\n placeholderSlot\n ? placeholderSlot()\n : placeholder.value\n ? h(\n 'label',\n { style: {}, class: ['text-caption'] },\n placeholder.value\n )\n : null\n ),\n ]\n ),\n }\n ),\n ],\n }\n )\n )\n /**\n * Helper to update the isDragging state.\n * Used by global drag handlers to toggle dropzone visual feedback.\n *\n * @param active - True to show drag feedback, false to clear it\n * @category Utilities\n */\n const setDragzoneActive = (active: boolean) => {\n isDragging.value = active\n }\n /**\n * Window dragenter handler for detecting external file drags.\n * Activates dropzone feedback when files are dragged into the browser window.\n * @category Utilities\n */\n const onWindowDragEnter = (e: DragEvent) => {\n if (isFileDrag(e)) {\n e.preventDefault()\n setDragzoneActive(true)\n }\n }\n /**\n * Window dragover handler to maintain drag state and set dropEffect.\n * Must preventDefault to allow drop events to fire.\n * @category Utilities\n */\n const onWindowDragOver = (e: DragEvent) => {\n if (isFileDrag(e)) {\n e.preventDefault()\n if (e.dataTransfer) e.dataTransfer.dropEffect = 'copy'\n setDragzoneActive(true)\n }\n }\n /**\n * Window dragleave handler to clear drag state when leaving the browser window.\n * Checks for null relatedTarget to distinguish window exit from element transitions.\n * @category Utilities\n */\n const onWindowDragLeave = (e: DragEvent) => {\n // When leaving the browser window, relatedTarget is often null\n if ((e as any).relatedTarget === null) {\n setDragzoneActive(false)\n }\n }\n /**\n * Window drop handler to clear drag state after drop.\n * Prevents default to avoid browser navigation to dropped files.\n * @category Utilities\n */\n const onWindowDrop = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragzoneActive(false)\n }\n /**\n * Window dragend handler as a safety net to clear drag state.\n * Fires when drag operation ends, even if drop/dragleave didn't fire.\n * @category Utilities\n */\n const onWindowDragEnd = () => {\n setDragzoneActive(false)\n }\n onMounted(() => {\n window.addEventListener('dragenter', onWindowDragEnter, {\n passive: false,\n } as AddEventListenerOptions)\n window.addEventListener('dragover', onWindowDragOver, {\n passive: false,\n } as AddEventListenerOptions)\n window.addEventListener('dragleave', onWindowDragLeave)\n window.addEventListener('drop', onWindowDrop, { passive: false } as AddEventListenerOptions)\n window.addEventListener('dragend', onWindowDragEnd)\n })\n onBeforeUnmount(() => {\n window.removeEventListener('dragenter', onWindowDragEnter)\n window.removeEventListener('dragover', onWindowDragOver)\n window.removeEventListener('dragleave', onWindowDragLeave)\n window.removeEventListener('drop', onWindowDrop)\n window.removeEventListener('dragend', onWindowDragEnd)\n })\n return {}\n },\n})\n\n/**\n * The public instance type of the InlineImageField component.\n * Merges the component instance with ComponentPublicInstance for proper Vue type compatibility.\n * @interface\n * @category Types\n */\nexport type InlineImageField = ComponentPublicInstanceType<typeof InlineImageField>\n"],"names":["_createElementVNode","_normalizeClass","_normalizeStyle","vIntersect","_createVNode","_withDirectives","_mergeProps","_Fragment","offset","x","y","flipped","axis","overflows","raf","el","vClickOutside","target","onKeydown","_vShow","exports","i","r","n","module","pixelCeil","onmessage","assign","key","utils","processTile","tileOpts","stageEnv","ImageBlobReduce","omit","makeDimensionProps","convertToUnit","acceptedTypes","useRender"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}
1
+ {"version":3,"file":"inline_image_field.mjs","sources":["../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/bindProps.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/deepEqual.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/dom.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/getScrollParent.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/util/isFixedPosition.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VResponsive/VResponsive.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VImg/VImg.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/delay.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VHover/VHover.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/util/point.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/locationStrategies.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/requestNewFrame.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/scrollStrategies.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VMenu/shared.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/useActivator.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/focusTrap.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/display.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/hydration.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/lazy.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/router.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/scopeId.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/stack.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/composables/teleport.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/directives/click-outside/index.js","../node_modules/.pnpm/vuetify@3.11.3_typescript@5.9.3_vite-plugin-vuetify@2.1.2_vue@3.5.25_typescript@5.9.3_/node_modules/vuetify/lib/components/VOverlay/VOverlay.js","../node_modules/.pnpm/image-blob-reduce@4.1.0/node_modules/image-blob-reduce/dist/image-blob-reduce.esm.mjs","../src/inline_image_field.ts"],"sourcesContent":["// Utilities\nimport { eventName, isOn } from \"./helpers.js\";\nconst handlers = new WeakMap();\nexport function bindProps(el, props) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k);\n const handler = handlers.get(el);\n if (props[k] == null) {\n handler?.forEach(v => {\n const [n, fn] = v;\n if (n === name) {\n el.removeEventListener(name, fn);\n handler.delete(v);\n }\n });\n } else if (!handler || ![...handler]?.some(v => v[0] === name && v[1] === props[k])) {\n el.addEventListener(name, props[k]);\n const _handler = handler || new Set();\n _handler.add([name, props[k]]);\n if (!handlers.has(el)) handlers.set(el, _handler);\n }\n } else {\n if (props[k] == null) {\n el.removeAttribute(k);\n } else {\n el.setAttribute(k, props[k]);\n }\n }\n });\n}\nexport function unbindProps(el, props) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k);\n const handler = handlers.get(el);\n handler?.forEach(v => {\n const [n, fn] = v;\n if (n === name) {\n el.removeEventListener(name, fn);\n handler.delete(v);\n }\n });\n } else {\n el.removeAttribute(k);\n }\n });\n}\n//# sourceMappingURL=bindProps.js.map","import { isPrimitive } from \"./helpers.js\";\nfunction updateRecursionCache(a, b, cache, result) {\n if (!cache || isPrimitive(a) || isPrimitive(b)) return;\n const visitedObject = cache.get(a);\n if (visitedObject) {\n visitedObject.set(b, result);\n } else {\n const newCacheItem = new WeakMap();\n newCacheItem.set(b, result);\n cache.set(a, newCacheItem);\n }\n}\nfunction findCachedComparison(a, b, cache) {\n if (!cache || isPrimitive(a) || isPrimitive(b)) return null;\n const r1 = cache.get(a)?.get(b);\n if (typeof r1 === 'boolean') return r1;\n const r2 = cache.get(b)?.get(a);\n if (typeof r2 === 'boolean') return r2;\n return null;\n}\nexport function deepEqual(a, b) {\n let recursionCache = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakMap();\n if (a === b) return true;\n if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {\n // If the values are Date, compare them as timestamps\n return false;\n }\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false;\n }\n const props = Object.keys(a);\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false;\n }\n const cachedComparisonResult = findCachedComparison(a, b, recursionCache);\n if (cachedComparisonResult) {\n return cachedComparisonResult;\n }\n updateRecursionCache(a, b, recursionCache, true);\n return props.every(p => deepEqual(a[p], b[p], recursionCache));\n}\n//# sourceMappingURL=deepEqual.js.map","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot(node) {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode;\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null;\n return document;\n }\n const root = node.getRootNode();\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({\n composed: true\n }) !== document) return null;\n return root;\n}\n//# sourceMappingURL=dom.js.map","export function getScrollParent(el) {\n let includeHidden = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n while (el) {\n if (includeHidden ? isPotentiallyScrollable(el) : hasScrollbar(el)) return el;\n el = el.parentElement;\n }\n return document.scrollingElement;\n}\nexport function getScrollParents(el, stopAt) {\n const elements = [];\n if (stopAt && el && !stopAt.contains(el)) return elements;\n while (el) {\n if (hasScrollbar(el)) elements.push(el);\n if (el === stopAt) break;\n el = el.parentElement;\n }\n return elements;\n}\nexport function hasScrollbar(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n const hasVerticalScrollbar = style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;\n const hasHorizontalScrollbar = style.overflowX === 'scroll' || style.overflowX === 'auto' && el.scrollWidth > el.clientWidth;\n return hasVerticalScrollbar || hasHorizontalScrollbar;\n}\nfunction isPotentiallyScrollable(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n return ['scroll', 'auto'].includes(style.overflowY);\n}\n//# sourceMappingURL=getScrollParent.js.map","export function isFixedPosition(el) {\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n return true;\n }\n el = el.offsetParent;\n }\n return false;\n}\n//# sourceMappingURL=isFixedPosition.js.map","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\";\n// Styles\nimport \"./VResponsive.css\";\n\n// Composables\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.js\"; // Utilities\nimport { computed } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport function useAspectStyles(props) {\n return {\n aspectStyles: computed(() => {\n const ratio = Number(props.aspectRatio);\n return ratio ? {\n paddingBottom: String(1 / ratio * 100) + '%'\n } : undefined;\n })\n };\n}\nexport const makeVResponsiveProps = propsFactory({\n aspectRatio: [String, Number],\n contentClass: null,\n inline: Boolean,\n ...makeComponentProps(),\n ...makeDimensionProps()\n}, 'VResponsive');\nexport const VResponsive = genericComponent()({\n name: 'VResponsive',\n props: makeVResponsiveProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n aspectStyles\n } = useAspectStyles(props);\n const {\n dimensionStyles\n } = useDimension(props);\n useRender(() => _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-responsive', {\n 'v-responsive--inline': props.inline\n }, props.class]),\n \"style\": _normalizeStyle([dimensionStyles.value, props.style])\n }, [_createElementVNode(\"div\", {\n \"class\": \"v-responsive__sizer\",\n \"style\": _normalizeStyle(aspectStyles.value)\n }, null), slots.additional?.(), slots.default && _createElementVNode(\"div\", {\n \"class\": _normalizeClass(['v-responsive__content', props.contentClass])\n }, [slots.default()])]));\n return {};\n }\n});\n//# sourceMappingURL=VResponsive.js.map","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createVNode as _createVNode, Fragment as _Fragment, mergeProps as _mergeProps, withDirectives as _withDirectives } from \"vue\";\n// Styles\nimport \"./VImg.css\";\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from \"../VResponsive/VResponsive.js\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.js\"; // Directives\nimport vIntersect from \"../../directives/intersect/index.js\"; // Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, ref, shallowRef, toRef, vShow, watch, withDirectives } from 'vue';\nimport { convertToUnit, genericComponent, getCurrentInstance, propsFactory, SUPPORTS_INTERSECTION, useRender } from \"../../util/index.js\"; // Types\n// not intended for public use, this is passed in by vuetify-loader\nexport const makeVImgProps = propsFactory({\n absolute: Boolean,\n alt: String,\n cover: Boolean,\n color: String,\n draggable: {\n type: [Boolean, String],\n default: undefined\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined\n })\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: ''\n },\n crossorigin: String,\n referrerpolicy: String,\n srcset: String,\n position: String,\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTransitionProps()\n}, 'VImg');\nexport const VImg = genericComponent()({\n name: 'VImg',\n directives: {\n vIntersect\n },\n props: makeVImgProps(),\n emits: {\n loadstart: value => true,\n load: value => true,\n error: value => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(() => props.color);\n const {\n roundedClasses\n } = useRounded(props);\n const vm = getCurrentInstance('VImg');\n const currentSrc = shallowRef(''); // Set from srcset\n const image = ref();\n const state = shallowRef(props.eager ? 'loading' : 'idle');\n const naturalWidth = shallowRef();\n const naturalHeight = shallowRef();\n const normalisedSrc = computed(() => {\n return props.src && typeof props.src === 'object' ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0)\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0)\n };\n });\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value / naturalHeight.value || 0;\n });\n watch(() => props.src, () => {\n init(state.value !== 'idle');\n });\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value);\n }\n });\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init());\n function init(isIntersecting) {\n if (props.eager && isIntersecting) return;\n if (SUPPORTS_INTERSECTION && !isIntersecting && !props.eager) return;\n state.value = 'loading';\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image();\n lazyImg.src = normalisedSrc.value.lazySrc;\n pollForSize(lazyImg, null);\n }\n if (!normalisedSrc.value.src) return;\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src);\n setTimeout(() => {\n if (vm.isUnmounted) return;\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError();\n }\n if (state.value === 'error') return;\n if (!aspectRatio.value) pollForSize(image.value, null);\n if (state.value === 'loading') onLoad();\n } else {\n if (!aspectRatio.value) pollForSize(image.value);\n getSrc();\n }\n });\n });\n }\n function onLoad() {\n if (vm.isUnmounted) return;\n getSrc();\n pollForSize(image.value);\n state.value = 'loaded';\n emit('load', image.value?.currentSrc || normalisedSrc.value.src);\n }\n function onError() {\n if (vm.isUnmounted) return;\n state.value = 'error';\n emit('error', image.value?.currentSrc || normalisedSrc.value.src);\n }\n function getSrc() {\n const img = image.value;\n if (img) currentSrc.value = img.currentSrc || img.src;\n }\n let timer = -1;\n onBeforeUnmount(() => {\n clearTimeout(timer);\n });\n function pollForSize(img) {\n let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;\n const poll = () => {\n clearTimeout(timer);\n if (vm.isUnmounted) return;\n const {\n naturalHeight: imgHeight,\n naturalWidth: imgWidth\n } = img;\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth;\n naturalHeight.value = imgHeight;\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout);\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1;\n naturalHeight.value = 1;\n }\n };\n poll();\n }\n const containClasses = toRef(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover\n }));\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null;\n const img = _createElementVNode(\"img\", {\n \"class\": _normalizeClass(['v-img__img', containClasses.value]),\n \"style\": {\n objectPosition: props.position\n },\n \"crossorigin\": props.crossorigin,\n \"src\": normalisedSrc.value.src,\n \"srcset\": normalisedSrc.value.srcset,\n \"alt\": props.alt,\n \"referrerpolicy\": props.referrerpolicy,\n \"draggable\": props.draggable,\n \"sizes\": props.sizes,\n \"ref\": image,\n \"onLoad\": onLoad,\n \"onError\": onError\n }, null);\n const sources = slots.sources?.();\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [withDirectives(sources ? _createElementVNode(\"picture\", {\n \"class\": \"v-img__picture\"\n }, [sources, img]) : img, [[vShow, state.value === 'loaded']])]\n });\n };\n const __preloadImage = () => _createVNode(MaybeTransition, {\n \"transition\": props.transition\n }, {\n default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && _createElementVNode(\"img\", {\n \"class\": _normalizeClass(['v-img__img', 'v-img__img--preload', containClasses.value]),\n \"style\": {\n objectPosition: props.position\n },\n \"crossorigin\": props.crossorigin,\n \"src\": normalisedSrc.value.lazySrc,\n \"alt\": props.alt,\n \"referrerpolicy\": props.referrerpolicy,\n \"draggable\": props.draggable\n }, null)]\n });\n const __placeholder = () => {\n if (!slots.placeholder) return null;\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) && _createElementVNode(\"div\", {\n \"class\": \"v-img__placeholder\"\n }, [slots.placeholder()])]\n });\n };\n const __error = () => {\n if (!slots.error) return null;\n return _createVNode(MaybeTransition, {\n \"transition\": props.transition,\n \"appear\": true\n }, {\n default: () => [state.value === 'error' && _createElementVNode(\"div\", {\n \"class\": \"v-img__error\"\n }, [slots.error()])]\n });\n };\n const __gradient = () => {\n if (!props.gradient) return null;\n return _createElementVNode(\"div\", {\n \"class\": \"v-img__gradient\",\n \"style\": {\n backgroundImage: `linear-gradient(${props.gradient})`\n }\n }, null);\n };\n const isBooted = shallowRef(false);\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true;\n });\n });\n stop();\n }\n });\n }\n useRender(() => {\n const responsiveProps = VResponsive.filterProps(props);\n return _withDirectives(_createVNode(VResponsive, _mergeProps({\n \"class\": ['v-img', {\n 'v-img--absolute': props.absolute,\n 'v-img--booting': !isBooted.value\n }, backgroundColorClasses.value, roundedClasses.value, props.class],\n \"style\": [{\n width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)\n }, backgroundColorStyles.value, props.style]\n }, responsiveProps, {\n \"aspectRatio\": aspectRatio.value,\n \"aria-label\": props.alt,\n \"role\": props.alt ? 'img' : undefined\n }), {\n additional: () => _createElementVNode(_Fragment, null, [_createVNode(__image, null, null), _createVNode(__preloadImage, null, null), _createVNode(__gradient, null, null), _createVNode(__placeholder, null, null), _createVNode(__error, null, null)]),\n default: slots.default\n }), [[vIntersect, {\n handler: init,\n options: props.options\n }, null, {\n once: true\n }]]);\n });\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight\n };\n }\n});\n//# sourceMappingURL=VImg.js.map","// Utilities\nimport { defer, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeDelayProps = propsFactory({\n closeDelay: [Number, String],\n openDelay: [Number, String]\n}, 'delay');\nexport function useDelay(props, cb) {\n let clearDelay = () => {};\n function runDelay(isOpening, options) {\n clearDelay?.();\n const delay = isOpening ? props.openDelay : props.closeDelay;\n const normalizedDelay = Math.max(options?.minDelay ?? 0, Number(delay ?? 0));\n return new Promise(resolve => {\n clearDelay = defer(normalizedDelay, () => {\n cb?.(isOpening);\n resolve(isOpening);\n });\n });\n }\n function runOpenDelay() {\n return runDelay(true);\n }\n function runCloseDelay(options) {\n return runDelay(false, options);\n }\n return {\n clearDelay,\n runOpenDelay,\n runCloseDelay\n };\n}\n//# sourceMappingURL=delay.js.map","// Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { genericComponent, propsFactory } from \"../../util/index.js\";\nexport const makeVHoverProps = propsFactory({\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: null\n },\n ...makeDelayProps()\n}, 'VHover');\nexport const VHover = genericComponent()({\n name: 'VHover',\n props: makeVHoverProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isHovering = useProxiedModel(props, 'modelValue');\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => !props.disabled && (isHovering.value = value));\n return () => slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: runOpenDelay,\n onMouseleave: runCloseDelay\n }\n });\n }\n});\n//# sourceMappingURL=VHover.js.map","// Types\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport(point, offset) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y\n };\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement(point, offset) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y\n };\n}\n\n/** Get the difference between two points */\nexport function getOffset(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint(anchor, box) {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const {\n side,\n align\n } = anchor;\n const x = align === 'left' ? 0 : align === 'center' ? box.width / 2 : align === 'right' ? box.width : align;\n const y = side === 'top' ? 0 : side === 'bottom' ? box.height : side;\n return elementToViewport({\n x,\n y\n }, box);\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const {\n side,\n align\n } = anchor;\n const x = side === 'left' ? 0 : side === 'right' ? box.width : side;\n const y = align === 'top' ? 0 : align === 'center' ? box.height / 2 : align === 'bottom' ? box.height : align;\n return elementToViewport({\n x,\n y\n }, box);\n }\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2\n }, box);\n}\n//# sourceMappingURL=point.js.map","// Composables\nimport { useToggleScope } from \"../../composables/toggleScope.js\"; // Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue';\nimport { anchorToPoint, getOffset } from \"./util/point.js\";\nimport { CircularBuffer, clamp, consoleError, convertToUnit, deepEqual, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from \"../../util/index.js\";\nimport { Box, getElementBox, getOverflow, getTargetBox } from \"../../util/box.js\"; // Types\nconst locationStrategies = {\n static: staticLocationStrategy,\n // specific viewport position, usually centered\n connected: connectedLocationStrategy // connected to a certain element\n};\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function],\n default: 'static',\n validator: val => typeof val === 'function' || val in locationStrategies\n },\n location: {\n type: String,\n default: 'bottom'\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: [Number, String, Array],\n stickToTarget: Boolean,\n viewportMargin: {\n type: [Number, String],\n default: 12\n }\n}, 'VOverlay-location-strategies');\nexport function useLocationStrategies(props, data) {\n const contentStyles = ref({});\n const updateLocation = ref();\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset);\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n visualViewport?.removeEventListener('resize', onVisualResize);\n visualViewport?.removeEventListener('scroll', onVisualScroll);\n updateLocation.value = undefined;\n });\n window.addEventListener('resize', onResize, {\n passive: true\n });\n visualViewport?.addEventListener('resize', onVisualResize, {\n passive: true\n });\n visualViewport?.addEventListener('scroll', onVisualScroll, {\n passive: true\n });\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation;\n }\n });\n }\n function onResize(e) {\n updateLocation.value?.(e);\n }\n function onVisualResize(e) {\n updateLocation.value?.(e);\n }\n function onVisualScroll(e) {\n updateLocation.value?.(e);\n }\n return {\n contentStyles,\n updateLocation\n };\n}\nfunction staticLocationStrategy() {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize(el, isRtl) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el);\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0);\n } else {\n contentBox.x -= parseFloat(el.style.left || 0);\n }\n contentBox.y -= parseFloat(el.style.top || 0);\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox;\n}\nfunction connectedLocationStrategy(data, props, contentStyles) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value);\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0\n });\n }\n const {\n preferredAnchor,\n preferredOrigin\n } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value);\n const parsedOrigin = props.origin === 'overlap' ? parsedAnchor : props.origin === 'auto' ? flipSide(parsedAnchor) : parseAnchor(props.origin, data.isRtl.value);\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin)\n };\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin\n };\n }\n });\n const [minWidth, minHeight, maxWidth, maxHeight] = ['minWidth', 'minHeight', 'maxWidth', 'maxHeight'].map(key => {\n return computed(() => {\n const val = parseFloat(props[key]);\n return isNaN(val) ? Infinity : val;\n });\n });\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset;\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat);\n if (offset.length < 2) offset.push(0);\n return offset;\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];\n });\n let observe = false;\n let lastFrame = -1;\n const flipped = new CircularBuffer(4);\n const observer = new ResizeObserver(() => {\n if (!observe) return;\n\n // Detect consecutive frames\n requestAnimationFrame(newTime => {\n if (newTime !== lastFrame) flipped.clear();\n requestAnimationFrame(newNewTime => {\n lastFrame = newNewTime;\n });\n });\n if (flipped.isFull) {\n const values = flipped.values();\n if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {\n // Flipping is causing a container resize loop\n return;\n }\n }\n const result = updateLocation();\n if (result) flipped.push(result.flipped);\n });\n let targetBox = new Box({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n watch(data.target, (newTarget, oldTarget) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget);\n if (!Array.isArray(newTarget)) {\n if (newTarget) observer.observe(newTarget);\n } else if (!deepEqual(newTarget, oldTarget)) {\n updateLocation();\n }\n }, {\n immediate: true\n });\n watch(data.contentEl, (newContentEl, oldContentEl) => {\n if (oldContentEl) observer.unobserve(oldContentEl);\n if (newContentEl) observer.observe(newContentEl);\n }, {\n immediate: true\n });\n onScopeDispose(() => {\n observer.disconnect();\n });\n\n // eslint-disable-next-line max-statements\n function updateLocation() {\n observe = false;\n requestAnimationFrame(() => observe = true);\n if (!data.target.value || !data.contentEl.value) return;\n if (Array.isArray(data.target.value) || data.target.value.offsetParent || data.target.value.getClientRects().length) {\n targetBox = getTargetBox(data.target.value);\n } // Otherwise target element is hidden, use last known value\n\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);\n const scrollParents = getScrollParents(data.contentEl.value);\n const viewportMargin = Number(props.viewportMargin);\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement);\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0);\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0);\n }\n }\n const viewport = scrollParents.reduce((box, el) => {\n const scrollBox = getElementBox(el);\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top)\n });\n }\n return scrollBox;\n }, undefined);\n if (props.stickToTarget) {\n viewport.x += Math.min(viewportMargin, targetBox.x);\n viewport.y += Math.min(viewportMargin, targetBox.y);\n viewport.width = Math.max(viewport.width - viewportMargin * 2, targetBox.x + targetBox.width - viewportMargin);\n viewport.height = Math.max(viewport.height - viewportMargin * 2, targetBox.y + targetBox.height - viewportMargin);\n } else {\n viewport.x += viewportMargin;\n viewport.y += viewportMargin;\n viewport.width -= viewportMargin * 2;\n viewport.height -= viewportMargin * 2;\n }\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value\n };\n function checkOverflow(_placement) {\n const box = new Box(contentBox);\n const targetPoint = anchorToPoint(_placement.anchor, targetBox);\n const contentPoint = anchorToPoint(_placement.origin, box);\n let {\n x,\n y\n } = getOffset(targetPoint, contentPoint);\n switch (_placement.anchor.side) {\n case 'top':\n y -= offset.value[0];\n break;\n case 'bottom':\n y += offset.value[0];\n break;\n case 'left':\n x -= offset.value[0];\n break;\n case 'right':\n x += offset.value[0];\n break;\n }\n switch (_placement.anchor.align) {\n case 'top':\n y -= offset.value[1];\n break;\n case 'bottom':\n y += offset.value[1];\n break;\n case 'left':\n x -= offset.value[1];\n break;\n case 'right':\n x += offset.value[1];\n break;\n }\n box.x += x;\n box.y += y;\n box.width = Math.min(box.width, maxWidth.value);\n box.height = Math.min(box.height, maxHeight.value);\n const overflows = getOverflow(box, viewport);\n return {\n overflows,\n x,\n y\n };\n }\n let x = 0;\n let y = 0;\n const available = {\n x: 0,\n y: 0\n };\n const flipped = {\n x: false,\n y: false\n };\n let resets = -1;\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy');\n break;\n }\n const {\n x: _x,\n y: _y,\n overflows\n } = checkOverflow(placement);\n x += _x;\n y += _y;\n contentBox.x += _x;\n contentBox.y += _y;\n\n // flip\n {\n const axis = getAxis(placement.anchor);\n const hasOverflowX = overflows.x.before || overflows.x.after;\n const hasOverflowY = overflows.y.before || overflows.y.after;\n let reset = false;\n ['x', 'y'].forEach(key => {\n if (key === 'x' && hasOverflowX && !flipped.x || key === 'y' && hasOverflowY && !flipped.y) {\n const newPlacement = {\n anchor: {\n ...placement.anchor\n },\n origin: {\n ...placement.origin\n }\n };\n const flip = key === 'x' ? axis === 'y' ? flipAlign : flipSide : axis === 'y' ? flipSide : flipAlign;\n newPlacement.anchor = flip(newPlacement.anchor);\n newPlacement.origin = flip(newPlacement.origin);\n const {\n overflows: newOverflows\n } = checkOverflow(newPlacement);\n if (newOverflows[key].before <= overflows[key].before && newOverflows[key].after <= overflows[key].after || newOverflows[key].before + newOverflows[key].after < (overflows[key].before + overflows[key].after) / 2) {\n placement = newPlacement;\n reset = flipped[key] = true;\n }\n }\n });\n if (reset) continue;\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n }\n if (overflows.x.after) {\n x -= overflows.x.after;\n contentBox.x -= overflows.x.after;\n }\n if (overflows.y.before) {\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n if (overflows.y.after) {\n y -= overflows.y.after;\n contentBox.y -= overflows.y.after;\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport);\n available.x = viewport.width - overflows.x.before - overflows.x.after;\n available.y = viewport.height - overflows.y.before - overflows.y.after;\n x += overflows.x.before;\n contentBox.x += overflows.x.before;\n y += overflows.y.before;\n contentBox.y += overflows.y.before;\n }\n break;\n }\n const axis = getAxis(placement.anchor);\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))\n });\n return {\n available,\n contentBox,\n flipped\n };\n }\n watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());\n nextTick(() => {\n const result = updateLocation();\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return;\n const {\n available,\n contentBox\n } = result;\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation();\n requestAnimationFrame(() => {\n updateLocation();\n });\n });\n }\n });\n return {\n updateLocation\n };\n}\nfunction pixelRound(val) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio;\n}\nfunction pixelCeil(val) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio;\n}\n//# sourceMappingURL=locationStrategies.js.map","let clean = true;\nconst frames = [];\n\n/**\n * Schedule a task to run in an animation frame on its own\n * This is useful for heavy tasks that may cause jank if all ran together\n */\nexport function requestNewFrame(cb) {\n if (!clean || frames.length) {\n frames.push(cb);\n run();\n } else {\n clean = false;\n cb();\n run();\n }\n}\nlet raf = -1;\nfunction run() {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n const frame = frames.shift();\n if (frame) frame();\n if (frames.length) run();else clean = true;\n });\n}\n//# sourceMappingURL=requestNewFrame.js.map","// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue';\nimport { requestNewFrame } from \"./requestNewFrame.js\";\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from \"../../util/index.js\"; // Types\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy\n};\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function],\n default: 'block',\n validator: val => typeof val === 'function' || val in scrollStrategies\n }\n}, 'VOverlay-scroll-strategies');\nexport function useScrollStrategies(props, data) {\n if (!IN_BROWSER) return;\n let scope;\n watchEffect(async () => {\n scope?.stop();\n if (!(data.isActive.value && props.scrollStrategy)) return;\n scope = effectScope();\n await new Promise(resolve => setTimeout(resolve));\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope);\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope);\n }\n });\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n}\nfunction closeScrollStrategy(data) {\n function onScroll(e) {\n data.isActive.value = false;\n }\n bindScroll(getTargetEl(data.target.value, data.contentEl.value), onScroll);\n}\nfunction blockScrollStrategy(data, props) {\n const offsetParent = data.root.value?.offsetParent;\n const target = getTargetEl(data.target.value, data.contentEl.value);\n const scrollElements = [...new Set([...getScrollParents(target, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);\n if (scrollableParent) {\n data.root.value.classList.add('v-overlay--scroll-blocked');\n }\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft));\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop));\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth));\n }\n el.classList.add('v-overlay-scroll-blocked');\n });\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));\n const scrollBehavior = el.style.scrollBehavior;\n el.style.scrollBehavior = 'auto';\n el.style.removeProperty('--v-body-scroll-x');\n el.style.removeProperty('--v-body-scroll-y');\n el.style.removeProperty('--v-scrollbar-offset');\n el.classList.remove('v-overlay-scroll-blocked');\n el.scrollLeft = -x;\n el.scrollTop = -y;\n el.style.scrollBehavior = scrollBehavior;\n });\n if (scrollableParent) {\n data.root.value.classList.remove('v-overlay--scroll-blocked');\n }\n });\n}\nfunction repositionScrollStrategy(data, props, scope) {\n let slow = false;\n let raf = -1;\n let ric = -1;\n function update(e) {\n requestNewFrame(() => {\n const start = performance.now();\n data.updateLocation.value?.(e);\n const time = performance.now() - start;\n slow = time / (1000 / 60) > 2;\n });\n }\n ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(getTargetEl(data.target.value, data.contentEl.value), e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e);\n });\n });\n } else {\n update(e);\n }\n });\n });\n });\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);\n cancelAnimationFrame(raf);\n });\n}\nfunction getTargetEl(target, contentEl) {\n return Array.isArray(target) ? document.elementsFromPoint(...target).find(el => !contentEl?.contains(el)) : target ?? contentEl;\n}\nfunction bindScroll(el, onScroll) {\n const scrollElements = [document, ...getScrollParents(el)];\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll);\n });\n });\n}\n//# sourceMappingURL=scrollStrategies.js.map","// Types\n\nexport const VMenuSymbol = Symbol.for('vuetify:v-menu');\n//# sourceMappingURL=shared.js.map","// Components\nimport { VMenuSymbol } from \"../VMenu/shared.js\"; // Composables\nimport { makeDelayProps, useDelay } from \"../../composables/delay.js\"; // Utilities\nimport { computed, effectScope, inject, mergeProps, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';\nimport { bindProps, getCurrentInstance, IN_BROWSER, matchesSelector, propsFactory, templateRef, unbindProps } from \"../../util/index.js\"; // Types\nexport const makeActivatorProps = propsFactory({\n target: [String, Object],\n activator: [String, Object],\n activatorProps: {\n type: Object,\n default: () => ({})\n },\n openOnClick: {\n type: Boolean,\n default: undefined\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined\n },\n closeOnContentClick: Boolean,\n ...makeDelayProps()\n}, 'VOverlay-activator');\nexport function useActivator(props, _ref) {\n let {\n isActive,\n isTop,\n contentEl\n } = _ref;\n const vm = getCurrentInstance('useActivator');\n const activatorEl = ref();\n let isHovered = false;\n let isFocused = false;\n let firstEnter = true;\n const openOnFocus = computed(() => props.openOnFocus || props.openOnFocus == null && props.openOnHover);\n const openOnClick = computed(() => props.openOnClick || props.openOnClick == null && !props.openOnHover && !openOnFocus.value);\n const {\n runOpenDelay,\n runCloseDelay\n } = useDelay(props, value => {\n if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused) && !(props.openOnHover && isActive.value && !isTop.value)) {\n if (isActive.value !== value) {\n firstEnter = true;\n }\n isActive.value = value;\n }\n });\n const cursorTarget = ref();\n const availableEvents = {\n onClick: e => {\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY];\n }\n isActive.value = !isActive.value;\n },\n onMouseenter: e => {\n isHovered = true;\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onMouseleave: e => {\n isHovered = false;\n runCloseDelay();\n },\n onFocus: e => {\n if (matchesSelector(e.target, ':focus-visible') === false) return;\n isFocused = true;\n e.stopPropagation();\n activatorEl.value = e.currentTarget || e.target;\n runOpenDelay();\n },\n onBlur: e => {\n isFocused = false;\n e.stopPropagation();\n runCloseDelay({\n minDelay: 1\n });\n }\n };\n const activatorEvents = computed(() => {\n const events = {};\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick;\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter;\n events.onMouseleave = availableEvents.onMouseleave;\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus;\n events.onBlur = availableEvents.onBlur;\n }\n return events;\n });\n const contentEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true;\n runOpenDelay();\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n if (openOnFocus.value) {\n events.onFocusin = e => {\n if (!e.target.matches(':focus-visible')) return;\n isFocused = true;\n runOpenDelay();\n };\n events.onFocusout = () => {\n isFocused = false;\n runCloseDelay({\n minDelay: 1\n });\n };\n }\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null);\n events.onClick = () => {\n isActive.value = false;\n menu?.closeParents();\n };\n }\n return events;\n });\n const scrimEvents = computed(() => {\n const events = {};\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true;\n firstEnter = false;\n runOpenDelay();\n }\n };\n events.onMouseleave = () => {\n isHovered = false;\n runCloseDelay();\n };\n }\n return events;\n });\n watch(isTop, val => {\n if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false;\n }\n });\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined;\n });\n }\n }, {\n flush: 'post'\n });\n const activatorRef = templateRef();\n watchEffect(() => {\n if (!activatorRef.value) return;\n nextTick(() => {\n activatorEl.value = activatorRef.el;\n });\n });\n const targetRef = templateRef();\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;\n if (targetRef.value) return targetRef.el;\n return getTarget(props.target, vm) || activatorEl.value;\n });\n const targetEl = computed(() => {\n return Array.isArray(target.value) ? undefined : target.value;\n });\n let scope;\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope();\n scope.run(() => {\n _useActivator(props, vm, {\n activatorEl,\n activatorEvents\n });\n });\n } else if (scope) {\n scope.stop();\n }\n }, {\n flush: 'post',\n immediate: true\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n return {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n };\n}\nfunction _useActivator(props, vm, _ref2) {\n let {\n activatorEl,\n activatorEvents\n } = _ref2;\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal);\n activator && unbindActivatorProps(activator);\n }\n if (val) {\n nextTick(() => bindActivatorProps());\n }\n }, {\n immediate: true\n });\n watch(() => props.activatorProps, () => {\n bindActivatorProps();\n });\n onScopeDispose(() => {\n unbindActivatorProps();\n });\n function bindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n bindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function unbindActivatorProps() {\n let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();\n let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;\n if (!el) return;\n unbindProps(el, mergeProps(activatorEvents.value, _props));\n }\n function getActivator() {\n let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : props.activator;\n const activator = getTarget(selector, vm);\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined;\n return activatorEl.value;\n }\n}\nfunction getTarget(selector, vm) {\n if (!selector) return;\n let target;\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode;\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode;\n }\n target = el;\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector);\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el;\n } else {\n // HTMLElement | Element | [x, y]\n target = selector;\n }\n return target;\n}\n//# sourceMappingURL=useActivator.js.map","// Utilities\nimport { nextTick, onScopeDispose, toRef, toValue, watch } from 'vue';\nimport { focusableChildren, IN_BROWSER, propsFactory } from \"../util/index.js\"; // Types\n// Types\n// Composables\nexport const makeFocusTrapProps = propsFactory({\n retainFocus: Boolean,\n captureFocus: Boolean,\n /** @deprecated */\n disableInitialFocus: Boolean\n}, 'focusTrap');\nconst registry = new Map();\nlet subscribers = 0;\nfunction onKeydown(e) {\n const activeElement = document.activeElement;\n if (e.key !== 'Tab' || !activeElement) return;\n const parentTraps = Array.from(registry.values()).filter(_ref => {\n let {\n isActive,\n contentEl\n } = _ref;\n return isActive.value && contentEl.value?.contains(activeElement);\n }).map(x => x.contentEl.value);\n let closestTrap;\n let currentParent = activeElement.parentElement;\n while (currentParent) {\n if (parentTraps.includes(currentParent)) {\n closestTrap = currentParent;\n break;\n }\n currentParent = currentParent.parentElement;\n }\n if (!closestTrap) return;\n const focusable = focusableChildren(closestTrap)\n // excluding VListItems with tabindex=\"-2\"\n .filter(x => x.tabIndex >= 0);\n if (!focusable.length) return;\n const active = document.activeElement;\n if (focusable.length === 1 && focusable[0].classList.contains('v-list') && focusable[0].contains(active)) {\n e.preventDefault();\n return;\n }\n const firstElement = focusable[0];\n const lastElement = focusable[focusable.length - 1];\n if (e.shiftKey && (active === firstElement || firstElement.classList.contains('v-list') && firstElement.contains(active))) {\n e.preventDefault();\n lastElement.focus();\n }\n if (!e.shiftKey && (active === lastElement || lastElement.classList.contains('v-list') && lastElement.contains(active))) {\n e.preventDefault();\n firstElement.focus();\n }\n}\nexport function useFocusTrap(props, _ref2) {\n let {\n isActive,\n localTop,\n activatorEl,\n contentEl\n } = _ref2;\n const trapId = Symbol('trap');\n let focusTrapSuppressed = false;\n let focusTrapSuppressionTimeout = -1;\n async function onPointerdown() {\n focusTrapSuppressed = true;\n focusTrapSuppressionTimeout = window.setTimeout(() => {\n focusTrapSuppressed = false;\n }, 100);\n }\n async function captureOnFocus(e) {\n const before = e.relatedTarget;\n const after = e.target;\n document.removeEventListener('pointerdown', onPointerdown);\n document.removeEventListener('keydown', captureOnKeydown);\n await nextTick();\n if (isActive.value && !focusTrapSuppressed && before !== after && contentEl.value &&\n // We're the menu without open submenus or overlays\n toValue(localTop) &&\n // It isn't the document or the container body\n ![document, contentEl.value].includes(after) &&\n // It isn't inside the container body\n !contentEl.value.contains(after)) {\n const focusable = focusableChildren(contentEl.value);\n focusable[0]?.focus();\n }\n }\n function captureOnKeydown(e) {\n if (e.key !== 'Tab') return;\n document.removeEventListener('keydown', captureOnKeydown);\n if (isActive.value && contentEl.value && e.target && !contentEl.value.contains(e.target)) {\n const allFocusableElements = focusableChildren(document.documentElement);\n if (e.shiftKey && e.target === allFocusableElements.at(0) || !e.shiftKey && e.target === allFocusableElements.at(-1)) {\n const focusable = focusableChildren(contentEl.value);\n if (focusable.length > 0) {\n e.preventDefault();\n focusable[0].focus();\n }\n }\n }\n }\n const shouldCapture = toRef(() => isActive.value && props.captureFocus && !props.disableInitialFocus);\n if (IN_BROWSER) {\n watch(() => props.retainFocus, val => {\n if (val) {\n registry.set(trapId, {\n isActive,\n contentEl\n });\n } else {\n registry.delete(trapId);\n }\n }, {\n immediate: true\n });\n watch(shouldCapture, val => {\n if (val) {\n document.addEventListener('pointerdown', onPointerdown);\n document.addEventListener('focusin', captureOnFocus, {\n once: true\n });\n document.addEventListener('keydown', captureOnKeydown);\n } else {\n document.removeEventListener('pointerdown', onPointerdown);\n document.removeEventListener('focusin', captureOnFocus);\n document.removeEventListener('keydown', captureOnKeydown);\n }\n }, {\n immediate: true\n });\n if (subscribers++ < 1) {\n document.addEventListener('keydown', onKeydown);\n }\n }\n onScopeDispose(() => {\n registry.delete(trapId);\n clearTimeout(focusTrapSuppressionTimeout);\n document.removeEventListener('pointerdown', onPointerdown);\n document.removeEventListener('focusin', captureOnFocus);\n document.removeEventListener('keydown', captureOnKeydown);\n if (--subscribers < 1) {\n document.removeEventListener('keydown', onKeydown);\n }\n });\n}\n//# sourceMappingURL=focusTrap.js.map","// Utilities\nimport { computed, inject, onScopeDispose, reactive, shallowRef, toRef, toRefs, watchEffect } from 'vue';\nimport { getCurrentInstanceName, mergeDeep, propsFactory } from \"../util/index.js\";\nimport { IN_BROWSER, SUPPORTS_TOUCH } from \"../util/globals.js\"; // Types\nexport const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs\n\nexport const DisplaySymbol = Symbol.for('vuetify:display');\nconst defaultDisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n }\n};\nconst parseDisplayOptions = function () {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;\n return mergeDeep(defaultDisplayOptions, options);\n};\nfunction getClientWidth(ssr) {\n return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;\n}\nfunction getClientHeight(ssr) {\n return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;\n}\nfunction getPlatform(ssr) {\n const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : 'ssr';\n function match(regexp) {\n return Boolean(userAgent.match(regexp));\n }\n const android = match(/android/i);\n const ios = match(/iphone|ipad|ipod/i);\n const cordova = match(/cordova/i);\n const electron = match(/electron/i);\n const chrome = match(/chrome/i);\n const edge = match(/edge/i);\n const firefox = match(/firefox/i);\n const opera = match(/opera/i);\n const win = match(/win/i);\n const mac = match(/mac/i);\n const linux = match(/linux/i);\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr'\n };\n}\nexport function createDisplay(options, ssr) {\n const {\n thresholds,\n mobileBreakpoint\n } = parseDisplayOptions(options);\n const height = shallowRef(getClientHeight(ssr));\n const platform = shallowRef(getPlatform(ssr));\n const state = reactive({});\n const width = shallowRef(getClientWidth(ssr));\n function updateSize() {\n height.value = getClientHeight();\n width.value = getClientWidth();\n }\n function update() {\n updateSize();\n platform.value = getPlatform();\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm;\n const sm = width.value < thresholds.md && !xs;\n const md = width.value < thresholds.lg && !(sm || xs);\n const lg = width.value < thresholds.xl && !(md || sm || xs);\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);\n const xxl = width.value >= thresholds.xxl;\n const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];\n const mobile = width.value < breakpointValue;\n state.xs = xs;\n state.sm = sm;\n state.md = md;\n state.lg = lg;\n state.xl = xl;\n state.xxl = xxl;\n state.smAndUp = !xs;\n state.mdAndUp = !(xs || sm);\n state.lgAndUp = !(xs || sm || md);\n state.xlAndUp = !(xs || sm || md || lg);\n state.smAndDown = !(md || lg || xl || xxl);\n state.mdAndDown = !(lg || xl || xxl);\n state.lgAndDown = !(xl || xxl);\n state.xlAndDown = !xxl;\n state.name = name;\n state.height = height.value;\n state.width = width.value;\n state.mobile = mobile;\n state.mobileBreakpoint = mobileBreakpoint;\n state.platform = platform.value;\n state.thresholds = thresholds;\n });\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, {\n passive: true\n });\n onScopeDispose(() => {\n window.removeEventListener('resize', updateSize);\n }, true);\n }\n return {\n ...toRefs(state),\n update,\n ssr: !!ssr\n };\n}\nexport const makeDisplayProps = propsFactory({\n mobile: {\n type: Boolean,\n default: false\n },\n mobileBreakpoint: [Number, String]\n}, 'display');\nexport function useDisplay() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n mobile: null\n };\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const display = inject(DisplaySymbol);\n if (!display) throw new Error('Could not find Vuetify display injection');\n const mobile = computed(() => {\n if (props.mobile) {\n return true;\n } else if (typeof props.mobileBreakpoint === 'number') {\n return display.width.value < props.mobileBreakpoint;\n } else if (props.mobileBreakpoint) {\n return display.width.value < display.thresholds.value[props.mobileBreakpoint];\n } else if (props.mobile === null) {\n return display.mobile.value;\n } else {\n return false;\n }\n });\n const displayClasses = toRef(() => {\n if (!name) return {};\n return {\n [`${name}--mobile`]: mobile.value\n };\n });\n return {\n ...display,\n displayClasses,\n mobile\n };\n}\n//# sourceMappingURL=display.js.map","// Composables\nimport { useDisplay } from \"./display.js\"; // Utilities\nimport { onMounted, shallowRef } from 'vue';\nimport { IN_BROWSER } from \"../util/index.js\";\nexport function useHydration() {\n if (!IN_BROWSER) return shallowRef(false);\n const {\n ssr\n } = useDisplay();\n if (ssr) {\n const isMounted = shallowRef(false);\n onMounted(() => {\n isMounted.value = true;\n });\n return isMounted;\n } else {\n return shallowRef(true);\n }\n}\n//# sourceMappingURL=hydration.js.map","// Utilities\nimport { shallowRef, toRef, watch } from 'vue';\nimport { propsFactory } from \"../util/index.js\"; // Types\nexport const makeLazyProps = propsFactory({\n eager: Boolean\n}, 'lazy');\nexport function useLazy(props, active) {\n const isBooted = shallowRef(false);\n const hasContent = toRef(() => isBooted.value || props.eager || active.value);\n watch(active, () => isBooted.value = true);\n function onAfterLeave() {\n if (!props.eager) isBooted.value = false;\n }\n return {\n isBooted,\n hasContent,\n onAfterLeave\n };\n}\n//# sourceMappingURL=lazy.js.map","// Utilities\nimport { computed, nextTick, onScopeDispose, reactive, resolveDynamicComponent, toRef } from 'vue';\nimport { deepEqual, getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from \"../util/index.js\"; // Types\nexport function useRoute() {\n const vm = getCurrentInstance('useRoute');\n return computed(() => vm?.proxy?.$route);\n}\nexport function useRouter() {\n return getCurrentInstance('useRouter')?.proxy?.$router;\n}\nexport function useLink(props, attrs) {\n const RouterLink = resolveDynamicComponent('RouterLink');\n const isLink = toRef(() => !!(props.href || props.to));\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');\n });\n if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {\n const href = toRef(() => props.href);\n return {\n isLink,\n isRouterLink: toRef(() => false),\n isClickable,\n href,\n linkProps: reactive({\n href\n })\n };\n }\n\n // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined\n const routerLink = RouterLink.useLink({\n to: toRef(() => props.to || ''),\n replace: toRef(() => props.replace)\n });\n // Actual link needs to be undefined when to prop is not used\n const link = computed(() => props.to ? routerLink : undefined);\n const route = useRoute();\n const isActive = computed(() => {\n if (!link.value) return false;\n if (!props.exact) return link.value.isActive?.value ?? false;\n if (!route.value) return link.value.isExactActive?.value ?? false;\n return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);\n });\n const href = computed(() => props.to ? link.value?.route.value.href : props.href);\n const isRouterLink = toRef(() => !!props.to);\n return {\n isLink,\n isRouterLink,\n isClickable,\n isActive,\n route: link.value?.route,\n navigate: link.value?.navigate,\n href,\n linkProps: reactive({\n href,\n 'aria-current': toRef(() => isActive.value ? 'page' : undefined),\n 'aria-disabled': toRef(() => props.disabled && isLink.value ? 'true' : undefined),\n tabindex: toRef(() => props.disabled && isLink.value ? '-1' : undefined)\n })\n };\n}\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object],\n exact: Boolean\n}, 'router');\nlet inTransition = false;\nexport function useBackButton(router, cb) {\n let popped = false;\n let removeBefore;\n let removeAfter;\n if (IN_BROWSER && router?.beforeEach) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate);\n removeBefore = router.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next());\n } else {\n popped ? cb(next) : next();\n }\n inTransition = true;\n });\n removeAfter = router?.afterEach(() => {\n inTransition = false;\n });\n });\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate);\n removeBefore?.();\n removeAfter?.();\n });\n }\n function onPopstate(e) {\n if (e.state?.replaced) return;\n popped = true;\n setTimeout(() => popped = false);\n }\n}\n//# sourceMappingURL=router.js.map","// Utilities\nimport { getCurrentInstance } from \"../util/index.js\";\nexport function useScopeId() {\n const vm = getCurrentInstance('useScopeId');\n const scopeId = vm.vnode.scopeId;\n return {\n scopeId: scopeId ? {\n [scopeId]: ''\n } : undefined\n };\n}\n//# sourceMappingURL=scopeId.js.map","// Composables\nimport { useToggleScope } from \"./toggleScope.js\"; // Utilities\nimport { inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, toRef, toValue, watchEffect } from 'vue';\nimport { getCurrentInstance } from \"../util/index.js\"; // Types\nconst StackSymbol = Symbol.for('vuetify:stack');\nconst globalStack = reactive([]);\nexport function useStack(isActive, zIndex, disableGlobalStack) {\n const vm = getCurrentInstance('useStack');\n const createStackEntry = !disableGlobalStack;\n const parent = inject(StackSymbol, undefined);\n const stack = reactive({\n activeChildren: new Set()\n });\n provide(StackSymbol, stack);\n const _zIndex = shallowRef(Number(toValue(zIndex)));\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1];\n _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(toValue(zIndex));\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value]);\n }\n parent?.activeChildren.add(vm.uid);\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid);\n globalStack.splice(idx, 1);\n }\n parent?.activeChildren.delete(vm.uid);\n });\n });\n const globalTop = shallowRef(true);\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid;\n setTimeout(() => globalTop.value = _isTop);\n });\n }\n const localTop = toRef(() => !stack.activeChildren.size);\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: toRef(() => ({\n zIndex: _zIndex.value\n }))\n };\n}\n//# sourceMappingURL=stack.js.map","// Utilities\nimport { computed, warn } from 'vue';\nimport { IN_BROWSER } from \"../util/index.js\";\nexport function useTeleport(target) {\n const teleportTarget = computed(() => {\n const _target = target();\n if (_target === true || !IN_BROWSER) return undefined;\n const targetElement = _target === false ? document.body : typeof _target === 'string' ? document.querySelector(_target) : _target;\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`);\n return undefined;\n }\n let container = [...targetElement.children].find(el => el.matches('.v-overlay-container'));\n if (!container) {\n container = document.createElement('div');\n container.className = 'v-overlay-container';\n targetElement.appendChild(container);\n }\n return container;\n });\n return {\n teleportTarget\n };\n}\n//# sourceMappingURL=teleport.js.map","// Utilities\nimport { attachedRoot } from \"../../util/index.js\"; // Types\nfunction defaultConditional() {\n return true;\n}\nfunction checkEvent(e, el, binding) {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false;\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot && root.host === e.target) return false;\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = (typeof binding.value === 'object' && binding.value.include || (() => []))();\n // Add the root element for the component this directive was defined on\n elements.push(el);\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target));\n}\nfunction checkIsActive(e, binding) {\n const isActive = typeof binding.value === 'object' && binding.value.closeConditional || defaultConditional;\n return isActive(e);\n}\nfunction directive(e, el, binding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;\n\n // Clicks in the Shadow DOM change their target while using setTimeout, so the original target is saved here\n e.shadowTarget = e.target;\n el._clickOutside.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e);\n }, 0);\n}\nfunction handleShadow(el, callback) {\n const root = attachedRoot(el);\n callback(document);\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root);\n }\n}\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted(el, binding) {\n const onClick = e => directive(e, el, binding);\n const onMousedown = e => {\n el._clickOutside.lastMousedownWasOutside = checkEvent(e, el, binding);\n };\n handleShadow(el, app => {\n app.addEventListener('click', onClick, true);\n app.addEventListener('mousedown', onMousedown, true);\n });\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: false\n };\n }\n el._clickOutside[binding.instance.$.uid] = {\n onClick,\n onMousedown\n };\n },\n beforeUnmount(el, binding) {\n if (!el._clickOutside) return;\n handleShadow(el, app => {\n if (!app || !el._clickOutside?.[binding.instance.$.uid]) return;\n const {\n onClick,\n onMousedown\n } = el._clickOutside[binding.instance.$.uid];\n app.removeEventListener('click', onClick, true);\n app.removeEventListener('mousedown', onMousedown, true);\n });\n delete el._clickOutside[binding.instance.$.uid];\n }\n};\nexport default ClickOutside;\n//# sourceMappingURL=index.js.map","import { mergeProps as _mergeProps, createElementVNode as _createElementVNode, createVNode as _createVNode, Fragment as _Fragment, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\n// Styles\nimport \"./VOverlay.css\";\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from \"./locationStrategies.js\";\nimport { makeScrollStrategyProps, useScrollStrategies } from \"./scrollStrategies.js\";\nimport { makeActivatorProps, useActivator } from \"./useActivator.js\";\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.js\";\nimport { makeFocusTrapProps, useFocusTrap } from \"../../composables/focusTrap.js\";\nimport { useHydration } from \"../../composables/hydration.js\";\nimport { makeLazyProps, useLazy } from \"../../composables/lazy.js\";\nimport { useRtl } from \"../../composables/locale.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\";\nimport { useBackButton, useRouter } from \"../../composables/router.js\";\nimport { useScopeId } from \"../../composables/scopeId.js\";\nimport { useStack } from \"../../composables/stack.js\";\nimport { useTeleport } from \"../../composables/teleport.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\";\nimport { useToggleScope } from \"../../composables/toggleScope.js\";\nimport { makeTransitionProps, MaybeTransition } from \"../../composables/transition.js\"; // Directives\nimport vClickOutside from \"../../directives/click-outside/index.js\"; // Utilities\nimport { computed, mergeProps, onBeforeUnmount, ref, Teleport, Transition, watch } from 'vue';\nimport { animate, convertToUnit, genericComponent, getCurrentInstance, getScrollParent, IN_BROWSER, omit, propsFactory, standardEasing, useRender } from \"../../util/index.js\"; // Types\nfunction Scrim(props) {\n const {\n modelValue,\n color,\n ...rest\n } = props;\n return _createVNode(Transition, {\n \"name\": \"fade-transition\",\n \"appear\": true\n }, {\n default: () => [props.modelValue && _createElementVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay__scrim', props.color.backgroundColorClasses.value],\n \"style\": props.color.backgroundColorStyles.value\n }, rest), null)]\n });\n}\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object],\n closeOnBack: {\n type: Boolean,\n default: true\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true\n },\n zIndex: {\n type: [Number, String],\n default: 2000\n },\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeFocusTrapProps(),\n ...makeThemeProps(),\n ...makeTransitionProps()\n}, 'VOverlay');\nexport const VOverlay = genericComponent()({\n name: 'VOverlay',\n directives: {\n vClickOutside\n },\n inheritAttrs: false,\n props: {\n _disableGlobalStack: Boolean,\n ...omit(makeVOverlayProps(), ['disableInitialFocus'])\n },\n emits: {\n 'click:outside': e => true,\n 'update:modelValue': value => true,\n keydown: e => true,\n afterEnter: () => true,\n afterLeave: () => true\n },\n setup(props, _ref) {\n let {\n slots,\n attrs,\n emit\n } = _ref;\n const vm = getCurrentInstance('VOverlay');\n const root = ref();\n const scrimEl = ref();\n const contentEl = ref();\n const model = useProxiedModel(props, 'modelValue');\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v;\n }\n });\n const {\n themeClasses\n } = provideTheme(props);\n const {\n rtlClasses,\n isRtl\n } = useRtl();\n const {\n hasContent,\n onAfterLeave: _onAfterLeave\n } = useLazy(props, isActive);\n const scrimColor = useBackgroundColor(() => {\n return typeof props.scrim === 'string' ? props.scrim : null;\n });\n const {\n globalTop,\n localTop,\n stackStyles\n } = useStack(isActive, () => props.zIndex, props._disableGlobalStack);\n const {\n activatorEl,\n activatorRef,\n target,\n targetEl,\n targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents\n } = useActivator(props, {\n isActive,\n isTop: localTop,\n contentEl\n });\n const {\n teleportTarget\n } = useTeleport(() => {\n const target = props.attach || props.contained;\n if (target) return target;\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode();\n if (rootNode instanceof ShadowRoot) return rootNode;\n return false;\n });\n const {\n dimensionStyles\n } = useDimension(props);\n const isMounted = useHydration();\n const {\n scopeId\n } = useScopeId();\n watch(() => props.disabled, v => {\n if (v) isActive.value = false;\n });\n const {\n contentStyles,\n updateLocation\n } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive\n });\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n target,\n isActive,\n updateLocation\n });\n function onClickOutside(e) {\n emit('click:outside', e);\n if (!props.persistent) isActive.value = false;else animateClick();\n }\n function closeConditional(e) {\n return isActive.value && localTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || e instanceof MouseEvent && e.shadowTarget === scrimEl.value);\n }\n useFocusTrap(props, {\n isActive,\n localTop,\n contentEl,\n activatorEl\n });\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown);\n } else {\n window.removeEventListener('keydown', onKeydown);\n }\n }, {\n immediate: true\n });\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return;\n window.removeEventListener('keydown', onKeydown);\n });\n function onKeydown(e) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!contentEl.value?.contains(document.activeElement)) {\n emit('keydown', e);\n }\n if (!props.persistent) {\n isActive.value = false;\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus();\n }\n } else animateClick();\n }\n }\n function onKeydownSelf(e) {\n if (e.key === 'Escape' && !globalTop.value) return;\n emit('keydown', e);\n }\n const router = useRouter();\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false);\n if (!props.persistent) isActive.value = false;else animateClick();\n } else {\n next();\n }\n });\n });\n const top = ref();\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value);\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop;\n }\n }\n });\n\n // Add a quick \"bounce\" animation to the content\n function animateClick() {\n if (props.noClickAnimation) return;\n contentEl.value && animate(contentEl.value, [{\n transformOrigin: 'center'\n }, {\n transform: 'scale(1.03)'\n }, {\n transformOrigin: 'center'\n }], {\n duration: 150,\n easing: standardEasing\n });\n }\n function onAfterEnter() {\n emit('afterEnter');\n }\n function onAfterLeave() {\n _onAfterLeave();\n emit('afterLeave');\n }\n useRender(() => _createElementVNode(_Fragment, null, [slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef\n }, activatorEvents.value, props.activatorProps)\n }), isMounted.value && hasContent.value && _createVNode(Teleport, {\n \"disabled\": !teleportTarget.value,\n \"to\": teleportTarget.value\n }, {\n default: () => [_createElementVNode(\"div\", _mergeProps({\n \"class\": ['v-overlay', {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained\n }, themeClasses.value, rtlClasses.value, props.class],\n \"style\": [stackStyles.value, {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value)\n }, props.style],\n \"ref\": root,\n \"onKeydown\": onKeydownSelf\n }, scopeId, attrs), [_createVNode(Scrim, _mergeProps({\n \"color\": scrimColor,\n \"modelValue\": isActive.value && !!props.scrim,\n \"ref\": scrimEl\n }, scrimEvents.value), null), _createVNode(MaybeTransition, {\n \"appear\": true,\n \"persisted\": true,\n \"transition\": props.transition,\n \"target\": target.value,\n \"onAfterEnter\": onAfterEnter,\n \"onAfterLeave\": onAfterLeave\n }, {\n default: () => [_withDirectives(_createElementVNode(\"div\", _mergeProps({\n \"ref\": contentEl,\n \"class\": ['v-overlay__content', props.contentClass],\n \"style\": [dimensionStyles.value, contentStyles.value]\n }, contentEvents.value, props.contentProps), [slots.default?.({\n isActive\n })]), [[_vShow, isActive.value], [vClickOutside, {\n handler: onClickOutside,\n closeConditional,\n include: () => [activatorEl.value]\n }]])]\n })])]\n })]));\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n rootEl: root,\n globalTop,\n localTop,\n updateLocation\n };\n }\n});\n//# sourceMappingURL=VOverlay.js.map","\n/*! image-blob-reduce 4.1.0 https://github.com/nodeca/image-blob-reduce @license MIT */\nfunction commonjsRequire (path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar utils$1 = {};\n\nutils$1.assign = function assign(to) {\n var from;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (Object.prototype.hasOwnProperty.call(from, key)) to[key] = from[key];\n }\n }\n\n return to;\n};\n\n\nfunction pick(from, props) {\n var to = {};\n\n props.forEach(function (key) {\n if (Object.prototype.hasOwnProperty.call(from, key)) to[key] = from[key];\n });\n\n return to;\n}\n\n\nfunction pick_pica_resize_options(from) {\n return pick(from, [\n 'alpha',\n 'unsharpAmount',\n 'unsharpRadius',\n 'unsharpThreshold',\n 'cancelToken'\n ]);\n}\n\n\nutils$1.pick = pick;\nutils$1.pick_pica_resize_options = pick_pica_resize_options;\n\nvar pica$1 = {exports: {}};\n\n/*!\n\npica\nhttps://github.com/nodeca/pica\n\n*/\n\n(function (module, exports) {\n(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof commonjsRequire&&commonjsRequire,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){\n\nvar Multimath = _dereq_('multimath');\n\nvar mm_unsharp_mask = _dereq_('./mm_unsharp_mask');\n\nvar mm_resize = _dereq_('./mm_resize');\n\nfunction MathLib(requested_features) {\n var __requested_features = requested_features || [];\n\n var features = {\n js: __requested_features.indexOf('js') >= 0,\n wasm: __requested_features.indexOf('wasm') >= 0\n };\n Multimath.call(this, features);\n this.features = {\n js: features.js,\n wasm: features.wasm && this.has_wasm()\n };\n this.use(mm_unsharp_mask);\n this.use(mm_resize);\n}\n\nMathLib.prototype = Object.create(Multimath.prototype);\nMathLib.prototype.constructor = MathLib;\n\nMathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {\n var result = this.resize(options, cache);\n\n if (options.unsharpAmount) {\n this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);\n }\n\n return result;\n};\n\nmodule.exports = MathLib;\n\n},{\"./mm_resize\":4,\"./mm_unsharp_mask\":9,\"multimath\":19}],2:[function(_dereq_,module,exports){\n//var FIXED_FRAC_BITS = 14;\n\nfunction clampTo8(i) {\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampNegative(i) {\n return i >= 0 ? i : 0;\n} // Convolve image data in horizontal direction. Can be used for:\n//\n// 1. bitmap with premultiplied alpha\n// 2. bitmap without alpha (all values 255)\n//\n// Notes:\n//\n// - output is transposed\n// - output resolution is ~15 bits per channel(for better precision).\n//\n\n\nfunction convolveHor(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Store 15 bits between passes for better precision\n // Instead of shift to 14 (FIXED_FRAC_BITS), shift to 7 only\n //\n\n\n dest[destOffset + 3] = clampNegative(a >> 7);\n dest[destOffset + 2] = clampNegative(b >> 7);\n dest[destOffset + 1] = clampNegative(g >> 7);\n dest[destOffset] = clampNegative(r >> 7);\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Supplementary method for `convolveHor()`\n//\n\n\nfunction convolveVert(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Sync with premultiplied version for exact result match\n\n\n r >>= 7;\n g >>= 7;\n b >>= 7;\n a >>= 7; // Bring this value back in range + round result.\n //\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14);\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14);\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14);\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14);\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Premultiply & convolve image data in horizontal direction. Can be used for:\n//\n// - Any bitmap data, extracted with `.getImageData()` method (with\n// non-premultiplied alpha)\n//\n// For images without alpha channel this method is slower than `convolveHor()`\n//\n\n\nfunction convolveHorWithPre(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a, alpha;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n alpha = src[srcPtr + 3];\n a = a + filterVal * alpha | 0;\n b = b + filterVal * src[srcPtr + 2] * alpha | 0;\n g = g + filterVal * src[srcPtr + 1] * alpha | 0;\n r = r + filterVal * src[srcPtr] * alpha | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Premultiply is (* alpha / 255).\n // Postpone division for better performance\n\n\n b = b / 255 | 0;\n g = g / 255 | 0;\n r = r / 255 | 0; // Store 15 bits between passes for better precision\n // Instead of shift to 14 (FIXED_FRAC_BITS), shift to 7 only\n //\n\n dest[destOffset + 3] = clampNegative(a >> 7);\n dest[destOffset + 2] = clampNegative(b >> 7);\n dest[destOffset + 1] = clampNegative(g >> 7);\n dest[destOffset] = clampNegative(r >> 7);\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Supplementary method for `convolveHorWithPre()`\n//\n\n\nfunction convolveVertWithPre(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Downscale to leave room for un-premultiply\n\n\n r >>= 7;\n g >>= 7;\n b >>= 7;\n a >>= 7; // Un-premultiply\n\n a = clampTo8(a + (1 << 13) >> 14);\n\n if (a > 0) {\n r = r * 255 / a | 0;\n g = g * 255 / a | 0;\n b = b * 255 / a | 0;\n } // Bring this value back in range + round result.\n // Shift value = FIXED_FRAC_BITS + 7\n //\n\n\n dest[destOffset + 3] = a;\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14);\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14);\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14);\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n}\n\nmodule.exports = {\n convolveHor: convolveHor,\n convolveVert: convolveVert,\n convolveHorWithPre: convolveHorWithPre,\n convolveVertWithPre: convolveVertWithPre\n};\n\n},{}],3:[function(_dereq_,module,exports){\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],4:[function(_dereq_,module,exports){\n\nmodule.exports = {\n name: 'resize',\n fn: _dereq_('./resize'),\n wasm_fn: _dereq_('./resize_wasm'),\n wasm_src: _dereq_('./convolve_wasm_base64')\n};\n\n},{\"./convolve_wasm_base64\":3,\"./resize\":5,\"./resize_wasm\":8}],5:[function(_dereq_,module,exports){\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nvar _require = _dereq_('./convolve'),\n convolveHor = _require.convolveHor,\n convolveVert = _require.convolveVert,\n convolveHorWithPre = _require.convolveHorWithPre,\n convolveVertWithPre = _require.convolveVertWithPre;\n\nfunction hasAlpha(src, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n if (src[ptr] !== 255) return true;\n ptr = ptr + 4 | 0;\n }\n\n return false;\n}\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nmodule.exports = function resize(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0;\n var offsetY = options.offsetY || 0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var filter = typeof options.filter === 'undefined' ? 'mks2013' : options.filter;\n var filtersX = createFilters(filter, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(filter, srcH, destH, scaleY, offsetY);\n var tmp = new Uint16Array(destW * srcH * 4); // Autodetect if alpha channel exists, and use appropriate method\n\n if (hasAlpha(src, srcW, srcH)) {\n convolveHorWithPre(src, tmp, srcW, srcH, destW, filtersX);\n convolveVertWithPre(tmp, dest, srcH, destW, destH, filtersY);\n } else {\n convolveHor(src, tmp, srcW, srcH, destW, filtersX);\n convolveVert(tmp, dest, srcH, destW, destH, filtersY);\n resetAlpha(dest, destW, destH);\n }\n\n return dest;\n};\n\n},{\"./convolve\":2,\"./resize_filter_gen\":6}],6:[function(_dereq_,module,exports){\n\nvar FILTER_INFO = _dereq_('./resize_filter_info'); // Precision of fixed FP values\n\n\nvar FIXED_FRAC_BITS = 14;\n\nfunction toFixedPoint(num) {\n return Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));\n}\n\nmodule.exports = function resizeFilterGen(filter, srcSize, destSize, scale, offset) {\n var filterFunction = FILTER_INFO.filter[filter].fn;\n var scaleInverted = 1.0 / scale;\n var scaleClamped = Math.min(1.0, scale); // For upscale\n // Filter window (averaging interval), scaled to src image\n\n var srcWindow = FILTER_INFO.filter[filter].win / scaleClamped;\n var destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;\n var leftNotEmpty, rightNotEmpty, filterShift, filterSize;\n var maxFilterElementSize = Math.floor((srcWindow + 1) * 2);\n var packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);\n var packedFilterPtr = 0;\n var slowCopy = !packedFilter.subarray || !packedFilter.set; // For each destination pixel calculate source range and built filter values\n\n for (destPixel = 0; destPixel < destSize; destPixel++) {\n // Scaling should be done relative to central pixel point\n srcPixel = (destPixel + 0.5) * scaleInverted + offset;\n srcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));\n srcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));\n filterElementSize = srcLast - srcFirst + 1;\n floatFilter = new Float32Array(filterElementSize);\n fxpFilter = new Int16Array(filterElementSize);\n total = 0.0; // Fill filter values for calculated range\n\n for (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {\n floatVal = filterFunction((pxl + 0.5 - srcPixel) * scaleClamped);\n total += floatVal;\n floatFilter[idx] = floatVal;\n } // Normalize filter, convert to fixed point and accumulate conversion error\n\n\n filterTotal = 0;\n\n for (idx = 0; idx < floatFilter.length; idx++) {\n filterVal = floatFilter[idx] / total;\n filterTotal += filterVal;\n fxpFilter[idx] = toFixedPoint(filterVal);\n } // Compensate normalization error, to minimize brightness drift\n\n\n fxpFilter[destSize >> 1] += toFixedPoint(1.0 - filterTotal); //\n // Now pack filter to useable form\n //\n // 1. Trim heading and tailing zero values, and compensate shitf/length\n // 2. Put all to single array in this format:\n //\n // [ pos shift, data length, value1, value2, value3, ... ]\n //\n\n leftNotEmpty = 0;\n\n while (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) {\n leftNotEmpty++;\n }\n\n if (leftNotEmpty < fxpFilter.length) {\n rightNotEmpty = fxpFilter.length - 1;\n\n while (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) {\n rightNotEmpty--;\n }\n\n filterShift = srcFirst + leftNotEmpty;\n filterSize = rightNotEmpty - leftNotEmpty + 1;\n packedFilter[packedFilterPtr++] = filterShift; // shift\n\n packedFilter[packedFilterPtr++] = filterSize; // size\n\n if (!slowCopy) {\n packedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);\n packedFilterPtr += filterSize;\n } else {\n // fallback for old IE < 11, without subarray/set methods\n for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) {\n packedFilter[packedFilterPtr++] = fxpFilter[idx];\n }\n }\n } else {\n // zero data, write header only\n packedFilter[packedFilterPtr++] = 0; // shift\n\n packedFilter[packedFilterPtr++] = 0; // size\n }\n }\n\n return packedFilter;\n};\n\n},{\"./resize_filter_info\":7}],7:[function(_dereq_,module,exports){\n\nvar filter = {\n // Nearest neibor\n box: {\n win: 0.5,\n fn: function fn(x) {\n if (x < 0) x = -x;\n return x < 0.5 ? 1.0 : 0.0;\n }\n },\n // // Hamming\n hamming: {\n win: 1.0,\n fn: function fn(x) {\n if (x < 0) x = -x;\n\n if (x >= 1.0) {\n return 0.0;\n }\n\n if (x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * (0.54 + 0.46 * Math.cos(xpi / 1.0));\n }\n },\n // Lanczos, win = 2\n lanczos2: {\n win: 2.0,\n fn: function fn(x) {\n if (x < 0) x = -x;\n\n if (x >= 2.0) {\n return 0.0;\n }\n\n if (x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 2.0) / (xpi / 2.0);\n }\n },\n // Lanczos, win = 3\n lanczos3: {\n win: 3.0,\n fn: function fn(x) {\n if (x < 0) x = -x;\n\n if (x >= 3.0) {\n return 0.0;\n }\n\n if (x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 3.0) / (xpi / 3.0);\n }\n },\n // Magic Kernel Sharp 2013, win = 2.5\n // http://johncostella.com/magic/\n mks2013: {\n win: 2.5,\n fn: function fn(x) {\n if (x < 0) x = -x;\n\n if (x >= 2.5) {\n return 0.0;\n }\n\n if (x >= 1.5) {\n return -0.125 * (x - 2.5) * (x - 2.5);\n }\n\n if (x >= 0.5) {\n return 0.25 * (4 * x * x - 11 * x + 7);\n }\n\n return 1.0625 - 1.75 * x * x;\n }\n }\n};\nmodule.exports = {\n filter: filter,\n // Legacy mapping\n f2q: {\n box: 0,\n hamming: 1,\n lanczos2: 2,\n lanczos3: 3\n },\n q2f: ['box', 'hamming', 'lanczos2', 'lanczos3']\n};\n\n},{}],8:[function(_dereq_,module,exports){\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nfunction hasAlpha(src, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n if (src[ptr] !== 255) return true;\n ptr = ptr + 4 | 0;\n }\n\n return false;\n}\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nfunction asUint8Array(src) {\n return new Uint8Array(src.buffer, 0, src.byteLength);\n}\n\nvar IS_LE = true; // should not crash everything on module load in old browsers\n\ntry {\n IS_LE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;\n} catch (__) {}\n\nfunction copyInt16asLE(src, target, target_offset) {\n if (IS_LE) {\n target.set(asUint8Array(src), target_offset);\n return;\n }\n\n for (var ptr = target_offset, i = 0; i < src.length; i++) {\n var data = src[i];\n target[ptr++] = data & 0xFF;\n target[ptr++] = data >> 8 & 0xFF;\n }\n}\n\nmodule.exports = function resize_wasm(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0.0;\n var offsetY = options.offsetY || 0.0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var filter = typeof options.filter === 'undefined' ? 'mks2013' : options.filter;\n var filtersX = createFilters(filter, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(filter, srcH, destH, scaleY, offsetY); // destination is 0 too.\n\n var src_offset = 0;\n var src_size = Math.max(src.byteLength, dest.byteLength); // buffer between convolve passes\n\n var tmp_offset = this.__align(src_offset + src_size);\n\n var tmp_size = srcH * destW * 4 * 2; // 2 bytes per channel\n\n var filtersX_offset = this.__align(tmp_offset + tmp_size);\n\n var filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);\n\n var alloc_bytes = filtersY_offset + filtersY.byteLength;\n\n var instance = this.__instance('resize', alloc_bytes); //\n // Fill memory block with data to process\n //\n\n\n var mem = new Uint8Array(this.__memory.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer); // 32-bit copy is much faster in chrome\n\n var src32 = new Uint32Array(src.buffer);\n mem32.set(src32); // We should guarantee LE bytes order. Filters are not big, so\n // speed difference is not significant vs direct .set()\n\n copyInt16asLE(filtersX, mem, filtersX_offset);\n copyInt16asLE(filtersY, mem, filtersY_offset); // Now call webassembly method\n // emsdk does method names with '_'\n\n var fn = instance.exports.convolveHV || instance.exports._convolveHV;\n\n if (hasAlpha(src, srcW, srcH)) {\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH, 1);\n } else {\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH, 0);\n resetAlpha(dest, destW, destH);\n } //\n // Copy data back to typed array\n //\n // 32-bit copy is much faster in chrome\n\n\n var dest32 = new Uint32Array(dest.buffer);\n dest32.set(new Uint32Array(this.__memory.buffer, 0, destH * destW));\n return dest;\n};\n\n},{\"./resize_filter_gen\":6}],9:[function(_dereq_,module,exports){\n\nmodule.exports = {\n name: 'unsharp_mask',\n fn: _dereq_('./unsharp_mask'),\n wasm_fn: _dereq_('./unsharp_mask_wasm'),\n wasm_src: _dereq_('./unsharp_mask_wasm_base64')\n};\n\n},{\"./unsharp_mask\":10,\"./unsharp_mask_wasm\":11,\"./unsharp_mask_wasm_base64\":12}],10:[function(_dereq_,module,exports){\n\nvar glur_mono16 = _dereq_('glur/mono16');\n\nfunction hsv_v16(img, width, height) {\n var size = width * height;\n var out = new Uint16Array(size);\n var r, g, b, max;\n\n for (var i = 0; i < size; i++) {\n r = img[4 * i];\n g = img[4 * i + 1];\n b = img[4 * i + 2];\n max = r >= g && r >= b ? r : g >= b && g >= r ? g : b;\n out[i] = max << 8;\n }\n\n return out;\n}\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n var v1, v2, vmul;\n var diff, iTimes4;\n\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var brightness = hsv_v16(img, width, height);\n var blured = new Uint16Array(brightness); // copy, because blur modify src\n\n glur_mono16(blured, width, height, radius);\n var amountFp = amount / 100 * 0x1000 + 0.5 | 0;\n var thresholdFp = threshold << 8;\n var size = width * height;\n /* eslint-disable indent */\n\n for (var i = 0; i < size; i++) {\n v1 = brightness[i];\n diff = v1 - blured[i];\n\n if (Math.abs(diff) >= thresholdFp) {\n // add unsharp mask to the brightness channel\n v2 = v1 + (amountFp * diff + 0x800 >> 12); // Both v1 and v2 are within [0.0 .. 255.0] (0000-FF00) range, never going into\n // [255.003 .. 255.996] (FF01-FFFF). This allows to round this value as (x+.5)|0\n // later without overflowing.\n\n v2 = v2 > 0xff00 ? 0xff00 : v2;\n v2 = v2 < 0x0000 ? 0x0000 : v2; // Avoid division by 0. V=0 means rgb(0,0,0), unsharp with unsharpAmount>0 cannot\n // change this value (because diff between colors gets inflated), so no need to verify correctness.\n\n v1 = v1 !== 0 ? v1 : 1; // Multiplying V in HSV model by a constant is equivalent to multiplying each component\n // in RGB by the same constant (same for HSL), see also:\n // https://beesbuzz.biz/code/16-hsv-color-transforms\n\n vmul = (v2 << 12) / v1 | 0; // Result will be in [0..255] range because:\n // - all numbers are positive\n // - r,g,b <= (v1/256)\n // - r,g,b,(v1/256),(v2/256) <= 255\n // So highest this number can get is X*255/X+0.5=255.5 which is < 256 and rounds down.\n\n iTimes4 = i * 4;\n img[iTimes4] = img[iTimes4] * vmul + 0x800 >> 12; // R\n\n img[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 0x800 >> 12; // G\n\n img[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 0x800 >> 12; // B\n }\n }\n};\n\n},{\"glur/mono16\":18}],11:[function(_dereq_,module,exports){\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var pixels = width * height;\n var img_bytes_cnt = pixels * 4;\n var hsv_bytes_cnt = pixels * 2;\n var blur_bytes_cnt = pixels * 2;\n var blur_line_byte_cnt = Math.max(width, height) * 4; // float32 array\n\n var blur_coeffs_byte_cnt = 8 * 4; // float32 array\n\n var img_offset = 0;\n var hsv_offset = img_bytes_cnt;\n var blur_offset = hsv_offset + hsv_bytes_cnt;\n var blur_tmp_offset = blur_offset + blur_bytes_cnt;\n var blur_line_offset = blur_tmp_offset + blur_bytes_cnt;\n var blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;\n\n var instance = this.__instance('unsharp_mask', img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, {\n exp: Math.exp\n }); // 32-bit copy is much faster in chrome\n\n\n var img32 = new Uint32Array(img.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer);\n mem32.set(img32); // HSL\n\n var fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;\n fn(img_offset, hsv_offset, width, height); // BLUR\n\n fn = instance.exports.blurMono16 || instance.exports._blurMono16;\n fn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius); // UNSHARP\n\n fn = instance.exports.unsharp || instance.exports._unsharp;\n fn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold); // 32-bit copy is much faster in chrome\n\n img32.set(new Uint32Array(this.__memory.buffer, 0, pixels));\n};\n\n},{}],12:[function(_dereq_,module,exports){\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],13:[function(_dereq_,module,exports){\n\nvar GC_INTERVAL = 100;\n\nfunction Pool(create, idle) {\n this.create = create;\n this.available = [];\n this.acquired = {};\n this.lastId = 1;\n this.timeoutId = 0;\n this.idle = idle || 2000;\n}\n\nPool.prototype.acquire = function () {\n var _this = this;\n\n var resource;\n\n if (this.available.length !== 0) {\n resource = this.available.pop();\n } else {\n resource = this.create();\n resource.id = this.lastId++;\n\n resource.release = function () {\n return _this.release(resource);\n };\n }\n\n this.acquired[resource.id] = resource;\n return resource;\n};\n\nPool.prototype.release = function (resource) {\n var _this2 = this;\n\n delete this.acquired[resource.id];\n resource.lastUsed = Date.now();\n this.available.push(resource);\n\n if (this.timeoutId === 0) {\n this.timeoutId = setTimeout(function () {\n return _this2.gc();\n }, GC_INTERVAL);\n }\n};\n\nPool.prototype.gc = function () {\n var _this3 = this;\n\n var now = Date.now();\n this.available = this.available.filter(function (resource) {\n if (now - resource.lastUsed > _this3.idle) {\n resource.destroy();\n return false;\n }\n\n return true;\n });\n\n if (this.available.length !== 0) {\n this.timeoutId = setTimeout(function () {\n return _this3.gc();\n }, GC_INTERVAL);\n } else {\n this.timeoutId = 0;\n }\n};\n\nmodule.exports = Pool;\n\n},{}],14:[function(_dereq_,module,exports){\n// min size = 1 can consume large amount of memory\n\nvar MIN_INNER_TILE_SIZE = 2;\n\nmodule.exports = function createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize, destTileBorder) {\n var scaleX = toWidth / fromWidth;\n var scaleY = toHeight / fromHeight; // derived from createRegions equation:\n // innerTileWidth = pixelFloor(srcTileSize * scaleX) - 2 * destTileBorder;\n\n var minScale = (2 * destTileBorder + MIN_INNER_TILE_SIZE + 1) / srcTileSize; // refuse to scale image multiple times by less than twice each time,\n // it could only happen because of invalid options\n\n if (minScale > 0.5) return [[toWidth, toHeight]];\n var stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale)); // no additional resizes are necessary,\n // stageCount can be zero or be negative when enlarging the image\n\n if (stageCount <= 1) return [[toWidth, toHeight]];\n var result = [];\n\n for (var i = 0; i < stageCount; i++) {\n var width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));\n var height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));\n result.push([width, height]);\n }\n\n return result;\n};\n\n},{}],15:[function(_dereq_,module,exports){\n/*\n * pixelFloor and pixelCeil are modified versions of Math.floor and Math.ceil\n * functions which take into account floating point arithmetic errors.\n * Those errors can cause undesired increments/decrements of sizes and offsets:\n * Math.ceil(36 / (36 / 500)) = 501\n * pixelCeil(36 / (36 / 500)) = 500\n */\n\nvar PIXEL_EPSILON = 1e-5;\n\nfunction pixelFloor(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.floor(x);\n}\n\nfunction pixelCeil(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.ceil(x);\n}\n\nmodule.exports = function createRegions(options) {\n var scaleX = options.toWidth / options.width;\n var scaleY = options.toHeight / options.height;\n var innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;\n var innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder; // prevent infinite loop, this should never happen\n\n if (innerTileWidth < 1 || innerTileHeight < 1) {\n throw new Error('Internal error in pica: target tile width/height is too small.');\n }\n\n var x, y;\n var innerX, innerY, toTileWidth, toTileHeight;\n var tiles = [];\n var tile; // we go top-to-down instead of left-to-right to make image displayed from top to\n // doesn in the browser\n\n for (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) {\n for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {\n x = innerX - options.destTileBorder;\n\n if (x < 0) {\n x = 0;\n }\n\n toTileWidth = innerX + innerTileWidth + options.destTileBorder - x;\n\n if (x + toTileWidth >= options.toWidth) {\n toTileWidth = options.toWidth - x;\n }\n\n y = innerY - options.destTileBorder;\n\n if (y < 0) {\n y = 0;\n }\n\n toTileHeight = innerY + innerTileHeight + options.destTileBorder - y;\n\n if (y + toTileHeight >= options.toHeight) {\n toTileHeight = options.toHeight - y;\n }\n\n tile = {\n toX: x,\n toY: y,\n toWidth: toTileWidth,\n toHeight: toTileHeight,\n toInnerX: innerX,\n toInnerY: innerY,\n toInnerWidth: innerTileWidth,\n toInnerHeight: innerTileHeight,\n offsetX: x / scaleX - pixelFloor(x / scaleX),\n offsetY: y / scaleY - pixelFloor(y / scaleY),\n scaleX: scaleX,\n scaleY: scaleY,\n x: pixelFloor(x / scaleX),\n y: pixelFloor(y / scaleY),\n width: pixelCeil(toTileWidth / scaleX),\n height: pixelCeil(toTileHeight / scaleY)\n };\n tiles.push(tile);\n }\n }\n\n return tiles;\n};\n\n},{}],16:[function(_dereq_,module,exports){\n\nfunction objClass(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nmodule.exports.isCanvas = function isCanvas(element) {\n var cname = objClass(element);\n return cname === '[object HTMLCanvasElement]'\n /* browser */\n || cname === '[object OffscreenCanvas]' || cname === '[object Canvas]'\n /* node-canvas */\n ;\n};\n\nmodule.exports.isImage = function isImage(element) {\n return objClass(element) === '[object HTMLImageElement]';\n};\n\nmodule.exports.isImageBitmap = function isImageBitmap(element) {\n return objClass(element) === '[object ImageBitmap]';\n};\n\nmodule.exports.limiter = function limiter(concurrency) {\n var active = 0,\n queue = [];\n\n function roll() {\n if (active < concurrency && queue.length) {\n active++;\n queue.shift()();\n }\n }\n\n return function limit(fn) {\n return new Promise(function (resolve, reject) {\n queue.push(function () {\n fn().then(function (result) {\n resolve(result);\n active--;\n roll();\n }, function (err) {\n reject(err);\n active--;\n roll();\n });\n });\n roll();\n });\n };\n};\n\nmodule.exports.cib_quality_name = function cib_quality_name(num) {\n switch (num) {\n case 0:\n return 'pixelated';\n\n case 1:\n return 'low';\n\n case 2:\n return 'medium';\n }\n\n return 'high';\n};\n\nmodule.exports.cib_support = function cib_support(createCanvas) {\n return Promise.resolve().then(function () {\n if (typeof createImageBitmap === 'undefined') {\n return false;\n }\n\n var c = createCanvas(100, 100);\n return createImageBitmap(c, 0, 0, 100, 100, {\n resizeWidth: 10,\n resizeHeight: 10,\n resizeQuality: 'high'\n }).then(function (bitmap) {\n var status = bitmap.width === 10; // Branch below is filtered on upper level. We do not call resize\n // detection for basic ImageBitmap.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap\n // old Crome 51 has ImageBitmap without .close(). Then this code\n // will throw and return 'false' as expected.\n //\n\n bitmap.close();\n c = null;\n return status;\n });\n })[\"catch\"](function () {\n return false;\n });\n};\n\nmodule.exports.worker_offscreen_canvas_support = function worker_offscreen_canvas_support() {\n return new Promise(function (resolve, reject) {\n if (typeof OffscreenCanvas === 'undefined') {\n // if OffscreenCanvas is present, we assume browser supports Worker and built-in Promise as well\n resolve(false);\n return;\n }\n\n function workerPayload(self) {\n if (typeof createImageBitmap === 'undefined') {\n self.postMessage(false);\n return;\n }\n\n Promise.resolve().then(function () {\n var canvas = new OffscreenCanvas(10, 10); // test that 2d context can be used in worker\n\n var ctx = canvas.getContext('2d');\n ctx.rect(0, 0, 1, 1); // test that cib can be used to return image bitmap from worker\n\n return createImageBitmap(canvas, 0, 0, 1, 1);\n }).then(function () {\n return self.postMessage(true);\n }, function () {\n return self.postMessage(false);\n });\n }\n\n var code = btoa(\"(\".concat(workerPayload.toString(), \")(self);\"));\n var w = new Worker(\"data:text/javascript;base64,\".concat(code));\n\n w.onmessage = function (ev) {\n return resolve(ev.data);\n };\n\n w.onerror = reject;\n }).then(function (result) {\n return result;\n }, function () {\n return false;\n });\n}; // Check if canvas.getContext('2d').getImageData can be used,\n// FireFox randomizes the output of that function in `privacy.resistFingerprinting` mode\n\n\nmodule.exports.can_use_canvas = function can_use_canvas(createCanvas) {\n var usable = false;\n\n try {\n var canvas = createCanvas(2, 1);\n var ctx = canvas.getContext('2d');\n var d = ctx.createImageData(2, 1);\n d.data[0] = 12;\n d.data[1] = 23;\n d.data[2] = 34;\n d.data[3] = 255;\n d.data[4] = 45;\n d.data[5] = 56;\n d.data[6] = 67;\n d.data[7] = 255;\n ctx.putImageData(d, 0, 0);\n d = null;\n d = ctx.getImageData(0, 0, 2, 1);\n\n if (d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255) {\n usable = true;\n }\n } catch (err) {}\n\n return usable;\n}; // Check if createImageBitmap(img, sx, sy, sw, sh) signature works correctly\n// with JPEG images oriented with Exif;\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n// TODO: remove after it's fixed in chrome for at least 2 releases\n\n\nmodule.exports.cib_can_use_region = function cib_can_use_region() {\n return new Promise(function (resolve) {\n if (typeof createImageBitmap === 'undefined') {\n resolve(false);\n return;\n }\n\n var image = new Image();\n image.src = 'data:image/jpeg;base64,' + '/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAA' + 'AABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9' + 'sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRc' + 'ZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoa' + 'GhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRA' + 'f/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAA' + 'IQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAA' + 'AAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIB' + 'AT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAA' + 'AAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAA' + 'AAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQ' + 'QAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z';\n\n image.onload = function () {\n createImageBitmap(image, 0, 0, image.width, image.height).then(function (bitmap) {\n if (bitmap.width === image.width && bitmap.height === image.height) {\n resolve(true);\n } else {\n resolve(false);\n }\n }, function () {\n return resolve(false);\n });\n };\n\n image.onerror = function () {\n return resolve(false);\n };\n });\n};\n\n},{}],17:[function(_dereq_,module,exports){\n\nmodule.exports = function () {\n var MathLib = _dereq_('./mathlib');\n\n var mathLib;\n /* eslint-disable no-undef */\n\n onmessage = function onmessage(ev) {\n var tileOpts = ev.data.opts;\n\n if (!tileOpts.src && tileOpts.srcBitmap) {\n var canvas = new OffscreenCanvas(tileOpts.width, tileOpts.height);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(tileOpts.srcBitmap, 0, 0);\n tileOpts.src = ctx.getImageData(0, 0, tileOpts.width, tileOpts.height).data;\n canvas.width = canvas.height = 0;\n canvas = null;\n tileOpts.srcBitmap.close();\n tileOpts.srcBitmap = null; // Temporary force out data to typed array, because Chrome have artefacts\n // https://github.com/nodeca/pica/issues/223\n // returnBitmap = true;\n }\n\n if (!mathLib) mathLib = new MathLib(ev.data.features); // Use multimath's sync auto-init. Avoid Promise use in old browsers,\n // because polyfills are not propagated to webworker.\n\n var data = mathLib.resizeAndUnsharp(tileOpts);\n\n {\n postMessage({\n data: data\n }, [data.buffer]);\n }\n };\n};\n\n},{\"./mathlib\":1}],18:[function(_dereq_,module,exports){\n// Calculate Gaussian blur of an image using IIR filter\n// The method is taken from Intel's white paper and code example attached to it:\n// https://software.intel.com/en-us/articles/iir-gaussian-blur-filter\n// -implementation-using-intel-advanced-vector-extensions\n\nvar a0, a1, a2, a3, b1, b2, left_corner, right_corner;\n\nfunction gaussCoef(sigma) {\n if (sigma < 0.5) {\n sigma = 0.5;\n }\n\n var a = Math.exp(0.726 * 0.726) / sigma,\n g1 = Math.exp(-a),\n g2 = Math.exp(-2 * a),\n k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);\n\n a0 = k;\n a1 = k * (a - 1) * g1;\n a2 = k * (a + 1) * g1;\n a3 = -k * g2;\n b1 = 2 * g1;\n b2 = -g2;\n left_corner = (a0 + a1) / (1 - b1 - b2);\n right_corner = (a2 + a3) / (1 - b1 - b2);\n\n // Attempt to force type to FP32.\n return new Float32Array([ a0, a1, a2, a3, b1, b2, left_corner, right_corner ]);\n}\n\nfunction convolveMono16(src, out, line, coeff, width, height) {\n // takes src image and writes the blurred and transposed result into out\n\n var prev_src, curr_src, curr_out, prev_out, prev_prev_out;\n var src_index, out_index, line_index;\n var i, j;\n var coeff_a0, coeff_a1, coeff_b1, coeff_b2;\n\n for (i = 0; i < height; i++) {\n src_index = i * width;\n out_index = i;\n line_index = 0;\n\n // left to right\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[6];\n prev_out = prev_prev_out;\n\n coeff_a0 = coeff[0];\n coeff_a1 = coeff[1];\n coeff_b1 = coeff[4];\n coeff_b2 = coeff[5];\n\n for (j = 0; j < width; j++) {\n curr_src = src[src_index];\n\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n prev_src = curr_src;\n\n line[line_index] = prev_out;\n line_index++;\n src_index++;\n }\n\n src_index--;\n line_index--;\n out_index += height * (width - 1);\n\n // right to left\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[7];\n prev_out = prev_prev_out;\n curr_src = prev_src;\n\n coeff_a0 = coeff[2];\n coeff_a1 = coeff[3];\n\n for (j = width - 1; j >= 0; j--) {\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n\n prev_src = curr_src;\n curr_src = src[src_index];\n\n out[out_index] = line[line_index] + prev_out;\n\n src_index--;\n line_index--;\n out_index -= height;\n }\n }\n}\n\n\nfunction blurMono16(src, width, height, radius) {\n // Quick exit on zero radius\n if (!radius) { return; }\n\n var out = new Uint16Array(src.length),\n tmp_line = new Float32Array(Math.max(width, height));\n\n var coeff = gaussCoef(radius);\n\n convolveMono16(src, out, tmp_line, coeff, width, height);\n convolveMono16(out, src, tmp_line, coeff, height, width);\n}\n\nmodule.exports = blurMono16;\n\n},{}],19:[function(_dereq_,module,exports){\n\n\nvar assign = _dereq_('object-assign');\nvar base64decode = _dereq_('./lib/base64decode');\nvar hasWebAssembly = _dereq_('./lib/wa_detect');\n\n\nvar DEFAULT_OPTIONS = {\n js: true,\n wasm: true\n};\n\n\nfunction MultiMath(options) {\n if (!(this instanceof MultiMath)) return new MultiMath(options);\n\n var opts = assign({}, DEFAULT_OPTIONS, options || {});\n\n this.options = opts;\n\n this.__cache = {};\n\n this.__init_promise = null;\n this.__modules = opts.modules || {};\n this.__memory = null;\n this.__wasm = {};\n\n this.__isLE = ((new Uint32Array((new Uint8Array([ 1, 0, 0, 0 ])).buffer))[0] === 1);\n\n if (!this.options.js && !this.options.wasm) {\n throw new Error('mathlib: at least \"js\" or \"wasm\" should be enabled');\n }\n}\n\n\nMultiMath.prototype.has_wasm = hasWebAssembly;\n\n\nMultiMath.prototype.use = function (module) {\n this.__modules[module.name] = module;\n\n // Pin the best possible implementation\n if (this.options.wasm && this.has_wasm() && module.wasm_fn) {\n this[module.name] = module.wasm_fn;\n } else {\n this[module.name] = module.fn;\n }\n\n return this;\n};\n\n\nMultiMath.prototype.init = function () {\n if (this.__init_promise) return this.__init_promise;\n\n if (!this.options.js && this.options.wasm && !this.has_wasm()) {\n return Promise.reject(new Error('mathlib: only \"wasm\" was enabled, but it\\'s not supported'));\n }\n\n var self = this;\n\n this.__init_promise = Promise.all(Object.keys(self.__modules).map(function (name) {\n var module = self.__modules[name];\n\n if (!self.options.wasm || !self.has_wasm() || !module.wasm_fn) return null;\n\n // If already compiled - exit\n if (self.__wasm[name]) return null;\n\n // Compile wasm source\n return WebAssembly.compile(self.__base64decode(module.wasm_src))\n .then(function (m) { self.__wasm[name] = m; });\n }))\n .then(function () { return self; });\n\n return this.__init_promise;\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Methods below are for internal use from plugins\n\n\n// Simple decode base64 to typed array. Useful to load embedded webassembly\n// code. You probably don't need to call this method directly.\n//\nMultiMath.prototype.__base64decode = base64decode;\n\n\n// Increase current memory to include specified number of bytes. Do nothing if\n// size is already ok. You probably don't need to call this method directly,\n// because it will be invoked from `.__instance()`.\n//\nMultiMath.prototype.__reallocate = function mem_grow_to(bytes) {\n if (!this.__memory) {\n this.__memory = new WebAssembly.Memory({\n initial: Math.ceil(bytes / (64 * 1024))\n });\n return this.__memory;\n }\n\n var mem_size = this.__memory.buffer.byteLength;\n\n if (mem_size < bytes) {\n this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));\n }\n\n return this.__memory;\n};\n\n\n// Returns instantinated webassembly item by name, with specified memory size\n// and environment.\n// - use cache if available\n// - do sync module init, if async init was not called earlier\n// - allocate memory if not enougth\n// - can export functions to webassembly via \"env_extra\",\n// for example, { exp: Math.exp }\n//\nMultiMath.prototype.__instance = function instance(name, memsize, env_extra) {\n if (memsize) this.__reallocate(memsize);\n\n // If .init() was not called, do sync compile\n if (!this.__wasm[name]) {\n var module = this.__modules[name];\n this.__wasm[name] = new WebAssembly.Module(this.__base64decode(module.wasm_src));\n }\n\n if (!this.__cache[name]) {\n var env_base = {\n memoryBase: 0,\n memory: this.__memory,\n tableBase: 0,\n table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' })\n };\n\n this.__cache[name] = new WebAssembly.Instance(this.__wasm[name], {\n env: assign(env_base, env_extra || {})\n });\n }\n\n return this.__cache[name];\n};\n\n\n// Helper to calculate memory aligh for pointers. Webassembly does not require\n// this, but you may wish to experiment. Default base = 8;\n//\nMultiMath.prototype.__align = function align(number, base) {\n base = base || 8;\n var reminder = number % base;\n return number + (reminder ? base - reminder : 0);\n};\n\n\nmodule.exports = MultiMath;\n\n},{\"./lib/base64decode\":20,\"./lib/wa_detect\":21,\"object-assign\":22}],20:[function(_dereq_,module,exports){\n\n\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\nmodule.exports = function base64decode(str) {\n var input = str.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length;\n\n var out = new Uint8Array((max * 3) >> 2);\n\n // Collect by 6*4 bits (3 bytes)\n\n var bits = 0;\n var ptr = 0;\n\n for (var idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n }\n\n bits = (bits << 6) | BASE64_MAP.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n var tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n } else if (tailbits === 18) {\n out[ptr++] = (bits >> 10) & 0xFF;\n out[ptr++] = (bits >> 2) & 0xFF;\n } else if (tailbits === 12) {\n out[ptr++] = (bits >> 4) & 0xFF;\n }\n\n return out;\n};\n\n},{}],21:[function(_dereq_,module,exports){\n\n\nvar wa;\n\n\nmodule.exports = function hasWebAssembly() {\n // use cache if called before;\n if (typeof wa !== 'undefined') return wa;\n\n wa = false;\n\n if (typeof WebAssembly === 'undefined') return wa;\n\n // If WebAssenbly is disabled, code can throw on compile\n try {\n // https://github.com/brion/min-wasm-fail/blob/master/min-wasm-fail.in.js\n // Additional check that WA internals are correct\n\n /* eslint-disable comma-spacing, max-len */\n var bin = new Uint8Array([ 0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11 ]);\n var module = new WebAssembly.Module(bin);\n var instance = new WebAssembly.Instance(module, {});\n\n // test storing to and loading from a non-zero location via a parameter.\n // Safari on iOS 11.2.5 returns 0 unexpectedly at non-zero locations\n if (instance.exports.test(4) !== 0) wa = true;\n\n return wa;\n } catch (__) {}\n\n return wa;\n};\n\n},{}],22:[function(_dereq_,module,exports){\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n},{}],23:[function(_dereq_,module,exports){\nvar bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n 'function(require,module,exports){' + fn + '(self); }',\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n\n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n 'function(require,module,exports){' +\n // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);' +\n '}',\n scache\n ];\n\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({'\n + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n var blob = new Blob([src], { type: 'text/javascript' });\n if (options && options.bare) { return blob; }\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n},{}],\"/index.js\":[function(_dereq_,module,exports){\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar assign = _dereq_('object-assign');\n\nvar webworkify = _dereq_('webworkify');\n\nvar MathLib = _dereq_('./lib/mathlib');\n\nvar Pool = _dereq_('./lib/pool');\n\nvar utils = _dereq_('./lib/utils');\n\nvar worker = _dereq_('./lib/worker');\n\nvar createStages = _dereq_('./lib/stepper');\n\nvar createRegions = _dereq_('./lib/tiler');\n\nvar filter_info = _dereq_('./lib/mm_resize/resize_filter_info'); // Deduplicate pools & limiters with the same configs\n// when user creates multiple pica instances.\n\n\nvar singletones = {};\nvar NEED_SAFARI_FIX = false;\n\ntry {\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n NEED_SAFARI_FIX = navigator.userAgent.indexOf('Safari') >= 0;\n }\n} catch (e) {}\n\nvar concurrency = 1;\n\nif (typeof navigator !== 'undefined') {\n concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);\n}\n\nvar DEFAULT_PICA_OPTS = {\n tile: 1024,\n concurrency: concurrency,\n features: ['js', 'wasm', 'ww'],\n idle: 2000,\n createCanvas: function createCanvas(width, height) {\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n return tmpCanvas;\n }\n};\nvar DEFAULT_RESIZE_OPTS = {\n filter: 'mks2013',\n unsharpAmount: 0,\n unsharpRadius: 0.0,\n unsharpThreshold: 0\n};\nvar CAN_NEW_IMAGE_DATA = false;\nvar CAN_CREATE_IMAGE_BITMAP = false;\nvar CAN_USE_CANVAS_GET_IMAGE_DATA = false;\nvar CAN_USE_OFFSCREEN_CANVAS = false;\nvar CAN_USE_CIB_REGION_FOR_IMAGE = false;\n\nfunction workerFabric() {\n return {\n value: webworkify(worker),\n destroy: function destroy() {\n this.value.terminate();\n\n if (typeof window !== 'undefined') {\n var url = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n if (url && url.revokeObjectURL && this.value.objectURL) {\n url.revokeObjectURL(this.value.objectURL);\n }\n }\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// API methods\n\n\nfunction Pica(options) {\n if (!(this instanceof Pica)) return new Pica(options);\n this.options = assign({}, DEFAULT_PICA_OPTS, options || {});\n var limiter_key = \"lk_\".concat(this.options.concurrency); // Share limiters to avoid multiple parallel workers when user creates\n // multiple pica instances.\n\n this.__limit = singletones[limiter_key] || utils.limiter(this.options.concurrency);\n if (!singletones[limiter_key]) singletones[limiter_key] = this.__limit; // List of supported features, according to options & browser/node.js\n\n this.features = {\n js: false,\n // pure JS implementation, can be disabled for testing\n wasm: false,\n // webassembly implementation for heavy functions\n cib: false,\n // resize via createImageBitmap (only FF at this moment)\n ww: false // webworkers\n\n };\n this.__workersPool = null; // Store requested features for webworkers\n\n this.__requested_features = [];\n this.__mathlib = null;\n}\n\nPica.prototype.init = function () {\n var _this = this;\n\n if (this.__initPromise) return this.__initPromise; // Test if we can create ImageData without canvas and memory copy\n\n if (typeof ImageData !== 'undefined' && typeof Uint8ClampedArray !== 'undefined') {\n try {\n /* eslint-disable no-new */\n new ImageData(new Uint8ClampedArray(400), 10, 10);\n CAN_NEW_IMAGE_DATA = true;\n } catch (__) {}\n } // ImageBitmap can be effective in 2 places:\n //\n // 1. Threaded jpeg unpack (basic)\n // 2. Built-in resize (blocked due problem in chrome, see issue #89)\n //\n // For basic use we also need ImageBitmap wo support .close() method,\n // see https://developer.mozilla.org/ru/docs/Web/API/ImageBitmap\n\n\n if (typeof ImageBitmap !== 'undefined') {\n if (ImageBitmap.prototype && ImageBitmap.prototype.close) {\n CAN_CREATE_IMAGE_BITMAP = true;\n } else {\n this.debug('ImageBitmap does not support .close(), disabled');\n }\n }\n\n var features = this.options.features.slice();\n\n if (features.indexOf('all') >= 0) {\n features = ['cib', 'wasm', 'js', 'ww'];\n }\n\n this.__requested_features = features;\n this.__mathlib = new MathLib(features); // Check WebWorker support if requested\n\n if (features.indexOf('ww') >= 0) {\n if (typeof window !== 'undefined' && 'Worker' in window) {\n // IE <= 11 don't allow to create webworkers from string. We should check it.\n // https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11\n try {\n var wkr = _dereq_('webworkify')(function () {});\n\n wkr.terminate();\n this.features.ww = true; // pool uniqueness depends on pool config + webworker config\n\n var wpool_key = \"wp_\".concat(JSON.stringify(this.options));\n\n if (singletones[wpool_key]) {\n this.__workersPool = singletones[wpool_key];\n } else {\n this.__workersPool = new Pool(workerFabric, this.options.idle);\n singletones[wpool_key] = this.__workersPool;\n }\n } catch (__) {}\n }\n }\n\n var initMath = this.__mathlib.init().then(function (mathlib) {\n // Copy detected features\n assign(_this.features, mathlib.features);\n });\n\n var checkCibResize;\n\n if (!CAN_CREATE_IMAGE_BITMAP) {\n checkCibResize = Promise.resolve(false);\n } else {\n checkCibResize = utils.cib_support(this.options.createCanvas).then(function (status) {\n if (_this.features.cib && features.indexOf('cib') < 0) {\n _this.debug('createImageBitmap() resize supported, but disabled by config');\n\n return;\n }\n\n if (features.indexOf('cib') >= 0) _this.features.cib = status;\n });\n }\n\n CAN_USE_CANVAS_GET_IMAGE_DATA = utils.can_use_canvas(this.options.createCanvas);\n var checkOffscreenCanvas;\n\n if (CAN_CREATE_IMAGE_BITMAP && CAN_NEW_IMAGE_DATA && features.indexOf('ww') !== -1) {\n checkOffscreenCanvas = utils.worker_offscreen_canvas_support();\n } else {\n checkOffscreenCanvas = Promise.resolve(false);\n }\n\n checkOffscreenCanvas = checkOffscreenCanvas.then(function (result) {\n CAN_USE_OFFSCREEN_CANVAS = result;\n }); // we use createImageBitmap to crop image data and pass it to workers,\n // so need to check whether function works correctly;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n\n var checkCibRegion = utils.cib_can_use_region().then(function (result) {\n CAN_USE_CIB_REGION_FOR_IMAGE = result;\n }); // Init math lib. That's async because can load some\n\n this.__initPromise = Promise.all([initMath, checkCibResize, checkOffscreenCanvas, checkCibRegion]).then(function () {\n return _this;\n });\n return this.__initPromise;\n}; // Call resizer in webworker or locally, depending on config\n\n\nPica.prototype.__invokeResize = function (tileOpts, opts) {\n var _this2 = this;\n\n // Share cache between calls:\n //\n // - wasm instance\n // - wasm memory object\n //\n opts.__mathCache = opts.__mathCache || {};\n return Promise.resolve().then(function () {\n if (!_this2.features.ww) {\n // not possible to have ImageBitmap here if user disabled WW\n return {\n data: _this2.__mathlib.resizeAndUnsharp(tileOpts, opts.__mathCache)\n };\n }\n\n return new Promise(function (resolve, reject) {\n var w = _this2.__workersPool.acquire();\n\n if (opts.cancelToken) opts.cancelToken[\"catch\"](function (err) {\n return reject(err);\n });\n\n w.value.onmessage = function (ev) {\n w.release();\n if (ev.data.err) reject(ev.data.err);else resolve(ev.data);\n };\n\n var transfer = [];\n if (tileOpts.src) transfer.push(tileOpts.src.buffer);\n if (tileOpts.srcBitmap) transfer.push(tileOpts.srcBitmap);\n w.value.postMessage({\n opts: tileOpts,\n features: _this2.__requested_features,\n preload: {\n wasm_nodule: _this2.__mathlib.__\n }\n }, transfer);\n });\n });\n}; // this function can return promise if createImageBitmap is used\n\n\nPica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extractTo) {\n if (this.features.ww && CAN_USE_OFFSCREEN_CANVAS && ( // createImageBitmap doesn't work for images (Image, ImageBitmap) with Exif orientation in Chrome,\n // can use canvas because canvas doesn't have orientation;\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n utils.isCanvas(from) || CAN_USE_CIB_REGION_FOR_IMAGE)) {\n this.debug('Create tile for OffscreenCanvas');\n return createImageBitmap(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height).then(function (bitmap) {\n extractTo.srcBitmap = bitmap;\n return extractTo;\n });\n } // Extract tile RGBA buffer, depending on input type\n\n\n if (utils.isCanvas(from)) {\n if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d'); // If input is Canvas - extract region data directly\n\n this.debug('Get tile pixel data');\n extractTo.src = stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data;\n return extractTo;\n } // If input is Image or decoded to ImageBitmap,\n // draw region to temporary canvas and extract data from it\n //\n // Note! Attempt to reuse this canvas causes significant slowdown in chrome\n //\n\n\n this.debug('Draw tile imageBitmap/image to temporary canvas');\n var tmpCanvas = this.options.createCanvas(tile.width, tile.height);\n var tmpCtx = tmpCanvas.getContext('2d');\n tmpCtx.globalCompositeOperation = 'copy';\n tmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n this.debug('Get tile pixel data');\n extractTo.src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data; // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n return extractTo;\n};\n\nPica.prototype.__landTileData = function (tile, result, stageEnv) {\n var toImageData;\n this.debug('Convert raw rgba tile result to ImageData');\n\n if (result.bitmap) {\n stageEnv.toCtx.drawImage(result.bitmap, tile.toX, tile.toY);\n return null;\n }\n\n if (CAN_NEW_IMAGE_DATA) {\n // this branch is for modern browsers\n // If `new ImageData()` & Uint8ClampedArray suported\n toImageData = new ImageData(new Uint8ClampedArray(result.data), tile.toWidth, tile.toHeight);\n } else {\n // fallback for `node-canvas` and old browsers\n // (IE11 has ImageData but does not support `new ImageData()`)\n toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);\n\n if (toImageData.data.set) {\n toImageData.data.set(result.data);\n } else {\n // IE9 don't have `.set()`\n for (var i = toImageData.data.length - 1; i >= 0; i--) {\n toImageData.data[i] = result.data[i];\n }\n }\n }\n\n this.debug('Draw tile');\n\n if (NEED_SAFARI_FIX) {\n // Safari draws thin white stripes between tiles without this fix\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);\n } else {\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);\n }\n\n return null;\n};\n\nPica.prototype.__tileAndResize = function (from, to, opts) {\n var _this3 = this;\n\n var stageEnv = {\n srcCtx: null,\n srcImageBitmap: null,\n isImageBitmapReused: false,\n toCtx: null\n };\n\n var processTile = function processTile(tile) {\n return _this3.__limit(function () {\n if (opts.canceled) return opts.cancelToken;\n var tileOpts = {\n width: tile.width,\n height: tile.height,\n toWidth: tile.toWidth,\n toHeight: tile.toHeight,\n scaleX: tile.scaleX,\n scaleY: tile.scaleY,\n offsetX: tile.offsetX,\n offsetY: tile.offsetY,\n filter: opts.filter,\n unsharpAmount: opts.unsharpAmount,\n unsharpRadius: opts.unsharpRadius,\n unsharpThreshold: opts.unsharpThreshold\n };\n\n _this3.debug('Invoke resize math');\n\n return Promise.resolve(tileOpts).then(function (tileOpts) {\n return _this3.__extractTileData(tile, from, opts, stageEnv, tileOpts);\n }).then(function (tileOpts) {\n _this3.debug('Invoke resize math');\n\n return _this3.__invokeResize(tileOpts, opts);\n }).then(function (result) {\n if (opts.canceled) return opts.cancelToken;\n stageEnv.srcImageData = null;\n return _this3.__landTileData(tile, result, stageEnv);\n });\n });\n }; // Need to normalize data source first. It can be canvas or image.\n // If image - try to decode in background if possible\n\n\n return Promise.resolve().then(function () {\n stageEnv.toCtx = to.getContext('2d');\n if (utils.isCanvas(from)) return null;\n\n if (utils.isImageBitmap(from)) {\n stageEnv.srcImageBitmap = from;\n stageEnv.isImageBitmapReused = true;\n return null;\n }\n\n if (utils.isImage(from)) {\n // try do decode image in background for faster next operations;\n // if we're using offscreen canvas, cib is called per tile, so not needed here\n if (!CAN_CREATE_IMAGE_BITMAP) return null;\n\n _this3.debug('Decode image via createImageBitmap');\n\n return createImageBitmap(from).then(function (imageBitmap) {\n stageEnv.srcImageBitmap = imageBitmap;\n }) // Suppress error to use fallback, if method fails\n // https://github.com/nodeca/pica/issues/190\n\n /* eslint-disable no-unused-vars */\n [\"catch\"](function (e) {\n return null;\n });\n }\n\n throw new Error('Pica: \".from\" should be Image, Canvas or ImageBitmap');\n }).then(function () {\n if (opts.canceled) return opts.cancelToken;\n\n _this3.debug('Calculate tiles'); //\n // Here we are with \"normalized\" source,\n // follow to tiling\n //\n\n\n var regions = createRegions({\n width: opts.width,\n height: opts.height,\n srcTileSize: _this3.options.tile,\n toWidth: opts.toWidth,\n toHeight: opts.toHeight,\n destTileBorder: opts.__destTileBorder\n });\n var jobs = regions.map(function (tile) {\n return processTile(tile);\n });\n\n function cleanup(stageEnv) {\n if (stageEnv.srcImageBitmap) {\n if (!stageEnv.isImageBitmapReused) stageEnv.srcImageBitmap.close();\n stageEnv.srcImageBitmap = null;\n }\n }\n\n _this3.debug('Process tiles');\n\n return Promise.all(jobs).then(function () {\n _this3.debug('Finished!');\n\n cleanup(stageEnv);\n return to;\n }, function (err) {\n cleanup(stageEnv);\n throw err;\n });\n });\n};\n\nPica.prototype.__processStages = function (stages, from, to, opts) {\n var _this4 = this;\n\n if (opts.canceled) return opts.cancelToken;\n\n var _stages$shift = stages.shift(),\n _stages$shift2 = _slicedToArray(_stages$shift, 2),\n toWidth = _stages$shift2[0],\n toHeight = _stages$shift2[1];\n\n var isLastStage = stages.length === 0; // Optimization for legacy filters -\n // only use user-defined quality for the last stage,\n // use simpler (Hamming) filter for the first stages where\n // scale factor is large enough (more than 2-3)\n //\n // For advanced filters (mks2013 and custom) - skip optimization,\n // because need to apply sharpening every time\n\n var filter;\n if (isLastStage || filter_info.q2f.indexOf(opts.filter) < 0) filter = opts.filter;else if (opts.filter === 'box') filter = 'box';else filter = 'hamming';\n opts = assign({}, opts, {\n toWidth: toWidth,\n toHeight: toHeight,\n filter: filter\n });\n var tmpCanvas;\n\n if (!isLastStage) {\n // create temporary canvas\n tmpCanvas = this.options.createCanvas(toWidth, toHeight);\n }\n\n return this.__tileAndResize(from, isLastStage ? to : tmpCanvas, opts).then(function () {\n if (isLastStage) return to;\n opts.width = toWidth;\n opts.height = toHeight;\n return _this4.__processStages(stages, tmpCanvas, to, opts);\n }).then(function (res) {\n if (tmpCanvas) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n tmpCanvas.width = tmpCanvas.height = 0;\n }\n\n return res;\n });\n};\n\nPica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {\n var _this5 = this;\n\n var toCtx = to.getContext('2d');\n this.debug('Resize via createImageBitmap()');\n return createImageBitmap(from, {\n resizeWidth: opts.toWidth,\n resizeHeight: opts.toHeight,\n resizeQuality: utils.cib_quality_name(filter_info.f2q[opts.filter])\n }).then(function (imageBitmap) {\n if (opts.canceled) return opts.cancelToken; // if no unsharp - draw directly to output canvas\n\n if (!opts.unsharpAmount) {\n toCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n }\n\n _this5.debug('Unsharp result');\n\n var tmpCanvas = _this5.options.createCanvas(opts.toWidth, opts.toHeight);\n\n var tmpCtx = tmpCanvas.getContext('2d');\n tmpCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n var iData = tmpCtx.getImageData(0, 0, opts.toWidth, opts.toHeight);\n\n _this5.__mathlib.unsharp_mask(iData.data, opts.toWidth, opts.toHeight, opts.unsharpAmount, opts.unsharpRadius, opts.unsharpThreshold);\n\n toCtx.putImageData(iData, 0, 0); // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n iData = tmpCtx = tmpCanvas = toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n });\n};\n\nPica.prototype.resize = function (from, to, options) {\n var _this6 = this;\n\n this.debug('Start resize...');\n var opts = assign({}, DEFAULT_RESIZE_OPTS);\n\n if (!isNaN(options)) {\n opts = assign(opts, {\n quality: options\n });\n } else if (options) {\n opts = assign(opts, options);\n }\n\n opts.toWidth = to.width;\n opts.toHeight = to.height;\n opts.width = from.naturalWidth || from.width;\n opts.height = from.naturalHeight || from.height; // Legacy `.quality` option\n\n if (Object.prototype.hasOwnProperty.call(opts, 'quality')) {\n if (opts.quality < 0 || opts.quality > 3) {\n throw new Error(\"Pica: .quality should be [0..3], got \".concat(opts.quality));\n }\n\n opts.filter = filter_info.q2f[opts.quality];\n } // Prevent stepper from infinite loop\n\n\n if (to.width === 0 || to.height === 0) {\n return Promise.reject(new Error(\"Invalid output size: \".concat(to.width, \"x\").concat(to.height)));\n }\n\n if (opts.unsharpRadius > 2) opts.unsharpRadius = 2;\n opts.canceled = false;\n\n if (opts.cancelToken) {\n // Wrap cancelToken to avoid successive resolve & set flag\n opts.cancelToken = opts.cancelToken.then(function (data) {\n opts.canceled = true;\n throw data;\n }, function (err) {\n opts.canceled = true;\n throw err;\n });\n }\n\n var DEST_TILE_BORDER = 3; // Max possible filter window size\n\n opts.__destTileBorder = Math.ceil(Math.max(DEST_TILE_BORDER, 2.5 * opts.unsharpRadius | 0));\n return this.init().then(function () {\n if (opts.canceled) return opts.cancelToken; // if createImageBitmap supports resize, just do it and return\n\n if (_this6.features.cib) {\n if (filter_info.q2f.indexOf(opts.filter) >= 0) {\n return _this6.__resizeViaCreateImageBitmap(from, to, opts);\n }\n\n _this6.debug('cib is enabled, but not supports provided filter, fallback to manual math');\n }\n\n if (!CAN_USE_CANVAS_GET_IMAGE_DATA) {\n var err = new Error('Pica: cannot use getImageData on canvas, ' + \"make sure fingerprinting protection isn't enabled\");\n err.code = 'ERR_GET_IMAGE_DATA';\n throw err;\n } //\n // No easy way, let's resize manually via arrays\n //\n\n\n var stages = createStages(opts.width, opts.height, opts.toWidth, opts.toHeight, _this6.options.tile, opts.__destTileBorder);\n return _this6.__processStages(stages, from, to, opts);\n });\n}; // RGBA buffer resize\n//\n\n\nPica.prototype.resizeBuffer = function (options) {\n var _this7 = this;\n\n var opts = assign({}, DEFAULT_RESIZE_OPTS, options); // Legacy `.quality` option\n\n if (Object.prototype.hasOwnProperty.call(opts, 'quality')) {\n if (opts.quality < 0 || opts.quality > 3) {\n throw new Error(\"Pica: .quality should be [0..3], got \".concat(opts.quality));\n }\n\n opts.filter = filter_info.q2f[opts.quality];\n }\n\n return this.init().then(function () {\n return _this7.__mathlib.resizeAndUnsharp(opts);\n });\n};\n\nPica.prototype.toBlob = function (canvas, mimeType, quality) {\n mimeType = mimeType || 'image/png';\n return new Promise(function (resolve) {\n if (canvas.toBlob) {\n canvas.toBlob(function (blob) {\n return resolve(blob);\n }, mimeType, quality);\n return;\n }\n\n if (canvas.convertToBlob) {\n resolve(canvas.convertToBlob({\n type: mimeType,\n quality: quality\n }));\n return;\n } // Fallback for old browsers\n\n\n var asString = atob(canvas.toDataURL(mimeType, quality).split(',')[1]);\n var len = asString.length;\n var asBuffer = new Uint8Array(len);\n\n for (var i = 0; i < len; i++) {\n asBuffer[i] = asString.charCodeAt(i);\n }\n\n resolve(new Blob([asBuffer], {\n type: mimeType\n }));\n });\n};\n\nPica.prototype.debug = function () {};\n\nmodule.exports = Pica;\n\n},{\"./lib/mathlib\":1,\"./lib/mm_resize/resize_filter_info\":7,\"./lib/pool\":13,\"./lib/stepper\":14,\"./lib/tiler\":15,\"./lib/utils\":16,\"./lib/worker\":17,\"object-assign\":22,\"webworkify\":23}]},{},[])(\"/index.js\")\n});\n}(pica$1));\n\nvar jpeg_plugins = {};\n\nvar image_traverse$1 = {exports: {}};\n\n(function (module) {\n\n//////////////////////////////////////////////////////////////////////////\n// Helpers\n//\nfunction error(message, code) {\n var err = new Error(message);\n err.code = code;\n return err;\n}\n\n\n// Convert number to 0xHH string\n//\nfunction to_hex(number) {\n var n = number.toString(16).toUpperCase();\n for (var i = 2 - n.length; i > 0; i--) n = '0' + n;\n return '0x' + n;\n}\n\n\nfunction utf8_encode(str) {\n try {\n return unescape(encodeURIComponent(str));\n } catch (_) {\n return str;\n }\n}\n\n\nfunction utf8_decode(str) {\n try {\n return decodeURIComponent(escape(str));\n } catch (_) {\n return str;\n }\n}\n\n\n// Check if input is a Uint8Array\n//\nfunction is_uint8array(bin) {\n return Object.prototype.toString.call(bin) === '[object Uint8Array]';\n}\n\n\n//////////////////////////////////////////////////////////////////////////\n// Exif parser\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - exif_start: Number - start of TIFF header (after Exif\\0\\0)\n// - exif_end: Number - end of Exif segment\n// - on_entry: Number - callback\n//\nfunction ExifParser(jpeg_bin, exif_start, exif_end) {\n // Uint8Array, exif without signature (which isn't included in offsets)\n this.input = jpeg_bin.subarray(exif_start, exif_end);\n\n // offset correction for `on_entry` callback\n this.start = exif_start;\n\n // Check TIFF header (includes byte alignment and first IFD offset)\n var sig = String.fromCharCode.apply(null, this.input.subarray(0, 4));\n\n if (sig !== 'II\\x2A\\0' && sig !== 'MM\\0\\x2A') {\n throw error('invalid TIFF signature', 'EBADDATA');\n }\n\n // true if motorola (big endian) byte alignment, false if intel\n this.big_endian = sig[0] === 'M';\n}\n\n\nExifParser.prototype.each = function (on_entry) {\n // allow premature exit\n this.aborted = false;\n\n var offset = this.read_uint32(4);\n\n this.ifds_to_read = [ {\n id: 0,\n offset: offset\n } ];\n\n while (this.ifds_to_read.length > 0 && !this.aborted) {\n var i = this.ifds_to_read.shift();\n if (!i.offset) continue;\n this.scan_ifd(i.id, i.offset, on_entry);\n }\n};\n\n\nExifParser.prototype.filter = function (on_entry) {\n var ifds = {};\n\n // make sure IFD0 always exists\n ifds.ifd0 = { id: 0, entries: [] };\n\n this.each(function (entry) {\n if (on_entry(entry) === false && !entry.is_subifd_link) return;\n if (entry.is_subifd_link && entry.count !== 1 && entry.format !== 4) return; // filter out bogus links\n\n if (!ifds['ifd' + entry.ifd]) {\n ifds['ifd' + entry.ifd] = { id: entry.ifd, entries: [] };\n }\n\n ifds['ifd' + entry.ifd].entries.push(entry);\n });\n\n // thumbnails are not supported just yet, so delete all information related to it\n delete ifds.ifd1;\n\n // Calculate output size\n var length = 8;\n Object.keys(ifds).forEach(function (ifd_no) {\n length += 2;\n\n ifds[ifd_no].entries.forEach(function (entry) {\n length += 12 + (entry.data_length > 4 ? Math.ceil(entry.data_length / 2) * 2 : 0);\n });\n\n length += 4;\n });\n\n this.output = new Uint8Array(length);\n this.output[0] = this.output[1] = (this.big_endian ? 'M' : 'I').charCodeAt(0);\n this.write_uint16(2, 0x2A);\n\n var offset = 8;\n var self = this;\n this.write_uint32(4, offset);\n\n Object.keys(ifds).forEach(function (ifd_no) {\n ifds[ifd_no].written_offset = offset;\n\n var ifd_start = offset;\n var ifd_end = ifd_start + 2 + ifds[ifd_no].entries.length * 12 + 4;\n offset = ifd_end;\n\n self.write_uint16(ifd_start, ifds[ifd_no].entries.length);\n\n ifds[ifd_no].entries.sort(function (a, b) {\n // IFD entries must be in order of increasing tag IDs\n return a.tag - b.tag;\n }).forEach(function (entry, idx) {\n var entry_offset = ifd_start + 2 + idx * 12;\n\n self.write_uint16(entry_offset, entry.tag);\n self.write_uint16(entry_offset + 2, entry.format);\n self.write_uint32(entry_offset + 4, entry.count);\n\n if (entry.is_subifd_link) {\n // filled in later\n if (ifds['ifd' + entry.tag]) ifds['ifd' + entry.tag].link_offset = entry_offset + 8;\n } else if (entry.data_length <= 4) {\n self.output.set(\n self.input.subarray(entry.data_offset - self.start, entry.data_offset - self.start + 4),\n entry_offset + 8\n );\n } else {\n self.write_uint32(entry_offset + 8, offset);\n self.output.set(\n self.input.subarray(entry.data_offset - self.start, entry.data_offset - self.start + entry.data_length),\n offset\n );\n offset += Math.ceil(entry.data_length / 2) * 2;\n }\n });\n\n var next_ifd = ifds['ifd' + (ifds[ifd_no].id + 1)];\n if (next_ifd) next_ifd.link_offset = ifd_end - 4;\n });\n\n Object.keys(ifds).forEach(function (ifd_no) {\n if (ifds[ifd_no].written_offset && ifds[ifd_no].link_offset) {\n self.write_uint32(ifds[ifd_no].link_offset, ifds[ifd_no].written_offset);\n }\n });\n\n if (this.output.length !== offset) throw error('internal error: incorrect buffer size allocated');\n\n return this.output;\n};\n\n\nExifParser.prototype.read_uint16 = function (offset) {\n var d = this.input;\n if (offset + 2 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n return this.big_endian ?\n d[offset] * 0x100 + d[offset + 1] :\n d[offset] + d[offset + 1] * 0x100;\n};\n\n\nExifParser.prototype.read_uint32 = function (offset) {\n var d = this.input;\n if (offset + 4 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n return this.big_endian ?\n d[offset] * 0x1000000 + d[offset + 1] * 0x10000 + d[offset + 2] * 0x100 + d[offset + 3] :\n d[offset] + d[offset + 1] * 0x100 + d[offset + 2] * 0x10000 + d[offset + 3] * 0x1000000;\n};\n\n\nExifParser.prototype.write_uint16 = function (offset, value) {\n var d = this.output;\n\n if (this.big_endian) {\n d[offset] = (value >>> 8) & 0xFF;\n d[offset + 1] = value & 0xFF;\n } else {\n d[offset] = value & 0xFF;\n d[offset + 1] = (value >>> 8) & 0xFF;\n }\n};\n\n\nExifParser.prototype.write_uint32 = function (offset, value) {\n var d = this.output;\n\n if (this.big_endian) {\n d[offset] = (value >>> 24) & 0xFF;\n d[offset + 1] = (value >>> 16) & 0xFF;\n d[offset + 2] = (value >>> 8) & 0xFF;\n d[offset + 3] = value & 0xFF;\n } else {\n d[offset] = value & 0xFF;\n d[offset + 1] = (value >>> 8) & 0xFF;\n d[offset + 2] = (value >>> 16) & 0xFF;\n d[offset + 3] = (value >>> 24) & 0xFF;\n }\n};\n\n\nExifParser.prototype.is_subifd_link = function (ifd, tag) {\n return (ifd === 0 && tag === 0x8769) || // SubIFD\n (ifd === 0 && tag === 0x8825) || // GPS Info\n (ifd === 0x8769 && tag === 0xA005); // Interop IFD\n};\n\n\n// Returns byte length of a single component of a given format\n//\nExifParser.prototype.exif_format_length = function (format) {\n switch (format) {\n case 1: // byte\n case 2: // ascii\n case 6: // sbyte\n case 7: // undefined\n return 1;\n\n case 3: // short\n case 8: // sshort\n return 2;\n\n case 4: // long\n case 9: // slong\n case 11: // float\n return 4;\n\n case 5: // rational\n case 10: // srational\n case 12: // double\n return 8;\n\n default:\n // unknown type\n return 0;\n }\n};\n\n\n// Reads Exif data\n//\nExifParser.prototype.exif_format_read = function (format, offset) {\n var v;\n\n switch (format) {\n case 1: // byte\n case 2: // ascii\n v = this.input[offset];\n return v;\n\n case 6: // sbyte\n v = this.input[offset];\n return v | (v & 0x80) * 0x1fffffe;\n\n case 3: // short\n v = this.read_uint16(offset);\n return v;\n\n case 8: // sshort\n v = this.read_uint16(offset);\n return v | (v & 0x8000) * 0x1fffe;\n\n case 4: // long\n v = this.read_uint32(offset);\n return v;\n\n case 9: // slong\n v = this.read_uint32(offset);\n return v | 0;\n\n case 5: // rational\n case 10: // srational\n case 11: // float\n case 12: // double\n return null; // not implemented\n\n case 7: // undefined\n return null; // blob\n\n default:\n // unknown type\n return null;\n }\n};\n\n\nExifParser.prototype.scan_ifd = function (ifd_no, offset, on_entry) {\n var entry_count = this.read_uint16(offset);\n\n offset += 2;\n\n for (var i = 0; i < entry_count; i++) {\n var tag = this.read_uint16(offset);\n var format = this.read_uint16(offset + 2);\n var count = this.read_uint32(offset + 4);\n\n var comp_length = this.exif_format_length(format);\n var data_length = count * comp_length;\n var data_offset = data_length <= 4 ? offset + 8 : this.read_uint32(offset + 8);\n var is_subifd_link = false;\n\n if (data_offset + data_length > this.input.length) {\n throw error('unexpected EOF', 'EBADDATA');\n }\n\n var value = [];\n var comp_offset = data_offset;\n\n for (var j = 0; j < count; j++, comp_offset += comp_length) {\n var item = this.exif_format_read(format, comp_offset);\n if (item === null) {\n value = null;\n break;\n }\n value.push(item);\n }\n\n if (Array.isArray(value) && format === 2) {\n try {\n value = utf8_decode(String.fromCharCode.apply(null, value));\n } catch (_) {\n value = null;\n }\n\n if (value && value[value.length - 1] === '\\0') value = value.slice(0, -1);\n }\n\n if (this.is_subifd_link(ifd_no, tag)) {\n if (Array.isArray(value) && Number.isInteger(value[0]) && value[0] > 0) {\n this.ifds_to_read.push({\n id: tag,\n offset: value[0]\n });\n is_subifd_link = true;\n }\n }\n\n var entry = {\n is_big_endian: this.big_endian,\n ifd: ifd_no,\n tag: tag,\n format: format,\n count: count,\n entry_offset: offset + this.start,\n data_length: data_length,\n data_offset: data_offset + this.start,\n value: value,\n is_subifd_link: is_subifd_link\n };\n\n if (on_entry(entry) === false) {\n this.aborted = true;\n return;\n }\n\n offset += 12;\n }\n\n if (ifd_no === 0) {\n this.ifds_to_read.push({\n id: 1,\n offset: this.read_uint32(offset)\n });\n }\n};\n\n\n// Check whether input is a JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n//\n// Returns true if it is and false otherwise\n//\nmodule.exports.is_jpeg = function (jpeg_bin) {\n return jpeg_bin.length >= 4 && jpeg_bin[0] === 0xFF && jpeg_bin[1] === 0xD8 && jpeg_bin[2] === 0xFF;\n};\n\n\n// Call an iterator on each segment in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_segment: Function - callback executed on each JPEG marker segment\n// - segment: Object\n// - code: Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n// - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n// - length: Number - length of the entire marker segment including first two bytes and length\n// - 2 for standalone markers\n// - 4+length for markers with data\n//\n// Iteration stops when `EOI` (0xFFD9) marker is reached or if `on_segment`\n// function returns `false`.\n//\nmodule.exports.jpeg_segments_each = function (jpeg_bin, on_segment) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_segment !== 'function') {\n throw error('Invalid argument (on_segment), Function expected', 'EINVAL');\n }\n\n if (!module.exports.is_jpeg(jpeg_bin)) {\n throw error('Unknown file format', 'ENOTJPEG');\n }\n\n var offset = 0, length = jpeg_bin.length, inside_scan = false;\n\n for (;;) {\n var segment_code, segment_length;\n\n if (offset + 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n var byte1 = jpeg_bin[offset];\n var byte2 = jpeg_bin[offset + 1];\n\n if (byte1 === 0xFF && byte2 === 0xFF) {\n // padding\n segment_code = 0xFF;\n segment_length = 1;\n\n } else if (byte1 === 0xFF && byte2 !== 0) {\n // marker\n segment_code = byte2;\n segment_length = 2;\n\n if ((0xD0 <= segment_code && segment_code <= 0xD9) || segment_code === 0x01) ; else {\n if (offset + 3 >= length) throw error('Unexpected EOF', 'EBADDATA');\n segment_length += jpeg_bin[offset + 2] * 0x100 + jpeg_bin[offset + 3];\n if (segment_length < 2) throw error('Invalid segment length', 'EBADDATA');\n if (offset + segment_length - 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n }\n\n if (inside_scan) {\n if (segment_code >= 0xD0 && segment_code <= 0xD7) ; else {\n inside_scan = false;\n }\n }\n\n if (segment_code === 0xDA /* SOS */) inside_scan = true;\n } else if (inside_scan) {\n // entropy-encoded segment\n for (var pos = offset + 1; ; pos++) {\n // scan until we find FF\n if (pos >= length) throw error('Unexpected EOF', 'EBADDATA');\n if (jpeg_bin[pos] === 0xFF) {\n if (pos + 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n if (jpeg_bin[pos + 1] !== 0) {\n segment_code = 0;\n segment_length = pos - offset;\n break;\n }\n }\n }\n } else {\n throw error('Unexpected byte at segment start: ' + to_hex(byte1) +\n ' (offset ' + to_hex(offset) + ')', 'EBADDATA');\n }\n\n if (on_segment({ code: segment_code, offset: offset, length: segment_length }) === false) break;\n if (segment_code === 0xD9 /* EOI */) break;\n offset += segment_length;\n }\n};\n\n\n// Replace or remove segments in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_segment: Function - callback executed on each JPEG marker segment\n// - segment: Object\n// - code: Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n// - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n// - length: Number - length of the entire marker segment including first two bytes and length\n// - 2 for standalone markers\n// - 4+length for markers with data\n//\n// `on_segment` function should return one of the following:\n// - `false` - segment is removed from the output\n// - Uint8Array - segment is replaced with the new data\n// - [ Uint8Array ] - segment is replaced with the new data\n// - anything else - segment is copied to the output as is\n//\n// Any data after `EOI` (0xFFD9) marker is removed.\n//\nmodule.exports.jpeg_segments_filter = function (jpeg_bin, on_segment) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_segment !== 'function') {\n throw error('Invalid argument (on_segment), Function expected', 'EINVAL');\n }\n\n var ranges = [];\n var out_length = 0;\n\n module.exports.jpeg_segments_each(jpeg_bin, function (segment) {\n var new_segment = on_segment(segment);\n\n if (is_uint8array(new_segment)) {\n ranges.push({ data: new_segment });\n out_length += new_segment.length;\n } else if (Array.isArray(new_segment)) {\n new_segment.filter(is_uint8array).forEach(function (s) {\n ranges.push({ data: s });\n out_length += s.length;\n });\n } else if (new_segment !== false) {\n var new_range = { start: segment.offset, end: segment.offset + segment.length };\n\n if (ranges.length > 0 && ranges[ranges.length - 1].end === new_range.start) {\n ranges[ranges.length - 1].end = new_range.end;\n } else {\n ranges.push(new_range);\n }\n\n out_length += segment.length;\n }\n });\n\n var result = new Uint8Array(out_length);\n var offset = 0;\n\n ranges.forEach(function (range) {\n var data = range.data || jpeg_bin.subarray(range.start, range.end);\n result.set(data, offset);\n offset += data.length;\n });\n\n return result;\n};\n\n\n// Call an iterator on each Exif entry in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_entry: Function - callback executed on each Exif entry\n// - entry: Object\n// - is_big_endian: Boolean - whether Exif uses big or little endian byte alignment\n// - ifd: Number - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n// 0x8825 for GPS Info, 0xA005 for Interop IFD)\n// - tag: Number - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n// - format: Number - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n// - count: Number - number of components of the given format inside data\n// (usually 1, or string length for ascii format)\n// - entry_offset: Number - start of Exif entry (entry length is always 12, so not included)\n// - data_offset: Number - start of data attached to Exif entry (will overlap with entry if length <= 4)\n// - data_length: Number - length of data attached to Exif entry\n// - value: Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n// - is_subifd_link: Boolean - whether this entry is recognized to be a link to subifd (can't filter these out)\n//\n// Iteration stops early if iterator returns `false`.\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed.\n//\nmodule.exports.jpeg_exif_tags_each = function (jpeg_bin, on_exif_entry) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_exif_entry !== 'function') {\n throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL');\n }\n\n /* eslint-disable consistent-return */\n module.exports.jpeg_segments_each(jpeg_bin, function (segment) {\n if (segment.code === 0xDA /* SOS */) return false;\n\n // look for APP1 segment and compare header with 'Exif\\0\\0'\n if (segment.code === 0xE1 && segment.length >= 10 &&\n jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n\n new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length).each(on_exif_entry);\n return false;\n }\n });\n};\n\n\n// Remove Exif entries in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_entry: Function - callback executed on each Exif entry\n// - entry: Object\n// - is_big_endian: Boolean - whether Exif uses big or little endian byte alignment\n// - ifd: Number - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n// 0x8825 for GPS Info, 0xA005 for Interop IFD)\n// - tag: Number - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n// - format: Number - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n// - count: Number - number of components of the given format inside data\n// (usually 1, or string length for ascii format)\n// - entry_offset: Number - start of Exif entry (entry length is always 12, so not included)\n// - data_offset: Number - start of data attached to Exif entry (will overlap with entry if length <= 4)\n// - data_length: Number - length of data attached to Exif entry\n// - value: Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n// - is_subifd_link: Boolean - whether this entry is recognized to be a link to subifd (can't filter these out)\n//\n// This function removes following from Exif:\n// - all entries where iterator returned false (except subifd links which are mandatory)\n// - IFD1 and thumbnail image (the purpose of this function is to reduce file size,\n// so thumbnail is usually the first thing to go)\n// - all other data that isn't in IFD0, SubIFD, GPSIFD, InteropIFD\n// (theoretically possible proprietary extensions, I haven't seen any of these yet)\n//\n// Changing data inside Exif entries is NOT supported yet (modifying `entry` object inside callback may break stuff).\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed, and original JPEG is returned as is.\n//\nmodule.exports.jpeg_exif_tags_filter = function (jpeg_bin, on_exif_entry) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_exif_entry !== 'function') {\n throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL');\n }\n\n var stop_search = false;\n\n return module.exports.jpeg_segments_filter(jpeg_bin, function (segment) {\n if (stop_search) return;\n if (segment.code === 0xDA /* SOS */) stop_search = true;\n\n // look for APP1 segment and compare header with 'Exif\\0\\0'\n if (segment.code === 0xE1 && segment.length >= 10 &&\n jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n\n var new_exif = new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length)\n .filter(on_exif_entry);\n if (!new_exif) return false;\n\n var header = new Uint8Array(10);\n\n header.set(jpeg_bin.slice(segment.offset, segment.offset + 10));\n header[2] = ((new_exif.length + 8) >>> 8) & 0xFF;\n header[3] = (new_exif.length + 8) & 0xFF;\n\n stop_search = true;\n return [ header, new_exif ];\n }\n });\n};\n\n\n// Inserts a custom comment marker segment into JPEG file.\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - comment: String\n//\n// Comment is inserted after first two bytes (FFD8, SOI).\n//\n// If JFIF (APP0) marker exists immediately after SOI (as mandated by the JFIF\n// spec), we insert comment after it instead.\n//\nmodule.exports.jpeg_add_comment = function (jpeg_bin, comment) {\n var comment_inserted = false, segment_count = 0;\n\n return module.exports.jpeg_segments_filter(jpeg_bin, function (segment) {\n segment_count++;\n if (segment_count === 1 && segment.code === 0xD8 /* SOI */) return;\n if (segment_count === 2 && segment.code === 0xE0 /* APP0 */) return;\n\n if (comment_inserted) return;\n comment = utf8_encode(comment);\n\n // comment segment\n var csegment = new Uint8Array(5 + comment.length);\n var offset = 0;\n\n csegment[offset++] = 0xFF;\n csegment[offset++] = 0xFE;\n csegment[offset++] = ((comment.length + 3) >>> 8) & 0xFF;\n csegment[offset++] = (comment.length + 3) & 0xFF;\n\n comment.split('').forEach(function (c) {\n csegment[offset++] = c.charCodeAt(0) & 0xFF;\n });\n\n csegment[offset++] = 0;\n comment_inserted = true;\n\n return [ csegment, jpeg_bin.subarray(segment.offset, segment.offset + segment.length) ];\n });\n};\n}(image_traverse$1));\n\nvar image_traverse = image_traverse$1.exports;\n\n\nfunction jpeg_patch_exif(env) {\n return this._getUint8Array(env.blob).then(function (data) {\n env.is_jpeg = image_traverse.is_jpeg(data);\n\n if (!env.is_jpeg) return Promise.resolve(env);\n\n env.orig_blob = env.blob;\n\n try {\n var exif_is_big_endian, orientation_offset;\n\n /* eslint-disable consistent-return */\n image_traverse.jpeg_exif_tags_each(data, function (entry) {\n if (entry.ifd === 0 && entry.tag === 0x112 && Array.isArray(entry.value)) {\n env.orientation = entry.value[0] || 1;\n exif_is_big_endian = entry.is_big_endian;\n orientation_offset = entry.data_offset;\n return false;\n }\n });\n\n if (orientation_offset) {\n var orientation_patch = exif_is_big_endian ?\n new Uint8Array([ 0, 1 ]) :\n new Uint8Array([ 1, 0 ]);\n\n env.blob = new Blob([\n data.slice(0, orientation_offset),\n orientation_patch,\n data.slice(orientation_offset + 2)\n ], { type: 'image/jpeg' });\n }\n } catch (_) {}\n\n return env;\n });\n}\n\n\nfunction jpeg_rotate_canvas(env) {\n if (!env.is_jpeg) return Promise.resolve(env);\n\n var orientation = env.orientation - 1;\n if (!orientation) return Promise.resolve(env);\n\n var canvas;\n\n if (orientation & 4) {\n canvas = this.pica.options.createCanvas(env.out_canvas.height, env.out_canvas.width);\n } else {\n canvas = this.pica.options.createCanvas(env.out_canvas.width, env.out_canvas.height);\n }\n\n var ctx = canvas.getContext('2d');\n\n ctx.save();\n\n if (orientation & 1) ctx.transform(-1, 0, 0, 1, canvas.width, 0);\n if (orientation & 2) ctx.transform(-1, 0, 0, -1, canvas.width, canvas.height);\n if (orientation & 4) ctx.transform(0, 1, 1, 0, 0, 0);\n\n ctx.drawImage(env.out_canvas, 0, 0);\n ctx.restore();\n\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n env.out_canvas.width = env.out_canvas.height = 0;\n\n env.out_canvas = canvas;\n\n return Promise.resolve(env);\n}\n\n\nfunction jpeg_attach_orig_segments(env) {\n if (!env.is_jpeg) return Promise.resolve(env);\n\n return Promise.all([\n this._getUint8Array(env.blob),\n this._getUint8Array(env.out_blob)\n ]).then(function (res) {\n var data = res[0];\n var data_out = res[1];\n\n if (!image_traverse.is_jpeg(data)) return Promise.resolve(env);\n\n var segments = [];\n\n image_traverse.jpeg_segments_each(data, function (segment) {\n if (segment.code === 0xDA /* SOS */) return false;\n segments.push(segment);\n });\n\n segments = segments\n .filter(function (segment) {\n // Drop ICC_PROFILE\n //\n if (segment.code === 0xE2) return false;\n\n // Keep all APPn segments excluding APP2 (ICC_PROFILE),\n // remove others because most of them depend on image data (DCT and such).\n //\n // APP0 - JFIF, APP1 - Exif, the rest are photoshop metadata and such\n //\n // See full list at https://www.w3.org/Graphics/JPEG/itu-t81.pdf (table B.1 on page 32)\n //\n if (segment.code >= 0xE0 && segment.code < 0xF0) return true;\n\n // Keep comments\n //\n if (segment.code === 0xFE) return true;\n\n return false;\n })\n .map(function (segment) {\n return data.slice(segment.offset, segment.offset + segment.length);\n });\n\n env.out_blob = new Blob(\n // intentionally omitting expected JFIF segment (offset 2 to 20)\n [ data_out.slice(0, 2) ].concat(segments).concat([ data_out.slice(20) ]),\n { type: 'image/jpeg' }\n );\n\n return env;\n });\n}\n\n\nfunction assign(reducer) {\n reducer.before('_blob_to_image', jpeg_patch_exif);\n reducer.after('_transform', jpeg_rotate_canvas);\n reducer.after('_create_blob', jpeg_attach_orig_segments);\n}\n\n\njpeg_plugins.jpeg_patch_exif = jpeg_patch_exif;\njpeg_plugins.jpeg_rotate_canvas = jpeg_rotate_canvas;\njpeg_plugins.jpeg_attach_orig_segments = jpeg_attach_orig_segments;\njpeg_plugins.assign = assign;\n\nvar utils = utils$1;\nvar pica = pica$1.exports;\n\nfunction ImageBlobReduce(options) {\n if (!(this instanceof ImageBlobReduce)) return new ImageBlobReduce(options);\n\n options = options || {};\n\n this.pica = options.pica || pica({});\n this.initialized = false;\n\n this.utils = utils;\n}\n\n\nImageBlobReduce.prototype.use = function (plugin /*, params, ... */) {\n var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n\n\nImageBlobReduce.prototype.init = function () {\n this.use(jpeg_plugins.assign);\n};\n\n\nImageBlobReduce.prototype.toBlob = function (blob, options) {\n var opts = utils.assign({ max: Infinity }, options);\n var env = {\n blob: blob,\n opts: opts\n };\n\n if (!this.initialized) {\n this.init();\n this.initialized = true;\n }\n\n return Promise.resolve(env)\n .then(this._blob_to_image)\n .then(this._calculate_size)\n .then(this._transform)\n .then(this._cleanup)\n .then(this._create_blob)\n .then(function (_env) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n _env.out_canvas.width = _env.out_canvas.height = 0;\n\n return _env.out_blob;\n });\n};\n\n\nImageBlobReduce.prototype.toCanvas = function (blob, options) {\n var opts = utils.assign({ max: Infinity }, options);\n var env = {\n blob: blob,\n opts: opts\n };\n\n if (!this.initialized) {\n this.init();\n this.initialized = true;\n }\n\n return Promise.resolve(env)\n .then(this._blob_to_image)\n .then(this._calculate_size)\n .then(this._transform)\n .then(this._cleanup)\n .then(function (_env) { return _env.out_canvas; });\n};\n\n\nImageBlobReduce.prototype.before = function (method_name, fn) {\n if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist');\n if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected');\n\n var old_fn = this[method_name];\n var self = this;\n\n this[method_name] = function (env) {\n return fn.call(self, env).then(function (_env) {\n return old_fn.call(self, _env);\n });\n };\n\n return this;\n};\n\n\nImageBlobReduce.prototype.after = function (method_name, fn) {\n if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist');\n if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected');\n\n var old_fn = this[method_name];\n var self = this;\n\n this[method_name] = function (env) {\n return old_fn.call(self, env).then(function (_env) {\n return fn.call(self, _env);\n });\n };\n\n return this;\n};\n\n\nImageBlobReduce.prototype._blob_to_image = function (env) {\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n env.image = document.createElement('img');\n env.image_url = URL.createObjectURL(env.blob);\n env.image.src = env.image_url;\n\n return new Promise(function (resolve, reject) {\n env.image.onerror = function () { reject(new Error('ImageBlobReduce: failed to create Image() from blob')); };\n env.image.onload = function () { resolve(env); };\n });\n};\n\n\nImageBlobReduce.prototype._calculate_size = function (env) {\n //\n // Note, if your need not \"symmetric\" resize logic, you MUST check\n // `env.orientation` (set by plugins) and swap width/height appropriately.\n //\n var scale_factor = env.opts.max / Math.max(env.image.width, env.image.height);\n\n if (scale_factor > 1) scale_factor = 1;\n\n env.transform_width = Math.max(Math.round(env.image.width * scale_factor), 1);\n env.transform_height = Math.max(Math.round(env.image.height * scale_factor), 1);\n\n // Info for user plugins, to check if scaling applied\n env.scale_factor = scale_factor;\n\n return Promise.resolve(env);\n};\n\n\nImageBlobReduce.prototype._transform = function (env) {\n env.out_canvas = this.pica.options.createCanvas(env.transform_width, env.transform_height);\n\n // Dim env temporary vars to prohibit use and avoid confusion when orientation\n // changed. You should take real size from canvas.\n env.transform_width = null;\n env.transform_height = null;\n\n // By default use alpha for png only\n var pica_opts = { alpha: env.blob.type === 'image/png' };\n\n // Extract pica options if been passed\n this.utils.assign(pica_opts, this.utils.pick_pica_resize_options(env.opts));\n\n return this.pica\n .resize(env.image, env.out_canvas, pica_opts)\n .then(function () { return env; });\n};\n\n\nImageBlobReduce.prototype._cleanup = function (env) {\n env.image.src = '';\n env.image = null;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n if (URL.revokeObjectURL) URL.revokeObjectURL(env.image_url);\n\n env.image_url = null;\n\n return Promise.resolve(env);\n};\n\n\nImageBlobReduce.prototype._create_blob = function (env) {\n return this.pica.toBlob(env.out_canvas, env.blob.type)\n .then(function (blob) {\n env.out_blob = blob;\n return env;\n });\n};\n\n\nImageBlobReduce.prototype._getUint8Array = function (blob) {\n if (blob.arrayBuffer) {\n return blob.arrayBuffer().then(function (buf) {\n return new Uint8Array(buf);\n });\n }\n\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n\n fr.readAsArrayBuffer(blob);\n\n fr.onload = function () { resolve(new Uint8Array(fr.result)); };\n fr.onerror = function () {\n reject(new Error('ImageBlobReduce: failed to load data from input blob'));\n fr.abort();\n };\n fr.onabort = function () {\n reject(new Error('ImageBlobReduce: failed to load data from input blob (aborted)'));\n };\n });\n};\n\n\nImageBlobReduce.pica = pica;\n\nvar imageBlobReduce = ImageBlobReduce;\n\nexport { imageBlobReduce as default };\n","/* eslint-disable @nht/require-function-slots-for-programmatic-components */\n/**\n * InlineImageField component provides an image upload field with drag-and-drop support, file type validation, automatic image reduction, and customizable dropzone styling.\n *\n * @example\n * ```typescript\n * import { InlineImageField } from '@nhtio/common-vue/inline_image_field'\n * import type { InlineImageFieldProps, InlineImageFieldSlots } from '@nhtio/common-vue/inline_image_field'\n * ```\n *\n * @module @nhtio/common-vue/inline_image_field\n */\n\nimport { useTheme } from 'vuetify'\nimport { VImg } from 'vuetify/components/VImg'\nimport { VHover } from 'vuetify/components/VHover'\nimport { VOverlay } from 'vuetify/components/VOverlay'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { default as ImageBlobReduce } from 'image-blob-reduce'\nimport { omit, convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { parseColor, RGBtoCSS } from '@nhtio/vuetifiable/util/colorUtils'\nimport { makeDimensionProps } from '@nhtio/vuetifiable/composables/dimensions'\nimport {\n defineComponent,\n h,\n toRefs,\n ref,\n computed,\n mergeProps,\n onMounted,\n onBeforeUnmount,\n} from 'vue'\nimport {\n propsAndEmitsFactory,\n makeBaseProps,\n baseFieldBaseRawEmits,\n BaseField,\n useBaseProps,\n useBaseHooks,\n useBaseSlots,\n usePassthroughHook,\n useSlot,\n} from './base'\nimport type { PropType, SlotsType } from 'vue'\nimport type { Color, RGB } from '@nhtio/vuetifiable/util/colorUtils'\nimport type {\n ComponentPublicInstanceType,\n ExtractPublicPropTypesFromFactory,\n BaseSlots,\n HookableEvents,\n FieldHookHandler,\n} from './base'\n\nconst reduce = ImageBlobReduce()\n\n/**\n * Emit validators for the InlineImageField component.\n * Extends base field emits with image-specific events including model value updates\n * and invalid file type validation.\n * @category Constants\n */\nconst inlineImageFieldRawEmits = {\n ...baseFieldBaseRawEmits,\n 'update:modelValue': (value: string | null) => null === value || typeof value === 'string',\n 'update:model-value': (value: string | null) => null === value || typeof value === 'string',\n 'invalid-file-type': (type: string, acceptedTypes: string[]) =>\n typeof type === 'string' && Array.isArray(acceptedTypes),\n}\n\nexport type { inlineImageFieldRawEmits }\n\n/**\n * Type for the raw emit validators of InlineImageField\n * @interface\n * @category Types\n */\nexport type InlineImageFieldHookableRawEvents = typeof inlineImageFieldRawEmits\n/**\n * Type for the hookable events of InlineImageField with cleanup support\n * @interface\n * @category Types\n */\nexport type InlineImageFieldHookableEvents = HookableEvents<InlineImageFieldHookableRawEvents>\n/**\n * Handler type for InlineImageField hooks.\n * @typeParam T - The specific event key from InlineImageFieldHookableEvents\n * @category Types\n */\nexport type InlineImageFieldHookHandlers<T extends keyof InlineImageFieldHookableEvents> =\n FieldHookHandler<InlineImageFieldHookableRawEvents, InlineImageFieldHookableEvents, T>\n\nconst { makeProps: makeInlineImageFieldProps, emits: inlineImageFieldEmits } = propsAndEmitsFactory(\n {\n ...omit(\n makeBaseProps({\n variant: 'plain' as const,\n }),\n ['modelValue']\n ),\n modelValue: {\n type: [String, null] as PropType<string | null>,\n default: null,\n },\n accept: {\n type: [String, Array] as PropType<string | string[]>,\n default: 'image/*',\n },\n ...omit(makeDimensionProps({}), ['width', 'maxWidth', 'minWidth']),\n imageAspectRatio: {\n type: [String, Number] as PropType<string | number | undefined>,\n default: undefined,\n },\n callOnInvalidFileType: {\n type: Array as PropType<Array<InlineImageFieldHookHandlers<'invalid-file-type'>>>,\n default: () => [],\n },\n dropzoneBorderColor: {\n type: [String, Number, Object] as PropType<Color>,\n default: 'primary',\n },\n dropzoneBorderThickness: {\n type: [Number, String] as PropType<number | string>,\n default: 2,\n },\n dropzoneBorderStyle: {\n type: String as PropType<string>,\n default: 'dashed',\n },\n },\n inlineImageFieldRawEmits,\n 'InlineImageField'\n)\n\nexport type { makeInlineImageFieldProps }\n\n/**\n * Public prop types for the InlineImageField component.\n * Includes base field props plus image-specific configuration for file acceptance,\n * aspect ratio, dimensions, and dropzone styling.\n * @interface\n * @category Types\n */\nexport type InlineImageFieldProps = ExtractPublicPropTypesFromFactory<\n typeof makeInlineImageFieldProps\n>\n\n/**\n * Slot definitions for the InlineImageField component.\n * Extends base slots with a placeholder slot for empty/hover states.\n * @interface\n * @category Types\n */\nexport type InlineImageFieldSlots = Omit<BaseSlots, 'default'> & {\n /** Slot for custom placeholder content displayed when hovering or when no image is set */\n placeholder: () => any\n}\n\n/**\n * Minimum height constraint for the inline image field dropzone.\n * Ensures the dropzone remains usable even with very small height values.\n * @category Constants\n */\nconst INLINE_IMAGE_FIELD_MIN_HEIGHT = 80\n\n/**\n * InlineImageField component provides an image upload field with drag-and-drop support,\n * file type validation, automatic image reduction, and customizable dropzone styling.\n *\n * Features:\n * - Drag-and-drop file upload from external sources (Finder/Explorer)\n * - File type validation with customizable accepted types\n * - Automatic image reduction for non-SVG images (max 1024px)\n * - SVG passthrough without modification\n * - Hover overlay with customizable placeholder\n * - Visual drag feedback with themed border styling\n * - File picker integration with modern showPicker API fallback\n * @class\n * @hideconstructor\n * @category Components\n *\n * @remarks\n * - Uses ImageBlobReduce for automatic image optimization\n * - Registers global window/document listeners to detect external drags\n * - Supports theme color integration via Vuetify's useTheme\n * - Extends BaseField for consistent field behavior\n * - Cleans up all event listeners on component unmount\n *\n * @example\n * ```vue\n * <InlineImageField\n * v-model=\"imageData\"\n * label=\"Profile Picture\"\n * accept=\"image/png,image/jpeg\"\n * :image-aspect-ratio=\"1\"\n * dropzone-border-color=\"primary\"\n * placeholder=\"Drop an image or click to upload\"\n * />\n * ```\n */\nexport const InlineImageField = defineComponent({\n name: 'InlineImageField',\n props: makeInlineImageFieldProps(),\n emits: inlineImageFieldEmits,\n slots: Object as SlotsType<InlineImageFieldSlots>,\n setup(props, { emit, attrs, slots }) {\n const theme = useTheme()\n const {\n accept,\n imageAspectRatio,\n height,\n maxHeight,\n minHeight,\n modelValue,\n dropzoneBorderColor,\n dropzoneBorderThickness,\n dropzoneBorderStyle,\n placeholder,\n } = toRefs(props)\n const parseThemeColor = (color: Color): RGB => {\n if ('string' === typeof color && color in theme.current.value.colors) {\n color = theme.current.value.colors[\n color as keyof typeof theme.current.value.colors\n ] as string\n }\n return parseColor(color)\n }\n const resolvedDropzoneBorderColor = computed(() => parseThemeColor(dropzoneBorderColor.value))\n const resolvedDropzoneBorderThickness = computed(() =>\n convertToUnit(dropzoneBorderThickness.value, 'px')\n )\n const resolveDropzoneBorder = computed(() =>\n [\n dropzoneBorderStyle.value,\n resolvedDropzoneBorderThickness.value,\n RGBtoCSS(resolvedDropzoneBorderColor.value),\n ]\n .filter(Boolean)\n .join(' ')\n )\n const resolvedDropzoneInactiveBorder = computed(() =>\n [dropzoneBorderStyle.value, resolvedDropzoneBorderThickness.value, 'rgba(0,0,0,0)']\n .filter(Boolean)\n .join(' ')\n )\n const { filtered: baseProps } = useBaseProps(props)\n const baseHooks = useBaseHooks(emit, props, attrs)\n const handleInvalidFileType = usePassthroughHook(\n 'invalid-file-type',\n emit,\n 'callOnInvalidFileType',\n props,\n attrs,\n {\n fallback: (type: string, acceptedTypes: string[]) => {\n alert(`File type ${type} is not allowed. Accepted types: ${acceptedTypes.join(', ')}`)\n },\n }\n )\n const baseSlots = useBaseSlots(slots)\n const isDragging = ref(false)\n /**\n * Detects if a drag event carries files before drop.\n * Checks dataTransfer.types for 'Files' indicator and items for file kind.\n * Works across browsers including Chrome, Firefox, Safari, and Edge.\n *\n * @param e - The drag event to inspect\n * @returns True if the drag contains files, false otherwise\n * @category Utilities\n */\n const isFileDrag = (e: DragEvent): boolean => {\n const dt = e.dataTransfer\n if (!dt) return false\n // Chrome/Edge/Safari expose 'Files' in types during external drags\n if (Array.isArray((dt as any).types) && (dt as any).types.includes('Files')) return true\n // Firefox sometimes relies on items\n if (dt.items && dt.items.length) {\n for (let i = 0; i < dt.items.length; i++) {\n if (dt.items[i].kind === 'file') return true\n }\n }\n return false\n }\n /**\n * Normalized array of accepted file types.\n * Converts string or array prop into consistent array format.\n */\n const acceptedTypes = computed(() =>\n Array.isArray(accept.value)\n ? accept.value\n : [accept.value].filter((v) => 'string' === typeof v)\n )\n /**\n * Computed HTML accept attribute for the file input.\n * Converts short type names (svg, png, jpg) to proper MIME types.\n * @returns Comma-separated list of MIME types for the file input's accept attribute\n */\n const acceptAttribute = computed(() => {\n if (acceptedTypes.value.length > 0) {\n // Convert types like 'svg', 'png', 'jpg' to 'image/svg+xml', 'image/png', 'image/jpeg'\n const mimeTypes = acceptedTypes.value.map((type) => {\n const normalizedType = type.toLowerCase().replace(/^\\./, '') // Remove leading dot if present\n switch (normalizedType) {\n case 'svg':\n return 'image/svg+xml'\n case 'jpg':\n case 'jpeg':\n return 'image/jpeg'\n case 'png':\n return 'image/png'\n case 'gif':\n return 'image/gif'\n case 'webp':\n return 'image/webp'\n case 'bmp':\n return 'image/bmp'\n case 'tiff':\n case 'tif':\n return 'image/tiff'\n default:\n // For custom types, assume it's already a proper MIME type or add image/ prefix\n return normalizedType.includes('/') ? normalizedType : `image/${normalizedType}`\n }\n })\n return mimeTypes.join(',')\n }\n return 'image/*'\n })\n /**\n * Computed minimum height with enforced floor value.\n * Ensures dropzone remains usable by enforcing INLINE_IMAGE_FIELD_MIN_HEIGHT minimum.\n */\n const computedMinHeight = computed(() => {\n const numeric = minHeight.value ? Number.parseFloat(minHeight.value.toString()) : 0\n if (Number.isNaN(numeric)) {\n return INLINE_IMAGE_FIELD_MIN_HEIGHT\n }\n return Math.max(numeric, INLINE_IMAGE_FIELD_MIN_HEIGHT)\n })\n /**\n * Computed maximum height constraint.\n * Returns POSITIVE_INFINITY if not specified or invalid, allowing unconstrained growth.\n */\n const computedMaxHeight = computed(() => {\n const numeric = maxHeight.value\n ? Number.parseFloat(maxHeight.value.toString())\n : Number.POSITIVE_INFINITY\n if (Number.isNaN(numeric)) {\n return Number.POSITIVE_INFINITY\n }\n return Math.min(numeric, Number.POSITIVE_INFINITY)\n })\n /**\n * Computed height clamped between min and max constraints.\n * Defaults to computedMinHeight if height prop is not provided or invalid.\n * @returns CSS unit string (e.g., '80px')\n */\n const computedHeight = computed(() => {\n let numeric: number = height.value\n ? Number.parseFloat(height.value.toString())\n : computedMinHeight.value\n if (Number.isNaN(numeric)) {\n numeric = computedMinHeight.value\n }\n if (numeric < computedMinHeight.value) {\n numeric = computedMinHeight.value\n } else if (numeric > computedMaxHeight.value) {\n numeric = computedMaxHeight.value\n }\n return convertToUnit(numeric, 'px')\n })\n /**\n * Validates if a file's type matches the accepted types.\n * Checks both MIME type and file extension for comprehensive validation.\n *\n * @param file - The file to validate\n * @returns True if the file type is accepted, false otherwise\n * @category Utilities\n */\n const isValidFileType = (file: File): boolean => {\n if (acceptedTypes.value.length === 0) {\n return true // Accept all types if no specific types are defined\n }\n const fileType = file.type.toLowerCase()\n const fileName = file.name.toLowerCase()\n\n return acceptedTypes.value.some((type) => {\n const normalizedType = type.toLowerCase().replace(/^\\./, '')\n if (type === normalizedType) return true\n // Check by MIME type\n switch (normalizedType) {\n case 'svg':\n return fileType === 'image/svg+xml' || fileName.endsWith('.svg')\n case 'jpg':\n case 'jpeg':\n return (\n fileType === 'image/jpeg' || fileName.endsWith('.jpg') || fileName.endsWith('.jpeg')\n )\n case 'png':\n return fileType === 'image/png' || fileName.endsWith('.png')\n case 'gif':\n return fileType === 'image/gif' || fileName.endsWith('.gif')\n case 'webp':\n return fileType === 'image/webp' || fileName.endsWith('.webp')\n case 'bmp':\n return fileType === 'image/bmp' || fileName.endsWith('.bmp')\n case 'tiff':\n case 'tif':\n return (\n fileType === 'image/tiff' || fileName.endsWith('.tiff') || fileName.endsWith('.tif')\n )\n default:\n // For custom types, check both MIME type and file extension\n const mimeType = normalizedType.includes('/')\n ? normalizedType\n : `image/${normalizedType}`\n return fileType === mimeType || fileName.endsWith(`.${normalizedType}`)\n }\n })\n }\n /** Flag indicating if a file is currently being processed (reading or reducing) */\n const handlingFile = ref(false)\n /**\n * Reads a file or blob as a data URL and updates the model value.\n * Sets handlingFile to false after successful read.\n *\n * @param file - The file or blob to read and convert to base64 data URL\n * @category Utilities\n */\n const handleUpdateModelValueFromFile = (file: File | Blob) => {\n const reader = new FileReader()\n reader.onload = () => {\n handlingFile.value = false\n baseHooks.onUpdateModelValue(reader.result as string)\n }\n reader.onerror = () => {}\n reader.readAsDataURL(file)\n }\n /**\n * Processes an uploaded file with validation and optional image reduction.\n * SVG files are passed through without modification.\n * Other image types are reduced to max 1024px using ImageBlobReduce.\n *\n * @param file - The file to process\n * @category Utilities\n */\n const handleFile = (file: File) => {\n if (!isValidFileType(file)) {\n console.warn(\n `File type ${file.type} is not allowed. Accepted types: ${acceptedTypes.value.join(', ')}`\n )\n handleInvalidFileType(file.type, acceptedTypes.value)\n return\n }\n if (file.type.includes('svg') || file.name.toLowerCase().endsWith('.svg')) {\n return handleUpdateModelValueFromFile(file)\n }\n if (handlingFile.value) return\n handlingFile.value = true\n reduce\n .toBlob(file, {\n max: 1024,\n })\n .then((reducedBlob) => {\n handleUpdateModelValueFromFile(reducedBlob)\n })\n }\n /**\n * Handles file input change events from the hidden file input element.\n * Processes all selected files and resets the input value for repeat selections.\n *\n * @param e - The input change event\n * @category Utilities\n */\n const onFileInputFieldChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n if (!target.files || target.files.length === 0) return\n for (const file of target.files) {\n handleFile(file)\n }\n target.value = ''\n }\n /** Reference to the hidden file input element */\n const fileInputField = ref<HTMLInputElement | null>(null)\n /**\n * Opens the native file picker dialog.\n * Uses modern showPicker API when available, falls back to click() method.\n * Prevents action when an image is already set (reserved for future image editor integration).\n *\n * @param e - Optional mouse event to prevent default behavior\n * @category Utilities\n */\n const doOpenFilePicker = (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n e.stopPropagation()\n }\n if (fileInputField.value) {\n if ('showPicker' in HTMLInputElement.prototype) {\n try {\n fileInputField.value.showPicker()\n } catch (error) {\n console.error('Error opening file picker:', error)\n }\n } else {\n fileInputField.value.click()\n }\n } else {\n console.warn('File input field is not available')\n }\n }\n /** Placeholder slot renderer function if provided by parent */\n const placeholderSlot = useSlot<InlineImageFieldSlots, 'placeholder'>('placeholder', slots)\n /**\n * Computed active state for the field.\n * Field is active when base field is active, dragging, or placeholder content exists.\n */\n const isActive = computed<boolean>(() =>\n Boolean(\n baseProps.value.active ||\n isDragging.value ||\n placeholderSlot ||\n placeholder.value ||\n modelValue.value !== null\n )\n )\n useRender(() =>\n h(\n BaseField,\n {\n ...baseProps.value,\n ...baseHooks,\n loading: handlingFile.value || baseProps.value.loading,\n clearable: baseProps.value.clearable && !handlingFile.value && null !== modelValue.value,\n active: isActive.value,\n ...mergeProps(\n {\n style: baseProps.value.style || {},\n },\n {\n style: attrs.style || {},\n },\n {\n style: {\n border: isDragging.value\n ? resolveDropzoneBorder.value\n : resolvedDropzoneInactiveBorder.value,\n },\n }\n ),\n onDrop: (e: DragEvent) => {\n e.preventDefault()\n // e.stopPropagation()\n isDragging.value = false\n if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length) {\n for (const file of e.dataTransfer.files) {\n handleFile(file)\n }\n }\n },\n onDragover: (e: DragEvent) => {\n e.preventDefault()\n // e.stopPropagation()\n if (isFileDrag(e)) {\n if (e.dataTransfer) e.dataTransfer.dropEffect = 'copy'\n isDragging.value = true\n }\n },\n onDragenter: (e: DragEvent) => {\n e.preventDefault()\n // e.stopPropagation()\n if (isFileDrag(e)) {\n isDragging.value = true\n }\n },\n onDragleave: (e: DragEvent) => {\n e.preventDefault()\n // e.stopPropagation()\n isDragging.value = false\n },\n },\n {\n 'clear': baseSlots.clearSlot,\n 'prepend-inner': baseSlots.prependInnerSlot,\n 'append-inner': baseSlots.appendInnerSlot,\n 'label': baseSlots.labelSlot,\n 'loader': baseSlots.loaderSlot,\n 'prepend': baseSlots.prependSlot,\n 'append': baseSlots.appendSlot,\n 'details': baseSlots.detailsSlot,\n 'message': baseSlots.messageSlot,\n 'default': () => [\n h('input', {\n ref: fileInputField,\n type: 'file',\n accept: acceptAttribute.value,\n style: {\n opacity: 0,\n position: 'absolute',\n width: '0.1px',\n height: '0.1px',\n pointerEvents: 'none',\n },\n onChange: onFileInputFieldChange,\n multiple: false,\n }),\n h(\n VHover,\n {},\n {\n default: ({\n isHovering,\n props: hoverBindings,\n }: {\n isHovering: boolean\n props: Record<string, any>\n }) =>\n h(\n 'div',\n {\n ...hoverBindings,\n onClick: doOpenFilePicker,\n style: {\n height: computedHeight.value,\n cursor: isDragging.value ? 'grabbing' : 'pointer',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '8px',\n position: 'relative',\n },\n },\n [\n h(VImg, {\n src: modelValue.value || undefined,\n aspectRatio: imageAspectRatio.value,\n style: {\n opacity: isHovering || !modelValue.value || isDragging.value ? 0.05 : 1,\n transition: 'opacity 0.3s ease-in-out',\n maxWidth: '100%',\n maxHeight: '100%',\n },\n }),\n h(\n VOverlay,\n {\n contained: true,\n modelValue: (isHovering || !modelValue.value) && !isDragging.value,\n class: ['align-center', 'justify-center'],\n scrim: false,\n persistent: true,\n },\n () =>\n placeholderSlot\n ? placeholderSlot()\n : placeholder.value\n ? h(\n 'label',\n { style: {}, class: ['text-caption'] },\n placeholder.value\n )\n : null\n ),\n ]\n ),\n }\n ),\n ],\n }\n )\n )\n /**\n * Helper to update the isDragging state.\n * Used by global drag handlers to toggle dropzone visual feedback.\n *\n * @param active - True to show drag feedback, false to clear it\n * @category Utilities\n */\n const setDragzoneActive = (active: boolean) => {\n isDragging.value = active\n }\n /**\n * Window dragenter handler for detecting external file drags.\n * Activates dropzone feedback when files are dragged into the browser window.\n * @category Utilities\n */\n const onWindowDragEnter = (e: DragEvent) => {\n if (isFileDrag(e)) {\n e.preventDefault()\n setDragzoneActive(true)\n }\n }\n /**\n * Window dragover handler to maintain drag state and set dropEffect.\n * Must preventDefault to allow drop events to fire.\n * @category Utilities\n */\n const onWindowDragOver = (e: DragEvent) => {\n if (isFileDrag(e)) {\n e.preventDefault()\n if (e.dataTransfer) e.dataTransfer.dropEffect = 'copy'\n setDragzoneActive(true)\n }\n }\n /**\n * Window dragleave handler to clear drag state when leaving the browser window.\n * Checks for null relatedTarget to distinguish window exit from element transitions.\n * @category Utilities\n */\n const onWindowDragLeave = (e: DragEvent) => {\n // When leaving the browser window, relatedTarget is often null\n if ((e as any).relatedTarget === null) {\n setDragzoneActive(false)\n }\n }\n /**\n * Window drop handler to clear drag state after drop.\n * Prevents default to avoid browser navigation to dropped files.\n * @category Utilities\n */\n const onWindowDrop = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragzoneActive(false)\n }\n /**\n * Window dragend handler as a safety net to clear drag state.\n * Fires when drag operation ends, even if drop/dragleave didn't fire.\n * @category Utilities\n */\n const onWindowDragEnd = () => {\n setDragzoneActive(false)\n }\n onMounted(() => {\n window.addEventListener('dragenter', onWindowDragEnter, {\n passive: false,\n } as AddEventListenerOptions)\n window.addEventListener('dragover', onWindowDragOver, {\n passive: false,\n } as AddEventListenerOptions)\n window.addEventListener('dragleave', onWindowDragLeave)\n window.addEventListener('drop', onWindowDrop, { passive: false } as AddEventListenerOptions)\n window.addEventListener('dragend', onWindowDragEnd)\n })\n onBeforeUnmount(() => {\n window.removeEventListener('dragenter', onWindowDragEnter)\n window.removeEventListener('dragover', onWindowDragOver)\n window.removeEventListener('dragleave', onWindowDragLeave)\n window.removeEventListener('drop', onWindowDrop)\n window.removeEventListener('dragend', onWindowDragEnd)\n })\n return {}\n },\n})\n\n/**\n * The public instance type of the InlineImageField component.\n * Merges the component instance with ComponentPublicInstance for proper Vue type compatibility.\n * @interface\n * @category Types\n */\nexport type InlineImageField = ComponentPublicInstanceType<typeof InlineImageField>\n"],"names":["_createElementVNode","_normalizeClass","_normalizeStyle","vIntersect","_createVNode","_withDirectives","_mergeProps","_Fragment","offset","x","y","flipped","axis","overflows","raf","el","vClickOutside","target","onKeydown","_vShow","exports","i","r","n","module","pixelCeil","onmessage","assign","key","utils","processTile","tileOpts","stageEnv","ImageBlobReduce","omit","makeDimensionProps","convertToUnit","acceptedTypes","useRender"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}