@tecof/theme-editor 0.0.4 → 0.0.5
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.
- package/README.md +39 -0
- package/dist/index.d.mts +192 -1
- package/dist/index.d.ts +192 -1
- package/dist/index.js +14276 -130
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14219 -117
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api.ts","../src/components/TecofProvider.tsx","../src/components/styles.ts","../src/components/TecofEditor.tsx","../src/components/TecofRender.tsx","../src/utils/index.ts"],"names":["jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ApiResponse, PuckPageData, PageApiData } from './types';\n\n/**\n * Tecof API Client — handles communication with the Tecof backend\n * for page CRUD operations using merchant secret key.\n *\n * Endpoints:\n * - GET /api/store/editor/:id → get page by ID\n * - PUT /api/store/editor/:id → save page by ID\n */\nexport class TecofApiClient {\n private apiUrl: string;\n private secretKey: string;\n\n constructor(apiUrl: string, secretKey: string) {\n // Remove trailing slash\n this.apiUrl = apiUrl.replace(/\\/+$/, '');\n this.secretKey = secretKey;\n }\n\n private get headers(): Record<string, string> {\n return {\n 'x-secret-key': this.secretKey,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n };\n }\n\n /**\n * Fetch a page by ID (for the editor)\n */\n async getPage(pageId: string): Promise<ApiResponse<PageApiData>> {\n try {\n const res = await fetch(`${this.apiUrl}/api/store/editor/${pageId}`, {\n method: 'GET',\n headers: this.headers,\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n message: error instanceof Error ? error.message : 'Failed to fetch page',\n };\n }\n }\n\n /**\n * Save a page by ID\n */\n async savePage(\n pageId: string,\n puckData: PuckPageData,\n title?: string,\n accessToken?: string\n ): Promise<ApiResponse<PageApiData>> {\n try {\n const res = await fetch(`${this.apiUrl}/api/store/editor/${pageId}`, {\n method: 'PUT',\n headers: {\n ...this.headers,\n ...(accessToken && { Authorization: accessToken }),\n },\n body: JSON.stringify({ puckData, ...(title && { title }) }),\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n message: error instanceof Error ? error.message : 'Failed to save page',\n };\n }\n }\n\n /**\n * Fetch a published page by slug + locale (for rendering)\n */\n async getPublishedPage(\n slug: string,\n locale?: string\n ): Promise<ApiResponse<PageApiData>> {\n try {\n const res = await fetch(`${this.apiUrl}/api/store/render`, {\n method: 'POST',\n headers: this.headers,\n body: JSON.stringify({ slug, ...(locale && { locale }) }),\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n message: error instanceof Error ? error.message : 'Failed to fetch published page',\n };\n }\n }\n}\n\nexport default TecofApiClient;","import { createContext, useContext, useMemo } from 'react';\nimport { TecofApiClient } from '../api';\nimport type { TecofProviderProps } from '../types';\n\n/* ─── Context ─── */\n\ninterface TecofContextValue {\n apiClient: TecofApiClient;\n secretKey: string;\n apiUrl: string;\n}\n\nconst TecofContext = createContext<TecofContextValue | null>(null);\n\n/* ─── Provider ─── */\n\nexport const TecofProvider = ({ apiUrl, secretKey, children }: TecofProviderProps) => {\n const value = useMemo<TecofContextValue>(\n () => ({\n apiClient: new TecofApiClient(apiUrl, secretKey),\n secretKey,\n apiUrl,\n }),\n [apiUrl, secretKey]\n );\n\n return <TecofContext.Provider value={value}>{children}</TecofContext.Provider>;\n};\n\n/* ─── Hook ─── */\n\nexport function useTecof(): TecofContextValue {\n const ctx = useContext(TecofContext);\n if (!ctx) {\n throw new Error('useTecof must be used within a <TecofProvider>');\n }\n return ctx;\n}\n\nexport default TecofProvider;\n","/**\n * Scoped styles for TecofEditor — inlined to avoid CSS module build issues.\n * These are internal styles, not exposed to consumers.\n */\nexport const editorStyles = {\n wrapper: {\n position: 'relative' as const,\n width: '100%',\n height: '100%',\n },\n loading: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n background: '#fafafa',\n },\n loadingInner: {\n textAlign: 'center' as const,\n },\n loadingText: {\n fontSize: '14px',\n color: '#71717a',\n fontFamily: \"'Inter', system-ui, sans-serif\",\n },\n error: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '200px',\n padding: '24px',\n fontSize: '14px',\n color: '#ef4444',\n fontFamily: \"'Inter', system-ui, sans-serif\",\n },\n saveIndicator: {\n position: 'fixed' as const,\n bottom: '20px',\n right: '20px',\n padding: '8px 16px',\n background: '#18181b',\n color: '#ffffff',\n fontSize: '13px',\n fontWeight: 500,\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.15)',\n zIndex: 9999,\n fontFamily: \"'Inter', system-ui, sans-serif\",\n },\n spinner: {\n width: '40px',\n height: '40px',\n border: '3px solid #e4e4e7',\n borderTopColor: '#18181b',\n borderRadius: '50%',\n margin: '0 auto 12px',\n animation: 'tecof-spin 0.7s linear infinite',\n },\n} as const;\n\n/** Spinner keyframes — injected once into the document */\nlet keyframesInjected = false;\nexport const injectKeyframes = () => {\n if (keyframesInjected || typeof document === 'undefined') return;\n const style = document.createElement('style');\n style.textContent = `@keyframes tecof-spin { to { transform: rotate(360deg); } }`;\n document.head.appendChild(style);\n keyframesInjected = true;\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { Puck, fieldsPlugin, type Data, type Config } from '@puckeditor/core';\nimport { useTecof } from './TecofProvider';\nimport { editorStyles, injectKeyframes } from './styles';\nimport type { TecofEditorProps, PuckPageData } from '../types';\n\nconst EMPTY_PAGE: PuckPageData = { content: [], root: { props: {} }, zones: {} };\n\n/**\n * TecofEditor — Puck CMS page editor.\n *\n * - Fetches page by ID via secretKey auth\n * - Saves draft via API (taslak kaydet)\n * - Supports iframe postMessage:\n * - puck:save → triggers draft save\n * - puck:undo → undo\n * - puck:redo → redo\n * - puck:viewport → resize preview\n * - Sends to parent:\n * - puck:saved → draft saved successfully\n * - puck:changed → data changed\n * - puck:itemSelected → item selected { item, id }\n *\n * Requires `<TecofProvider>` ancestor for API client.\n */\nexport const TecofEditor = ({\n pageId,\n config,\n accessToken,\n onSave,\n onChange,\n overrides,\n plugins: extraPlugins,\n className,\n}: TecofEditorProps) => {\n const { apiClient } = useTecof();\n\n const [initialData, setInitialData] = useState<PuckPageData | null>(null);\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [saveStatus, setSaveStatus] = useState<'idle' | 'success' | 'error'>('idle');\n\n const puckDataRef = useRef<Data | null>(null);\n const isEmbedded = typeof window !== 'undefined' && window.parent !== window;\n\n // Inject spinner keyframes once\n useEffect(() => { injectKeyframes(); }, []);\n\n /* ── Fetch page ── */\n useEffect(() => {\n let cancelled = false;\n const load = async () => {\n setLoading(true);\n const res = await apiClient.getPage(pageId);\n if (cancelled) return;\n const data = res.success && res.data?.puckData ? res.data.puckData : EMPTY_PAGE;\n setInitialData(data);\n puckDataRef.current = data as unknown as Data;\n setLoading(false);\n };\n load();\n return () => { cancelled = true; };\n }, [pageId, apiClient]);\n\n /* ── Save Draft (Taslak Kaydet) ── */\n const handleSaveDraft = useCallback(\n async (data?: Data) => {\n const currentData = data || puckDataRef.current;\n if (!currentData) return;\n\n const puckData = currentData as unknown as PuckPageData;\n setSaving(true);\n setSaveStatus('idle');\n\n const res = await apiClient.savePage(pageId, puckData, undefined, accessToken);\n\n if (res.success) {\n setSaveStatus('success');\n setTimeout(() => setSaveStatus('idle'), 3000);\n onSave?.(puckData);\n if (isEmbedded) window.parent.postMessage({ type: 'puck:saved' }, '*');\n } else {\n setSaveStatus('error');\n if (isEmbedded) window.parent.postMessage({ type: 'puck:saveError', message: res.message }, '*');\n }\n\n setSaving(false);\n },\n [pageId, apiClient, isEmbedded, onSave, accessToken]\n );\n\n /* ── Change ── */\n const handleChange = useCallback(\n (data: Data) => {\n puckDataRef.current = data;\n const puckData = data as unknown as PuckPageData;\n onChange?.(puckData);\n if (isEmbedded) window.parent.postMessage({ type: 'puck:changed' }, '*');\n },\n [onChange, isEmbedded]\n );\n\n /* ── Puck onPublish — used as save trigger ── */\n const handlePuckPublish = useCallback(\n (data: Data) => {\n handleSaveDraft(data);\n },\n [handleSaveDraft]\n );\n\n /* ── iframe postMessage listener ── */\n useEffect(() => {\n if (!isEmbedded) return;\n\n const onMessage = (e: MessageEvent) => {\n switch (e.data?.type) {\n case 'puck:save': {\n handleSaveDraft();\n break;\n }\n case 'puck:undo':\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'z', code: 'KeyZ', ctrlKey: true, bubbles: true }));\n break;\n case 'puck:redo':\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'z', code: 'KeyZ', ctrlKey: true, shiftKey: true, bubbles: true }));\n break;\n case 'puck:viewport': {\n const frame = document.querySelector('[data-testid=\"puck-frame\"]') as HTMLElement;\n if (frame) {\n const w = e.data.width || '100%';\n frame.style.maxWidth = w;\n frame.style.margin = w === '100%' ? '0' : '0 auto';\n frame.style.transition = 'max-width 0.3s ease';\n }\n break;\n }\n }\n };\n\n window.addEventListener('message', onMessage);\n return () => window.removeEventListener('message', onMessage);\n }, [isEmbedded, handleSaveDraft]);\n\n /* ── Track item selection via click delegation ── */\n useEffect(() => {\n if (!isEmbedded) return;\n\n const handleClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n // Walk up to find closest puck component\n const puckComponent = target.closest('[data-puck-component]') as HTMLElement;\n\n if (puckComponent) {\n const componentType = puckComponent.getAttribute('data-puck-component');\n const draggableId = puckComponent.closest('[data-rfd-draggable-id]')?.getAttribute('data-rfd-draggable-id');\n\n window.parent.postMessage({\n type: 'puck:itemSelected',\n item: {\n type: componentType,\n id: draggableId || null\n }\n }, '*');\n }\n };\n\n // Detect deselection: click on empty area\n const handleDeselect = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (!target.closest('[data-puck-component]')) {\n window.parent.postMessage({ type: 'puck:itemDeselected' }, '*');\n }\n };\n\n document.addEventListener('click', handleClick, true);\n document.addEventListener('click', handleDeselect, false);\n\n return () => {\n document.removeEventListener('click', handleClick, true);\n document.removeEventListener('click', handleDeselect, false);\n };\n }, [isEmbedded]);\n\n /* ── Loading ── */\n if (loading || !initialData) {\n return (\n <div style={editorStyles.loading} className={className}>\n <div style={editorStyles.loadingInner}>\n <div style={editorStyles.spinner} />\n <p style={editorStyles.loadingText}>Loading editor...</p>\n </div>\n </div>\n );\n }\n\n /* ── Plugins & Overrides ── */\n const plugins = [\n ...(fieldsPlugin ? [fieldsPlugin({ desktopSideBar: 'left' })] : []),\n ...(extraPlugins || []),\n ];\n\n const mergedOverrides = { header: () => <></>, ...(overrides || {}) };\n\n return (\n <div style={editorStyles.wrapper} className={className}>\n <Puck\n plugins={plugins}\n config={config as Config}\n data={initialData}\n onPublish={handlePuckPublish}\n onChange={handleChange}\n overrides={mergedOverrides}\n />\n {saving && (\n <div style={editorStyles.saveIndicator}>\n {saveStatus === 'error' ? 'Save failed' : 'Saving...'}\n </div>\n )}\n </div>\n );\n};\n\nexport default TecofEditor;","import { Render, type Config } from '@puckeditor/core';\nimport type { TecofRenderProps } from '../types';\n\n/**\n * TecofRender — Puck page renderer.\n *\n * Pass `data` (PuckPageData) and `config` (Puck Config) directly.\n * No API fetch, no provider required.\n */\nexport const TecofRender = ({ data, config, className }: TecofRenderProps) => {\n if (!data) return null;\n\n return (\n <div className={className}>\n <Render config={config as Config} data={data} />\n </div>\n );\n};\n\nexport default TecofRender;\n","import type { ThemeConfig, HSL } from '../types';\n\n/* ─── Color Converters ─── */\n\nexport function hexToHsl(hex: string): HSL {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return { h: 0, s: 0, l: 0 };\n\n let r = parseInt(result[1], 16) / 255;\n let g = parseInt(result[2], 16) / 255;\n let b = parseInt(result[3], 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const sNorm = s / 100;\n const lNorm = l / 100;\n const a = sNorm * Math.min(lNorm, 1 - lNorm);\n\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n const color = lNorm - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color)\n .toString(16)\n .padStart(2, '0');\n };\n\n return `#${f(0)}${f(8)}${f(4)}`;\n}\n\n/* ─── Color Manipulation ─── */\n\nexport function lighten(hex: string, amount: number): string {\n const { h, s, l } = hexToHsl(hex);\n return hslToHex(h, s, Math.min(100, l + amount));\n}\n\nexport function darken(hex: string, amount: number): string {\n const { h, s, l } = hexToHsl(hex);\n return hslToHex(h, s, Math.max(0, l - amount));\n}\n\n/* ─── CSS Variable Generation ─── */\n\nexport function generateCSSVariables(theme: ThemeConfig): string {\n const lines: string[] = [':root {'];\n\n // Colors\n for (const [key, value] of Object.entries(theme.colors)) {\n const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n lines.push(` --theme-color-${cssKey}: ${value};`);\n }\n\n // Typography\n lines.push(` --theme-font-family: ${theme.typography.fontFamily};`);\n lines.push(` --theme-heading-font-family: ${theme.typography.headingFontFamily};`);\n lines.push(` --theme-font-size-base: ${theme.typography.baseFontSize}px;`);\n lines.push(` --theme-line-height: ${theme.typography.lineHeight};`);\n lines.push(` --theme-font-weight-normal: ${theme.typography.fontWeightNormal};`);\n lines.push(` --theme-font-weight-medium: ${theme.typography.fontWeightMedium};`);\n lines.push(` --theme-font-weight-bold: ${theme.typography.fontWeightBold};`);\n\n for (const [level, scale] of Object.entries(theme.typography.headingScale)) {\n lines.push(` --theme-heading-${level}: ${scale}rem;`);\n }\n\n // Spacing\n lines.push(` --theme-container-max-width: ${theme.spacing.containerMaxWidth}px;`);\n lines.push(` --theme-section-padding-y: ${theme.spacing.sectionPaddingY}px;`);\n lines.push(` --theme-section-padding-x: ${theme.spacing.sectionPaddingX}px;`);\n lines.push(` --theme-component-gap: ${theme.spacing.componentGap}px;`);\n lines.push(` --theme-border-radius: ${theme.spacing.borderRadius}px;`);\n lines.push(` --theme-border-radius-lg: ${theme.spacing.borderRadiusLg}px;`);\n lines.push(` --theme-border-radius-sm: ${theme.spacing.borderRadiusSm}px;`);\n\n // Custom tokens\n if (theme.customTokens) {\n for (const [key, value] of Object.entries(theme.customTokens)) {\n lines.push(` --theme-${key}: ${value};`);\n }\n }\n\n lines.push('}');\n return lines.join('\\n');\n}\n\n/* ─── Default Theme ─── */\n\nexport function getDefaultTheme(): ThemeConfig {\n return {\n colors: {\n primary: '#18181b',\n secondary: '#f4f4f5',\n accent: '#3b82f6',\n background: '#ffffff',\n foreground: '#09090b',\n muted: '#f4f4f5',\n mutedForeground: '#71717a',\n border: '#e4e4e7',\n card: '#ffffff',\n cardForeground: '#09090b',\n destructive: '#ef4444',\n },\n typography: {\n fontFamily: \"'Inter', system-ui, -apple-system, sans-serif\",\n headingFontFamily: \"'Inter', system-ui, -apple-system, sans-serif\",\n baseFontSize: 16,\n lineHeight: 1.6,\n headingScale: {\n h1: 3,\n h2: 2.25,\n h3: 1.875,\n h4: 1.5,\n h5: 1.25,\n h6: 1,\n },\n fontWeightNormal: 400,\n fontWeightMedium: 500,\n fontWeightBold: 700,\n },\n spacing: {\n containerMaxWidth: 1280,\n sectionPaddingY: 80,\n sectionPaddingX: 24,\n componentGap: 24,\n borderRadius: 8,\n borderRadiusLg: 12,\n borderRadiusSm: 4,\n },\n };\n}\n\n/* ─── Deep Merge ─── */\n\nfunction isObject(item: unknown): item is Record<string, unknown> {\n return Boolean(item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeTheme(base: ThemeConfig, overrides: Partial<ThemeConfig>): ThemeConfig {\n const result: ThemeConfig = {\n colors: { ...base.colors, ...(overrides.colors ?? {}) },\n typography: { ...base.typography, ...(overrides.typography ?? {}) },\n spacing: { ...base.spacing, ...(overrides.spacing ?? {}) },\n customTokens: { ...(base.customTokens ?? {}), ...(overrides.customTokens ?? {}) },\n };\n\n // Deep-merge headingScale if provided\n if (overrides.typography?.headingScale) {\n result.typography.headingScale = {\n ...base.typography.headingScale,\n ...overrides.typography.headingScale,\n };\n }\n\n return result;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/api.ts","../src/components/TecofProvider.tsx","../src/components/styles.ts","../src/components/TecofEditor.tsx","../src/components/TecofRender.tsx","../src/components/fields/useLanguages.ts","../src/components/fields/LanguageField.tsx","../src/components/fields/EditorField.tsx","../node_modules/filepond/dist/filepond.esm.js","../node_modules/react-filepond/dist/react-filepond.esm.js","../node_modules/filepond-plugin-file-validate-size/dist/filepond-plugin-file-validate-size.esm.js","../node_modules/filepond-plugin-file-validate-type/dist/filepond-plugin-file-validate-type.esm.js","../node_modules/filepond-plugin-image-exif-orientation/dist/filepond-plugin-image-exif-orientation.esm.js","../node_modules/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.esm.js","../node_modules/@radix-ui/primitive/src/primitive.tsx","../node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../node_modules/@radix-ui/react-context/src/create-context.tsx","../node_modules/@radix-ui/react-use-layout-effect/src/use-layout-effect.tsx","../node_modules/@radix-ui/react-id/src/id.tsx","../node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state.tsx","../node_modules/@radix-ui/react-slot/src/slot.tsx","../node_modules/@radix-ui/react-primitive/src/primitive.tsx","../node_modules/@radix-ui/react-use-callback-ref/src/use-callback-ref.tsx","../node_modules/@radix-ui/react-use-escape-keydown/src/use-escape-keydown.tsx","../node_modules/@radix-ui/react-dismissable-layer/src/dismissable-layer.tsx","../node_modules/@radix-ui/react-focus-scope/src/focus-scope.tsx","../node_modules/@radix-ui/react-portal/src/portal.tsx","../node_modules/@radix-ui/react-presence/src/use-state-machine.tsx","../node_modules/@radix-ui/react-presence/src/presence.tsx","../node_modules/@radix-ui/react-focus-guards/src/focus-guards.tsx","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/@radix-ui/react-dialog/src/dialog.tsx","../node_modules/vaul/dist/index.mjs","../node_modules/shared/src/utils/mergeClasses.ts","../node_modules/shared/src/utils/toKebabCase.ts","../node_modules/shared/src/utils/toCamelCase.ts","../node_modules/shared/src/utils/toPascalCase.ts","../node_modules/lucide-react/src/defaultAttributes.ts","../node_modules/shared/src/utils/hasA11yProp.ts","../node_modules/lucide-react/src/context.ts","../node_modules/lucide-react/src/Icon.ts","../node_modules/lucide-react/src/createLucideIcon.ts","../node_modules/lucide-react/src/icons/folder-open.ts","../node_modules/lucide-react/src/icons/image.ts","../node_modules/lucide-react/src/icons/refresh-ccw.ts","../node_modules/lucide-react/src/icons/upload.ts","../node_modules/lucide-react/src/icons/x.ts","../src/components/fields/UploadField.tsx","../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js","../node_modules/state-local/lib/es/state-local.js","../node_modules/@monaco-editor/loader/lib/es/config/index.js","../node_modules/@monaco-editor/loader/lib/es/utils/curry.js","../node_modules/@monaco-editor/loader/lib/es/utils/isObject.js","../node_modules/@monaco-editor/loader/lib/es/validators/index.js","../node_modules/@monaco-editor/loader/lib/es/utils/compose.js","../node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js","../node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js","../node_modules/@monaco-editor/loader/lib/es/loader/index.js","../node_modules/@monaco-editor/react/src/MonacoContainer/styles.ts","../node_modules/@monaco-editor/react/src/Loading/styles.ts","../node_modules/@monaco-editor/react/src/Loading/Loading.tsx","../node_modules/@monaco-editor/react/src/Loading/index.ts","../node_modules/@monaco-editor/react/src/MonacoContainer/MonacoContainer.tsx","../node_modules/@monaco-editor/react/src/MonacoContainer/index.ts","../node_modules/@monaco-editor/react/src/hooks/useMount/index.ts","../node_modules/@monaco-editor/react/src/hooks/useUpdate/index.ts","../node_modules/@monaco-editor/react/src/utils/index.ts","../node_modules/@monaco-editor/react/src/DiffEditor/DiffEditor.tsx","../node_modules/@monaco-editor/react/src/DiffEditor/index.ts","../node_modules/@monaco-editor/react/src/hooks/usePrevious/index.ts","../node_modules/@monaco-editor/react/src/Editor/Editor.tsx","../node_modules/@monaco-editor/react/src/Editor/index.ts","../node_modules/@monaco-editor/react/src/index.ts","../src/components/fields/CodeEditorField.tsx","../src/utils/index.ts"],"names":["res","error","file","limit","config","data","jsx","useState","useMemo","useEffect","jsxs","v","useCallback","name","useRef","queries","actions","state","getState","query","index","animations","animator","fn","getOffset","transforms","styles","write","create","destroy","store","props","read","root","listeners","item","value","option","count","blob","headers","chunk","ondata","onerror","onload","reset","loader","serverFileReference","key","restore","fetch","success","result","failure","noop","svg","isAsync","map","action","e","drop","l","location","currentIndex","dragHeight","itemHeight","entry","list","panel","defaultOptions","isHidden","exports","route","setOptions","getFiles","plugin","isSupported","app","React","createElement","addFilter","Type","replaceInString","toNaturalFileSize","isBrowser","isString","guesstimateMimeType","getExtensionFromFilename","getFilenameFromURL","IS_BROWSER","isFile","isDefined","attr","ns","updateRect","_","size","markup","C","h","loadImage","createWorker","updateImage","averageColor","createRoute","didLoadItem","React2","createContext","React3","useContext","createScope","nextScopes","useLayoutEffect","React4","React5","React6","isFunction","Slot","React7","Node","React8","React9","React10","React11","node","handleAndDispatchPointerDownOutsideEvent","React12","handleFocusIn","handleFocusOut","handleMutations","container","arrayRemove","React13","ReactDOM","React14","React23","getElementRef","React15","__assign","s","useCallbackRef","React16","defaults","cbs","React17","React18","SideCar","React19","parse","React20","isScrollable","React21","Style","React24","React25","PORTAL_NAME","Fragment","createContext2","Portal","React__default","re","useIsomorphicLayoutEffect","addEvent","setRef","composeRefs","useComposedRefs","React26","useUncontrolledState","useControllableState","Root","activeSnapPointIndex","_drawerRef_current","_drawerRef_current1","_window_visualViewport","Overlay","Content","direction","forwardRef","__iconNode","Image","k","r","_defineProperty","ownKeys","_objectSpread2","isObject","isEmpty","errorMessages","setState","curry","errorHandler","throwError","validators","compose","configureLoader","require","styles_default","Loading","children","Loading_default","MonacoContainer","width","height","isEditorReady","loading","_ref","className","wrapperProps","MonacoContainer_default","memo","useMount","effect","useMount_default","useUpdate","deps","applyChanges","isInitialMount","useUpdate_default","getOrCreateModel","monaco","language","path","getModel","createModel","createModelUri","DiffEditor","original","modified","originalLanguage","modifiedLanguage","originalModelPath","modifiedModelPath","keepCurrentOriginalModel","keepCurrentModifiedModel","theme","options","beforeMount","onMount","setIsEditorReady","isMonacoMounting","setIsMonacoMounting","editorRef","monacoRef","containerRef","onMountRef","beforeMountRef","preventCreation","cancelable","disposeEditor","originalEditor","model","modifiedEditor","setModels","originalModel","modifiedModel","createEditor","models","DiffEditor_default","usePrevious","ref","usePrevious_default","viewStates","Editor","defaultValue","defaultLanguage","defaultPath","line","overrideServices","saveViewState","keepCurrentModel","onChange","onValidate","subscriptionRef","valueRef","previousPath","preventTriggerChangeEvent","autoCreatedModelPath","defaultModel","event","changeMarkersListener","uris","editorUri","uri","markers","Editor_default","src_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ApiResponse, PuckPageData, PageApiData, MerchantInfoData } from './types';\n\n/**\n * Tecof API Client — handles communication with the Tecof backend\n * for page CRUD operations using merchant secret key.\n *\n * Endpoints:\n * - GET /api/store/editor/:id → get page by ID\n * - PUT /api/store/editor/:id → save page by ID\n * - GET /api/store/merchant-info → get merchant language config\n */\nexport class TecofApiClient {\n private apiUrl: string;\n private secretKey: string;\n\n constructor(apiUrl: string, secretKey: string) {\n // Remove trailing slash\n this.apiUrl = apiUrl.replace(/\\/+$/, '');\n this.secretKey = secretKey;\n }\n\n private get headers(): Record<string, string> {\n return {\n 'x-secret-key': this.secretKey,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n };\n }\n\n /**\n * Fetch a page by ID (for the editor)\n */\n async getPage(pageId: string): Promise<ApiResponse<PageApiData>> {\n try {\n const res = await fetch(`${this.apiUrl}/api/store/editor/${pageId}`, {\n method: 'GET',\n headers: this.headers,\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n message: error instanceof Error ? error.message : 'Failed to fetch page',\n };\n }\n }\n\n /**\n * Save a page by ID\n */\n async savePage(\n pageId: string,\n puckData: PuckPageData,\n title?: string,\n accessToken?: string\n ): Promise<ApiResponse<PageApiData>> {\n try {\n const res = await fetch(`${this.apiUrl}/api/store/editor/${pageId}`, {\n method: 'PUT',\n headers: {\n ...this.headers,\n ...(accessToken && { Authorization: accessToken }),\n },\n body: JSON.stringify({ puckData, ...(title && { title }) }),\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n message: error instanceof Error ? error.message : 'Failed to save page',\n };\n }\n }\n\n /**\n * Fetch a published page by slug + locale (for rendering)\n */\n async getPublishedPage(\n slug: string,\n locale?: string\n ): Promise<ApiResponse<PageApiData>> {\n try {\n const res = await fetch(`${this.apiUrl}/api/store/render`, {\n method: 'POST',\n headers: this.headers,\n body: JSON.stringify({ slug, ...(locale && { locale }) }),\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n message: error instanceof Error ? error.message : 'Failed to fetch published page',\n };\n }\n }\n\n /**\n * Fetch merchant language config (for editor fields)\n */\n async getMerchantInfo(): Promise<ApiResponse<MerchantInfoData>> {\n try {\n const res = await fetch(`${this.apiUrl}/api/store/merchant-info`, {\n method: 'GET',\n headers: this.headers,\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n message: error instanceof Error ? error.message : 'Failed to fetch merchant info',\n };\n }\n }\n\n /**\n * Upload files via secretKey auth (for editor fields)\n * Returns array of file records: [{ _id, name, size, type, meta }]\n */\n async uploadFile(file: File, folder?: string): Promise<ApiResponse<any[]>> {\n try {\n const formData = new FormData();\n formData.append('files', file, file.name);\n\n const url = folder\n ? `${this.apiUrl}/api/store/upload?folder=${encodeURIComponent(folder)}`\n : `${this.apiUrl}/api/store/upload`;\n\n const res = await fetch(url, {\n method: 'POST',\n headers: {\n 'x-secret-key': this.secretKey,\n Accept: 'application/json',\n // Do NOT set Content-Type — browser sets multipart boundary automatically\n },\n body: formData,\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n };\n }\n }\n\n /**\n * Fetch previously uploaded files (for media library selector)\n */\n async getUploads(page = 1, limit = 50): Promise<ApiResponse<any[]>> {\n try {\n const res = await fetch(`${this.apiUrl}/api/store/uploads?page=${page}&limit=${limit}`, {\n method: 'GET',\n headers: this.headers,\n });\n return await res.json();\n } catch (error) {\n return {\n success: false,\n message: error instanceof Error ? error.message : 'Failed to fetch uploads',\n };\n }\n }\n\n /** CDN base URL (derived from apiUrl) */\n get cdnUrl(): string {\n return this.apiUrl;\n }\n}\n\nexport default TecofApiClient;","import { createContext, useContext, useMemo } from 'react';\nimport { TecofApiClient } from '../api';\nimport type { TecofProviderProps } from '../types';\n\n/* ─── Context ─── */\n\ninterface TecofContextValue {\n apiClient: TecofApiClient;\n secretKey: string;\n apiUrl: string;\n}\n\nconst TecofContext = createContext<TecofContextValue | null>(null);\n\n/* ─── Provider ─── */\n\nexport const TecofProvider = ({ apiUrl, secretKey, children }: TecofProviderProps) => {\n const value = useMemo<TecofContextValue>(\n () => ({\n apiClient: new TecofApiClient(apiUrl, secretKey),\n secretKey,\n apiUrl,\n }),\n [apiUrl, secretKey]\n );\n\n return <TecofContext.Provider value={value}>{children}</TecofContext.Provider>;\n};\n\n/* ─── Hook ─── */\n\nexport function useTecof(): TecofContextValue {\n const ctx = useContext(TecofContext);\n if (!ctx) {\n throw new Error('useTecof must be used within a <TecofProvider>');\n }\n return ctx;\n}\n\nexport default TecofProvider;\n","/**\n * Scoped styles for TecofEditor — inlined to avoid CSS module build issues.\n * These are internal styles, not exposed to consumers.\n */\nexport const editorStyles = {\n wrapper: {\n position: 'relative' as const,\n width: '100%',\n height: '100%',\n },\n loading: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n background: '#fafafa',\n },\n loadingInner: {\n textAlign: 'center' as const,\n },\n loadingText: {\n fontSize: '14px',\n color: '#71717a',\n fontFamily: \"'Inter', system-ui, sans-serif\",\n },\n error: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '200px',\n padding: '24px',\n fontSize: '14px',\n color: '#ef4444',\n fontFamily: \"'Inter', system-ui, sans-serif\",\n },\n saveIndicator: {\n position: 'fixed' as const,\n bottom: '20px',\n right: '20px',\n padding: '8px 16px',\n background: '#18181b',\n color: '#ffffff',\n fontSize: '13px',\n fontWeight: 500,\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.15)',\n zIndex: 9999,\n fontFamily: \"'Inter', system-ui, sans-serif\",\n },\n spinner: {\n width: '40px',\n height: '40px',\n border: '3px solid #e4e4e7',\n borderTopColor: '#18181b',\n borderRadius: '50%',\n margin: '0 auto 12px',\n animation: 'tecof-spin 0.7s linear infinite',\n },\n} as const;\n\n/** Spinner keyframes — injected once into the document */\nlet keyframesInjected = false;\nexport const injectKeyframes = () => {\n if (keyframesInjected || typeof document === 'undefined') return;\n const style = document.createElement('style');\n style.textContent = `@keyframes tecof-spin { to { transform: rotate(360deg); } }`;\n document.head.appendChild(style);\n keyframesInjected = true;\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { Puck, fieldsPlugin, type Data, type Config } from '@puckeditor/core';\nimport { useTecof } from './TecofProvider';\nimport { editorStyles, injectKeyframes } from './styles';\nimport type { TecofEditorProps, PuckPageData } from '../types';\n\nconst EMPTY_PAGE: PuckPageData = { content: [], root: { props: {} }, zones: {} };\n\n/**\n * TecofEditor — Puck CMS page editor.\n *\n * - Fetches page by ID via secretKey auth\n * - Saves draft via API (taslak kaydet)\n * - Supports iframe postMessage:\n * - puck:save → triggers draft save\n * - puck:undo → undo\n * - puck:redo → redo\n * - puck:viewport → resize preview\n * - Sends to parent:\n * - puck:saved → draft saved successfully\n * - puck:changed → data changed\n * - puck:itemSelected → item selected { item, id }\n *\n * Requires `<TecofProvider>` ancestor for API client.\n */\nexport const TecofEditor = ({\n pageId,\n config,\n accessToken,\n onSave,\n onChange,\n overrides,\n plugins: extraPlugins,\n className,\n}: TecofEditorProps) => {\n const { apiClient } = useTecof();\n\n const [initialData, setInitialData] = useState<PuckPageData | null>(null);\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [saveStatus, setSaveStatus] = useState<'idle' | 'success' | 'error'>('idle');\n\n const puckDataRef = useRef<Data | null>(null);\n const isEmbedded = typeof window !== 'undefined' && window.parent !== window;\n\n // Inject spinner keyframes once\n useEffect(() => { injectKeyframes(); }, []);\n\n /* ── Fetch page ── */\n useEffect(() => {\n let cancelled = false;\n const load = async () => {\n setLoading(true);\n const res = await apiClient.getPage(pageId);\n if (cancelled) return;\n const data = res.success && res.data?.puckData ? res.data.puckData : EMPTY_PAGE;\n setInitialData(data);\n puckDataRef.current = data as unknown as Data;\n setLoading(false);\n };\n load();\n return () => { cancelled = true; };\n }, [pageId, apiClient]);\n\n /* ── Save Draft (Taslak Kaydet) ── */\n const handleSaveDraft = useCallback(\n async (data?: Data) => {\n const currentData = data || puckDataRef.current;\n if (!currentData) return;\n\n const puckData = currentData as unknown as PuckPageData;\n setSaving(true);\n setSaveStatus('idle');\n\n const res = await apiClient.savePage(pageId, puckData, undefined, accessToken);\n\n if (res.success) {\n setSaveStatus('success');\n setTimeout(() => setSaveStatus('idle'), 3000);\n onSave?.(puckData);\n if (isEmbedded) window.parent.postMessage({ type: 'puck:saved' }, '*');\n } else {\n setSaveStatus('error');\n if (isEmbedded) window.parent.postMessage({ type: 'puck:saveError', message: res.message }, '*');\n }\n\n setSaving(false);\n },\n [pageId, apiClient, isEmbedded, onSave, accessToken]\n );\n\n /* ── Change ── */\n const handleChange = useCallback(\n (data: Data) => {\n puckDataRef.current = data;\n const puckData = data as unknown as PuckPageData;\n onChange?.(puckData);\n if (isEmbedded) window.parent.postMessage({ type: 'puck:changed' }, '*');\n },\n [onChange, isEmbedded]\n );\n\n /* ── Puck onPublish — used as save trigger ── */\n const handlePuckPublish = useCallback(\n (data: Data) => {\n handleSaveDraft(data);\n },\n [handleSaveDraft]\n );\n\n /* ── iframe postMessage listener ── */\n useEffect(() => {\n if (!isEmbedded) return;\n\n const onMessage = (e: MessageEvent) => {\n switch (e.data?.type) {\n case 'puck:save': {\n handleSaveDraft();\n break;\n }\n case 'puck:undo':\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'z', code: 'KeyZ', ctrlKey: true, bubbles: true }));\n break;\n case 'puck:redo':\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'z', code: 'KeyZ', ctrlKey: true, shiftKey: true, bubbles: true }));\n break;\n case 'puck:viewport': {\n const frame = document.querySelector('[data-testid=\"puck-frame\"]') as HTMLElement;\n if (frame) {\n const w = e.data.width || '100%';\n frame.style.maxWidth = w;\n frame.style.margin = w === '100%' ? '0' : '0 auto';\n frame.style.transition = 'max-width 0.3s ease';\n }\n break;\n }\n }\n };\n\n window.addEventListener('message', onMessage);\n return () => window.removeEventListener('message', onMessage);\n }, [isEmbedded, handleSaveDraft]);\n\n /* ── Track item selection via click delegation ── */\n useEffect(() => {\n if (!isEmbedded) return;\n\n const handleClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n // Walk up to find closest puck component\n const puckComponent = target.closest('[data-puck-component]') as HTMLElement;\n\n if (puckComponent) {\n const componentType = puckComponent.getAttribute('data-puck-component');\n const draggableId = puckComponent.closest('[data-rfd-draggable-id]')?.getAttribute('data-rfd-draggable-id');\n\n window.parent.postMessage({\n type: 'puck:itemSelected',\n item: {\n type: componentType,\n id: draggableId || null\n }\n }, '*');\n }\n };\n\n // Detect deselection: click on empty area\n const handleDeselect = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (!target.closest('[data-puck-component]')) {\n window.parent.postMessage({ type: 'puck:itemDeselected' }, '*');\n }\n };\n\n document.addEventListener('click', handleClick, true);\n document.addEventListener('click', handleDeselect, false);\n\n return () => {\n document.removeEventListener('click', handleClick, true);\n document.removeEventListener('click', handleDeselect, false);\n };\n }, [isEmbedded]);\n\n /* ── Loading ── */\n if (loading || !initialData) {\n return (\n <div style={editorStyles.loading} className={className}>\n <div style={editorStyles.loadingInner}>\n <div style={editorStyles.spinner} />\n <p style={editorStyles.loadingText}>Loading editor...</p>\n </div>\n </div>\n );\n }\n\n /* ── Plugins & Overrides ── */\n const plugins = [\n ...(fieldsPlugin ? [fieldsPlugin({ desktopSideBar: 'left' })] : []),\n ...(extraPlugins || []),\n ];\n\n const mergedOverrides = { header: () => <></>, ...(overrides || {}) };\n\n return (\n <div style={editorStyles.wrapper} className={className}>\n <Puck\n plugins={plugins}\n config={config as Config}\n data={initialData}\n onPublish={handlePuckPublish}\n onChange={handleChange}\n overrides={mergedOverrides}\n />\n {saving && (\n <div style={editorStyles.saveIndicator}>\n {saveStatus === 'error' ? 'Save failed' : 'Saving...'}\n </div>\n )}\n </div>\n );\n};\n\nexport default TecofEditor;","import { Render, type Config } from '@puckeditor/core';\nimport type { TecofRenderProps } from '../types';\n\n/**\n * TecofRender — Puck page renderer.\n *\n * Pass `data` (PuckPageData) and `config` (Puck Config) directly.\n * No API fetch, no provider required.\n */\nexport const TecofRender = ({ data, config, className }: TecofRenderProps) => {\n if (!data) return null;\n\n return (\n <div className={className}>\n <Render config={config as Config} data={data} />\n </div>\n );\n};\n\nexport default TecofRender;\n","import { useEffect, useMemo, useState } from 'react';\nimport { useTecof } from '../TecofProvider';\nimport type { MerchantInfoData } from '../../types';\n\n/* ─── Cache for merchant info (per apiUrl+secretKey combo) ─── */\n\nconst merchantInfoCache = new Map<string, { data: MerchantInfoData; ts: number }>();\nconst CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Shared hook that fetches merchant language config via secretKey.\n * Returns { merchantInfo, loading, error, activeTab, setActiveTab }.\n * Cached for 5 minutes per apiUrl+secretKey combination.\n */\nexport function useLanguages() {\n const { apiClient, secretKey, apiUrl } = useTecof();\n\n const [merchantInfo, setMerchantInfo] = useState<MerchantInfoData | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [activeTab, setActiveTab] = useState<string>('');\n\n const cacheKey = useMemo(() => `${apiUrl}::${secretKey}`, [apiUrl, secretKey]);\n\n useEffect(() => {\n let cancelled = false;\n\n const fetchInfo = async () => {\n // Check cache\n const cached = merchantInfoCache.get(cacheKey);\n if (cached && Date.now() - cached.ts < CACHE_TTL) {\n setMerchantInfo(cached.data);\n if (!activeTab) setActiveTab(cached.data.defaultLanguage);\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n const res = await apiClient.getMerchantInfo();\n if (cancelled) return;\n\n if (res.success && res.data) {\n merchantInfoCache.set(cacheKey, { data: res.data, ts: Date.now() });\n setMerchantInfo(res.data);\n if (!activeTab) setActiveTab(res.data.defaultLanguage);\n } else {\n setError(res.message || 'Failed to load languages');\n const fallback: MerchantInfoData = { languages: ['tr'], defaultLanguage: 'tr' };\n setMerchantInfo(fallback);\n if (!activeTab) setActiveTab('tr');\n }\n\n setLoading(false);\n };\n\n fetchInfo();\n return () => { cancelled = true; };\n }, [apiClient, cacheKey]);\n\n return { merchantInfo, loading, error, activeTab, setActiveTab };\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { useLanguages } from './useLanguages';\nimport type { LanguageFieldValue } from '../../types';\n\n/* ─── Language Flag Map (ISO 639-1 → Emoji) ─── */\n\nexport const FLAG_MAP: Record<string, string> = {\n tr: '🇹🇷', en: '🇬🇧', de: '🇩🇪', fr: '🇫🇷', es: '🇪🇸',\n it: '🇮🇹', pt: '🇵🇹', nl: '🇳🇱', ru: '🇷🇺', ar: '🇸🇦',\n zh: '🇨🇳', ja: '🇯🇵', ko: '🇰🇷', pl: '🇵🇱', sv: '🇸🇪',\n no: '🇳🇴', da: '🇩🇰', fi: '🇫🇮', el: '🇬🇷', cs: '🇨🇿',\n ro: '🇷🇴', hu: '🇭🇺', bg: '🇧🇬', uk: '🇺🇦', he: '🇮🇱',\n hi: '🇮🇳', th: '🇹🇭', vi: '🇻🇳', id: '🇮🇩', ms: '🇲🇾',\n};\n\nexport const getFlag = (code: string) => FLAG_MAP[code] || '🌐';\n\n/* ─── Shared Styles ─── */\n\nexport const fieldStyles = {\n container: {\n width: '100%',\n fontFamily: \"'Inter', system-ui, -apple-system, sans-serif\",\n },\n tabBar: {\n display: 'flex',\n gap: '2px',\n marginBottom: '8px',\n borderRadius: '8px',\n background: '#f4f4f5',\n padding: '3px',\n overflow: 'hidden' as const,\n },\n tab: (isActive: boolean, isDefault: boolean) => ({\n flex: 1,\n display: 'flex',\n alignItems: 'center' as const,\n justifyContent: 'center' as const,\n gap: '4px',\n padding: '6px 8px',\n fontSize: '12px',\n fontWeight: isActive ? 600 : 400,\n color: isActive ? '#18181b' : '#71717a',\n background: isActive ? '#ffffff' : 'transparent',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer' as const,\n transition: 'all 0.15s ease',\n boxShadow: isActive ? '0 1px 3px rgba(0,0,0,0.08)' : 'none',\n position: 'relative' as const,\n outline: 'none',\n }),\n defaultBadge: {\n fontSize: '8px',\n fontWeight: 700 as const,\n color: '#ffffff',\n background: '#3b82f6',\n borderRadius: '3px',\n padding: '1px 4px',\n lineHeight: '12px',\n letterSpacing: '0.3px',\n },\n inputWrapper: {\n position: 'relative' as const,\n },\n input: {\n width: '100%',\n padding: '8px 12px',\n fontSize: '14px',\n lineHeight: '1.5',\n color: '#18181b',\n background: '#ffffff',\n border: '1px solid #e4e4e7',\n borderRadius: '8px',\n outline: 'none',\n transition: 'border-color 0.15s ease, box-shadow 0.15s ease',\n fontFamily: \"'Inter', system-ui, -apple-system, sans-serif\",\n boxSizing: 'border-box' as const,\n },\n inputFocused: {\n borderColor: '#3b82f6',\n boxShadow: '0 0 0 3px rgba(59,130,246,0.1)',\n },\n textarea: {\n resize: 'vertical' as const,\n minHeight: '80px',\n },\n loading: {\n display: 'flex',\n alignItems: 'center' as const,\n justifyContent: 'center' as const,\n padding: '12px',\n fontSize: '12px',\n color: '#71717a',\n },\n loadingDot: {\n width: '6px',\n height: '6px',\n borderRadius: '50%',\n background: '#a1a1aa',\n margin: '0 2px',\n display: 'inline-block',\n },\n error: {\n padding: '8px 12px',\n fontSize: '12px',\n color: '#ef4444',\n background: '#fef2f2',\n borderRadius: '6px',\n textAlign: 'center' as const,\n },\n} as const;\n\n/* ─── Shared Tab Bar Component ─── */\n\nexport const LanguageTabBar = ({\n languages,\n defaultLanguage,\n activeTab,\n onTabChange,\n}: {\n languages: string[];\n defaultLanguage: string;\n activeTab: string;\n onTabChange: (code: string) => void;\n}) => {\n if (languages.length <= 1) return null;\n return (\n <div style={fieldStyles.tabBar}>\n {languages.map(code => (\n <button\n key={code}\n type=\"button\"\n style={fieldStyles.tab(activeTab === code, code === defaultLanguage)}\n onClick={() => onTabChange(code)}\n title={code.toUpperCase()}\n >\n <span style={{ fontSize: '14px' }}>{getFlag(code)}</span>\n <span>{code.toUpperCase()}</span>\n {code === defaultLanguage && (\n <span style={fieldStyles.defaultBadge}>DEFAULT</span>\n )}\n </button>\n ))}\n </div>\n );\n};\n\n/* ─── Loading Indicator ─── */\n\nexport const FieldLoading = () => (\n <div style={fieldStyles.loading}>\n <span style={{ ...fieldStyles.loadingDot, animation: 'tecof-pulse 1.2s ease-in-out infinite' }} />\n <span style={{ ...fieldStyles.loadingDot, animation: 'tecof-pulse 1.2s ease-in-out 0.2s infinite' }} />\n <span style={{ ...fieldStyles.loadingDot, animation: 'tecof-pulse 1.2s ease-in-out 0.4s infinite' }} />\n </div>\n);\n\n/* ─── Props ─── */\n\nexport interface LanguageFieldProps {\n field: any;\n name: string;\n id: string;\n value: LanguageFieldValue[];\n onChange: (value: LanguageFieldValue[]) => void;\n readOnly?: boolean;\n}\n\nexport interface LanguageFieldOptions {\n /** Whether to render as textarea instead of input */\n isTextarea?: boolean;\n /** Number of rows for textarea mode */\n textareaRows?: number;\n /** Placeholder text */\n placeholder?: string;\n}\n\n/* ─── Component ─── */\n\nexport const LanguageField = ({\n value,\n onChange,\n readOnly,\n isTextarea = false,\n textareaRows = 3,\n placeholder = '',\n}: LanguageFieldProps & LanguageFieldOptions) => {\n const { merchantInfo, loading, error, activeTab, setActiveTab } = useLanguages();\n const [focusedInput, setFocusedInput] = useState(false);\n\n // Ensure values array has entries for all languages\n const values = useMemo<LanguageFieldValue[]>(() => {\n if (!merchantInfo) return value || [];\n const current = value || [];\n return merchantInfo.languages.map(code => {\n const existing = current.find(v => v.code === code);\n return existing || { code, value: '' };\n });\n }, [value, merchantInfo]);\n\n // Handle input change\n const handleChange = useCallback((code: string, newVal: string) => {\n const updated = [...values];\n const idx = updated.findIndex(v => v.code === code);\n if (idx >= 0) {\n updated[idx] = { ...updated[idx], value: newVal };\n } else {\n updated.push({ code, value: newVal });\n }\n onChange(updated);\n }, [values, onChange]);\n\n if (loading) return <FieldLoading />;\n if (error && !merchantInfo) return <div style={fieldStyles.error}>{error}</div>;\n if (!merchantInfo) return null;\n\n const { languages, defaultLanguage } = merchantInfo;\n\n return (\n <div style={fieldStyles.container}>\n <LanguageTabBar\n languages={languages}\n defaultLanguage={defaultLanguage}\n activeTab={activeTab}\n onTabChange={setActiveTab}\n />\n\n {languages.map(code => {\n if (activeTab !== code) return null;\n const currentValue = values.find(v => v.code === code)?.value || '';\n\n const inputStyle = {\n ...fieldStyles.input,\n ...(isTextarea ? fieldStyles.textarea : {}),\n ...(focusedInput ? fieldStyles.inputFocused : {}),\n };\n\n return (\n <div key={code} style={fieldStyles.inputWrapper}>\n {isTextarea ? (\n <textarea\n value={currentValue}\n onChange={e => handleChange(code, e.target.value)}\n onFocus={() => setFocusedInput(true)}\n onBlur={() => setFocusedInput(false)}\n rows={textareaRows}\n placeholder={placeholder || `${code.toUpperCase()} text...`}\n disabled={readOnly}\n style={inputStyle}\n />\n ) : (\n <input\n type=\"text\"\n value={currentValue}\n onChange={e => handleChange(code, e.target.value)}\n onFocus={() => setFocusedInput(true)}\n onBlur={() => setFocusedInput(false)}\n placeholder={placeholder || `${code.toUpperCase()} text...`}\n disabled={readOnly}\n style={inputStyle}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\n/* ─── Factory Function (Puck Custom Field) ─── */\n\nexport const createLanguageField = (\n options: LanguageFieldOptions & { label?: string } = {}\n) => {\n const { label, ...fieldOptions } = options;\n\n return {\n type: 'custom' as const,\n label,\n render: ({ value, onChange, readOnly, field, name, id }: LanguageFieldProps) => (\n <LanguageField\n field={field}\n name={name}\n id={id}\n value={value || []}\n onChange={onChange}\n readOnly={readOnly}\n {...fieldOptions}\n />\n ),\n };\n};\n\nexport default LanguageField;\n","import { useCallback, useMemo, useEffect, useRef } from 'react';\nimport { useEditor, EditorContent } from '@tiptap/react';\nimport Document from '@tiptap/extension-document';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Text from '@tiptap/extension-text';\nimport Bold from '@tiptap/extension-bold';\nimport Italic from '@tiptap/extension-italic';\nimport Strike from '@tiptap/extension-strike';\nimport Underline from '@tiptap/extension-underline';\nimport Heading from '@tiptap/extension-heading';\nimport { BulletList, OrderedList, ListItem, ListKeymap } from '@tiptap/extension-list';\nimport Blockquote from '@tiptap/extension-blockquote';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Link from '@tiptap/extension-link';\nimport Code from '@tiptap/extension-code';\nimport CodeBlock from '@tiptap/extension-code-block';\nimport { useLanguages } from './useLanguages';\nimport { LanguageTabBar, FieldLoading, fieldStyles } from './LanguageField';\nimport type { LanguageFieldValue } from '../../types';\n\n/* ─── Extensions preset ─── */\n\nconst createExtensions = () => [\n Document,\n Paragraph,\n Text,\n Bold,\n Italic,\n Strike,\n Underline,\n Heading.configure({ levels: [2, 3, 4] }),\n BulletList,\n OrderedList,\n ListItem,\n ListKeymap,\n Blockquote,\n HardBreak,\n HorizontalRule,\n Code,\n CodeBlock,\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\n Link.configure({ openOnClick: false, HTMLAttributes: { target: '_blank' } }),\n];\n\n/* ─── Toolbar Styles ─── */\n\nconst editorFieldStyles = {\n editorWrapper: {\n border: '1px solid #e4e4e7',\n borderRadius: '8px',\n overflow: 'hidden' as const,\n background: '#ffffff',\n transition: 'border-color 0.15s ease, box-shadow 0.15s ease',\n },\n toolbar: {\n display: 'flex',\n flexWrap: 'wrap' as const,\n gap: '1px',\n padding: '4px 6px',\n borderBottom: '1px solid #e4e4e7',\n background: '#fafafa',\n },\n toolbarBtn: (isActive: boolean) => ({\n display: 'inline-flex',\n alignItems: 'center' as const,\n justifyContent: 'center' as const,\n width: '28px',\n height: '28px',\n padding: '0',\n fontSize: '13px',\n fontWeight: isActive ? 700 : 400,\n color: isActive ? '#3b82f6' : '#52525b',\n background: isActive ? '#eff6ff' : 'transparent',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer' as const,\n transition: 'all 0.1s ease',\n outline: 'none',\n lineHeight: 1,\n }),\n divider: {\n width: '1px',\n height: '20px',\n background: '#e4e4e7',\n margin: '4px 3px',\n alignSelf: 'center' as const,\n },\n} as const;\n\n/* ─── Toolbar Button ─── */\n\nconst ToolbarBtn = ({\n onClick,\n isActive = false,\n title,\n children,\n}: {\n onClick: () => void;\n isActive?: boolean;\n title: string;\n children: React.ReactNode;\n}) => (\n <button\n type=\"button\"\n style={editorFieldStyles.toolbarBtn(isActive)}\n onClick={onClick}\n title={title}\n onMouseDown={e => e.preventDefault()}\n >\n {children}\n </button>\n);\n\n/* ─── Toolbar ─── */\n\nconst EditorToolbar = ({ editor }: { editor: any }) => {\n if (!editor) return null;\n\n return (\n <div style={editorFieldStyles.toolbar}>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBold().run()}\n isActive={editor.isActive('bold')}\n title=\"Bold\"\n >\n <strong>B</strong>\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleItalic().run()}\n isActive={editor.isActive('italic')}\n title=\"Italic\"\n >\n <em>I</em>\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n isActive={editor.isActive('underline')}\n title=\"Underline\"\n >\n <span style={{ textDecoration: 'underline' }}>U</span>\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleStrike().run()}\n isActive={editor.isActive('strike')}\n title=\"Strikethrough\"\n >\n <span style={{ textDecoration: 'line-through' }}>S</span>\n </ToolbarBtn>\n\n <div style={editorFieldStyles.divider} />\n\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}\n isActive={editor.isActive('heading', { level: 2 })}\n title=\"Heading 2\"\n >\n H2\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()}\n isActive={editor.isActive('heading', { level: 3 })}\n title=\"Heading 3\"\n >\n H3\n </ToolbarBtn>\n\n <div style={editorFieldStyles.divider} />\n\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n isActive={editor.isActive('bulletList')}\n title=\"Bullet List\"\n >\n •\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n isActive={editor.isActive('orderedList')}\n title=\"Ordered List\"\n >\n 1.\n </ToolbarBtn>\n\n <div style={editorFieldStyles.divider} />\n\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('left').run()}\n isActive={editor.isActive({ textAlign: 'left' })}\n title=\"Align Left\"\n >\n ☰\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('center').run()}\n isActive={editor.isActive({ textAlign: 'center' })}\n title=\"Align Center\"\n >\n ☰\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().setTextAlign('right').run()}\n isActive={editor.isActive({ textAlign: 'right' })}\n title=\"Align Right\"\n >\n ☰\n </ToolbarBtn>\n\n <div style={editorFieldStyles.divider} />\n\n <ToolbarBtn\n onClick={() => {\n if (editor.isActive('link')) {\n editor.chain().focus().unsetLink().run();\n } else {\n const url = window.prompt('URL:');\n if (url) {\n editor.chain().focus().setLink({ href: url, target: '_blank' }).run();\n }\n }\n }}\n isActive={editor.isActive('link')}\n title=\"Link\"\n >\n 🔗\n </ToolbarBtn>\n <ToolbarBtn\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n isActive={editor.isActive('blockquote')}\n title=\"Blockquote\"\n >\n ❝\n </ToolbarBtn>\n\n <div style={editorFieldStyles.divider} />\n\n <ToolbarBtn onClick={() => editor.chain().focus().undo().run()} title=\"Undo\">\n ↩\n </ToolbarBtn>\n <ToolbarBtn onClick={() => editor.chain().focus().redo().run()} title=\"Redo\">\n ↪\n </ToolbarBtn>\n </div>\n );\n};\n\n/* ─── Single Language TipTap Editor ─── */\n\nconst TipTapInstance = ({\n content,\n onUpdate,\n readOnly,\n}: {\n content: string;\n onUpdate: (html: string) => void;\n readOnly?: boolean;\n}) => {\n const isMountedRef = useRef(false);\n\n const editor = useEditor({\n extensions: createExtensions(),\n content: content || '',\n editable: !readOnly,\n onUpdate: ({ editor: ed }) => {\n if (isMountedRef.current) {\n onUpdate(ed.getHTML());\n }\n },\n immediatelyRender: false,\n });\n\n // Mark mounted after first render to avoid firing onUpdate on initialization\n useEffect(() => {\n isMountedRef.current = true;\n return () => { isMountedRef.current = false; };\n }, []);\n\n // Sync external content changes (e.g. when switching language tabs)\n const lastExternalContent = useRef(content);\n useEffect(() => {\n if (editor && content !== lastExternalContent.current) {\n lastExternalContent.current = content;\n const currentHtml = editor.getHTML();\n if (currentHtml !== content) {\n isMountedRef.current = false;\n editor.commands.setContent(content || '');\n requestAnimationFrame(() => { isMountedRef.current = true; });\n }\n }\n }, [content, editor]);\n\n return (\n <div>\n <EditorToolbar editor={editor} />\n <EditorContent editor={editor} />\n </div>\n );\n};\n\n/* ─── Inject Editor Styles ─── */\n\nlet editorStylesInjected = false;\nconst injectEditorStyles = () => {\n if (editorStylesInjected || typeof document === 'undefined') return;\n const style = document.createElement('style');\n style.textContent = `\n .tecof-editor-field .tiptap {\n padding: 10px 14px;\n min-height: 120px;\n outline: none;\n font-size: 14px;\n line-height: 1.6;\n color: #18181b;\n font-family: 'Inter', system-ui, -apple-system, sans-serif;\n }\n .tecof-editor-field .tiptap p { margin: 0 0 0.5em 0; }\n .tecof-editor-field .tiptap h2 { font-size: 1.4em; font-weight: 600; margin: 0.8em 0 0.4em; }\n .tecof-editor-field .tiptap h3 { font-size: 1.2em; font-weight: 600; margin: 0.6em 0 0.3em; }\n .tecof-editor-field .tiptap h4 { font-size: 1.1em; font-weight: 600; margin: 0.5em 0 0.25em; }\n .tecof-editor-field .tiptap ul,\n .tecof-editor-field .tiptap ol { padding-left: 1.4em; margin: 0.4em 0; }\n .tecof-editor-field .tiptap li { margin: 0.1em 0; }\n .tecof-editor-field .tiptap blockquote {\n border-left: 3px solid #e4e4e7;\n padding-left: 12px;\n margin: 0.6em 0;\n color: #71717a;\n font-style: italic;\n }\n .tecof-editor-field .tiptap a { color: #3b82f6; text-decoration: underline; }\n .tecof-editor-field .tiptap code {\n background: #f4f4f5; padding: 2px 4px; border-radius: 3px;\n font-family: 'SF Mono', 'Fira Code', monospace; font-size: 0.9em;\n }\n .tecof-editor-field .tiptap pre {\n background: #18181b; color: #e4e4e7; padding: 12px 16px;\n border-radius: 6px; font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px; overflow-x: auto;\n }\n .tecof-editor-field .tiptap hr {\n border: none; border-top: 1px solid #e4e4e7; margin: 1em 0;\n }\n `;\n document.head.appendChild(style);\n editorStylesInjected = true;\n};\n\n/* ─── Props ─── */\n\nexport interface EditorFieldProps {\n field: any;\n name: string;\n id: string;\n value: LanguageFieldValue[];\n onChange: (value: LanguageFieldValue[]) => void;\n readOnly?: boolean;\n}\n\nexport interface EditorFieldOptions {\n /** Placeholder text for empty editor */\n placeholder?: string;\n}\n\n/* ─── Main Component ─── */\n\n/**\n * EditorField — A multilingual TipTap rich text editor field for Puck.\n *\n * Uses the same language tab system as LanguageField, but renders a\n * TipTap editor with toolbar (bold, italic, underline, headings, lists,\n * alignment, links, blockquote, undo/redo) instead of a plain text input.\n *\n * Value format: [{ code: \"tr\", value: \"<p>HTML content</p>\" }, ...]\n */\nexport const EditorField = ({\n value,\n onChange,\n readOnly,\n}: EditorFieldProps & EditorFieldOptions) => {\n const { merchantInfo, loading, error, activeTab, setActiveTab } = useLanguages();\n\n // Inject TipTap styles once\n useEffect(() => { injectEditorStyles(); }, []);\n\n // Ensure values array has entries for all languages\n const values = useMemo<LanguageFieldValue[]>(() => {\n if (!merchantInfo) return value || [];\n const current = value || [];\n return merchantInfo.languages.map(code => {\n const existing = current.find(v => v.code === code);\n return existing || { code, value: '' };\n });\n }, [value, merchantInfo]);\n\n // Handle editor content change\n const handleChange = useCallback((code: string, html: string) => {\n const updated = [...values];\n const idx = updated.findIndex(v => v.code === code);\n if (idx >= 0) {\n updated[idx] = { ...updated[idx], value: html };\n } else {\n updated.push({ code, value: html });\n }\n onChange(updated);\n }, [values, onChange]);\n\n if (loading) return <FieldLoading />;\n if (error && !merchantInfo) return <div style={fieldStyles.error}>{error}</div>;\n if (!merchantInfo) return null;\n\n const { languages, defaultLanguage } = merchantInfo;\n\n return (\n <div style={fieldStyles.container} className=\"tecof-editor-field\">\n <LanguageTabBar\n languages={languages}\n defaultLanguage={defaultLanguage}\n activeTab={activeTab}\n onTabChange={setActiveTab}\n />\n\n {languages.map(code => {\n if (activeTab !== code) return null;\n const currentValue = values.find(v => v.code === code)?.value || '';\n\n return (\n <div key={code} style={editorFieldStyles.editorWrapper}>\n <TipTapInstance\n content={currentValue}\n onUpdate={(html) => handleChange(code, html)}\n readOnly={readOnly}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\n/* ─── Factory Function (Puck Custom Field) ─── */\n\n/**\n * Creates a Puck custom field definition for multilingual rich text (TipTap) editor.\n *\n * @example\n * ```ts\n * import { createEditorField } from '@tecof/theme-editor';\n *\n * const config = {\n * components: {\n * TextBlock: {\n * fields: {\n * content: createEditorField({ label: 'İçerik' }),\n * },\n * defaultProps: { content: [] },\n * render: ({ content }) => { ... },\n * },\n * },\n * };\n * ```\n */\nexport const createEditorField = (\n options: EditorFieldOptions & { label?: string } = {}\n) => {\n const { label, ...fieldOptions } = options;\n\n return {\n type: 'custom' as const,\n label,\n render: ({ value, onChange, readOnly, field, name, id }: EditorFieldProps) => (\n <EditorField\n field={field}\n name={name}\n id={id}\n value={value || []}\n onChange={onChange}\n readOnly={readOnly}\n {...fieldOptions}\n />\n ),\n };\n};\n\nexport default EditorField;\n","/*!\n * FilePond 4.32.12\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\nconst isNode = value => value instanceof HTMLElement;\n\nconst createStore = (initialState, queries = [], actions = []) => {\n // internal state\n const state = {\n ...initialState,\n };\n\n // contains all actions for next frame, is clear when actions are requested\n const actionQueue = [];\n const dispatchQueue = [];\n\n // returns a duplicate of the current state\n const getState = () => ({ ...state });\n\n // returns a duplicate of the actions array and clears the actions array\n const processActionQueue = () => {\n // create copy of actions queue\n const queue = [...actionQueue];\n\n // clear actions queue (we don't want no double actions)\n actionQueue.length = 0;\n\n return queue;\n };\n\n // processes actions that might block the main UI thread\n const processDispatchQueue = () => {\n // create copy of actions queue\n const queue = [...dispatchQueue];\n\n // clear actions queue (we don't want no double actions)\n dispatchQueue.length = 0;\n\n // now dispatch these actions\n queue.forEach(({ type, data }) => {\n dispatch(type, data);\n });\n };\n\n // adds a new action, calls its handler and\n const dispatch = (type, data, isBlocking) => {\n // is blocking action (should never block if document is hidden)\n if (isBlocking && !document.hidden) {\n dispatchQueue.push({ type, data });\n return;\n }\n\n // if this action has a handler, handle the action\n if (actionHandlers[type]) {\n actionHandlers[type](data);\n }\n\n // now add action\n actionQueue.push({\n type,\n data,\n });\n };\n\n const query = (str, ...args) => (queryHandles[str] ? queryHandles[str](...args) : null);\n\n const api = {\n getState,\n processActionQueue,\n processDispatchQueue,\n dispatch,\n query,\n };\n\n let queryHandles = {};\n queries.forEach(query => {\n queryHandles = {\n ...query(state),\n ...queryHandles,\n };\n });\n\n let actionHandlers = {};\n actions.forEach(action => {\n actionHandlers = {\n ...action(dispatch, query, state),\n ...actionHandlers,\n };\n });\n\n return api;\n};\n\nconst defineProperty = (obj, property, definition) => {\n if (typeof definition === 'function') {\n obj[property] = definition;\n return;\n }\n Object.defineProperty(obj, property, { ...definition });\n};\n\nconst forin = (obj, cb) => {\n for (const key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n cb(key, obj[key]);\n }\n};\n\nconst createObject = definition => {\n const obj = {};\n forin(definition, property => {\n defineProperty(obj, property, definition[property]);\n });\n return obj;\n};\n\nconst attr = (node, name, value = null) => {\n if (value === null) {\n return node.getAttribute(name) || node.hasAttribute(name);\n }\n node.setAttribute(name, value);\n};\n\nconst ns = 'http://www.w3.org/2000/svg';\nconst svgElements = ['svg', 'path']; // only svg elements used\n\nconst isSVGElement = tag => svgElements.includes(tag);\n\nconst createElement = (tag, className, attributes = {}) => {\n if (typeof className === 'object') {\n attributes = className;\n className = null;\n }\n const element = isSVGElement(tag)\n ? document.createElementNS(ns, tag)\n : document.createElement(tag);\n if (className) {\n if (isSVGElement(tag)) {\n attr(element, 'class', className);\n } else {\n element.className = className;\n }\n }\n forin(attributes, (name, value) => {\n attr(element, name, value);\n });\n return element;\n};\n\nconst appendChild = parent => (child, index) => {\n if (typeof index !== 'undefined' && parent.children[index]) {\n parent.insertBefore(child, parent.children[index]);\n } else {\n parent.appendChild(child);\n }\n};\n\nconst appendChildView = (parent, childViews) => (view, index) => {\n if (typeof index !== 'undefined') {\n childViews.splice(index, 0, view);\n } else {\n childViews.push(view);\n }\n\n return view;\n};\n\nconst removeChildView = (parent, childViews) => view => {\n // remove from child views\n childViews.splice(childViews.indexOf(view), 1);\n\n // remove the element\n if (view.element.parentNode) {\n parent.removeChild(view.element);\n }\n\n return view;\n};\n\nconst IS_BROWSER = (() =>\n typeof window !== 'undefined' && typeof window.document !== 'undefined')();\nconst isBrowser = () => IS_BROWSER;\n\nconst testElement = isBrowser() ? createElement('svg') : {};\nconst getChildCount =\n 'children' in testElement ? el => el.children.length : el => el.childNodes.length;\n\nconst getViewRect = (elementRect, childViews, offset, scale) => {\n const left = offset[0] || elementRect.left;\n const top = offset[1] || elementRect.top;\n const right = left + elementRect.width;\n const bottom = top + elementRect.height * (scale[1] || 1);\n\n const rect = {\n // the rectangle of the element itself\n element: {\n ...elementRect,\n },\n\n // the rectangle of the element expanded to contain its children, does not include any margins\n inner: {\n left: elementRect.left,\n top: elementRect.top,\n right: elementRect.right,\n bottom: elementRect.bottom,\n },\n\n // the rectangle of the element expanded to contain its children including own margin and child margins\n // margins will be added after we've recalculated the size\n outer: {\n left,\n top,\n right,\n bottom,\n },\n };\n\n // expand rect to fit all child rectangles\n childViews\n .filter(childView => !childView.isRectIgnored())\n .map(childView => childView.rect)\n .forEach(childViewRect => {\n expandRect(rect.inner, { ...childViewRect.inner });\n expandRect(rect.outer, { ...childViewRect.outer });\n });\n\n // calculate inner width and height\n calculateRectSize(rect.inner);\n\n // append additional margin (top and left margins are included in top and left automatically)\n rect.outer.bottom += rect.element.marginBottom;\n rect.outer.right += rect.element.marginRight;\n\n // calculate outer width and height\n calculateRectSize(rect.outer);\n\n return rect;\n};\n\nconst expandRect = (parent, child) => {\n // adjust for parent offset\n child.top += parent.top;\n child.right += parent.left;\n child.bottom += parent.top;\n child.left += parent.left;\n\n if (child.bottom > parent.bottom) {\n parent.bottom = child.bottom;\n }\n\n if (child.right > parent.right) {\n parent.right = child.right;\n }\n};\n\nconst calculateRectSize = rect => {\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n};\n\nconst isNumber = value => typeof value === 'number';\n\n/**\n * Determines if position is at destination\n * @param position\n * @param destination\n * @param velocity\n * @param errorMargin\n * @returns {boolean}\n */\nconst thereYet = (position, destination, velocity, errorMargin = 0.001) => {\n return Math.abs(position - destination) < errorMargin && Math.abs(velocity) < errorMargin;\n};\n\n/**\n * Spring animation\n */\nconst spring =\n // default options\n ({ stiffness = 0.5, damping = 0.75, mass = 10 } = {}) =>\n // method definition\n {\n let target = null;\n let position = null;\n let velocity = 0;\n let resting = false;\n\n // updates spring state\n const interpolate = (ts, skipToEndState) => {\n // in rest, don't animate\n if (resting) return;\n\n // need at least a target or position to do springy things\n if (!(isNumber(target) && isNumber(position))) {\n resting = true;\n velocity = 0;\n return;\n }\n\n // calculate spring force\n const f = -(position - target) * stiffness;\n\n // update velocity by adding force based on mass\n velocity += f / mass;\n\n // update position by adding velocity\n position += velocity;\n\n // slow down based on amount of damping\n velocity *= damping;\n\n // we've arrived if we're near target and our velocity is near zero\n if (thereYet(position, target, velocity) || skipToEndState) {\n position = target;\n velocity = 0;\n resting = true;\n\n // we done\n api.onupdate(position);\n api.oncomplete(position);\n } else {\n // progress update\n api.onupdate(position);\n }\n };\n\n /**\n * Set new target value\n * @param value\n */\n const setTarget = value => {\n // if currently has no position, set target and position to this value\n if (isNumber(value) && !isNumber(position)) {\n position = value;\n }\n\n // next target value will not be animated to\n if (target === null) {\n target = value;\n position = value;\n }\n\n // let start moving to target\n target = value;\n\n // already at target\n if (position === target || typeof target === 'undefined') {\n // now resting as target is current position, stop moving\n resting = true;\n velocity = 0;\n\n // done!\n api.onupdate(position);\n api.oncomplete(position);\n\n return;\n }\n\n resting = false;\n };\n\n // need 'api' to call onupdate callback\n const api = createObject({\n interpolate,\n target: {\n set: setTarget,\n get: () => target,\n },\n resting: {\n get: () => resting,\n },\n onupdate: value => {},\n oncomplete: value => {},\n });\n\n return api;\n };\n\nconst easeLinear = t => t;\nconst easeInOutQuad = t => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t);\n\nconst tween =\n // default values\n ({ duration = 500, easing = easeInOutQuad, delay = 0 } = {}) =>\n // method definition\n {\n let start = null;\n let t;\n let p;\n let resting = true;\n let reverse = false;\n let target = null;\n\n const interpolate = (ts, skipToEndState) => {\n if (resting || target === null) return;\n\n if (start === null) {\n start = ts;\n }\n\n if (ts - start < delay) return;\n\n t = ts - start - delay;\n\n if (t >= duration || skipToEndState) {\n t = 1;\n p = reverse ? 0 : 1;\n api.onupdate(p * target);\n api.oncomplete(p * target);\n resting = true;\n } else {\n p = t / duration;\n api.onupdate((t >= 0 ? easing(reverse ? 1 - p : p) : 0) * target);\n }\n };\n\n // need 'api' to call onupdate callback\n const api = createObject({\n interpolate,\n target: {\n get: () => (reverse ? 0 : target),\n set: value => {\n // is initial value\n if (target === null) {\n target = value;\n api.onupdate(value);\n api.oncomplete(value);\n return;\n }\n\n // want to tween to a smaller value and have a current value\n if (value < target) {\n target = 1;\n reverse = true;\n } else {\n // not tweening to a smaller value\n reverse = false;\n target = value;\n }\n\n // let's go!\n resting = false;\n start = null;\n },\n },\n resting: {\n get: () => resting,\n },\n onupdate: value => {},\n oncomplete: value => {},\n });\n\n return api;\n };\n\nconst animator = {\n spring,\n tween,\n};\n\n/*\n { type: 'spring', stiffness: .5, damping: .75, mass: 10 };\n { translation: { type: 'spring', ... }, ... }\n { translation: { x: { type: 'spring', ... } } }\n*/\nconst createAnimator = (definition, category, property) => {\n // default is single definition\n // we check if transform is set, if so, we check if property is set\n const def =\n definition[category] && typeof definition[category][property] === 'object'\n ? definition[category][property]\n : definition[category] || definition;\n\n const type = typeof def === 'string' ? def : def.type;\n const props = typeof def === 'object' ? { ...def } : {};\n\n return animator[type] ? animator[type](props) : null;\n};\n\nconst addGetSet = (keys, obj, props, overwrite = false) => {\n obj = Array.isArray(obj) ? obj : [obj];\n obj.forEach(o => {\n keys.forEach(key => {\n let name = key;\n let getter = () => props[key];\n let setter = value => (props[key] = value);\n\n if (typeof key === 'object') {\n name = key.key;\n getter = key.getter || getter;\n setter = key.setter || setter;\n }\n\n if (o[name] && !overwrite) {\n return;\n }\n\n o[name] = {\n get: getter,\n set: setter,\n };\n });\n });\n};\n\n// add to state,\n// add getters and setters to internal and external api (if not set)\n// setup animators\n\nconst animations = ({ mixinConfig, viewProps, viewInternalAPI, viewExternalAPI }) => {\n // initial properties\n const initialProps = { ...viewProps };\n\n // list of all active animations\n const animations = [];\n\n // setup animators\n forin(mixinConfig, (property, animation) => {\n const animator = createAnimator(animation);\n if (!animator) {\n return;\n }\n\n // when the animator updates, update the view state value\n animator.onupdate = value => {\n viewProps[property] = value;\n };\n\n // set animator target\n animator.target = initialProps[property];\n\n // when value is set, set the animator target value\n const prop = {\n key: property,\n setter: value => {\n // if already at target, we done!\n if (animator.target === value) {\n return;\n }\n\n animator.target = value;\n },\n getter: () => viewProps[property],\n };\n\n // add getters and setters\n addGetSet([prop], [viewInternalAPI, viewExternalAPI], viewProps, true);\n\n // add it to the list for easy updating from the _write method\n animations.push(animator);\n });\n\n // expose internal write api\n return {\n write: ts => {\n let skipToEndState = document.hidden;\n let resting = true;\n animations.forEach(animation => {\n if (!animation.resting) resting = false;\n animation.interpolate(ts, skipToEndState);\n });\n return resting;\n },\n destroy: () => {},\n };\n};\n\nconst addEvent = element => (type, fn) => {\n element.addEventListener(type, fn);\n};\n\nconst removeEvent = element => (type, fn) => {\n element.removeEventListener(type, fn);\n};\n\n// mixin\nconst listeners = ({\n mixinConfig,\n viewProps,\n viewInternalAPI,\n viewExternalAPI,\n viewState,\n view,\n}) => {\n const events = [];\n\n const add = addEvent(view.element);\n const remove = removeEvent(view.element);\n\n viewExternalAPI.on = (type, fn) => {\n events.push({\n type,\n fn,\n });\n add(type, fn);\n };\n\n viewExternalAPI.off = (type, fn) => {\n events.splice(events.findIndex(event => event.type === type && event.fn === fn), 1);\n remove(type, fn);\n };\n\n return {\n write: () => {\n // not busy\n return true;\n },\n destroy: () => {\n events.forEach(event => {\n remove(event.type, event.fn);\n });\n },\n };\n};\n\n// add to external api and link to props\n\nconst apis = ({ mixinConfig, viewProps, viewExternalAPI }) => {\n addGetSet(mixinConfig, viewExternalAPI, viewProps);\n};\n\nconst isDefined = value => value != null;\n\n// add to state,\n// add getters and setters to internal and external api (if not set)\n// set initial state based on props in viewProps\n// apply as transforms each frame\n\nconst defaults = {\n opacity: 1,\n scaleX: 1,\n scaleY: 1,\n translateX: 0,\n translateY: 0,\n rotateX: 0,\n rotateY: 0,\n rotateZ: 0,\n originX: 0,\n originY: 0,\n};\n\nconst styles = ({ mixinConfig, viewProps, viewInternalAPI, viewExternalAPI, view }) => {\n // initial props\n const initialProps = { ...viewProps };\n\n // current props\n const currentProps = {};\n\n // we will add those properties to the external API and link them to the viewState\n addGetSet(mixinConfig, [viewInternalAPI, viewExternalAPI], viewProps);\n\n // override rect on internal and external rect getter so it takes in account transforms\n const getOffset = () => [viewProps['translateX'] || 0, viewProps['translateY'] || 0];\n const getScale = () => [viewProps['scaleX'] || 0, viewProps['scaleY'] || 0];\n const getRect = () =>\n view.rect ? getViewRect(view.rect, view.childViews, getOffset(), getScale()) : null;\n viewInternalAPI.rect = { get: getRect };\n viewExternalAPI.rect = { get: getRect };\n\n // apply view props\n mixinConfig.forEach(key => {\n viewProps[key] =\n typeof initialProps[key] === 'undefined' ? defaults[key] : initialProps[key];\n });\n\n // expose api\n return {\n write: () => {\n // see if props have changed\n if (!propsHaveChanged(currentProps, viewProps)) {\n return;\n }\n\n // moves element to correct position on screen\n applyStyles(view.element, viewProps);\n\n // store new transforms\n Object.assign(currentProps, { ...viewProps });\n\n // no longer busy\n return true;\n },\n destroy: () => {},\n };\n};\n\nconst propsHaveChanged = (currentProps, newProps) => {\n // different amount of keys\n if (Object.keys(currentProps).length !== Object.keys(newProps).length) {\n return true;\n }\n\n // lets analyze the individual props\n for (const prop in newProps) {\n if (newProps[prop] !== currentProps[prop]) {\n return true;\n }\n }\n\n return false;\n};\n\nconst applyStyles = (\n element,\n {\n opacity,\n perspective,\n translateX,\n translateY,\n scaleX,\n scaleY,\n rotateX,\n rotateY,\n rotateZ,\n originX,\n originY,\n width,\n height,\n }\n) => {\n let transforms = '';\n let styles = '';\n\n // handle transform origin\n if (isDefined(originX) || isDefined(originY)) {\n styles += `transform-origin: ${originX || 0}px ${originY || 0}px;`;\n }\n\n // transform order is relevant\n // 0. perspective\n if (isDefined(perspective)) {\n transforms += `perspective(${perspective}px) `;\n }\n\n // 1. translate\n if (isDefined(translateX) || isDefined(translateY)) {\n transforms += `translate3d(${translateX || 0}px, ${translateY || 0}px, 0) `;\n }\n\n // 2. scale\n if (isDefined(scaleX) || isDefined(scaleY)) {\n transforms += `scale3d(${isDefined(scaleX) ? scaleX : 1}, ${\n isDefined(scaleY) ? scaleY : 1\n }, 1) `;\n }\n\n // 3. rotate\n if (isDefined(rotateZ)) {\n transforms += `rotateZ(${rotateZ}rad) `;\n }\n\n if (isDefined(rotateX)) {\n transforms += `rotateX(${rotateX}rad) `;\n }\n\n if (isDefined(rotateY)) {\n transforms += `rotateY(${rotateY}rad) `;\n }\n\n // add transforms\n if (transforms.length) {\n styles += `transform:${transforms};`;\n }\n\n // add opacity\n if (isDefined(opacity)) {\n styles += `opacity:${opacity};`;\n\n // if we reach zero, we make the element inaccessible\n if (opacity === 0) {\n styles += `visibility:hidden;`;\n }\n\n // if we're below 100% opacity this element can't be clicked\n if (opacity < 1) {\n styles += `pointer-events:none;`;\n }\n }\n\n // add height\n if (isDefined(height)) {\n styles += `height:${height}px;`;\n }\n\n // add width\n if (isDefined(width)) {\n styles += `width:${width}px;`;\n }\n\n // apply styles\n const elementCurrentStyle = element.elementCurrentStyle || '';\n\n // if new styles does not match current styles, lets update!\n if (styles.length !== elementCurrentStyle.length || styles !== elementCurrentStyle) {\n element.style.cssText = styles;\n // store current styles so we can compare them to new styles later on\n // _not_ getting the style value is faster\n element.elementCurrentStyle = styles;\n }\n};\n\nconst Mixins = {\n styles,\n listeners,\n animations,\n apis,\n};\n\nconst updateRect = (rect = {}, element = {}, style = {}) => {\n if (!element.layoutCalculated) {\n rect.paddingTop = parseInt(style.paddingTop, 10) || 0;\n rect.marginTop = parseInt(style.marginTop, 10) || 0;\n rect.marginRight = parseInt(style.marginRight, 10) || 0;\n rect.marginBottom = parseInt(style.marginBottom, 10) || 0;\n rect.marginLeft = parseInt(style.marginLeft, 10) || 0;\n element.layoutCalculated = true;\n }\n\n rect.left = element.offsetLeft || 0;\n rect.top = element.offsetTop || 0;\n rect.width = element.offsetWidth || 0;\n rect.height = element.offsetHeight || 0;\n\n rect.right = rect.left + rect.width;\n rect.bottom = rect.top + rect.height;\n\n rect.scrollTop = element.scrollTop;\n\n rect.hidden = element.offsetParent === null;\n\n return rect;\n};\n\nconst createView =\n // default view definition\n ({\n // element definition\n tag = 'div',\n name = null,\n attributes = {},\n\n // view interaction\n read = () => {},\n write = () => {},\n create = () => {},\n destroy = () => {},\n\n // hooks\n filterFrameActionsForChild = (child, actions) => actions,\n didCreateView = () => {},\n didWriteView = () => {},\n\n // rect related\n ignoreRect = false,\n ignoreRectUpdate = false,\n\n // mixins\n mixins = [],\n } = {}) => (\n // each view requires reference to store\n store,\n // specific properties for this view\n props = {}\n ) => {\n // root element should not be changed\n const element = createElement(tag, `filepond--${name}`, attributes);\n\n // style reference should also not be changed\n const style = window.getComputedStyle(element, null);\n\n // element rectangle\n const rect = updateRect();\n let frameRect = null;\n\n // rest state\n let isResting = false;\n\n // pretty self explanatory\n const childViews = [];\n\n // loaded mixins\n const activeMixins = [];\n\n // references to created children\n const ref = {};\n\n // state used for each instance\n const state = {};\n\n // list of writers that will be called to update this view\n const writers = [\n write, // default writer\n ];\n\n const readers = [\n read, // default reader\n ];\n\n const destroyers = [\n destroy, // default destroy\n ];\n\n // core view methods\n const getElement = () => element;\n const getChildViews = () => childViews.concat();\n const getReference = () => ref;\n const createChildView = store => (view, props) => view(store, props);\n const getRect = () => {\n if (frameRect) {\n return frameRect;\n }\n frameRect = getViewRect(rect, childViews, [0, 0], [1, 1]);\n return frameRect;\n };\n const getStyle = () => style;\n\n /**\n * Read data from DOM\n * @private\n */\n const _read = () => {\n frameRect = null;\n\n // read child views\n childViews.forEach(child => child._read());\n\n const shouldUpdate = !(ignoreRectUpdate && rect.width && rect.height);\n if (shouldUpdate) {\n updateRect(rect, element, style);\n }\n\n // readers\n const api = { root: internalAPI, props, rect };\n readers.forEach(reader => reader(api));\n };\n\n /**\n * Write data to DOM\n * @private\n */\n const _write = (ts, frameActions, shouldOptimize) => {\n // if no actions, we assume that the view is resting\n let resting = frameActions.length === 0;\n\n // writers\n writers.forEach(writer => {\n const writerResting = writer({\n props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n shouldOptimize,\n });\n if (writerResting === false) {\n resting = false;\n }\n });\n\n // run mixins\n activeMixins.forEach(mixin => {\n // if one of the mixins is still busy after write operation, we are not resting\n const mixinResting = mixin.write(ts);\n if (mixinResting === false) {\n resting = false;\n }\n });\n\n // updates child views that are currently attached to the DOM\n childViews\n .filter(child => !!child.element.parentNode)\n .forEach(child => {\n // if a child view is not resting, we are not resting\n const childResting = child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n if (!childResting) {\n resting = false;\n }\n });\n\n // append new elements to DOM and update those\n childViews\n //.filter(child => !child.element.parentNode)\n .forEach((child, index) => {\n // skip\n if (child.element.parentNode) {\n return;\n }\n\n // append to DOM\n internalAPI.appendChild(child.element, index);\n\n // call read (need to know the size of these elements)\n child._read();\n\n // re-call write\n child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n\n // we just added somthing to the dom, no rest\n resting = false;\n });\n\n // update resting state\n isResting = resting;\n\n didWriteView({\n props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n });\n\n // let parent know if we are resting\n return resting;\n };\n\n const _destroy = () => {\n activeMixins.forEach(mixin => mixin.destroy());\n destroyers.forEach(destroyer => {\n destroyer({ root: internalAPI, props });\n });\n childViews.forEach(child => child._destroy());\n };\n\n // sharedAPI\n const sharedAPIDefinition = {\n element: {\n get: getElement,\n },\n style: {\n get: getStyle,\n },\n childViews: {\n get: getChildViews,\n },\n };\n\n // private API definition\n const internalAPIDefinition = {\n ...sharedAPIDefinition,\n rect: {\n get: getRect,\n },\n\n // access to custom children references\n ref: {\n get: getReference,\n },\n\n // dom modifiers\n is: needle => name === needle,\n appendChild: appendChild(element),\n createChildView: createChildView(store),\n linkView: view => {\n childViews.push(view);\n return view;\n },\n unlinkView: view => {\n childViews.splice(childViews.indexOf(view), 1);\n },\n appendChildView: appendChildView(element, childViews),\n removeChildView: removeChildView(element, childViews),\n registerWriter: writer => writers.push(writer),\n registerReader: reader => readers.push(reader),\n registerDestroyer: destroyer => destroyers.push(destroyer),\n invalidateLayout: () => (element.layoutCalculated = false),\n\n // access to data store\n dispatch: store.dispatch,\n query: store.query,\n };\n\n // public view API methods\n const externalAPIDefinition = {\n element: {\n get: getElement,\n },\n childViews: {\n get: getChildViews,\n },\n rect: {\n get: getRect,\n },\n resting: {\n get: () => isResting,\n },\n isRectIgnored: () => ignoreRect,\n _read,\n _write,\n _destroy,\n };\n\n // mixin API methods\n const mixinAPIDefinition = {\n ...sharedAPIDefinition,\n rect: {\n get: () => rect,\n },\n };\n\n // add mixin functionality\n Object.keys(mixins)\n .sort((a, b) => {\n // move styles to the back of the mixin list (so adjustments of other mixins are applied to the props correctly)\n if (a === 'styles') {\n return 1;\n } else if (b === 'styles') {\n return -1;\n }\n return 0;\n })\n .forEach(key => {\n const mixinAPI = Mixins[key]({\n mixinConfig: mixins[key],\n viewProps: props,\n viewState: state,\n viewInternalAPI: internalAPIDefinition,\n viewExternalAPI: externalAPIDefinition,\n view: createObject(mixinAPIDefinition),\n });\n\n if (mixinAPI) {\n activeMixins.push(mixinAPI);\n }\n });\n\n // construct private api\n const internalAPI = createObject(internalAPIDefinition);\n\n // create the view\n create({\n root: internalAPI,\n props,\n });\n\n // append created child views to root node\n const childCount = getChildCount(element); // need to know the current child count so appending happens in correct order\n childViews.forEach((child, index) => {\n internalAPI.appendChild(child.element, childCount + index);\n });\n\n // call did create\n didCreateView(internalAPI);\n\n // expose public api\n return createObject(externalAPIDefinition);\n };\n\nconst createPainter = (read, write, fps = 60) => {\n const name = '__framePainter';\n\n // set global painter\n if (window[name]) {\n window[name].readers.push(read);\n window[name].writers.push(write);\n return;\n }\n\n window[name] = {\n readers: [read],\n writers: [write],\n };\n\n const painter = window[name];\n\n const interval = 1000 / fps;\n let last = null;\n let id = null;\n let requestTick = null;\n let cancelTick = null;\n\n const setTimerType = () => {\n if (document.hidden) {\n requestTick = () => window.setTimeout(() => tick(performance.now()), interval);\n cancelTick = () => window.clearTimeout(id);\n } else {\n requestTick = () => window.requestAnimationFrame(tick);\n cancelTick = () => window.cancelAnimationFrame(id);\n }\n };\n\n document.addEventListener('visibilitychange', () => {\n if (cancelTick) cancelTick();\n setTimerType();\n tick(performance.now());\n });\n\n const tick = ts => {\n // queue next tick\n id = requestTick(tick);\n\n // limit fps\n if (!last) {\n last = ts;\n }\n\n const delta = ts - last;\n\n if (delta <= interval) {\n // skip frame\n return;\n }\n\n // align next frame\n last = ts - (delta % interval);\n\n // update view\n painter.readers.forEach(read => read());\n painter.writers.forEach(write => write(ts));\n };\n\n setTimerType();\n tick(performance.now());\n\n return {\n pause: () => {\n cancelTick(id);\n },\n };\n};\n\nconst createRoute = (routes, fn) => ({ root, props, actions = [], timestamp, shouldOptimize }) => {\n actions\n .filter(action => routes[action.type])\n .forEach(action =>\n routes[action.type]({ root, props, action: action.data, timestamp, shouldOptimize })\n );\n if (fn) {\n fn({ root, props, actions, timestamp, shouldOptimize });\n }\n};\n\nconst insertBefore = (newNode, referenceNode) =>\n referenceNode.parentNode.insertBefore(newNode, referenceNode);\n\nconst insertAfter = (newNode, referenceNode) => {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n};\n\nconst isArray = value => Array.isArray(value);\n\nconst isEmpty = value => value == null;\n\nconst trim = str => str.trim();\n\nconst toString = value => '' + value;\n\nconst toArray = (value, splitter = ',') => {\n if (isEmpty(value)) {\n return [];\n }\n if (isArray(value)) {\n return value;\n }\n return toString(value)\n .split(splitter)\n .map(trim)\n .filter(str => str.length);\n};\n\nconst isBoolean = value => typeof value === 'boolean';\n\nconst toBoolean = value => (isBoolean(value) ? value : value === 'true');\n\nconst isString = value => typeof value === 'string';\n\nconst toNumber = value =>\n isNumber(value) ? value : isString(value) ? toString(value).replace(/[a-z]+/gi, '') : 0;\n\nconst toInt = value => parseInt(toNumber(value), 10);\n\nconst toFloat = value => parseFloat(toNumber(value));\n\nconst isInt = value => isNumber(value) && isFinite(value) && Math.floor(value) === value;\n\nconst toBytes = (value, base = 1000) => {\n // is in bytes\n if (isInt(value)) {\n return value;\n }\n\n // is natural file size\n let naturalFileSize = toString(value).trim();\n\n // if is value in megabytes\n if (/MB$/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/MB$i/, '').trim();\n return toInt(naturalFileSize) * base * base;\n }\n\n // if is value in kilobytes\n if (/KB/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/KB$i/, '').trim();\n return toInt(naturalFileSize) * base;\n }\n\n return toInt(naturalFileSize);\n};\n\nconst isFunction = value => typeof value === 'function';\n\nconst toFunctionReference = string => {\n let ref = self;\n let levels = string.split('.');\n let level = null;\n while ((level = levels.shift())) {\n ref = ref[level];\n if (!ref) {\n return null;\n }\n }\n return ref;\n};\n\nconst methods = {\n process: 'POST',\n patch: 'PATCH',\n revert: 'DELETE',\n fetch: 'GET',\n restore: 'GET',\n load: 'GET',\n};\n\nconst createServerAPI = outline => {\n const api = {};\n\n api.url = isString(outline) ? outline : outline.url || '';\n api.timeout = outline.timeout ? parseInt(outline.timeout, 10) : 0;\n api.headers = outline.headers ? outline.headers : {};\n\n forin(methods, key => {\n api[key] = createAction(key, outline[key], methods[key], api.timeout, api.headers);\n });\n\n // remove process if no url or process on outline\n api.process = outline.process || isString(outline) || outline.url ? api.process : null;\n\n // special treatment for remove\n api.remove = outline.remove || null;\n\n // remove generic headers from api object\n delete api.headers;\n\n return api;\n};\n\nconst createAction = (name, outline, method, timeout, headers) => {\n // is explicitely set to null so disable\n if (outline === null) {\n return null;\n }\n\n // if is custom function, done! Dev handles everything.\n if (typeof outline === 'function') {\n return outline;\n }\n\n // build action object\n const action = {\n url: method === 'GET' || method === 'PATCH' ? `?${name}=` : '',\n method,\n headers,\n withCredentials: false,\n timeout,\n onload: null,\n ondata: null,\n onerror: null,\n };\n\n // is a single url\n if (isString(outline)) {\n action.url = outline;\n return action;\n }\n\n // overwrite\n Object.assign(action, outline);\n\n // see if should reformat headers;\n if (isString(action.headers)) {\n const parts = action.headers.split(/:(.+)/);\n action.headers = {\n header: parts[0],\n value: parts[1],\n };\n }\n\n // if is bool withCredentials\n action.withCredentials = toBoolean(action.withCredentials);\n\n return action;\n};\n\nconst toServerAPI = value => createServerAPI(value);\n\nconst isNull = value => value === null;\n\nconst isObject = value => typeof value === 'object' && value !== null;\n\nconst isAPI = value => {\n return (\n isObject(value) &&\n isString(value.url) &&\n isObject(value.process) &&\n isObject(value.revert) &&\n isObject(value.restore) &&\n isObject(value.fetch)\n );\n};\n\nconst getType = value => {\n if (isArray(value)) {\n return 'array';\n }\n\n if (isNull(value)) {\n return 'null';\n }\n\n if (isInt(value)) {\n return 'int';\n }\n\n if (/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(value)) {\n return 'bytes';\n }\n\n if (isAPI(value)) {\n return 'api';\n }\n\n return typeof value;\n};\n\nconst replaceSingleQuotes = str =>\n str\n .replace(/{\\s*'/g, '{\"')\n .replace(/'\\s*}/g, '\"}')\n .replace(/'\\s*:/g, '\":')\n .replace(/:\\s*'/g, ':\"')\n .replace(/,\\s*'/g, ',\"')\n .replace(/'\\s*,/g, '\",');\n\nconst conversionTable = {\n array: toArray,\n boolean: toBoolean,\n int: value => (getType(value) === 'bytes' ? toBytes(value) : toInt(value)),\n number: toFloat,\n float: toFloat,\n bytes: toBytes,\n string: value => (isFunction(value) ? value : toString(value)),\n function: value => toFunctionReference(value),\n serverapi: toServerAPI,\n object: value => {\n try {\n return JSON.parse(replaceSingleQuotes(value));\n } catch (e) {\n return null;\n }\n },\n};\n\nconst convertTo = (value, type) => conversionTable[type](value);\n\nconst getValueByType = (newValue, defaultValue, valueType) => {\n // can always assign default value\n if (newValue === defaultValue) {\n return newValue;\n }\n\n // get the type of the new value\n let newValueType = getType(newValue);\n\n // is valid type?\n if (newValueType !== valueType) {\n // is string input, let's attempt to convert\n const convertedValue = convertTo(newValue, valueType);\n\n // what is the type now\n newValueType = getType(convertedValue);\n\n // no valid conversions found\n if (convertedValue === null) {\n throw `Trying to assign value with incorrect type to \"${option}\", allowed type: \"${valueType}\"`;\n } else {\n newValue = convertedValue;\n }\n }\n\n // assign new value\n return newValue;\n};\n\nconst createOption = (defaultValue, valueType) => {\n let currentValue = defaultValue;\n return {\n enumerable: true,\n get: () => currentValue,\n set: newValue => {\n currentValue = getValueByType(newValue, defaultValue, valueType);\n },\n };\n};\n\nconst createOptions = options => {\n const obj = {};\n forin(options, prop => {\n const optionDefinition = options[prop];\n obj[prop] = createOption(optionDefinition[0], optionDefinition[1]);\n });\n return createObject(obj);\n};\n\nconst createInitialState = options => ({\n // model\n items: [],\n\n // timeout used for calling update items\n listUpdateTimeout: null,\n\n // timeout used for stacking metadata updates\n itemUpdateTimeout: null,\n\n // queue of items waiting to be processed\n processingQueue: [],\n\n // options\n options: createOptions(options),\n});\n\nconst fromCamels = (string, separator = '-') =>\n string\n .split(/(?=[A-Z])/)\n .map(part => part.toLowerCase())\n .join(separator);\n\nconst createOptionAPI = (store, options) => {\n const obj = {};\n forin(options, key => {\n obj[key] = {\n get: () => store.getState().options[key],\n set: value => {\n store.dispatch(`SET_${fromCamels(key, '_').toUpperCase()}`, {\n value,\n });\n },\n };\n });\n return obj;\n};\n\nconst createOptionActions = options => (dispatch, query, state) => {\n const obj = {};\n forin(options, key => {\n const name = fromCamels(key, '_').toUpperCase();\n\n obj[`SET_${name}`] = action => {\n try {\n state.options[key] = action.value;\n } catch (e) {\n // nope, failed\n }\n\n // we successfully set the value of this option\n dispatch(`DID_SET_${name}`, { value: state.options[key] });\n };\n });\n return obj;\n};\n\nconst createOptionQueries = options => state => {\n const obj = {};\n forin(options, key => {\n obj[`GET_${fromCamels(key, '_').toUpperCase()}`] = action => state.options[key];\n });\n return obj;\n};\n\nconst InteractionMethod = {\n API: 1,\n DROP: 2,\n BROWSE: 3,\n PASTE: 4,\n NONE: 5,\n};\n\nconst getUniqueId = () =>\n Math.random()\n .toString(36)\n .substring(2, 11);\n\nconst arrayRemove = (arr, index) => arr.splice(index, 1);\n\nconst run = (cb, sync) => {\n if (sync) {\n cb();\n } else if (document.hidden) {\n Promise.resolve(1).then(cb);\n } else {\n setTimeout(cb, 0);\n }\n};\n\nconst on = () => {\n const listeners = [];\n const off = (event, cb) => {\n arrayRemove(\n listeners,\n listeners.findIndex(listener => listener.event === event && (listener.cb === cb || !cb))\n );\n };\n const fire = (event, args, sync) => {\n listeners\n .filter(listener => listener.event === event)\n .map(listener => listener.cb)\n .forEach(cb => run(() => cb(...args), sync));\n };\n return {\n fireSync: (event, ...args) => {\n fire(event, args, true);\n },\n fire: (event, ...args) => {\n fire(event, args, false);\n },\n on: (event, cb) => {\n listeners.push({ event, cb });\n },\n onOnce: (event, cb) => {\n listeners.push({\n event,\n cb: (...args) => {\n off(event, cb);\n cb(...args);\n },\n });\n },\n off,\n };\n};\n\nconst copyObjectPropertiesToObject = (src, target, excluded) => {\n Object.getOwnPropertyNames(src)\n .filter(property => !excluded.includes(property))\n .forEach(key =>\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(src, key))\n );\n};\n\nconst PRIVATE = [\n 'fire',\n 'process',\n 'revert',\n 'load',\n 'on',\n 'off',\n 'onOnce',\n 'retryLoad',\n 'extend',\n 'archive',\n 'archived',\n 'release',\n 'released',\n 'requestProcessing',\n 'freeze',\n];\n\nconst createItemAPI = item => {\n const api = {};\n copyObjectPropertiesToObject(item, api, PRIVATE);\n return api;\n};\n\nconst removeReleasedItems = items => {\n items.forEach((item, index) => {\n if (item.released) {\n arrayRemove(items, index);\n }\n });\n};\n\nconst ItemStatus = {\n INIT: 1,\n IDLE: 2,\n PROCESSING_QUEUED: 9,\n PROCESSING: 3,\n PROCESSING_COMPLETE: 5,\n PROCESSING_ERROR: 6,\n PROCESSING_REVERT_ERROR: 10,\n LOADING: 7,\n LOAD_ERROR: 8,\n};\n\nconst FileOrigin = {\n INPUT: 1,\n LIMBO: 2,\n LOCAL: 3,\n};\n\nconst getNonNumeric = str => /[^0-9]+/.exec(str);\n\nconst getDecimalSeparator = () => getNonNumeric((1.1).toLocaleString())[0];\n\nconst getThousandsSeparator = () => {\n // Added for browsers that do not return the thousands separator (happend on native browser Android 4.4.4)\n // We check against the normal toString output and if they're the same return a comma when decimal separator is a dot\n const decimalSeparator = getDecimalSeparator();\n const thousandsStringWithSeparator = (1000.0).toLocaleString();\n const thousandsStringWithoutSeparator = (1000.0).toString();\n if (thousandsStringWithSeparator !== thousandsStringWithoutSeparator) {\n return getNonNumeric(thousandsStringWithSeparator)[0];\n }\n return decimalSeparator === '.' ? ',' : '.';\n};\n\nconst Type = {\n BOOLEAN: 'boolean',\n INT: 'int',\n NUMBER: 'number',\n STRING: 'string',\n ARRAY: 'array',\n OBJECT: 'object',\n FUNCTION: 'function',\n ACTION: 'action',\n SERVER_API: 'serverapi',\n REGEX: 'regex',\n};\n\n// all registered filters\nconst filters = [];\n\n// loops over matching filters and passes options to each filter, returning the mapped results\nconst applyFilterChain = (key, value, utils) =>\n new Promise((resolve, reject) => {\n // find matching filters for this key\n const matchingFilters = filters.filter(f => f.key === key).map(f => f.cb);\n\n // resolve now\n if (matchingFilters.length === 0) {\n resolve(value);\n return;\n }\n\n // first filter to kick things of\n const initialFilter = matchingFilters.shift();\n\n // chain filters\n matchingFilters\n .reduce(\n // loop over promises passing value to next promise\n (current, next) => current.then(value => next(value, utils)),\n\n // call initial filter, will return a promise\n initialFilter(value, utils)\n\n // all executed\n )\n .then(value => resolve(value))\n .catch(error => reject(error));\n });\n\nconst applyFilters = (key, value, utils) =>\n filters.filter(f => f.key === key).map(f => f.cb(value, utils));\n\n// adds a new filter to the list\nconst addFilter = (key, cb) => filters.push({ key, cb });\n\nconst extendDefaultOptions = additionalOptions => Object.assign(defaultOptions, additionalOptions);\n\nconst getOptions = () => ({ ...defaultOptions });\n\nconst setOptions = opts => {\n forin(opts, (key, value) => {\n // key does not exist, so this option cannot be set\n if (!defaultOptions[key]) {\n return;\n }\n defaultOptions[key][0] = getValueByType(\n value,\n defaultOptions[key][0],\n defaultOptions[key][1]\n );\n });\n};\n\n// default options on app\nconst defaultOptions = {\n // the id to add to the root element\n id: [null, Type.STRING],\n\n // input field name to use\n name: ['filepond', Type.STRING],\n\n // disable the field\n disabled: [false, Type.BOOLEAN],\n\n // classname to put on wrapper\n className: [null, Type.STRING],\n\n // is the field required\n required: [false, Type.BOOLEAN],\n\n // Allow media capture when value is set\n captureMethod: [null, Type.STRING],\n // - \"camera\", \"microphone\" or \"camcorder\",\n // - Does not work with multiple on apple devices\n // - If set, acceptedFileTypes must be made to match with media wildcard \"image/*\", \"audio/*\" or \"video/*\"\n\n // sync `acceptedFileTypes` property with `accept` attribute\n allowSyncAcceptAttribute: [true, Type.BOOLEAN],\n\n // Feature toggles\n allowDrop: [true, Type.BOOLEAN], // Allow dropping of files\n allowBrowse: [true, Type.BOOLEAN], // Allow browsing the file system\n allowPaste: [true, Type.BOOLEAN], // Allow pasting files\n allowMultiple: [false, Type.BOOLEAN], // Allow multiple files (disabled by default, as multiple attribute is also required on input to allow multiple)\n allowReplace: [true, Type.BOOLEAN], // Allow dropping a file on other file to replace it (only works when multiple is set to false)\n allowRevert: [true, Type.BOOLEAN], // Allows user to revert file upload\n allowRemove: [true, Type.BOOLEAN], // Allow user to remove a file\n allowProcess: [true, Type.BOOLEAN], // Allows user to process a file, when set to false, this removes the file upload button\n allowReorder: [false, Type.BOOLEAN], // Allow reordering of files\n allowDirectoriesOnly: [false, Type.BOOLEAN], // Allow only selecting directories with browse (no support for filtering dnd at this point)\n\n // Try store file if `server` not set\n storeAsFile: [false, Type.BOOLEAN],\n\n // Revert mode\n forceRevert: [false, Type.BOOLEAN], // Set to 'force' to require the file to be reverted before removal\n\n // Input requirements\n maxFiles: [null, Type.INT], // Max number of files\n checkValidity: [false, Type.BOOLEAN], // Enables custom validity messages\n\n // Where to put file\n itemInsertLocationFreedom: [true, Type.BOOLEAN], // Set to false to always add items to begin or end of list\n itemInsertLocation: ['before', Type.STRING], // Default index in list to add items that have been dropped at the top of the list\n itemInsertInterval: [75, Type.INT],\n\n // Drag 'n Drop related\n dropOnPage: [false, Type.BOOLEAN], // Allow dropping of files anywhere on page (prevents browser from opening file if dropped outside of Up)\n dropOnElement: [true, Type.BOOLEAN], // Drop needs to happen on element (set to false to also load drops outside of Up)\n dropValidation: [false, Type.BOOLEAN], // Enable or disable validating files on drop\n ignoredFiles: [['.ds_store', 'thumbs.db', 'desktop.ini'], Type.ARRAY],\n\n // Upload related\n instantUpload: [true, Type.BOOLEAN], // Should upload files immediately on drop\n maxParallelUploads: [2, Type.INT], // Maximum files to upload in parallel\n allowMinimumUploadDuration: [true, Type.BOOLEAN], // if true uploads take at least 750 ms, this ensures the user sees the upload progress giving trust the upload actually happened\n\n // Chunks\n chunkUploads: [false, Type.BOOLEAN], // Enable chunked uploads\n chunkForce: [false, Type.BOOLEAN], // Force use of chunk uploads even for files smaller than chunk size\n chunkSize: [5000000, Type.INT], // Size of chunks (5MB default)\n chunkRetryDelays: [[500, 1000, 3000], Type.ARRAY], // Amount of times to retry upload of a chunk when it fails\n\n // The server api end points to use for uploading (see docs)\n server: [null, Type.SERVER_API],\n\n // File size calculations, can set to 1024, this is only used for display, properties use file size base 1000\n fileSizeBase: [1000, Type.INT],\n\n // Labels and status messages\n labelFileSizeBytes: ['bytes', Type.STRING],\n labelFileSizeKilobytes: ['KB', Type.STRING],\n labelFileSizeMegabytes: ['MB', Type.STRING],\n labelFileSizeGigabytes: ['GB', Type.STRING],\n\n labelDecimalSeparator: [getDecimalSeparator(), Type.STRING], // Default is locale separator\n labelThousandsSeparator: [getThousandsSeparator(), Type.STRING], // Default is locale separator\n\n labelIdle: [\n 'Drag & Drop your files or <span class=\"filepond--label-action\">Browse</span>',\n Type.STRING,\n ],\n labelInvalidField: ['Field contains invalid files', Type.STRING],\n labelFileWaitingForSize: ['Waiting for size', Type.STRING],\n labelFileSizeNotAvailable: ['Size not available', Type.STRING],\n labelFileCountSingular: ['file in list', Type.STRING],\n labelFileCountPlural: ['files in list', Type.STRING],\n labelFileLoading: ['Loading', Type.STRING],\n labelFileAdded: ['Added', Type.STRING], // assistive only\n labelFileLoadError: ['Error during load', Type.STRING],\n labelFileRemoved: ['Removed', Type.STRING], // assistive only\n labelFileRemoveError: ['Error during remove', Type.STRING],\n labelFileProcessing: ['Uploading', Type.STRING],\n labelFileProcessingComplete: ['Upload complete', Type.STRING],\n labelFileProcessingAborted: ['Upload cancelled', Type.STRING],\n labelFileProcessingError: ['Error during upload', Type.STRING],\n labelFileProcessingRevertError: ['Error during revert', Type.STRING],\n\n labelTapToCancel: ['tap to cancel', Type.STRING],\n labelTapToRetry: ['tap to retry', Type.STRING],\n labelTapToUndo: ['tap to undo', Type.STRING],\n\n labelButtonRemoveItem: ['Remove', Type.STRING],\n labelButtonAbortItemLoad: ['Abort', Type.STRING],\n labelButtonRetryItemLoad: ['Retry', Type.STRING],\n labelButtonAbortItemProcessing: ['Cancel', Type.STRING],\n labelButtonUndoItemProcessing: ['Undo', Type.STRING],\n labelButtonRetryItemProcessing: ['Retry', Type.STRING],\n labelButtonProcessItem: ['Upload', Type.STRING],\n\n // make sure width and height plus viewpox are even numbers so icons are nicely centered\n iconRemove: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.586 13l-2.293 2.293a1 1 0 0 0 1.414 1.414L13 14.414l2.293 2.293a1 1 0 0 0 1.414-1.414L14.414 13l2.293-2.293a1 1 0 0 0-1.414-1.414L13 11.586l-2.293-2.293a1 1 0 0 0-1.414 1.414L11.586 13z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n Type.STRING,\n ],\n iconProcess: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14 10.414v3.585a1 1 0 0 1-2 0v-3.585l-1.293 1.293a1 1 0 0 1-1.414-1.415l3-3a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1-1.414 1.415L14 10.414zM9 18a1 1 0 0 1 0-2h8a1 1 0 0 1 0 2H9z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>',\n Type.STRING,\n ],\n iconRetry: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.81 9.185l-.038.02A4.997 4.997 0 0 0 8 13.683a5 5 0 0 0 5 5 5 5 0 0 0 5-5 1 1 0 0 1 2 0A7 7 0 1 1 9.722 7.496l-.842-.21a.999.999 0 1 1 .484-1.94l3.23.806c.535.133.86.675.73 1.21l-.804 3.233a.997.997 0 0 1-1.21.73.997.997 0 0 1-.73-1.21l.23-.928v-.002z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n Type.STRING,\n ],\n iconUndo: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.185 10.81l.02-.038A4.997 4.997 0 0 1 13.683 8a5 5 0 0 1 5 5 5 5 0 0 1-5 5 1 1 0 0 0 0 2A7 7 0 1 0 7.496 9.722l-.21-.842a.999.999 0 1 0-1.94.484l.806 3.23c.133.535.675.86 1.21.73l3.233-.803a.997.997 0 0 0 .73-1.21.997.997 0 0 0-1.21-.73l-.928.23-.002-.001z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n Type.STRING,\n ],\n iconDone: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18.293 9.293a1 1 0 0 1 1.414 1.414l-7.002 7a1 1 0 0 1-1.414 0l-3.998-4a1 1 0 1 1 1.414-1.414L12 15.586l6.294-6.293z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n Type.STRING,\n ],\n\n // event handlers\n oninit: [null, Type.FUNCTION],\n onwarning: [null, Type.FUNCTION],\n onerror: [null, Type.FUNCTION],\n onactivatefile: [null, Type.FUNCTION],\n oninitfile: [null, Type.FUNCTION],\n onaddfilestart: [null, Type.FUNCTION],\n onaddfileprogress: [null, Type.FUNCTION],\n onaddfile: [null, Type.FUNCTION],\n onprocessfilestart: [null, Type.FUNCTION],\n onprocessfileprogress: [null, Type.FUNCTION],\n onprocessfileabort: [null, Type.FUNCTION],\n onprocessfilerevert: [null, Type.FUNCTION],\n onprocessfile: [null, Type.FUNCTION],\n onprocessfiles: [null, Type.FUNCTION],\n onremovefile: [null, Type.FUNCTION],\n onpreparefile: [null, Type.FUNCTION],\n onupdatefiles: [null, Type.FUNCTION],\n onreorderfiles: [null, Type.FUNCTION],\n\n // hooks\n beforeDropFile: [null, Type.FUNCTION],\n beforeAddFile: [null, Type.FUNCTION],\n beforeRemoveFile: [null, Type.FUNCTION],\n beforePrepareFile: [null, Type.FUNCTION],\n\n // styles\n stylePanelLayout: [null, Type.STRING], // null 'integrated', 'compact', 'circle'\n stylePanelAspectRatio: [null, Type.STRING], // null or '3:2' or 1\n styleItemPanelAspectRatio: [null, Type.STRING],\n styleButtonRemoveItemPosition: ['left', Type.STRING],\n styleButtonProcessItemPosition: ['right', Type.STRING],\n styleLoadIndicatorPosition: ['right', Type.STRING],\n styleProgressIndicatorPosition: ['right', Type.STRING],\n styleButtonRemoveItemAlign: [false, Type.BOOLEAN],\n\n // custom initial files array\n files: [[], Type.ARRAY],\n\n // show support by displaying credits\n credits: [['https://filepond.com', 'Powered by FilePond'], Type.ARRAY],\n};\n\nconst getItemByQuery = (items, query) => {\n // just return first index\n if (isEmpty(query)) {\n return items[0] || null;\n }\n\n // query is index\n if (isInt(query)) {\n return items[query] || null;\n }\n\n // if query is item, get the id\n if (typeof query === 'object') {\n query = query.id;\n }\n\n // assume query is a string and return item by id\n return items.find(item => item.id === query) || null;\n};\n\nconst getNumericAspectRatioFromString = aspectRatio => {\n if (isEmpty(aspectRatio)) {\n return aspectRatio;\n }\n if (/:/.test(aspectRatio)) {\n const parts = aspectRatio.split(':');\n return parts[1] / parts[0];\n }\n return parseFloat(aspectRatio);\n};\n\nconst getActiveItems = items => items.filter(item => !item.archived);\n\nconst Status = {\n EMPTY: 0,\n IDLE: 1, // waiting\n ERROR: 2, // a file is in error state\n BUSY: 3, // busy processing or loading\n READY: 4, // all files uploaded\n};\n\nlet res = null;\nconst canUpdateFileInput = () => {\n if (res === null) {\n try {\n const dataTransfer = new DataTransfer();\n dataTransfer.items.add(new File(['hello world'], 'This_Works.txt'));\n const el = document.createElement('input');\n el.setAttribute('type', 'file');\n el.files = dataTransfer.files;\n res = el.files.length === 1;\n } catch (err) {\n res = false;\n }\n }\n return res;\n};\n\nconst ITEM_ERROR = [\n ItemStatus.LOAD_ERROR,\n ItemStatus.PROCESSING_ERROR,\n ItemStatus.PROCESSING_REVERT_ERROR,\n];\nconst ITEM_BUSY = [\n ItemStatus.LOADING,\n ItemStatus.PROCESSING,\n ItemStatus.PROCESSING_QUEUED,\n ItemStatus.INIT,\n];\nconst ITEM_READY = [ItemStatus.PROCESSING_COMPLETE];\n\nconst isItemInErrorState = item => ITEM_ERROR.includes(item.status);\nconst isItemInBusyState = item => ITEM_BUSY.includes(item.status);\nconst isItemInReadyState = item => ITEM_READY.includes(item.status);\n\nconst isAsync = state =>\n isObject(state.options.server) &&\n (isObject(state.options.server.process) || isFunction(state.options.server.process));\n\nconst queries = state => ({\n GET_STATUS: () => {\n const items = getActiveItems(state.items);\n\n const { EMPTY, ERROR, BUSY, IDLE, READY } = Status;\n\n if (items.length === 0) return EMPTY;\n\n if (items.some(isItemInErrorState)) return ERROR;\n\n if (items.some(isItemInBusyState)) return BUSY;\n\n if (items.some(isItemInReadyState)) return READY;\n\n return IDLE;\n },\n\n GET_ITEM: query => getItemByQuery(state.items, query),\n\n GET_ACTIVE_ITEM: query => getItemByQuery(getActiveItems(state.items), query),\n\n GET_ACTIVE_ITEMS: () => getActiveItems(state.items),\n\n GET_ITEMS: () => state.items,\n\n GET_ITEM_NAME: query => {\n const item = getItemByQuery(state.items, query);\n return item ? item.filename : null;\n },\n\n GET_ITEM_SIZE: query => {\n const item = getItemByQuery(state.items, query);\n return item ? item.fileSize : null;\n },\n\n GET_STYLES: () =>\n Object.keys(state.options)\n .filter(key => /^style/.test(key))\n .map(option => ({\n name: option,\n value: state.options[option],\n })),\n\n GET_PANEL_ASPECT_RATIO: () => {\n const isShapeCircle = /circle/.test(state.options.stylePanelLayout);\n const aspectRatio = isShapeCircle\n ? 1\n : getNumericAspectRatioFromString(state.options.stylePanelAspectRatio);\n return aspectRatio;\n },\n\n GET_ITEM_PANEL_ASPECT_RATIO: () => state.options.styleItemPanelAspectRatio,\n\n GET_ITEMS_BY_STATUS: status =>\n getActiveItems(state.items).filter(item => item.status === status),\n\n GET_TOTAL_ITEMS: () => getActiveItems(state.items).length,\n\n SHOULD_UPDATE_FILE_INPUT: () =>\n state.options.storeAsFile && canUpdateFileInput() && !isAsync(state),\n\n IS_ASYNC: () => isAsync(state),\n\n GET_FILE_SIZE_LABELS: query => ({\n labelBytes: query('GET_LABEL_FILE_SIZE_BYTES') || undefined,\n labelKilobytes: query('GET_LABEL_FILE_SIZE_KILOBYTES') || undefined,\n labelMegabytes: query('GET_LABEL_FILE_SIZE_MEGABYTES') || undefined,\n labelGigabytes: query('GET_LABEL_FILE_SIZE_GIGABYTES') || undefined,\n }),\n});\n\nconst hasRoomForItem = state => {\n const count = getActiveItems(state.items).length;\n\n // if cannot have multiple items, to add one item it should currently not contain items\n if (!state.options.allowMultiple) {\n return count === 0;\n }\n\n // if allows multiple items, we check if a max item count has been set, if not, there's no limit\n const maxFileCount = state.options.maxFiles;\n if (maxFileCount === null) {\n return true;\n }\n\n // we check if the current count is smaller than the max count, if so, another file can still be added\n if (count < maxFileCount) {\n return true;\n }\n\n // no more room for another file\n return false;\n};\n\nconst limit = (value, min, max) => Math.max(Math.min(max, value), min);\n\nconst arrayInsert = (arr, index, item) => arr.splice(index, 0, item);\n\nconst insertItem = (items, item, index) => {\n if (isEmpty(item)) {\n return null;\n }\n\n // if index is undefined, append\n if (typeof index === 'undefined') {\n items.push(item);\n return item;\n }\n\n // limit the index to the size of the items array\n index = limit(index, 0, items.length);\n\n // add item to array\n arrayInsert(items, index, item);\n\n // expose\n return item;\n};\n\nconst isBase64DataURI = str =>\n /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i.test(\n str\n );\n\nconst getFilenameFromURL = url =>\n `${url}`\n .split('/')\n .pop()\n .split('?')\n .shift();\n\nconst getExtensionFromFilename = name => name.split('.').pop();\n\nconst guesstimateExtension = type => {\n // if no extension supplied, exit here\n if (typeof type !== 'string') {\n return '';\n }\n\n // get subtype\n const subtype = type.split('/').pop();\n\n // is svg subtype\n if (/svg/.test(subtype)) {\n return 'svg';\n }\n\n if (/zip|compressed/.test(subtype)) {\n return 'zip';\n }\n\n if (/plain/.test(subtype)) {\n return 'txt';\n }\n\n if (/msword/.test(subtype)) {\n return 'doc';\n }\n\n // if is valid subtype\n if (/[a-z]+/.test(subtype)) {\n // always use jpg extension\n if (subtype === 'jpeg') {\n return 'jpg';\n }\n\n // return subtype\n return subtype;\n }\n\n return '';\n};\n\nconst leftPad = (value, padding = '') => (padding + value).slice(-padding.length);\n\nconst getDateString = (date = new Date()) =>\n `${date.getFullYear()}-${leftPad(date.getMonth() + 1, '00')}-${leftPad(\n date.getDate(),\n '00'\n )}_${leftPad(date.getHours(), '00')}-${leftPad(date.getMinutes(), '00')}-${leftPad(\n date.getSeconds(),\n '00'\n )}`;\n\nconst getFileFromBlob = (blob, filename, type = null, extension = null) => {\n const file =\n typeof type === 'string'\n ? blob.slice(0, blob.size, type)\n : blob.slice(0, blob.size, blob.type);\n file.lastModifiedDate = new Date();\n\n // copy relative path\n if (blob._relativePath) file._relativePath = blob._relativePath;\n\n // if blob has name property, use as filename if no filename supplied\n if (!isString(filename)) {\n filename = getDateString();\n }\n\n // if filename supplied but no extension and filename has extension\n if (filename && extension === null && getExtensionFromFilename(filename)) {\n file.name = filename;\n } else {\n extension = extension || guesstimateExtension(file.type);\n file.name = filename + (extension ? '.' + extension : '');\n }\n\n return file;\n};\n\nconst getBlobBuilder = () => {\n return (window.BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder);\n};\n\nconst createBlob = (arrayBuffer, mimeType) => {\n const BB = getBlobBuilder();\n\n if (BB) {\n const bb = new BB();\n bb.append(arrayBuffer);\n return bb.getBlob(mimeType);\n }\n\n return new Blob([arrayBuffer], {\n type: mimeType,\n });\n};\n\nconst getBlobFromByteStringWithMimeType = (byteString, mimeType) => {\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return createBlob(ab, mimeType);\n};\n\nconst getMimeTypeFromBase64DataURI = dataURI => {\n return (/^data:(.+);/.exec(dataURI) || [])[1] || null;\n};\n\nconst getBase64DataFromBase64DataURI = dataURI => {\n // get data part of string (remove data:image/jpeg...,)\n const data = dataURI.split(',')[1];\n\n // remove any whitespace as that causes InvalidCharacterError in IE\n return data.replace(/\\s/g, '');\n};\n\nconst getByteStringFromBase64DataURI = dataURI => {\n return atob(getBase64DataFromBase64DataURI(dataURI));\n};\n\nconst getBlobFromBase64DataURI = dataURI => {\n const mimeType = getMimeTypeFromBase64DataURI(dataURI);\n const byteString = getByteStringFromBase64DataURI(dataURI);\n\n return getBlobFromByteStringWithMimeType(byteString, mimeType);\n};\n\nconst getFileFromBase64DataURI = (dataURI, filename, extension) => {\n return getFileFromBlob(getBlobFromBase64DataURI(dataURI), filename, null, extension);\n};\n\nconst getFileNameFromHeader = header => {\n // test if is content disposition header, if not exit\n if (!/^content-disposition:/i.test(header)) return null;\n\n // get filename parts\n const matches = header\n .split(/filename=|filename\\*=.+''/)\n .splice(1)\n .map(name => name.trim().replace(/^[\"']|[;\"']{0,2}$/g, ''))\n .filter(name => name.length);\n\n return matches.length ? decodeURI(matches[matches.length - 1]) : null;\n};\n\nconst getFileSizeFromHeader = header => {\n if (/content-length:/i.test(header)) {\n const size = header.match(/[0-9]+/)[0];\n return size ? parseInt(size, 10) : null;\n }\n return null;\n};\n\nconst getTranfserIdFromHeader = header => {\n if (/x-content-transfer-id:/i.test(header)) {\n const id = (header.split(':')[1] || '').trim();\n return id || null;\n }\n return null;\n};\n\nconst getFileInfoFromHeaders = headers => {\n const info = {\n source: null,\n name: null,\n size: null,\n };\n\n const rows = headers.split('\\n');\n for (let header of rows) {\n const name = getFileNameFromHeader(header);\n if (name) {\n info.name = name;\n continue;\n }\n\n const size = getFileSizeFromHeader(header);\n if (size) {\n info.size = size;\n continue;\n }\n\n const source = getTranfserIdFromHeader(header);\n if (source) {\n info.source = source;\n continue;\n }\n }\n\n return info;\n};\n\nconst createFileLoader = fetchFn => {\n const state = {\n source: null,\n complete: false,\n progress: 0,\n size: null,\n timestamp: null,\n duration: 0,\n request: null,\n };\n\n const getProgress = () => state.progress;\n const abort = () => {\n if (state.request && state.request.abort) {\n state.request.abort();\n }\n };\n\n // load source\n const load = () => {\n // get quick reference\n const source = state.source;\n\n api.fire('init', source);\n\n // Load Files\n if (source instanceof File) {\n api.fire('load', source);\n } else if (source instanceof Blob) {\n // Load blobs, set default name to current date\n api.fire('load', getFileFromBlob(source, source.name));\n } else if (isBase64DataURI(source)) {\n // Load base 64, set default name to current date\n api.fire('load', getFileFromBase64DataURI(source));\n } else {\n // Deal as if is external URL, let's load it!\n loadURL(source);\n }\n };\n\n // loads a url\n const loadURL = url => {\n // is remote url and no fetch method supplied\n if (!fetchFn) {\n api.fire('error', {\n type: 'error',\n body: \"Can't load URL\",\n code: 400,\n });\n return;\n }\n\n // set request start\n state.timestamp = Date.now();\n\n // load file\n state.request = fetchFn(\n url,\n response => {\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // done!\n state.complete = true;\n\n // turn blob response into a file\n if (response instanceof Blob) {\n response = getFileFromBlob(response, response.name || getFilenameFromURL(url));\n }\n\n api.fire(\n 'load',\n // if has received blob, we go with blob, if no response, we return null\n response instanceof Blob ? response : response ? response.body : null\n );\n },\n error => {\n api.fire(\n 'error',\n typeof error === 'string'\n ? {\n type: 'error',\n code: 0,\n body: error,\n }\n : error\n );\n },\n (computable, current, total) => {\n // collected some meta data already\n if (total) {\n state.size = total;\n }\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // if we can't compute progress, we're not going to fire progress events\n if (!computable) {\n state.progress = null;\n return;\n }\n\n // update progress percentage\n state.progress = current / total;\n\n // expose\n api.fire('progress', state.progress);\n },\n () => {\n api.fire('abort');\n },\n response => {\n const fileinfo = getFileInfoFromHeaders(\n typeof response === 'string' ? response : response.headers\n );\n api.fire('meta', {\n size: state.size || fileinfo.size,\n filename: fileinfo.name,\n source: fileinfo.source,\n });\n }\n );\n };\n\n const api = {\n ...on(),\n setSource: source => (state.source = source),\n getProgress, // file load progress\n abort, // abort file load\n load, // start load\n };\n\n return api;\n};\n\nconst isGet = method => /GET|HEAD/.test(method);\n\nconst sendRequest = (data, url, options) => {\n const api = {\n onheaders: () => {},\n onprogress: () => {},\n onload: () => {},\n ontimeout: () => {},\n onerror: () => {},\n onabort: () => {},\n abort: () => {\n aborted = true;\n xhr.abort();\n },\n };\n\n // timeout identifier, only used when timeout is defined\n let aborted = false;\n let headersReceived = false;\n\n // set default options\n options = {\n method: 'POST',\n headers: {},\n withCredentials: false,\n ...options,\n };\n\n // encode url\n url = encodeURI(url);\n\n // if method is GET, add any received data to url\n\n if (isGet(options.method) && data) {\n url = `${url}${encodeURIComponent(typeof data === 'string' ? data : JSON.stringify(data))}`;\n }\n\n // create request\n const xhr = new XMLHttpRequest();\n\n // progress of load\n const process = isGet(options.method) ? xhr : xhr.upload;\n process.onprogress = e => {\n // no progress event when aborted ( onprogress is called once after abort() )\n if (aborted) {\n return;\n }\n\n api.onprogress(e.lengthComputable, e.loaded, e.total);\n };\n\n // tries to get header info to the app as fast as possible\n xhr.onreadystatechange = () => {\n // not interesting in these states ('unsent' and 'openend' as they don't give us any additional info)\n if (xhr.readyState < 2) {\n return;\n }\n\n // no server response\n if (xhr.readyState === 4 && xhr.status === 0) {\n return;\n }\n\n if (headersReceived) {\n return;\n }\n\n headersReceived = true;\n\n // we've probably received some useful data in response headers\n api.onheaders(xhr);\n };\n\n // load successful\n xhr.onload = () => {\n // is classified as valid response\n if (xhr.status >= 200 && xhr.status < 300) {\n api.onload(xhr);\n } else {\n api.onerror(xhr);\n }\n };\n\n // error during load\n xhr.onerror = () => api.onerror(xhr);\n\n // request aborted\n xhr.onabort = () => {\n aborted = true;\n api.onabort();\n };\n\n // request timeout\n xhr.ontimeout = () => api.ontimeout(xhr);\n\n // open up open up!\n xhr.open(options.method, url, true);\n\n // set timeout if defined (do it after open so IE11 plays ball)\n if (isInt(options.timeout)) {\n xhr.timeout = options.timeout;\n }\n\n // add headers\n Object.keys(options.headers).forEach(key => {\n const value = unescape(encodeURIComponent(options.headers[key]));\n xhr.setRequestHeader(key, value);\n });\n\n // set type of response\n if (options.responseType) {\n xhr.responseType = options.responseType;\n }\n\n // set credentials\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // let's send our data\n xhr.send(data);\n\n return api;\n};\n\nconst createResponse = (type, code, body, headers) => ({\n type,\n code,\n body,\n headers,\n});\n\nconst createTimeoutResponse = cb => xhr => {\n cb(createResponse('error', 0, 'Timeout', xhr.getAllResponseHeaders()));\n};\n\nconst hasQS = str => /\\?/.test(str);\nconst buildURL = (...parts) => {\n let url = '';\n parts.forEach(part => {\n url += hasQS(url) && hasQS(part) ? part.replace(/\\?/, '&') : part;\n });\n return url;\n};\n\nconst createFetchFunction = (apiUrl = '', action) => {\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied\n if (!action || !isString(action.url)) {\n return null;\n }\n\n // set onload hanlder\n const onload = action.onload || (res => res);\n const onerror = action.onerror || (res => null);\n\n // internal handler\n return (url, load, error, progress, abort, headers) => {\n // do local or remote request based on if the url is external\n const request = sendRequest(url, buildURL(apiUrl, action.url), {\n ...action,\n responseType: 'blob',\n });\n\n request.onload = xhr => {\n // get headers\n const headers = xhr.getAllResponseHeaders();\n\n // get filename\n const filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(\n createResponse(\n 'load',\n xhr.status,\n action.method === 'HEAD'\n ? null\n : getFileFromBlob(onload(xhr.response), filename),\n headers\n )\n );\n };\n\n request.onerror = xhr => {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onheaders = xhr => {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n};\n\nconst ChunkStatus = {\n QUEUED: 0,\n COMPLETE: 1,\n PROCESSING: 2,\n ERROR: 3,\n WAITING: 4,\n};\n\n/*\nfunction signature:\n (file, metadata, load, error, progress, abort, transfer, options) => {\n return {\n abort:() => {}\n }\n}\n*/\n\n// apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options\nconst processFileChunked = (\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n) => {\n // all chunks\n const chunks = [];\n const { chunkTransferId, chunkServer, chunkSize, chunkRetryDelays } = options;\n\n // default state\n const state = {\n serverId: chunkTransferId,\n aborted: false,\n };\n\n // set onload handlers\n const ondata = action.ondata || (fd => fd);\n const onload =\n action.onload ||\n ((xhr, method) =>\n method === 'HEAD' ? xhr.getResponseHeader('Upload-Offset') : xhr.response);\n const onerror = action.onerror || (res => null);\n\n // create server hook\n const requestTransferId = cb => {\n const formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) formData.append(name, JSON.stringify(metadata));\n\n const headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata)\n : {\n ...action.headers,\n 'Upload-Length': file.size,\n };\n\n const requestParams = {\n ...action,\n headers,\n };\n\n // send request object\n const request = sendRequest(ondata(formData), buildURL(apiUrl, action.url), requestParams);\n\n request.onload = xhr => cb(onload(xhr, requestParams.method));\n\n request.onerror = xhr =>\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n const requestTransferOffset = cb => {\n const requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n const headers =\n typeof action.headers === 'function'\n ? action.headers(state.serverId)\n : {\n ...action.headers,\n };\n\n const requestParams = {\n headers,\n method: 'HEAD',\n };\n\n const request = sendRequest(null, requestUrl, requestParams);\n\n request.onload = xhr => cb(onload(xhr, requestParams.method));\n\n request.onerror = xhr =>\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n // create chunks\n const lastChunkIndex = Math.floor(file.size / chunkSize);\n for (let i = 0; i <= lastChunkIndex; i++) {\n const offset = i * chunkSize;\n const data = file.slice(offset, offset + chunkSize, 'application/offset+octet-stream');\n chunks[i] = {\n index: i,\n size: data.size,\n offset,\n data,\n file,\n progress: 0,\n retries: [...chunkRetryDelays],\n status: ChunkStatus.QUEUED,\n error: null,\n request: null,\n timeout: null,\n };\n }\n\n const completeProcessingChunks = () => load(state.serverId);\n\n const canProcessChunk = chunk =>\n chunk.status === ChunkStatus.QUEUED || chunk.status === ChunkStatus.ERROR;\n\n const processChunk = chunk => {\n // processing is paused, wait here\n if (state.aborted) return;\n\n // get next chunk to process\n chunk = chunk || chunks.find(canProcessChunk);\n\n // no more chunks to process\n if (!chunk) {\n // all done?\n if (chunks.every(chunk => chunk.status === ChunkStatus.COMPLETE)) {\n completeProcessingChunks();\n }\n\n // no chunk to handle\n return;\n }\n\n // now processing this chunk\n chunk.status = ChunkStatus.PROCESSING;\n chunk.progress = null;\n\n // allow parsing of formdata\n const ondata = chunkServer.ondata || (fd => fd);\n const onerror = chunkServer.onerror || (res => null);\n const onload = chunkServer.onload || (() => {});\n\n // send request object\n const requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n const headers =\n typeof chunkServer.headers === 'function'\n ? chunkServer.headers(chunk)\n : {\n ...chunkServer.headers,\n 'Content-Type': 'application/offset+octet-stream',\n 'Upload-Offset': chunk.offset,\n 'Upload-Length': file.size,\n 'Upload-Name': file.name,\n };\n\n const request = (chunk.request = sendRequest(ondata(chunk.data), requestUrl, {\n ...chunkServer,\n headers,\n }));\n\n request.onload = xhr => {\n // allow hooking into request result\n onload(xhr, chunk.index, chunks.length);\n\n // done!\n chunk.status = ChunkStatus.COMPLETE;\n\n // remove request reference\n chunk.request = null;\n\n // start processing more chunks\n processChunks();\n };\n\n request.onprogress = (lengthComputable, loaded, total) => {\n chunk.progress = lengthComputable ? loaded : null;\n updateTotalProgress();\n };\n\n request.onerror = xhr => {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n chunk.error = onerror(xhr.response) || xhr.statusText;\n if (!retryProcessChunk(chunk)) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n }\n };\n\n request.ontimeout = xhr => {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n if (!retryProcessChunk(chunk)) {\n createTimeoutResponse(error)(xhr);\n }\n };\n\n request.onabort = () => {\n chunk.status = ChunkStatus.QUEUED;\n chunk.request = null;\n abort();\n };\n };\n\n const retryProcessChunk = chunk => {\n // no more retries left\n if (chunk.retries.length === 0) return false;\n\n // new retry\n chunk.status = ChunkStatus.WAITING;\n clearTimeout(chunk.timeout);\n chunk.timeout = setTimeout(() => {\n processChunk(chunk);\n }, chunk.retries.shift());\n\n // we're going to retry\n return true;\n };\n\n const updateTotalProgress = () => {\n // calculate total progress fraction\n const totalBytesTransfered = chunks.reduce((p, chunk) => {\n if (p === null || chunk.progress === null) return null;\n return p + chunk.progress;\n }, 0);\n\n // can't compute progress\n if (totalBytesTransfered === null) return progress(false, 0, 0);\n\n // calculate progress values\n const totalSize = chunks.reduce((total, chunk) => total + chunk.size, 0);\n\n // can update progress indicator\n progress(true, totalBytesTransfered, totalSize);\n };\n\n // process new chunks\n const processChunks = () => {\n const totalProcessing = chunks.filter(chunk => chunk.status === ChunkStatus.PROCESSING)\n .length;\n if (totalProcessing >= 1) return;\n processChunk();\n };\n\n const abortChunks = () => {\n chunks.forEach(chunk => {\n clearTimeout(chunk.timeout);\n if (chunk.request) {\n chunk.request.abort();\n }\n });\n };\n\n // let's go!\n if (!state.serverId) {\n requestTransferId(serverId => {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // pass back to item so we can use it if something goes wrong\n transfer(serverId);\n\n // store internally\n state.serverId = serverId;\n processChunks();\n });\n } else {\n requestTransferOffset(offset => {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // mark chunks with lower offset as complete\n chunks\n .filter(chunk => chunk.offset < offset)\n .forEach(chunk => {\n chunk.status = ChunkStatus.COMPLETE;\n chunk.progress = chunk.size;\n });\n\n // continue processing\n processChunks();\n });\n }\n\n return {\n abort: () => {\n state.aborted = true;\n abortChunks();\n },\n };\n};\n\n/*\nfunction signature:\n (file, metadata, load, error, progress, abort) => {\n return {\n abort:() => {}\n }\n}\n*/\nconst createFileProcessorFunction = (apiUrl, action, name, options) => (\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer\n) => {\n // no file received\n if (!file) return;\n\n // if was passed a file, and we can chunk it, exit here\n const canChunkUpload = options.chunkUploads;\n const shouldChunkUpload = canChunkUpload && file.size > options.chunkSize;\n const willChunkUpload = canChunkUpload && (shouldChunkUpload || options.chunkForce);\n if (file instanceof Blob && willChunkUpload)\n return processFileChunked(\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n );\n\n // set handlers\n const ondata = action.ondata || (fd => fd);\n const onload = action.onload || (res => res);\n const onerror = action.onerror || (res => null);\n\n const headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata) || {}\n : {\n ...action.headers,\n };\n\n const requestParams = {\n ...action,\n headers,\n };\n\n // create formdata object\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) {\n formData.append(name, JSON.stringify(metadata));\n }\n\n // Turn into an array of objects so no matter what the input, we can handle it the same way\n (file instanceof Blob ? [{ name: null, file }] : file).forEach(item => {\n formData.append(\n name,\n item.file,\n item.name === null ? item.file.name : `${item.name}${item.file.name}`\n );\n });\n\n // send request object\n const request = sendRequest(ondata(formData), buildURL(apiUrl, action.url), requestParams);\n request.onload = xhr => {\n load(createResponse('load', xhr.status, onload(xhr.response), xhr.getAllResponseHeaders()));\n };\n\n request.onerror = xhr => {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n};\n\nconst createProcessorFunction = (apiUrl = '', action, name, options) => {\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') return (...params) => action(name, ...params, options);\n\n // no action supplied\n if (!action || !isString(action.url)) return null;\n\n // internal handler\n return createFileProcessorFunction(apiUrl, action, name, options);\n};\n\n/*\n function signature:\n (uniqueFileId, load, error) => { }\n */\nconst createRevertFunction = (apiUrl = '', action) => {\n // is custom implementation\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied, return stub function, interface will work, but file won't be removed\n if (!action || !isString(action.url)) {\n return (uniqueFileId, load) => load();\n }\n\n // set onload hanlder\n const onload = action.onload || (res => res);\n const onerror = action.onerror || (res => null);\n\n // internal implementation\n return (uniqueFileId, load, error) => {\n const request = sendRequest(\n uniqueFileId,\n apiUrl + action.url,\n action // contains method, headers and withCredentials properties\n );\n request.onload = xhr => {\n load(\n createResponse(\n 'load',\n xhr.status,\n onload(xhr.response),\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onerror = xhr => {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n\n return request;\n };\n};\n\nconst getRandomNumber = (min = 0, max = 1) => min + Math.random() * (max - min);\n\nconst createPerceivedPerformanceUpdater = (\n cb,\n duration = 1000,\n offset = 0,\n tickMin = 25,\n tickMax = 250\n) => {\n let timeout = null;\n const start = Date.now();\n\n const tick = () => {\n let runtime = Date.now() - start;\n let delay = getRandomNumber(tickMin, tickMax);\n\n if (runtime + delay > duration) {\n delay = runtime + delay - duration;\n }\n\n let progress = runtime / duration;\n if (progress >= 1 || document.hidden) {\n cb(1);\n return;\n }\n\n cb(progress);\n\n timeout = setTimeout(tick, delay);\n };\n\n if (duration > 0) tick();\n\n return {\n clear: () => {\n clearTimeout(timeout);\n },\n };\n};\n\nconst createFileProcessor = (processFn, options) => {\n const state = {\n complete: false,\n perceivedProgress: 0,\n perceivedPerformanceUpdater: null,\n progress: null,\n timestamp: null,\n perceivedDuration: 0,\n duration: 0,\n request: null,\n response: null,\n };\n\n const { allowMinimumUploadDuration } = options;\n\n const process = (file, metadata) => {\n const progressFn = () => {\n // we've not yet started the real download, stop here\n // the request might not go through, for instance, there might be some server trouble\n // if state.progress is null, the server does not allow computing progress and we show the spinner instead\n if (state.duration === 0 || state.progress === null) return;\n\n // as we're now processing, fire the progress event\n api.fire('progress', api.getProgress());\n };\n\n const completeFn = () => {\n state.complete = true;\n api.fire('load-perceived', state.response.body);\n };\n\n // let's start processing\n api.fire('start');\n\n // set request start\n state.timestamp = Date.now();\n\n // create perceived performance progress indicator\n state.perceivedPerformanceUpdater = createPerceivedPerformanceUpdater(\n progress => {\n state.perceivedProgress = progress;\n state.perceivedDuration = Date.now() - state.timestamp;\n\n progressFn();\n\n // if fake progress is done, and a response has been received,\n // and we've not yet called the complete method\n if (state.response && state.perceivedProgress === 1 && !state.complete) {\n // we done!\n completeFn();\n }\n },\n // random delay as in a list of files you start noticing\n // files uploading at the exact same speed\n allowMinimumUploadDuration ? getRandomNumber(750, 1500) : 0\n );\n\n // remember request so we can abort it later\n state.request = processFn(\n // the file to process\n file,\n\n // the metadata to send along\n metadata,\n\n // callbacks (load, error, progress, abort, transfer)\n // load expects the body to be a server id if\n // you want to make use of revert\n response => {\n // we put the response in state so we can access\n // it outside of this method\n state.response = isObject(response)\n ? response\n : {\n type: 'load',\n code: 200,\n body: `${response}`,\n headers: {},\n };\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // force progress to 1 as we're now done\n state.progress = 1;\n\n // actual load is done let's share results\n api.fire('load', state.response.body);\n\n // we are really done\n // if perceived progress is 1 ( wait for perceived progress to complete )\n // or if server does not support progress ( null )\n if (\n !allowMinimumUploadDuration ||\n (allowMinimumUploadDuration && state.perceivedProgress === 1)\n ) {\n completeFn();\n }\n },\n\n // error is expected to be an object with type, code, body\n error => {\n // cancel updater\n state.perceivedPerformanceUpdater.clear();\n\n // update others about this error\n api.fire(\n 'error',\n isObject(error)\n ? error\n : {\n type: 'error',\n code: 0,\n body: `${error}`,\n }\n );\n },\n\n // actual processing progress\n (computable, current, total) => {\n // update actual duration\n state.duration = Date.now() - state.timestamp;\n\n // update actual progress\n state.progress = computable ? current / total : null;\n\n progressFn();\n },\n\n // abort does not expect a value\n () => {\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // fire the abort event so we can switch visuals\n api.fire('abort', state.response ? state.response.body : null);\n },\n\n // register the id for this transfer\n transferId => {\n api.fire('transfer', transferId);\n }\n );\n };\n\n const abort = () => {\n // no request running, can't abort\n if (!state.request) return;\n\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // abort actual request\n if (state.request.abort) state.request.abort();\n\n // if has response object, we've completed the request\n state.complete = true;\n };\n\n const reset = () => {\n abort();\n state.complete = false;\n state.perceivedProgress = 0;\n state.progress = 0;\n state.timestamp = null;\n state.perceivedDuration = 0;\n state.duration = 0;\n state.request = null;\n state.response = null;\n };\n\n const getProgress = allowMinimumUploadDuration\n ? () => (state.progress ? Math.min(state.progress, state.perceivedProgress) : null)\n : () => state.progress || null;\n\n const getDuration = allowMinimumUploadDuration\n ? () => Math.min(state.duration, state.perceivedDuration)\n : () => state.duration;\n\n const api = {\n ...on(),\n process, // start processing file\n abort, // abort active process request\n getProgress,\n getDuration,\n reset,\n };\n\n return api;\n};\n\nconst getFilenameWithoutExtension = name => name.substring(0, name.lastIndexOf('.')) || name;\n\nconst createFileStub = source => {\n let data = [source.name, source.size, source.type];\n\n // is blob or base64, then we need to set the name\n if (source instanceof Blob || isBase64DataURI(source)) {\n data[0] = source.name || getDateString();\n } else if (isBase64DataURI(source)) {\n // if is base64 data uri we need to determine the average size and type\n data[1] = source.length;\n data[2] = getMimeTypeFromBase64DataURI(source);\n } else if (isString(source)) {\n // url\n data[0] = getFilenameFromURL(source);\n data[1] = 0;\n data[2] = 'application/octet-stream';\n }\n\n return {\n name: data[0],\n size: data[1],\n type: data[2],\n };\n};\n\nconst isFile = value => !!(value instanceof File || (value instanceof Blob && value.name));\n\nconst deepCloneObject = src => {\n if (!isObject(src)) return src;\n const target = isArray(src) ? [] : {};\n for (const key in src) {\n if (!src.hasOwnProperty(key)) continue;\n const v = src[key];\n target[key] = v && isObject(v) ? deepCloneObject(v) : v;\n }\n return target;\n};\n\nconst createItem = (origin = null, serverFileReference = null, file = null) => {\n // unique id for this item, is used to identify the item across views\n const id = getUniqueId();\n\n /**\n * Internal item state\n */\n const state = {\n // is archived\n archived: false,\n\n // if is frozen, no longer fires events\n frozen: false,\n\n // removed from view\n released: false,\n\n // original source\n source: null,\n\n // file model reference\n file,\n\n // id of file on server\n serverFileReference,\n\n // id of file transfer on server\n transferId: null,\n\n // is aborted\n processingAborted: false,\n\n // current item status\n status: serverFileReference ? ItemStatus.PROCESSING_COMPLETE : ItemStatus.INIT,\n\n // active processes\n activeLoader: null,\n activeProcessor: null,\n };\n\n // callback used when abort processing is called to link back to the resolve method\n let abortProcessingRequestComplete = null;\n\n /**\n * Externally added item metadata\n */\n const metadata = {};\n\n // item data\n const setStatus = status => (state.status = status);\n\n // fire event unless the item has been archived\n const fire = (event, ...params) => {\n if (state.released || state.frozen) return;\n api.fire(event, ...params);\n };\n\n // file data\n const getFileExtension = () => getExtensionFromFilename(state.file.name);\n const getFileType = () => state.file.type;\n const getFileSize = () => state.file.size;\n const getFile = () => state.file;\n\n //\n // logic to load a file\n //\n const load = (source, loader, onload) => {\n // remember the original item source\n state.source = source;\n\n // source is known\n api.fireSync('init');\n\n // file stub is already there\n if (state.file) {\n api.fireSync('load-skip');\n return;\n }\n\n // set a stub file object while loading the actual data\n state.file = createFileStub(source);\n\n // starts loading\n loader.on('init', () => {\n fire('load-init');\n });\n\n // we'eve received a size indication, let's update the stub\n loader.on('meta', meta => {\n // set size of file stub\n state.file.size = meta.size;\n\n // set name of file stub\n state.file.filename = meta.filename;\n\n // if has received source, we done\n if (meta.source) {\n origin = FileOrigin.LIMBO;\n state.serverFileReference = meta.source;\n state.status = ItemStatus.PROCESSING_COMPLETE;\n }\n\n // size has been updated\n fire('load-meta');\n });\n\n // the file is now loading we need to update the progress indicators\n loader.on('progress', progress => {\n setStatus(ItemStatus.LOADING);\n\n fire('load-progress', progress);\n });\n\n // an error was thrown while loading the file, we need to switch to error state\n loader.on('error', error => {\n setStatus(ItemStatus.LOAD_ERROR);\n\n fire('load-request-error', error);\n });\n\n // user or another process aborted the file load (cannot retry)\n loader.on('abort', () => {\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n });\n\n // done loading\n loader.on('load', file => {\n // as we've now loaded the file the loader is no longer required\n state.activeLoader = null;\n\n // called when file has loaded succesfully\n const success = result => {\n // set (possibly) transformed file\n state.file = isFile(result) ? result : state.file;\n\n // file received\n if (origin === FileOrigin.LIMBO && state.serverFileReference) {\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n } else {\n setStatus(ItemStatus.IDLE);\n }\n\n fire('load');\n };\n\n const error = result => {\n // set original file\n state.file = file;\n fire('load-meta');\n\n setStatus(ItemStatus.LOAD_ERROR);\n fire('load-file-error', result);\n };\n\n // if we already have a server file reference, we don't need to call the onload method\n if (state.serverFileReference) {\n success(file);\n return;\n }\n\n // no server id, let's give this file the full treatment\n onload(file, success, error);\n });\n\n // set loader source data\n loader.setSource(source);\n\n // set as active loader\n state.activeLoader = loader;\n\n // load the source data\n loader.load();\n };\n\n const retryLoad = () => {\n if (!state.activeLoader) {\n return;\n }\n state.activeLoader.load();\n };\n\n const abortLoad = () => {\n if (state.activeLoader) {\n state.activeLoader.abort();\n return;\n }\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n };\n\n //\n // logic to process a file\n //\n const process = (processor, onprocess) => {\n // processing was aborted\n if (state.processingAborted) {\n state.processingAborted = false;\n return;\n }\n\n // now processing\n setStatus(ItemStatus.PROCESSING);\n\n // reset abort callback\n abortProcessingRequestComplete = null;\n\n // if no file loaded we'll wait for the load event\n if (!(state.file instanceof Blob)) {\n api.on('load', () => {\n process(processor, onprocess);\n });\n return;\n }\n\n // setup processor\n processor.on('load', serverFileReference => {\n // need this id to be able to revert the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n });\n\n // register transfer id\n processor.on('transfer', transferId => {\n // need this id to be able to revert the upload\n state.transferId = transferId;\n });\n\n processor.on('load-perceived', serverFileReference => {\n // no longer required\n state.activeProcessor = null;\n\n // need this id to be able to rever the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n fire('process-complete', serverFileReference);\n });\n\n processor.on('start', () => {\n fire('process-start');\n });\n\n processor.on('error', error => {\n state.activeProcessor = null;\n setStatus(ItemStatus.PROCESSING_ERROR);\n fire('process-error', error);\n });\n\n processor.on('abort', serverFileReference => {\n state.activeProcessor = null;\n\n // if file was uploaded but processing was cancelled during perceived processor time store file reference\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n // has timeout so doesn't interfere with remove action\n if (abortProcessingRequestComplete) {\n abortProcessingRequestComplete();\n }\n });\n\n processor.on('progress', progress => {\n fire('process-progress', progress);\n });\n\n // when successfully transformed\n const success = file => {\n // if was archived in the mean time, don't process\n if (state.archived) return;\n\n // process file!\n processor.process(file, { ...metadata });\n };\n\n // something went wrong during transform phase\n const error = console.error;\n\n // start processing the file\n onprocess(state.file, success, error);\n\n // set as active processor\n state.activeProcessor = processor;\n };\n\n const requestProcessing = () => {\n state.processingAborted = false;\n setStatus(ItemStatus.PROCESSING_QUEUED);\n };\n\n const abortProcessing = () =>\n new Promise(resolve => {\n if (!state.activeProcessor) {\n state.processingAborted = true;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n resolve();\n return;\n }\n\n abortProcessingRequestComplete = () => {\n resolve();\n };\n\n state.activeProcessor.abort();\n });\n\n //\n // logic to revert a processed file\n //\n const revert = (revertFileUpload, forceRevert) =>\n new Promise((resolve, reject) => {\n // a completed upload will have a serverFileReference, a failed chunked upload where\n // getting a serverId succeeded but >=0 chunks have been uploaded will have transferId set\n const serverTransferId =\n state.serverFileReference !== null ? state.serverFileReference : state.transferId;\n\n // cannot revert without a server id for this process\n if (serverTransferId === null) {\n resolve();\n return;\n }\n\n // revert the upload (fire and forget)\n revertFileUpload(\n serverTransferId,\n () => {\n // reset file server id and transfer id as now it's not available on the server\n state.serverFileReference = null;\n state.transferId = null;\n resolve();\n },\n error => {\n // don't set error state when reverting is optional, it will always resolve\n if (!forceRevert) {\n resolve();\n return;\n }\n\n // oh no errors\n setStatus(ItemStatus.PROCESSING_REVERT_ERROR);\n fire('process-revert-error');\n reject(error);\n }\n );\n\n // fire event\n setStatus(ItemStatus.IDLE);\n fire('process-revert');\n });\n\n // exposed methods\n const setMetadata = (key, value, silent) => {\n const keys = key.split('.');\n const root = keys[0];\n const last = keys.pop();\n let data = metadata;\n keys.forEach(key => (data = data[key]));\n\n // compare old value against new value, if they're the same, we're not updating\n if (JSON.stringify(data[last]) === JSON.stringify(value)) return;\n\n // update value\n data[last] = value;\n\n // fire update\n fire('metadata-update', {\n key: root,\n value: metadata[root],\n silent,\n });\n };\n\n const getMetadata = key => deepCloneObject(key ? metadata[key] : metadata);\n\n const api = {\n id: { get: () => id },\n origin: { get: () => origin, set: value => (origin = value) },\n serverId: { get: () => state.serverFileReference },\n transferId: { get: () => state.transferId },\n status: { get: () => state.status },\n filename: { get: () => state.file.name },\n filenameWithoutExtension: { get: () => getFilenameWithoutExtension(state.file.name) },\n fileExtension: { get: getFileExtension },\n fileType: { get: getFileType },\n fileSize: { get: getFileSize },\n file: { get: getFile },\n relativePath: { get: () => state.file._relativePath },\n\n source: { get: () => state.source },\n\n getMetadata,\n setMetadata: (key, value, silent) => {\n if (isObject(key)) {\n const data = key;\n Object.keys(data).forEach(key => {\n setMetadata(key, data[key], value);\n });\n return key;\n }\n setMetadata(key, value, silent);\n return value;\n },\n\n extend: (name, handler) => (itemAPI[name] = handler),\n\n abortLoad,\n retryLoad,\n requestProcessing,\n abortProcessing,\n\n load,\n process,\n revert,\n\n ...on(),\n\n freeze: () => (state.frozen = true),\n\n release: () => (state.released = true),\n released: { get: () => state.released },\n\n archive: () => (state.archived = true),\n archived: { get: () => state.archived },\n\n // replace source and file object\n setFile: file => (state.file = file),\n };\n\n // create it here instead of returning it instantly so we can extend it later\n const itemAPI = createObject(api);\n\n return itemAPI;\n};\n\nconst getItemIndexByQuery = (items, query) => {\n // just return first index\n if (isEmpty(query)) {\n return 0;\n }\n\n // invalid queries\n if (!isString(query)) {\n return -1;\n }\n\n // return item by id (or -1 if not found)\n return items.findIndex(item => item.id === query);\n};\n\nconst getItemById = (items, itemId) => {\n const index = getItemIndexByQuery(items, itemId);\n if (index < 0) {\n return;\n }\n return items[index] || null;\n};\n\nconst fetchBlob = (url, load, error, progress, abort, headers) => {\n const request = sendRequest(null, url, {\n method: 'GET',\n responseType: 'blob',\n });\n\n request.onload = xhr => {\n // get headers\n const headers = xhr.getAllResponseHeaders();\n\n // get filename\n const filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(createResponse('load', xhr.status, getFileFromBlob(xhr.response, filename), headers));\n };\n\n request.onerror = xhr => {\n error(createResponse('error', xhr.status, xhr.statusText, xhr.getAllResponseHeaders()));\n };\n\n request.onheaders = xhr => {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n};\n\nconst getDomainFromURL = url => {\n if (url.indexOf('//') === 0) {\n url = location.protocol + url;\n }\n return url\n .toLowerCase()\n .replace('blob:', '')\n .replace(/([a-z])?:\\/\\//, '$1')\n .split('/')[0];\n};\n\nconst isExternalURL = url =>\n (url.indexOf(':') > -1 || url.indexOf('//') > -1) &&\n getDomainFromURL(location.href) !== getDomainFromURL(url);\n\nconst dynamicLabel = label => (...params) => (isFunction(label) ? label(...params) : label);\n\nconst isMockItem = item => !isFile(item.file);\n\nconst listUpdated = (dispatch, state) => {\n clearTimeout(state.listUpdateTimeout);\n state.listUpdateTimeout = setTimeout(() => {\n dispatch('DID_UPDATE_ITEMS', { items: getActiveItems(state.items) });\n }, 0);\n};\n\nconst optionalPromise = (fn, ...params) =>\n new Promise(resolve => {\n if (!fn) {\n return resolve(true);\n }\n\n const result = fn(...params);\n\n if (result == null) {\n return resolve(true);\n }\n\n if (typeof result === 'boolean') {\n return resolve(result);\n }\n\n if (typeof result.then === 'function') {\n result.then(resolve);\n }\n });\n\nconst sortItems = (state, compare) => {\n state.items.sort((a, b) => compare(createItemAPI(a), createItemAPI(b)));\n};\n\n// returns item based on state\nconst getItemByQueryFromState = (state, itemHandler) => ({\n query,\n success = () => {},\n failure = () => {},\n ...options\n} = {}) => {\n const item = getItemByQuery(state.items, query);\n if (!item) {\n failure({\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n });\n return;\n }\n itemHandler(item, success, failure, options || {});\n};\n\nconst actions = (dispatch, query, state) => ({\n /**\n * Aborts all ongoing processes\n */\n ABORT_ALL: () => {\n getActiveItems(state.items).forEach(item => {\n item.freeze();\n item.abortLoad();\n item.abortProcessing();\n });\n },\n\n /**\n * Sets initial files\n */\n DID_SET_FILES: ({ value = [] }) => {\n // map values to file objects\n const files = value.map(file => ({\n source: file.source ? file.source : file,\n options: file.options,\n }));\n\n // loop over files, if file is in list, leave it be, if not, remove\n // test if items should be moved\n let activeItems = getActiveItems(state.items);\n\n activeItems.forEach(item => {\n // if item not is in new value, remove\n if (!files.find(file => file.source === item.source || file.source === item.file)) {\n dispatch('REMOVE_ITEM', { query: item, remove: false });\n }\n });\n\n // add new files\n activeItems = getActiveItems(state.items);\n files.forEach((file, index) => {\n // if file is already in list\n if (activeItems.find(item => item.source === file.source || item.file === file.source))\n return;\n\n // not in list, add\n dispatch('ADD_ITEM', {\n ...file,\n interactionMethod: InteractionMethod.NONE,\n index,\n });\n });\n },\n\n DID_UPDATE_ITEM_METADATA: ({ id, action, change }) => {\n // don't do anything\n if (change.silent) return;\n\n // if is called multiple times in close succession we combined all calls together to save resources\n clearTimeout(state.itemUpdateTimeout);\n state.itemUpdateTimeout = setTimeout(() => {\n const item = getItemById(state.items, id);\n\n // only revert and attempt to upload when we're uploading to a server\n if (!query('IS_ASYNC')) {\n // should we update the output data\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item,\n query,\n action,\n change,\n }).then(shouldPrepareOutput => {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n const beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n if (!shouldPrepareOutput) return;\n\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item,\n success: file => {\n dispatch('DID_PREPARE_OUTPUT', { id, file });\n },\n },\n true\n );\n });\n\n return;\n }\n\n // if is local item we need to enable upload button so change can be propagated to server\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.source,\n });\n }\n\n // for async scenarios\n const upload = () => {\n // we push this forward a bit so the interface is updated correctly\n setTimeout(() => {\n dispatch('REQUEST_ITEM_PROCESSING', { query: id });\n }, 32);\n };\n\n const revert = doUpload => {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(doUpload ? upload : () => {})\n .catch(() => {});\n };\n\n const abort = doUpload => {\n item.abortProcessing().then(doUpload ? upload : () => {});\n };\n\n // if we should re-upload the file immediately\n if (item.status === ItemStatus.PROCESSING_COMPLETE) {\n return revert(state.options.instantUpload);\n }\n\n // if currently uploading, cancel upload\n if (item.status === ItemStatus.PROCESSING) {\n return abort(state.options.instantUpload);\n }\n\n if (state.options.instantUpload) {\n upload();\n }\n }, 0);\n },\n\n MOVE_ITEM: ({ query, index }) => {\n const item = getItemByQuery(state.items, query);\n if (!item) return;\n const currentIndex = state.items.indexOf(item);\n index = limit(index, 0, state.items.length - 1);\n if (currentIndex === index) return;\n state.items.splice(index, 0, state.items.splice(currentIndex, 1)[0]);\n },\n\n SORT: ({ compare }) => {\n sortItems(state, compare);\n dispatch('DID_SORT_ITEMS', {\n items: query('GET_ACTIVE_ITEMS'),\n });\n },\n\n ADD_ITEMS: ({ items, index, interactionMethod, success = () => {}, failure = () => {} }) => {\n let currentIndex = index;\n\n if (index === -1 || typeof index === 'undefined') {\n const insertLocation = query('GET_ITEM_INSERT_LOCATION');\n const totalItems = query('GET_TOTAL_ITEMS');\n currentIndex = insertLocation === 'before' ? 0 : totalItems;\n }\n\n const ignoredFiles = query('GET_IGNORED_FILES');\n const isValidFile = source =>\n isFile(source) ? !ignoredFiles.includes(source.name.toLowerCase()) : !isEmpty(source);\n const validItems = items.filter(isValidFile);\n\n const promises = validItems.map(\n source =>\n new Promise((resolve, reject) => {\n dispatch('ADD_ITEM', {\n interactionMethod,\n source: source.source || source,\n success: resolve,\n failure: reject,\n index: currentIndex++,\n options: source.options || {},\n });\n })\n );\n\n Promise.all(promises)\n .then(success)\n .catch(failure);\n },\n\n /**\n * @param source\n * @param index\n * @param interactionMethod\n */\n ADD_ITEM: ({\n source,\n index = -1,\n interactionMethod,\n success = () => {},\n failure = () => {},\n options = {},\n }) => {\n // if no source supplied\n if (isEmpty(source)) {\n failure({\n error: createResponse('error', 0, 'No source'),\n file: null,\n });\n return;\n }\n\n // filter out invalid file items, used to filter dropped directory contents\n if (isFile(source) && state.options.ignoredFiles.includes(source.name.toLowerCase())) {\n // fail silently\n return;\n }\n\n // test if there's still room in the list of files\n if (!hasRoomForItem(state)) {\n // if multiple allowed, we can't replace\n // or if only a single item is allowed but we're not allowed to replace it we exit\n if (\n state.options.allowMultiple ||\n (!state.options.allowMultiple && !state.options.allowReplace)\n ) {\n const error = createResponse('warning', 0, 'Max files');\n\n dispatch('DID_THROW_MAX_FILES', {\n source,\n error,\n });\n\n failure({ error, file: null });\n\n return;\n }\n\n // let's replace the item\n // id of first item we're about to remove\n const item = getActiveItems(state.items)[0];\n\n // if has been processed remove it from the server as well\n if (\n item.status === ItemStatus.PROCESSING_COMPLETE ||\n item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n const forceRevert = query('GET_FORCE_REVERT');\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n forceRevert\n )\n .then(() => {\n if (!forceRevert) return;\n\n // try to add now\n dispatch('ADD_ITEM', {\n source,\n index,\n interactionMethod,\n success,\n failure,\n options,\n });\n })\n .catch(() => {}); // no need to handle this catch state for now\n\n if (forceRevert) return;\n }\n\n // remove first item as it will be replaced by this item\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n\n // where did the file originate\n const origin =\n options.type === 'local'\n ? FileOrigin.LOCAL\n : options.type === 'limbo'\n ? FileOrigin.LIMBO\n : FileOrigin.INPUT;\n\n // create a new blank item\n const item = createItem(\n // where did this file come from\n origin,\n\n // an input file never has a server file reference\n origin === FileOrigin.INPUT ? null : source,\n\n // file mock data, if defined\n options.file\n );\n\n // set initial meta data\n Object.keys(options.metadata || {}).forEach(key => {\n item.setMetadata(key, options.metadata[key]);\n });\n\n // created the item, let plugins add methods\n applyFilters('DID_CREATE_ITEM', item, { query, dispatch });\n\n // where to insert new items\n const itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n\n // adjust index if is not allowed to pick location\n if (!state.options.itemInsertLocationFreedom) {\n index = itemInsertLocation === 'before' ? -1 : state.items.length;\n }\n\n // add item to list\n insertItem(state.items, item, index);\n\n // sort items in list\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // get a quick reference to the item id\n const id = item.id;\n\n // observe item events\n item.on('init', () => {\n dispatch('DID_INIT_ITEM', { id });\n });\n\n item.on('load-init', () => {\n dispatch('DID_START_ITEM_LOAD', { id });\n });\n\n item.on('load-meta', () => {\n dispatch('DID_UPDATE_ITEM_META', { id });\n });\n\n item.on('load-progress', progress => {\n dispatch('DID_UPDATE_ITEM_LOAD_PROGRESS', { id, progress });\n });\n\n item.on('load-request-error', error => {\n const mainStatus = dynamicLabel(state.options.labelFileLoadError)(error);\n\n // is client error, no way to recover\n if (error.code >= 400 && error.code < 500) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id,\n error,\n status: {\n main: mainStatus,\n sub: `${error.code} (${error.body})`,\n },\n });\n\n // reject the file so can be dealt with through API\n failure({ error, file: createItemAPI(item) });\n return;\n }\n\n // is possible server error, so might be possible to retry\n dispatch('DID_THROW_ITEM_LOAD_ERROR', {\n id,\n error,\n status: {\n main: mainStatus,\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('load-file-error', error => {\n dispatch('DID_THROW_ITEM_INVALID', {\n id,\n error: error.status,\n status: error.status,\n });\n failure({ error: error.status, file: createItemAPI(item) });\n });\n\n item.on('load-abort', () => {\n dispatch('REMOVE_ITEM', { query: id });\n });\n\n item.on('load-skip', () => {\n item.on('metadata-update', change => {\n if (!isFile(item.file)) return;\n dispatch('DID_UPDATE_ITEM_METADATA', { id, change });\n });\n\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item,\n data: {\n source,\n success,\n },\n });\n });\n\n item.on('load', () => {\n const handleAdd = shouldAdd => {\n // no should not add this file\n if (!shouldAdd) {\n dispatch('REMOVE_ITEM', {\n query: id,\n });\n return;\n }\n\n // now interested in metadata updates\n item.on('metadata-update', change => {\n dispatch('DID_UPDATE_ITEM_METADATA', { id, change });\n });\n\n // let plugins decide if the output data should be prepared at this point\n // means we'll do this and wait for idle state\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, { item, query }).then(\n shouldPrepareOutput => {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n const beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n const loadComplete = () => {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item,\n data: {\n source,\n success,\n },\n });\n\n listUpdated(dispatch, state);\n };\n\n // exit\n if (shouldPrepareOutput) {\n // wait for idle state and then run PREPARE_OUTPUT\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item,\n success: file => {\n dispatch('DID_PREPARE_OUTPUT', { id, file });\n loadComplete();\n },\n },\n true\n );\n\n return;\n }\n\n loadComplete();\n }\n );\n };\n\n // item loaded, allow plugins to\n // - read data (quickly)\n // - add metadata\n applyFilterChain('DID_LOAD_ITEM', item, { query, dispatch })\n .then(() => {\n optionalPromise(query('GET_BEFORE_ADD_FILE'), createItemAPI(item)).then(\n handleAdd\n );\n })\n .catch(e => {\n if (!e || !e.error || !e.status) return handleAdd(false);\n dispatch('DID_THROW_ITEM_INVALID', {\n id,\n error: e.error,\n status: e.status,\n });\n });\n });\n\n item.on('process-start', () => {\n dispatch('DID_START_ITEM_PROCESSING', { id });\n });\n\n item.on('process-progress', progress => {\n dispatch('DID_UPDATE_ITEM_PROCESS_PROGRESS', { id, progress });\n });\n\n item.on('process-error', error => {\n dispatch('DID_THROW_ITEM_PROCESSING_ERROR', {\n id,\n error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-revert-error', error => {\n dispatch('DID_THROW_ITEM_PROCESSING_REVERT_ERROR', {\n id,\n error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingRevertError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-complete', serverFileReference => {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id,\n error: null,\n serverFileReference,\n });\n dispatch('DID_DEFINE_VALUE', { id, value: serverFileReference });\n });\n\n item.on('process-abort', () => {\n dispatch('DID_ABORT_ITEM_PROCESSING', { id });\n });\n\n item.on('process-revert', () => {\n dispatch('DID_REVERT_ITEM_PROCESSING', { id });\n dispatch('DID_DEFINE_VALUE', { id, value: null });\n });\n\n // let view know the item has been inserted\n dispatch('DID_ADD_ITEM', { id, index, interactionMethod });\n\n listUpdated(dispatch, state);\n\n // start loading the source\n const { url, load, restore, fetch } = state.options.server || {};\n\n item.load(\n source,\n\n // this creates a function that loads the file based on the type of file (string, base64, blob, file) and location of file (local, remote, limbo)\n createFileLoader(\n origin === FileOrigin.INPUT\n ? // input, if is remote, see if should use custom fetch, else use default fetchBlob\n isString(source) && isExternalURL(source)\n ? fetch\n ? createFetchFunction(url, fetch)\n : fetchBlob // remote url\n : fetchBlob // try to fetch url\n : // limbo or local\n origin === FileOrigin.LIMBO\n ? createFetchFunction(url, restore) // limbo\n : createFetchFunction(url, load) // local\n ),\n\n // called when the file is loaded so it can be piped through the filters\n (file, success, error) => {\n // let's process the file\n applyFilterChain('LOAD_FILE', file, { query })\n .then(success)\n .catch(error);\n }\n );\n },\n\n REQUEST_PREPARE_OUTPUT: ({ item, success, failure = () => {} }) => {\n // error response if item archived\n const err = {\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n };\n\n // don't handle archived items, an item could have been archived (load aborted) while waiting to be prepared\n if (item.archived) return failure(err);\n\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', item.file, { query, item }).then(result => {\n applyFilterChain('COMPLETE_PREPARE_OUTPUT', result, { query, item }).then(result => {\n // don't handle archived items, an item could have been archived (load aborted) while being prepared\n if (item.archived) return failure(err);\n\n // we done!\n success(result);\n });\n });\n },\n\n COMPLETE_LOAD_ITEM: ({ item, data }) => {\n const { success, source } = data;\n\n // sort items in list\n const itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // let interface know the item has loaded\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.origin === FileOrigin.INPUT ? null : source,\n });\n\n // item has been successfully loaded and added to the\n // list of items so can now be safely returned for use\n success(createItemAPI(item));\n\n // if this is a local server file we need to show a different state\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_LOCAL_ITEM', { id: item.id });\n return;\n }\n\n // if is a temp server file we prevent async upload call here (as the file is already on the server)\n if (item.origin === FileOrigin.LIMBO) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: item.id,\n error: null,\n serverFileReference: source,\n });\n\n dispatch('DID_DEFINE_VALUE', {\n id: item.id,\n value: item.serverId || source,\n });\n return;\n }\n\n // id we are allowed to upload the file immediately, lets do it\n if (query('IS_ASYNC') && state.options.instantUpload) {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item.id });\n }\n },\n\n RETRY_ITEM_LOAD: getItemByQueryFromState(state, item => {\n // try loading the source one more time\n item.retryLoad();\n }),\n\n REQUEST_ITEM_PREPARE: getItemByQueryFromState(state, (item, success, failure) => {\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: item.id,\n item,\n success: file => {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file });\n success({\n file: item,\n output: file,\n });\n },\n failure,\n },\n true\n );\n }),\n\n REQUEST_ITEM_PROCESSING: getItemByQueryFromState(state, (item, success, failure) => {\n // cannot be queued (or is already queued)\n const itemCanBeQueuedForProcessing =\n // waiting for something\n item.status === ItemStatus.IDLE ||\n // processing went wrong earlier\n item.status === ItemStatus.PROCESSING_ERROR;\n\n // not ready to be processed\n if (!itemCanBeQueuedForProcessing) {\n const processNow = () =>\n dispatch('REQUEST_ITEM_PROCESSING', { query: item, success, failure });\n\n const process = () => (document.hidden ? processNow() : setTimeout(processNow, 32));\n\n // if already done processing or tried to revert but didn't work, try again\n if (\n item.status === ItemStatus.PROCESSING_COMPLETE ||\n item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(process)\n .catch(() => {}); // don't continue with processing if something went wrong\n } else if (item.status === ItemStatus.PROCESSING) {\n item.abortProcessing().then(process);\n }\n\n return;\n }\n\n // already queued for processing\n if (item.status === ItemStatus.PROCESSING_QUEUED) return;\n\n item.requestProcessing();\n\n dispatch('DID_REQUEST_ITEM_PROCESSING', { id: item.id });\n\n dispatch('PROCESS_ITEM', { query: item, success, failure }, true);\n }),\n\n PROCESS_ITEM: getItemByQueryFromState(state, (item, success, failure) => {\n const maxParallelUploads = query('GET_MAX_PARALLEL_UPLOADS');\n const totalCurrentUploads = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING).length;\n\n // queue and wait till queue is freed up\n if (totalCurrentUploads === maxParallelUploads) {\n // queue for later processing\n state.processingQueue.push({\n id: item.id,\n success,\n failure,\n });\n\n // stop it!\n return;\n }\n\n // if was not queued or is already processing exit here\n if (item.status === ItemStatus.PROCESSING) return;\n\n const processNext = () => {\n // process queueud items\n const queueEntry = state.processingQueue.shift();\n\n // no items left\n if (!queueEntry) return;\n\n // get item reference\n const { id, success, failure } = queueEntry;\n const itemReference = getItemByQuery(state.items, id);\n\n // if item was archived while in queue, jump to next\n if (!itemReference || itemReference.archived) {\n processNext();\n return;\n }\n\n // process queued item\n dispatch('PROCESS_ITEM', { query: id, success, failure }, true);\n };\n\n // we done function\n item.onOnce('process-complete', () => {\n success(createItemAPI(item));\n processNext();\n\n // if origin is local, and we're instant uploading, trigger remove of original\n // as revert will remove file from list\n const server = state.options.server;\n const instantUpload = state.options.instantUpload;\n if (instantUpload && item.origin === FileOrigin.LOCAL && isFunction(server.remove)) {\n const noop = () => {};\n item.origin = FileOrigin.LIMBO;\n state.options.server.remove(item.source, noop, noop);\n }\n\n // All items processed? No errors?\n const allItemsProcessed =\n query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING_COMPLETE).length ===\n state.items.length;\n if (allItemsProcessed) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING_ALL');\n }\n });\n\n // we error function\n item.onOnce('process-error', error => {\n failure({ error, file: createItemAPI(item) });\n processNext();\n });\n\n // abort function\n item.onOnce('process-abort', () => {\n processNext();\n });\n\n // start file processing\n const options = state.options;\n item.process(\n createFileProcessor(\n createProcessorFunction(options.server.url, options.server.process, options.name, {\n chunkTransferId: item.transferId,\n chunkServer: options.server.patch,\n chunkUploads: options.chunkUploads,\n chunkForce: options.chunkForce,\n chunkSize: options.chunkSize,\n chunkRetryDelays: options.chunkRetryDelays,\n }),\n {\n allowMinimumUploadDuration: query('GET_ALLOW_MINIMUM_UPLOAD_DURATION'),\n }\n ),\n // called when the file is about to be processed so it can be piped through the transform filters\n (file, success, error) => {\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', file, { query, item })\n .then(file => {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file });\n\n success(file);\n })\n .catch(error);\n }\n );\n }),\n\n RETRY_ITEM_PROCESSING: getItemByQueryFromState(state, item => {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item });\n }),\n\n REQUEST_REMOVE_ITEM: getItemByQueryFromState(state, item => {\n optionalPromise(query('GET_BEFORE_REMOVE_FILE'), createItemAPI(item)).then(shouldRemove => {\n if (!shouldRemove) {\n return;\n }\n dispatch('REMOVE_ITEM', { query: item });\n });\n }),\n\n RELEASE_ITEM: getItemByQueryFromState(state, item => {\n item.release();\n }),\n\n REMOVE_ITEM: getItemByQueryFromState(state, (item, success, failure, options) => {\n const removeFromView = () => {\n // get id reference\n const id = item.id;\n\n // archive the item, this does not remove it from the list\n getItemById(state.items, id).archive();\n\n // tell the view the item has been removed\n dispatch('DID_REMOVE_ITEM', { error: null, id, item });\n\n // now the list has been modified\n listUpdated(dispatch, state);\n\n // correctly removed\n success(createItemAPI(item));\n };\n\n // if this is a local file and the `server.remove` function has been configured,\n // send source there so dev can remove file from server\n const server = state.options.server;\n if (\n item.origin === FileOrigin.LOCAL &&\n server &&\n isFunction(server.remove) &&\n options.remove !== false\n ) {\n dispatch('DID_START_ITEM_REMOVE', { id: item.id });\n\n server.remove(\n item.source,\n () => removeFromView(),\n status => {\n dispatch('DID_THROW_ITEM_REMOVE_ERROR', {\n id: item.id,\n error: createResponse('error', 0, status, null),\n status: {\n main: dynamicLabel(state.options.labelFileRemoveError)(status),\n sub: state.options.labelTapToRetry,\n },\n });\n }\n );\n } else {\n // if is requesting revert and can revert need to call revert handler (not calling request_ because that would also trigger beforeRemoveHook)\n if (\n (options.revert && item.origin !== FileOrigin.LOCAL && item.serverId !== null) ||\n // if chunked uploads are enabled and we're uploading in chunks for this specific file\n // or if the file isn't big enough for chunked uploads but chunkForce is set then call\n // revert before removing from the view...\n (state.options.chunkUploads && item.file.size > state.options.chunkSize) ||\n (state.options.chunkUploads && state.options.chunkForce)\n ) {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n );\n }\n\n // can now safely remove from view\n removeFromView();\n }\n }),\n\n ABORT_ITEM_LOAD: getItemByQueryFromState(state, item => {\n item.abortLoad();\n }),\n\n ABORT_ITEM_PROCESSING: getItemByQueryFromState(state, item => {\n // test if is already processed\n if (item.serverId) {\n dispatch('REVERT_ITEM_PROCESSING', { id: item.id });\n return;\n }\n\n // abort\n item.abortProcessing().then(() => {\n const shouldRemove = state.options.instantUpload;\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n });\n }),\n\n REQUEST_REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, item => {\n // not instant uploading, revert immediately\n if (!state.options.instantUpload) {\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n return;\n }\n\n // if we're instant uploading the file will also be removed if we revert,\n // so if a before remove file hook is defined we need to run it now\n const handleRevert = shouldRevert => {\n if (!shouldRevert) return;\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n };\n\n const fn = query('GET_BEFORE_REMOVE_FILE');\n if (!fn) {\n return handleRevert(true);\n }\n\n const requestRemoveResult = fn(createItemAPI(item));\n if (requestRemoveResult == null) {\n // undefined or null\n return handleRevert(true);\n }\n\n if (typeof requestRemoveResult === 'boolean') {\n return handleRevert(requestRemoveResult);\n }\n\n if (typeof requestRemoveResult.then === 'function') {\n requestRemoveResult.then(handleRevert);\n }\n }),\n\n REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, item => {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(() => {\n const shouldRemove = state.options.instantUpload || isMockItem(item);\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n })\n .catch(() => {});\n }),\n\n SET_OPTIONS: ({ options }) => {\n // get all keys passed\n const optionKeys = Object.keys(options);\n\n // get prioritized keyed to include (remove once not in options object)\n const prioritizedOptionKeys = PrioritizedOptions.filter(key => optionKeys.includes(key));\n\n // order the keys, prioritized first, then rest\n const orderedOptionKeys = [\n // add prioritized first if passed to options, else remove\n ...prioritizedOptionKeys,\n\n // prevent duplicate keys\n ...Object.keys(options).filter(key => !prioritizedOptionKeys.includes(key)),\n ];\n\n // dispatch set event for each option\n orderedOptionKeys.forEach(key => {\n dispatch(`SET_${fromCamels(key, '_').toUpperCase()}`, {\n value: options[key],\n });\n });\n },\n});\n\nconst PrioritizedOptions = [\n 'server', // must be processed before \"files\"\n];\n\nconst formatFilename = name => name;\n\nconst createElement$1 = tagName => {\n return document.createElement(tagName);\n};\n\nconst text = (node, value) => {\n let textNode = node.childNodes[0];\n if (!textNode) {\n textNode = document.createTextNode(value);\n node.appendChild(textNode);\n } else if (value !== textNode.nodeValue) {\n textNode.nodeValue = value;\n }\n};\n\nconst polarToCartesian = (centerX, centerY, radius, angleInDegrees) => {\n const angleInRadians = (((angleInDegrees % 360) - 90) * Math.PI) / 180.0;\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians),\n };\n};\n\nconst describeArc = (x, y, radius, startAngle, endAngle, arcSweep) => {\n const start = polarToCartesian(x, y, radius, endAngle);\n const end = polarToCartesian(x, y, radius, startAngle);\n return ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\n};\n\nconst percentageArc = (x, y, radius, from, to) => {\n let arcSweep = 1;\n if (to > from && to - from <= 0.5) {\n arcSweep = 0;\n }\n if (from > to && from - to >= 0.5) {\n arcSweep = 0;\n }\n return describeArc(\n x,\n y,\n radius,\n Math.min(0.9999, from) * 360,\n Math.min(0.9999, to) * 360,\n arcSweep\n );\n};\n\nconst create = ({ root, props }) => {\n // start at 0\n props.spin = false;\n props.progress = 0;\n props.opacity = 0;\n\n // svg\n const svg = createElement('svg');\n root.ref.path = createElement('path', {\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n });\n svg.appendChild(root.ref.path);\n\n root.ref.svg = svg;\n\n root.appendChild(svg);\n};\n\nconst write = ({ root, props }) => {\n if (props.opacity === 0) {\n return;\n }\n\n if (props.align) {\n root.element.dataset.align = props.align;\n }\n\n // get width of stroke\n const ringStrokeWidth = parseInt(attr(root.ref.path, 'stroke-width'), 10);\n\n // calculate size of ring\n const size = root.rect.element.width * 0.5;\n\n // ring state\n let ringFrom = 0;\n let ringTo = 0;\n\n // now in busy mode\n if (props.spin) {\n ringFrom = 0;\n ringTo = 0.5;\n } else {\n ringFrom = 0;\n ringTo = props.progress;\n }\n\n // get arc path\n const coordinates = percentageArc(size, size, size - ringStrokeWidth, ringFrom, ringTo);\n\n // update progress bar\n attr(root.ref.path, 'd', coordinates);\n\n // hide while contains 0 value\n attr(root.ref.path, 'stroke-opacity', props.spin || props.progress > 0 ? 1 : 0);\n};\n\nconst progressIndicator = createView({\n tag: 'div',\n name: 'progress-indicator',\n ignoreRectUpdate: true,\n ignoreRect: true,\n create,\n write,\n mixins: {\n apis: ['progress', 'spin', 'align'],\n styles: ['opacity'],\n animations: {\n opacity: { type: 'tween', duration: 500 },\n progress: {\n type: 'spring',\n stiffness: 0.95,\n damping: 0.65,\n mass: 10,\n },\n },\n },\n});\n\nconst create$1 = ({ root, props }) => {\n root.element.innerHTML = (props.icon || '') + `<span>${props.label}</span>`;\n\n props.isDisabled = false;\n};\n\nconst write$1 = ({ root, props }) => {\n const { isDisabled } = props;\n const shouldDisable = root.query('GET_DISABLED') || props.opacity === 0;\n\n if (shouldDisable && !isDisabled) {\n props.isDisabled = true;\n attr(root.element, 'disabled', 'disabled');\n } else if (!shouldDisable && isDisabled) {\n props.isDisabled = false;\n root.element.removeAttribute('disabled');\n }\n};\n\nconst fileActionButton = createView({\n tag: 'button',\n attributes: {\n type: 'button',\n },\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'file-action-button',\n mixins: {\n apis: ['label'],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n listeners: true,\n },\n create: create$1,\n write: write$1,\n});\n\nconst toNaturalFileSize = (bytes, decimalSeparator = '.', base = 1000, options = {}) => {\n const {\n labelBytes = 'bytes',\n labelKilobytes = 'KB',\n labelMegabytes = 'MB',\n labelGigabytes = 'GB',\n } = options;\n\n // no negative byte sizes\n bytes = Math.round(Math.abs(bytes));\n\n const KB = base;\n const MB = base * base;\n const GB = base * base * base;\n\n // just bytes\n if (bytes < KB) {\n return `${bytes} ${labelBytes}`;\n }\n\n // kilobytes\n if (bytes < MB) {\n return `${Math.floor(bytes / KB)} ${labelKilobytes}`;\n }\n\n // megabytes\n if (bytes < GB) {\n return `${removeDecimalsWhenZero(bytes / MB, 1, decimalSeparator)} ${labelMegabytes}`;\n }\n\n // gigabytes\n return `${removeDecimalsWhenZero(bytes / GB, 2, decimalSeparator)} ${labelGigabytes}`;\n};\n\nconst removeDecimalsWhenZero = (value, decimalCount, separator) => {\n return value\n .toFixed(decimalCount)\n .split('.')\n .filter(part => part !== '0')\n .join(separator);\n};\n\nconst create$2 = ({ root, props }) => {\n // filename\n const fileName = createElement$1('span');\n fileName.className = 'filepond--file-info-main';\n // hide for screenreaders\n // the file is contained in a fieldset with legend that contains the filename\n // no need to read it twice\n attr(fileName, 'aria-hidden', 'true');\n root.appendChild(fileName);\n root.ref.fileName = fileName;\n\n // filesize\n const fileSize = createElement$1('span');\n fileSize.className = 'filepond--file-info-sub';\n root.appendChild(fileSize);\n root.ref.fileSize = fileSize;\n\n // set initial values\n text(fileSize, root.query('GET_LABEL_FILE_WAITING_FOR_SIZE'));\n text(fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n};\n\nconst updateFile = ({ root, props }) => {\n text(\n root.ref.fileSize,\n toNaturalFileSize(\n root.query('GET_ITEM_SIZE', props.id),\n '.',\n root.query('GET_FILE_SIZE_BASE'),\n root.query('GET_FILE_SIZE_LABELS', root.query)\n )\n );\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n};\n\nconst updateFileSizeOnError = ({ root, props }) => {\n // if size is available don't fallback to unknown size message\n if (isInt(root.query('GET_ITEM_SIZE', props.id))) {\n updateFile({ root, props });\n return;\n }\n\n text(root.ref.fileSize, root.query('GET_LABEL_FILE_SIZE_NOT_AVAILABLE'));\n};\n\nconst fileInfo = createView({\n name: 'file-info',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: updateFile,\n DID_UPDATE_ITEM_META: updateFile,\n DID_THROW_ITEM_LOAD_ERROR: updateFileSizeOnError,\n DID_THROW_ITEM_INVALID: updateFileSizeOnError,\n }),\n didCreateView: root => {\n applyFilters('CREATE_VIEW', { ...root, view: root });\n },\n create: create$2,\n mixins: {\n styles: ['translateX', 'translateY'],\n animations: {\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n});\n\nconst toPercentage = value => Math.round(value * 100);\n\nconst create$3 = ({ root }) => {\n // main status\n const main = createElement$1('span');\n main.className = 'filepond--file-status-main';\n root.appendChild(main);\n root.ref.main = main;\n\n // sub status\n const sub = createElement$1('span');\n sub.className = 'filepond--file-status-sub';\n root.appendChild(sub);\n root.ref.sub = sub;\n\n didSetItemLoadProgress({ root, action: { progress: null } });\n};\n\nconst didSetItemLoadProgress = ({ root, action }) => {\n const title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_LOADING')\n : `${root.query('GET_LABEL_FILE_LOADING')} ${toPercentage(action.progress)}%`;\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n};\n\nconst didSetItemProcessProgress = ({ root, action }) => {\n const title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_PROCESSING')\n : `${root.query('GET_LABEL_FILE_PROCESSING')} ${toPercentage(action.progress)}%`;\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n};\n\nconst didRequestItemProcessing = ({ root }) => {\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n};\n\nconst didAbortItemProcessing = ({ root }) => {\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_ABORTED'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_RETRY'));\n};\n\nconst didCompleteItemProcessing = ({ root }) => {\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_COMPLETE'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_UNDO'));\n};\n\nconst clear = ({ root }) => {\n text(root.ref.main, '');\n text(root.ref.sub, '');\n};\n\nconst error = ({ root, action }) => {\n text(root.ref.main, action.status.main);\n text(root.ref.sub, action.status.sub);\n};\n\nconst fileStatus = createView({\n name: 'file-status',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: clear,\n DID_REVERT_ITEM_PROCESSING: clear,\n DID_REQUEST_ITEM_PROCESSING: didRequestItemProcessing,\n DID_ABORT_ITEM_PROCESSING: didAbortItemProcessing,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteItemProcessing,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: didSetItemProcessProgress,\n DID_UPDATE_ITEM_LOAD_PROGRESS: didSetItemLoadProgress,\n DID_THROW_ITEM_LOAD_ERROR: error,\n DID_THROW_ITEM_INVALID: error,\n DID_THROW_ITEM_PROCESSING_ERROR: error,\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: error,\n DID_THROW_ITEM_REMOVE_ERROR: error,\n }),\n didCreateView: root => {\n applyFilters('CREATE_VIEW', { ...root, view: root });\n },\n create: create$3,\n mixins: {\n styles: ['translateX', 'translateY', 'opacity'],\n animations: {\n opacity: { type: 'tween', duration: 250 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n});\n\n/**\n * Button definitions for the file view\n */\n\nconst Buttons = {\n AbortItemLoad: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_LOAD',\n action: 'ABORT_ITEM_LOAD',\n className: 'filepond--action-abort-item-load',\n align: 'LOAD_INDICATOR_POSITION', // right\n },\n RetryItemLoad: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_LOAD',\n action: 'RETRY_ITEM_LOAD',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-load',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RemoveItem: {\n label: 'GET_LABEL_BUTTON_REMOVE_ITEM',\n action: 'REQUEST_REMOVE_ITEM',\n icon: 'GET_ICON_REMOVE',\n className: 'filepond--action-remove-item',\n align: 'BUTTON_REMOVE_ITEM_POSITION', // left\n },\n ProcessItem: {\n label: 'GET_LABEL_BUTTON_PROCESS_ITEM',\n action: 'REQUEST_ITEM_PROCESSING',\n icon: 'GET_ICON_PROCESS',\n className: 'filepond--action-process-item',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n AbortItemProcessing: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING',\n action: 'ABORT_ITEM_PROCESSING',\n className: 'filepond--action-abort-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RetryItemProcessing: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING',\n action: 'RETRY_ITEM_PROCESSING',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RevertItemProcessing: {\n label: 'GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING',\n action: 'REQUEST_REVERT_ITEM_PROCESSING',\n icon: 'GET_ICON_UNDO',\n className: 'filepond--action-revert-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n};\n\n// make a list of buttons, we can then remove buttons from this list if they're disabled\nconst ButtonKeys = [];\nforin(Buttons, key => {\n ButtonKeys.push(key);\n});\n\nconst calculateFileInfoOffset = root => {\n if (getRemoveIndicatorAligment(root) === 'right') return 0;\n const buttonRect = root.ref.buttonRemoveItem.rect.element;\n return buttonRect.hidden ? null : buttonRect.width + buttonRect.left;\n};\n\nconst calculateButtonWidth = root => {\n const buttonRect = root.ref.buttonAbortItemLoad.rect.element;\n return buttonRect.width;\n};\n\n// Force on full pixels so text stays crips\nconst calculateFileVerticalCenterOffset = root =>\n Math.floor(root.ref.buttonRemoveItem.rect.element.height / 4);\nconst calculateFileHorizontalCenterOffset = root =>\n Math.floor(root.ref.buttonRemoveItem.rect.element.left / 2);\n\nconst getLoadIndicatorAlignment = root => root.query('GET_STYLE_LOAD_INDICATOR_POSITION');\nconst getProcessIndicatorAlignment = root => root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION');\nconst getRemoveIndicatorAligment = root => root.query('GET_STYLE_BUTTON_REMOVE_ITEM_POSITION');\n\nconst DefaultStyle = {\n buttonAbortItemLoad: { opacity: 0 },\n buttonRetryItemLoad: { opacity: 0 },\n buttonRemoveItem: { opacity: 0 },\n buttonProcessItem: { opacity: 0 },\n buttonAbortItemProcessing: { opacity: 0 },\n buttonRetryItemProcessing: { opacity: 0 },\n buttonRevertItemProcessing: { opacity: 0 },\n loadProgressIndicator: { opacity: 0, align: getLoadIndicatorAlignment },\n processProgressIndicator: { opacity: 0, align: getProcessIndicatorAlignment },\n processingCompleteIndicator: { opacity: 0, scaleX: 0.75, scaleY: 0.75 },\n info: { translateX: 0, translateY: 0, opacity: 0 },\n status: { translateX: 0, translateY: 0, opacity: 0 },\n};\n\nconst IdleStyle = {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n};\n\nconst ProcessingStyle = {\n buttonAbortItemProcessing: { opacity: 1 },\n processProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n};\n\nconst StyleMap = {\n DID_THROW_ITEM_INVALID: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset, opacity: 1 },\n },\n DID_START_ITEM_LOAD: {\n buttonAbortItemLoad: { opacity: 1 },\n loadProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n },\n DID_THROW_ITEM_LOAD_ERROR: {\n buttonRetryItemLoad: { opacity: 1 },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n DID_START_ITEM_REMOVE: {\n processProgressIndicator: { opacity: 1, align: getRemoveIndicatorAligment },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 0 },\n },\n DID_THROW_ITEM_REMOVE_ERROR: {\n processProgressIndicator: { opacity: 0, align: getRemoveIndicatorAligment },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1, translateX: calculateFileInfoOffset },\n },\n DID_LOAD_ITEM: IdleStyle,\n DID_LOAD_LOCAL_ITEM: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n },\n DID_START_ITEM_PROCESSING: ProcessingStyle,\n DID_REQUEST_ITEM_PROCESSING: ProcessingStyle,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: ProcessingStyle,\n DID_COMPLETE_ITEM_PROCESSING: {\n buttonRevertItemProcessing: { opacity: 1 },\n info: { opacity: 1 },\n status: { opacity: 1 },\n },\n DID_THROW_ITEM_PROCESSING_ERROR: {\n buttonRemoveItem: { opacity: 1 },\n buttonRetryItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n },\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: {\n buttonRevertItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { opacity: 1 },\n },\n DID_ABORT_ITEM_PROCESSING: {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n DID_REVERT_ITEM_PROCESSING: IdleStyle,\n};\n\n// complete indicator view\nconst processingCompleteIndicatorView = createView({\n create: ({ root }) => {\n root.element.innerHTML = root.query('GET_ICON_DONE');\n },\n name: 'processing-complete-indicator',\n ignoreRect: true,\n mixins: {\n styles: ['scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n});\n\n/**\n * Creates the file view\n */\nconst create$4 = ({ root, props }) => {\n // copy Buttons object\n const LocalButtons = Object.keys(Buttons).reduce((prev, curr) => {\n prev[curr] = { ...Buttons[curr] };\n return prev;\n }, {});\n\n const { id } = props;\n\n // allow reverting upload\n const allowRevert = root.query('GET_ALLOW_REVERT');\n\n // allow remove file\n const allowRemove = root.query('GET_ALLOW_REMOVE');\n\n // allow processing upload\n const allowProcess = root.query('GET_ALLOW_PROCESS');\n\n // is instant uploading, need this to determine the icon of the undo button\n const instantUpload = root.query('GET_INSTANT_UPLOAD');\n\n // is async set up\n const isAsync = root.query('IS_ASYNC');\n\n // should align remove item buttons\n const alignRemoveItemButton = root.query('GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN');\n\n // enabled buttons array\n let buttonFilter;\n if (isAsync) {\n if (allowProcess && !allowRevert) {\n // only remove revert button\n buttonFilter = key => !/RevertItemProcessing/.test(key);\n } else if (!allowProcess && allowRevert) {\n // only remove process button\n buttonFilter = key => !/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(key);\n } else if (!allowProcess && !allowRevert) {\n // remove all process buttons\n buttonFilter = key => !/Process/.test(key);\n }\n } else {\n // no process controls available\n buttonFilter = key => !/Process/.test(key);\n }\n\n const enabledButtons = buttonFilter ? ButtonKeys.filter(buttonFilter) : ButtonKeys.concat();\n\n // update icon and label for revert button when instant uploading\n if (instantUpload && allowRevert) {\n LocalButtons['RevertItemProcessing'].label = 'GET_LABEL_BUTTON_REMOVE_ITEM';\n LocalButtons['RevertItemProcessing'].icon = 'GET_ICON_REMOVE';\n }\n\n // remove last button (revert) if not allowed\n if (isAsync && !allowRevert) {\n const map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n map.info.translateX = calculateFileHorizontalCenterOffset;\n map.info.translateY = calculateFileVerticalCenterOffset;\n map.status.translateY = calculateFileVerticalCenterOffset;\n map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // should align center\n if (isAsync && !allowProcess) {\n [\n 'DID_START_ITEM_PROCESSING',\n 'DID_REQUEST_ITEM_PROCESSING',\n 'DID_UPDATE_ITEM_PROCESS_PROGRESS',\n 'DID_THROW_ITEM_PROCESSING_ERROR',\n ].forEach(key => {\n StyleMap[key].status.translateY = calculateFileVerticalCenterOffset;\n });\n StyleMap['DID_THROW_ITEM_PROCESSING_ERROR'].status.translateX = calculateButtonWidth;\n }\n\n // move remove button to right\n if (alignRemoveItemButton && allowRevert) {\n LocalButtons['RevertItemProcessing'].align = 'BUTTON_REMOVE_ITEM_POSITION';\n const map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n map.info.translateX = calculateFileInfoOffset;\n map.status.translateY = calculateFileVerticalCenterOffset;\n map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // show/hide RemoveItem button\n if (!allowRemove) {\n LocalButtons['RemoveItem'].disabled = true;\n }\n\n // create the button views\n forin(LocalButtons, (key, definition) => {\n // create button\n const buttonView = root.createChildView(fileActionButton, {\n label: root.query(definition.label),\n icon: root.query(definition.icon),\n opacity: 0,\n });\n\n // should be appended?\n if (enabledButtons.includes(key)) {\n root.appendChildView(buttonView);\n }\n\n // toggle\n if (definition.disabled) {\n buttonView.element.setAttribute('disabled', 'disabled');\n buttonView.element.setAttribute('hidden', 'hidden');\n }\n\n // add position attribute\n buttonView.element.dataset.align = root.query(`GET_STYLE_${definition.align}`);\n\n // add class\n buttonView.element.classList.add(definition.className);\n\n // handle interactions\n buttonView.on('click', e => {\n e.stopPropagation();\n if (definition.disabled) return;\n root.dispatch(definition.action, { query: id });\n });\n\n // set reference\n root.ref[`button${key}`] = buttonView;\n });\n\n // checkmark\n root.ref.processingCompleteIndicator = root.appendChildView(\n root.createChildView(processingCompleteIndicatorView)\n );\n root.ref.processingCompleteIndicator.element.dataset.align = root.query(\n `GET_STYLE_BUTTON_PROCESS_ITEM_POSITION`\n );\n\n // create file info view\n root.ref.info = root.appendChildView(root.createChildView(fileInfo, { id }));\n\n // create file status view\n root.ref.status = root.appendChildView(root.createChildView(fileStatus, { id }));\n\n // add progress indicators\n const loadIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query(`GET_STYLE_LOAD_INDICATOR_POSITION`),\n })\n );\n loadIndicatorView.element.classList.add('filepond--load-indicator');\n root.ref.loadProgressIndicator = loadIndicatorView;\n\n const progressIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query(`GET_STYLE_PROGRESS_INDICATOR_POSITION`),\n })\n );\n progressIndicatorView.element.classList.add('filepond--process-indicator');\n root.ref.processProgressIndicator = progressIndicatorView;\n\n // current active styles\n root.ref.activeStyles = [];\n};\n\nconst write$2 = ({ root, actions, props }) => {\n // route actions\n route({ root, actions, props });\n\n // select last state change action\n let action = actions\n .concat()\n .filter(action => /^DID_/.test(action.type))\n .reverse()\n .find(action => StyleMap[action.type]);\n\n // a new action happened, let's get the matching styles\n if (action) {\n // define new active styles\n root.ref.activeStyles = [];\n\n const stylesToApply = StyleMap[action.type];\n forin(DefaultStyle, (name, defaultStyles) => {\n // get reference to control\n const control = root.ref[name];\n\n // loop over all styles for this control\n forin(defaultStyles, (key, defaultValue) => {\n const value =\n stylesToApply[name] && typeof stylesToApply[name][key] !== 'undefined'\n ? stylesToApply[name][key]\n : defaultValue;\n root.ref.activeStyles.push({ control, key, value });\n });\n });\n }\n\n // apply active styles to element\n root.ref.activeStyles.forEach(({ control, key, value }) => {\n control[key] = typeof value === 'function' ? value(root) : value;\n });\n};\n\nconst route = createRoute({\n DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING: ({ root, action }) => {\n root.ref.buttonAbortItemProcessing.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD: ({ root, action }) => {\n root.ref.buttonAbortItemLoad.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL: ({ root, action }) => {\n root.ref.buttonAbortItemRemoval.label = action.value;\n },\n DID_REQUEST_ITEM_PROCESSING: ({ root }) => {\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_START_ITEM_LOAD: ({ root }) => {\n root.ref.loadProgressIndicator.spin = true;\n root.ref.loadProgressIndicator.progress = 0;\n },\n DID_START_ITEM_REMOVE: ({ root }) => {\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_UPDATE_ITEM_LOAD_PROGRESS: ({ root, action }) => {\n root.ref.loadProgressIndicator.spin = false;\n root.ref.loadProgressIndicator.progress = action.progress;\n },\n DID_UPDATE_ITEM_PROCESS_PROGRESS: ({ root, action }) => {\n root.ref.processProgressIndicator.spin = false;\n root.ref.processProgressIndicator.progress = action.progress;\n },\n});\n\nconst file = createView({\n create: create$4,\n write: write$2,\n didCreateView: root => {\n applyFilters('CREATE_VIEW', { ...root, view: root });\n },\n name: 'file',\n});\n\n/**\n * Creates the file view\n */\nconst create$5 = ({ root, props }) => {\n // filename\n root.ref.fileName = createElement$1('legend');\n root.appendChild(root.ref.fileName);\n\n // file appended\n root.ref.file = root.appendChildView(root.createChildView(file, { id: props.id }));\n\n // data has moved to data.js\n root.ref.data = false;\n};\n\n/**\n * Data storage\n */\nconst didLoadItem = ({ root, props }) => {\n // updates the legend of the fieldset so screenreaders can better group buttons\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n};\n\nconst fileWrapper = createView({\n create: create$5,\n ignoreRect: true,\n write: createRoute({\n DID_LOAD_ITEM: didLoadItem,\n }),\n didCreateView: root => {\n applyFilters('CREATE_VIEW', { ...root, view: root });\n },\n tag: 'fieldset',\n name: 'file-wrapper',\n});\n\nconst PANEL_SPRING_PROPS = { type: 'spring', damping: 0.6, mass: 7 };\n\nconst create$6 = ({ root, props }) => {\n [\n {\n name: 'top',\n },\n {\n name: 'center',\n props: {\n translateY: null,\n scaleY: null,\n },\n mixins: {\n animations: {\n scaleY: PANEL_SPRING_PROPS,\n },\n styles: ['translateY', 'scaleY'],\n },\n },\n {\n name: 'bottom',\n props: {\n translateY: null,\n },\n mixins: {\n animations: {\n translateY: PANEL_SPRING_PROPS,\n },\n styles: ['translateY'],\n },\n },\n ].forEach(section => {\n createSection(root, section, props.name);\n });\n\n root.element.classList.add(`filepond--${props.name}`);\n\n root.ref.scalable = null;\n};\n\nconst createSection = (root, section, className) => {\n const viewConstructor = createView({\n name: `panel-${section.name} filepond--${className}`,\n mixins: section.mixins,\n ignoreRectUpdate: true,\n });\n\n const view = root.createChildView(viewConstructor, section.props);\n\n root.ref[section.name] = root.appendChildView(view);\n};\n\nconst write$3 = ({ root, props }) => {\n // update scalable state\n if (root.ref.scalable === null || props.scalable !== root.ref.scalable) {\n root.ref.scalable = isBoolean(props.scalable) ? props.scalable : true;\n root.element.dataset.scalable = root.ref.scalable;\n }\n\n // no height, can't set\n if (!props.height) return;\n\n // get child rects\n const topRect = root.ref.top.rect.element;\n const bottomRect = root.ref.bottom.rect.element;\n\n // make sure height never is smaller than bottom and top seciton heights combined (will probably never happen, but who knows)\n const height = Math.max(topRect.height + bottomRect.height, props.height);\n\n // offset center part\n root.ref.center.translateY = topRect.height;\n\n // scale center part\n // use math ceil to prevent transparent lines because of rounding errors\n root.ref.center.scaleY = (height - topRect.height - bottomRect.height) / 100;\n\n // offset bottom part\n root.ref.bottom.translateY = height - bottomRect.height;\n};\n\nconst panel = createView({\n name: 'panel',\n read: ({ root, props }) => (props.heightCurrent = root.ref.bottom.translateY),\n write: write$3,\n create: create$6,\n ignoreRect: true,\n mixins: {\n apis: ['height', 'heightCurrent', 'scalable'],\n },\n});\n\nconst createDragHelper = items => {\n const itemIds = items.map(item => item.id);\n let prevIndex = undefined;\n return {\n setIndex: index => {\n prevIndex = index;\n },\n getIndex: () => prevIndex,\n getItemIndex: item => itemIds.indexOf(item.id),\n };\n};\n\nconst ITEM_TRANSLATE_SPRING = {\n type: 'spring',\n stiffness: 0.75,\n damping: 0.45,\n mass: 10,\n};\n\nconst ITEM_SCALE_SPRING = 'spring';\n\nconst StateMap = {\n DID_START_ITEM_LOAD: 'busy',\n DID_UPDATE_ITEM_LOAD_PROGRESS: 'loading',\n DID_THROW_ITEM_INVALID: 'load-invalid',\n DID_THROW_ITEM_LOAD_ERROR: 'load-error',\n DID_LOAD_ITEM: 'idle',\n DID_THROW_ITEM_REMOVE_ERROR: 'remove-error',\n DID_START_ITEM_REMOVE: 'busy',\n DID_START_ITEM_PROCESSING: 'busy processing',\n DID_REQUEST_ITEM_PROCESSING: 'busy processing',\n DID_UPDATE_ITEM_PROCESS_PROGRESS: 'processing',\n DID_COMPLETE_ITEM_PROCESSING: 'processing-complete',\n DID_THROW_ITEM_PROCESSING_ERROR: 'processing-error',\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: 'processing-revert-error',\n DID_ABORT_ITEM_PROCESSING: 'cancelled',\n DID_REVERT_ITEM_PROCESSING: 'idle',\n};\n\n/**\n * Creates the file view\n */\nconst create$7 = ({ root, props }) => {\n // select\n root.ref.handleClick = e => root.dispatch('DID_ACTIVATE_ITEM', { id: props.id });\n\n // set id\n root.element.id = `filepond--item-${props.id}`;\n root.element.addEventListener('click', root.ref.handleClick);\n\n // file view\n root.ref.container = root.appendChildView(root.createChildView(fileWrapper, { id: props.id }));\n\n // file panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'item-panel' }));\n\n // default start height\n root.ref.panel.height = null;\n\n // by default not marked for removal\n props.markedForRemoval = false;\n\n // if not allowed to reorder file items, exit here\n if (!root.query('GET_ALLOW_REORDER')) return;\n\n // set to idle so shows grab cursor\n root.element.dataset.dragState = 'idle';\n\n const grab = e => {\n if (!e.isPrimary) return;\n\n let removedActivateListener = false;\n\n const origin = {\n x: e.pageX,\n y: e.pageY,\n };\n\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n\n props.dragCenter = {\n x: e.offsetX,\n y: e.offsetY,\n };\n\n const dragState = createDragHelper(root.query('GET_ACTIVE_ITEMS'));\n\n root.dispatch('DID_GRAB_ITEM', { id: props.id, dragState });\n\n const drag = e => {\n if (!e.isPrimary) return;\n\n e.stopPropagation();\n e.preventDefault();\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n // if dragged stop listening to clicks, will re-add when done dragging\n const dist =\n props.dragOffset.x * props.dragOffset.x + props.dragOffset.y * props.dragOffset.y;\n if (dist > 16 && !removedActivateListener) {\n removedActivateListener = true;\n root.element.removeEventListener('click', root.ref.handleClick);\n }\n\n root.dispatch('DID_DRAG_ITEM', { id: props.id, dragState });\n };\n\n const drop = e => {\n if (!e.isPrimary) return;\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n reset();\n };\n\n const cancel = () => {\n reset();\n };\n\n const reset = () => {\n document.removeEventListener('pointercancel', cancel);\n document.removeEventListener('pointermove', drag);\n document.removeEventListener('pointerup', drop);\n\n root.dispatch('DID_DROP_ITEM', { id: props.id, dragState });\n\n // start listening to clicks again\n if (removedActivateListener) {\n setTimeout(() => root.element.addEventListener('click', root.ref.handleClick), 0);\n }\n };\n\n document.addEventListener('pointercancel', cancel);\n document.addEventListener('pointermove', drag);\n document.addEventListener('pointerup', drop);\n };\n\n root.element.addEventListener('pointerdown', grab);\n};\n\nconst route$1 = createRoute({\n DID_UPDATE_PANEL_HEIGHT: ({ root, action }) => {\n root.height = action.height;\n },\n});\n\nconst write$4 = createRoute(\n {\n DID_GRAB_ITEM: ({ root, props }) => {\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n },\n DID_DRAG_ITEM: ({ root }) => {\n root.element.dataset.dragState = 'drag';\n },\n DID_DROP_ITEM: ({ root, props }) => {\n props.dragOffset = null;\n props.dragOrigin = null;\n root.element.dataset.dragState = 'drop';\n },\n },\n ({ root, actions, props, shouldOptimize }) => {\n if (root.element.dataset.dragState === 'drop') {\n if (root.scaleX <= 1) {\n root.element.dataset.dragState = 'idle';\n }\n }\n\n // select last state change action\n let action = actions\n .concat()\n .filter(action => /^DID_/.test(action.type))\n .reverse()\n .find(action => StateMap[action.type]);\n\n // no need to set same state twice\n if (action && action.type !== props.currentState) {\n // set current state\n props.currentState = action.type;\n\n // set state\n root.element.dataset.filepondItemState = StateMap[props.currentState] || '';\n }\n\n // route actions\n const aspectRatio =\n root.query('GET_ITEM_PANEL_ASPECT_RATIO') || root.query('GET_PANEL_ASPECT_RATIO');\n if (!aspectRatio) {\n route$1({ root, actions, props });\n if (!root.height && root.ref.container.rect.element.height > 0) {\n root.height = root.ref.container.rect.element.height;\n }\n } else if (!shouldOptimize) {\n root.height = root.rect.element.width * aspectRatio;\n }\n\n // sync panel height with item height\n if (shouldOptimize) {\n root.ref.panel.height = null;\n }\n\n root.ref.panel.height = root.height;\n }\n);\n\nconst item = createView({\n create: create$7,\n write: write$4,\n destroy: ({ root, props }) => {\n root.element.removeEventListener('click', root.ref.handleClick);\n root.dispatch('RELEASE_ITEM', { query: props.id });\n },\n tag: 'li',\n name: 'item',\n mixins: {\n apis: [\n 'id',\n 'interactionMethod',\n 'markedForRemoval',\n 'spawnDate',\n 'dragCenter',\n 'dragOrigin',\n 'dragOffset',\n ],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity', 'height'],\n animations: {\n scaleX: ITEM_SCALE_SPRING,\n scaleY: ITEM_SCALE_SPRING,\n translateX: ITEM_TRANSLATE_SPRING,\n translateY: ITEM_TRANSLATE_SPRING,\n opacity: { type: 'tween', duration: 150 },\n },\n },\n});\n\nvar getItemsPerRow = (horizontalSpace, itemWidth) => {\n // add one pixel leeway, when using percentages for item width total items can be 1.99 per row\n\n return Math.max(1, Math.floor((horizontalSpace + 1) / itemWidth));\n};\n\nconst getItemIndexByPosition = (view, children, positionInView) => {\n if (!positionInView) return;\n\n const horizontalSpace = view.rect.element.width;\n // const children = view.childViews;\n const l = children.length;\n let last = null;\n\n // -1, don't move items to accomodate (either add to top or bottom)\n if (l === 0 || positionInView.top < children[0].rect.element.top) return -1;\n\n // let's get the item width\n const item = children[0];\n const itemRect = item.rect.element;\n const itemHorizontalMargin = itemRect.marginLeft + itemRect.marginRight;\n const itemWidth = itemRect.width + itemHorizontalMargin;\n const itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n for (let index = 0; index < l; index++) {\n const child = children[index];\n const childMid = child.rect.outer.top + child.rect.element.height * 0.5;\n if (positionInView.top < childMid) {\n return index;\n }\n }\n return l;\n }\n\n // grid\n const itemVerticalMargin = itemRect.marginTop + itemRect.marginBottom;\n const itemHeight = itemRect.height + itemVerticalMargin;\n for (let index = 0; index < l; index++) {\n const indexX = index % itemsPerRow;\n const indexY = Math.floor(index / itemsPerRow);\n\n const offsetX = indexX * itemWidth;\n const offsetY = indexY * itemHeight;\n\n const itemTop = offsetY - itemRect.marginTop;\n const itemRight = offsetX + itemWidth;\n const itemBottom = offsetY + itemHeight + itemRect.marginBottom;\n\n if (positionInView.top < itemBottom && positionInView.top > itemTop) {\n if (positionInView.left < itemRight) {\n return index;\n } else if (index !== l - 1) {\n last = index;\n } else {\n last = null;\n }\n }\n }\n\n if (last !== null) {\n return last;\n }\n\n return l;\n};\n\nconst dropAreaDimensions = {\n height: 0,\n width: 0,\n get getHeight() {\n return this.height;\n },\n set setHeight(val) {\n if (this.height === 0 || val === 0) this.height = val;\n },\n get getWidth() {\n return this.width;\n },\n set setWidth(val) {\n if (this.width === 0 || val === 0) this.width = val;\n },\n setDimensions: function(height, width) {\n if (this.height === 0 || height === 0) this.height = height;\n if (this.width === 0 || width === 0) this.width = width;\n },\n};\n\nconst create$8 = ({ root }) => {\n // need to set role to list as otherwise it won't be read as a list by VoiceOver\n attr(root.element, 'role', 'list');\n\n root.ref.lastItemSpanwDate = Date.now();\n};\n\n/**\n * Inserts a new item\n * @param root\n * @param action\n */\nconst addItemView = ({ root, action }) => {\n const { id, index, interactionMethod } = action;\n\n root.ref.addIndex = index;\n\n const now = Date.now();\n let spawnDate = now;\n let opacity = 1;\n\n if (interactionMethod !== InteractionMethod.NONE) {\n opacity = 0;\n const cooldown = root.query('GET_ITEM_INSERT_INTERVAL');\n const dist = now - root.ref.lastItemSpanwDate;\n spawnDate = dist < cooldown ? now + (cooldown - dist) : now;\n }\n\n root.ref.lastItemSpanwDate = spawnDate;\n\n root.appendChildView(\n root.createChildView(\n // view type\n item,\n\n // props\n {\n spawnDate,\n id,\n opacity,\n interactionMethod,\n }\n ),\n index\n );\n};\n\nconst moveItem = (item, x, y, vx = 0, vy = 1) => {\n // set to null to remove animation while dragging\n if (item.dragOffset) {\n item.translateX = null;\n item.translateY = null;\n item.translateX = item.dragOrigin.x + item.dragOffset.x;\n item.translateY = item.dragOrigin.y + item.dragOffset.y;\n item.scaleX = 1.025;\n item.scaleY = 1.025;\n } else {\n item.translateX = x;\n item.translateY = y;\n\n if (Date.now() > item.spawnDate) {\n // reveal element\n if (item.opacity === 0) {\n introItemView(item, x, y, vx, vy);\n }\n\n // make sure is default scale every frame\n item.scaleX = 1;\n item.scaleY = 1;\n item.opacity = 1;\n }\n }\n};\n\nconst introItemView = (item, x, y, vx, vy) => {\n if (item.interactionMethod === InteractionMethod.NONE) {\n item.translateX = null;\n item.translateX = x;\n item.translateY = null;\n item.translateY = y;\n } else if (item.interactionMethod === InteractionMethod.DROP) {\n item.translateX = null;\n item.translateX = x - vx * 20;\n\n item.translateY = null;\n item.translateY = y - vy * 10;\n\n item.scaleX = 0.8;\n item.scaleY = 0.8;\n } else if (item.interactionMethod === InteractionMethod.BROWSE) {\n item.translateY = null;\n item.translateY = y - 30;\n } else if (item.interactionMethod === InteractionMethod.API) {\n item.translateX = null;\n item.translateX = x - 30;\n item.translateY = null;\n }\n};\n\n/**\n * Removes an existing item\n * @param root\n * @param action\n */\nconst removeItemView = ({ root, action }) => {\n const { id } = action;\n\n // get the view matching the given id\n const view = root.childViews.find(child => child.id === id);\n\n // if no view found, exit\n if (!view) {\n return;\n }\n\n // animate view out of view\n view.scaleX = 0.9;\n view.scaleY = 0.9;\n view.opacity = 0;\n\n // mark for removal\n view.markedForRemoval = true;\n};\n\nconst getItemHeight = child =>\n child.rect.element.height + child.rect.element.marginBottom + child.rect.element.marginTop;\nconst getItemWidth = child =>\n child.rect.element.width +\n child.rect.element.marginLeft * 0.5 +\n child.rect.element.marginRight * 0.5;\n\nconst dragItem = ({ root, action }) => {\n const { id, dragState } = action;\n\n // reference to item\n const item = root.query('GET_ITEM', { id });\n\n // get the view matching the given id\n const view = root.childViews.find(child => child.id === id);\n\n const numItems = root.childViews.length;\n const oldIndex = dragState.getItemIndex(item);\n\n // if no view found, exit\n if (!view) return;\n\n const dragPosition = {\n x: view.dragOrigin.x + view.dragOffset.x + view.dragCenter.x,\n y: view.dragOrigin.y + view.dragOffset.y + view.dragCenter.y,\n };\n\n // get drag area dimensions\n const dragHeight = getItemHeight(view);\n const dragWidth = getItemWidth(view);\n\n // get rows and columns (There will always be at least one row and one column if a file is present)\n let cols = Math.floor(root.rect.outer.width / dragWidth);\n if (cols > numItems) cols = numItems;\n\n // rows are used to find when we have left the preview area bounding box\n const rows = Math.floor(numItems / cols + 1);\n\n dropAreaDimensions.setHeight = dragHeight * rows;\n dropAreaDimensions.setWidth = dragWidth * cols;\n\n // get new index of dragged item\n var location = {\n y: Math.floor(dragPosition.y / dragHeight),\n x: Math.floor(dragPosition.x / dragWidth),\n getGridIndex: function getGridIndex() {\n if (\n dragPosition.y > dropAreaDimensions.getHeight ||\n dragPosition.y < 0 ||\n dragPosition.x > dropAreaDimensions.getWidth ||\n dragPosition.x < 0\n )\n return oldIndex;\n return this.y * cols + this.x;\n },\n getColIndex: function getColIndex() {\n const items = root.query('GET_ACTIVE_ITEMS');\n const visibleChildren = root.childViews.filter(child => child.rect.element.height);\n const children = items.map(item =>\n visibleChildren.find(childView => childView.id === item.id)\n );\n const currentIndex = children.findIndex(child => child === view);\n const dragHeight = getItemHeight(view);\n const l = children.length;\n let idx = l;\n let childHeight = 0;\n let childBottom = 0;\n let childTop = 0;\n for (let i = 0; i < l; i++) {\n childHeight = getItemHeight(children[i]);\n childTop = childBottom;\n childBottom = childTop + childHeight;\n if (dragPosition.y < childBottom) {\n if (currentIndex > i) {\n if (dragPosition.y < childTop + dragHeight) {\n idx = i;\n break;\n }\n continue;\n }\n idx = i;\n break;\n }\n }\n return idx;\n },\n };\n\n // get new index\n const index = cols > 1 ? location.getGridIndex() : location.getColIndex();\n root.dispatch('MOVE_ITEM', { query: view, index });\n\n // if the index of the item changed, dispatch reorder action\n const currentIndex = dragState.getIndex();\n\n if (currentIndex === undefined || currentIndex !== index) {\n dragState.setIndex(index);\n\n if (currentIndex === undefined) return;\n\n root.dispatch('DID_REORDER_ITEMS', {\n items: root.query('GET_ACTIVE_ITEMS'),\n origin: oldIndex,\n target: index,\n });\n }\n};\n\n/**\n * Setup action routes\n */\nconst route$2 = createRoute({\n DID_ADD_ITEM: addItemView,\n DID_REMOVE_ITEM: removeItemView,\n DID_DRAG_ITEM: dragItem,\n});\n\n/**\n * Write to view\n * @param root\n * @param actions\n * @param props\n */\nconst write$5 = ({ root, props, actions, shouldOptimize }) => {\n // route actions\n route$2({ root, props, actions });\n\n const { dragCoordinates } = props;\n\n // available space on horizontal axis\n const horizontalSpace = root.rect.element.width;\n\n // only draw children that have dimensions\n const visibleChildren = root.childViews.filter(child => child.rect.element.height);\n\n // sort based on current active items\n const children = root\n .query('GET_ACTIVE_ITEMS')\n .map(item => visibleChildren.find(child => child.id === item.id))\n .filter(item => item);\n\n // get index\n const dragIndex = dragCoordinates\n ? getItemIndexByPosition(root, children, dragCoordinates)\n : null;\n\n // add index is used to reserve the dropped/added item index till the actual item is rendered\n const addIndex = root.ref.addIndex || null;\n\n // add index no longer needed till possibly next draw\n root.ref.addIndex = null;\n\n let dragIndexOffset = 0;\n let removeIndexOffset = 0;\n let addIndexOffset = 0;\n\n if (children.length === 0) return;\n\n const childRect = children[0].rect.element;\n const itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n const itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n const itemWidth = childRect.width + itemHorizontalMargin;\n const itemHeight = childRect.height + itemVerticalMargin;\n const itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n let offsetY = 0;\n let dragOffset = 0;\n\n children.forEach((child, index) => {\n if (dragIndex) {\n let dist = index - dragIndex;\n if (dist === -2) {\n dragOffset = -itemVerticalMargin * 0.25;\n } else if (dist === -1) {\n dragOffset = -itemVerticalMargin * 0.75;\n } else if (dist === 0) {\n dragOffset = itemVerticalMargin * 0.75;\n } else if (dist === 1) {\n dragOffset = itemVerticalMargin * 0.25;\n } else {\n dragOffset = 0;\n }\n }\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n if (!child.markedForRemoval) {\n moveItem(child, 0, offsetY + dragOffset);\n }\n\n let itemHeight = child.rect.element.height + itemVerticalMargin;\n\n let visualHeight = itemHeight * (child.markedForRemoval ? child.opacity : 1);\n\n offsetY += visualHeight;\n });\n }\n // grid\n else {\n let prevX = 0;\n let prevY = 0;\n\n children.forEach((child, index) => {\n if (index === dragIndex) {\n dragIndexOffset = 1;\n }\n\n if (index === addIndex) {\n addIndexOffset += 1;\n }\n\n if (child.markedForRemoval && child.opacity < 0.5) {\n removeIndexOffset -= 1;\n }\n\n const visualIndex = index + addIndexOffset + dragIndexOffset + removeIndexOffset;\n\n const indexX = visualIndex % itemsPerRow;\n const indexY = Math.floor(visualIndex / itemsPerRow);\n\n const offsetX = indexX * itemWidth;\n const offsetY = indexY * itemHeight;\n\n const vectorX = Math.sign(offsetX - prevX);\n const vectorY = Math.sign(offsetY - prevY);\n\n prevX = offsetX;\n prevY = offsetY;\n\n if (child.markedForRemoval) return;\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n moveItem(child, offsetX, offsetY, vectorX, vectorY);\n });\n }\n};\n\n/**\n * Filters actions that are meant specifically for a certain child of the list\n * @param child\n * @param actions\n */\nconst filterSetItemActions = (child, actions) =>\n actions.filter(action => {\n // if action has an id, filter out actions that don't have this child id\n if (action.data && action.data.id) {\n return child.id === action.data.id;\n }\n\n // allow all other actions\n return true;\n });\n\nconst list = createView({\n create: create$8,\n write: write$5,\n tag: 'ul',\n name: 'list',\n didWriteView: ({ root }) => {\n root.childViews\n .filter(view => view.markedForRemoval && view.opacity === 0 && view.resting)\n .forEach(view => {\n view._destroy();\n root.removeChildView(view);\n });\n },\n filterFrameActionsForChild: filterSetItemActions,\n mixins: {\n apis: ['dragCoordinates'],\n },\n});\n\nconst create$9 = ({ root, props }) => {\n root.ref.list = root.appendChildView(root.createChildView(list));\n props.dragCoordinates = null;\n props.overflowing = false;\n};\n\nconst storeDragCoordinates = ({ root, props, action }) => {\n if (!root.query('GET_ITEM_INSERT_LOCATION_FREEDOM')) return;\n props.dragCoordinates = {\n left: action.position.scopeLeft - root.ref.list.rect.element.left,\n top:\n action.position.scopeTop -\n (root.rect.outer.top + root.rect.element.marginTop + root.rect.element.scrollTop),\n };\n};\n\nconst clearDragCoordinates = ({ props }) => {\n props.dragCoordinates = null;\n};\n\nconst route$3 = createRoute({\n DID_DRAG: storeDragCoordinates,\n DID_END_DRAG: clearDragCoordinates,\n});\n\nconst write$6 = ({ root, props, actions }) => {\n // route actions\n route$3({ root, props, actions });\n\n // current drag position\n root.ref.list.dragCoordinates = props.dragCoordinates;\n\n // if currently overflowing but no longer received overflow\n if (props.overflowing && !props.overflow) {\n props.overflowing = false;\n\n // reset overflow state\n root.element.dataset.state = '';\n root.height = null;\n }\n\n // if is not overflowing currently but does receive overflow value\n if (props.overflow) {\n const newHeight = Math.round(props.overflow);\n if (newHeight !== root.height) {\n props.overflowing = true;\n root.element.dataset.state = 'overflow';\n root.height = newHeight;\n }\n }\n};\n\nconst listScroller = createView({\n create: create$9,\n write: write$6,\n name: 'list-scroller',\n mixins: {\n apis: ['overflow', 'dragCoordinates'],\n styles: ['height', 'translateY'],\n animations: {\n translateY: 'spring',\n },\n },\n});\n\nconst attrToggle = (element, name, state, enabledValue = '') => {\n if (state) {\n attr(element, name, enabledValue);\n } else {\n element.removeAttribute(name);\n }\n};\n\nconst resetFileInput = input => {\n // no value, no need to reset\n if (!input || input.value === '') {\n return;\n }\n\n try {\n // for modern browsers\n input.value = '';\n } catch (err) {}\n\n // for IE10\n if (input.value) {\n // quickly append input to temp form and reset form\n const form = createElement$1('form');\n const parentNode = input.parentNode;\n const ref = input.nextSibling;\n form.appendChild(input);\n form.reset();\n\n // re-inject input where it originally was\n if (ref) {\n parentNode.insertBefore(input, ref);\n } else {\n parentNode.appendChild(input);\n }\n }\n};\n\nconst create$a = ({ root, props }) => {\n // set id so can be referenced from outside labels\n root.element.id = `filepond--browser-${props.id}`;\n\n // set name of element (is removed when a value is set)\n attr(root.element, 'name', root.query('GET_NAME'));\n\n // we have to link this element to the status element\n attr(root.element, 'aria-controls', `filepond--assistant-${props.id}`);\n\n // set label, we use labelled by as otherwise the screenreader does not read the \"browse\" text in the label (as it has tabindex: 0)\n attr(root.element, 'aria-labelledby', `filepond--drop-label-${props.id}`);\n\n // set configurable props\n setAcceptedFileTypes({ root, action: { value: root.query('GET_ACCEPTED_FILE_TYPES') } });\n toggleAllowMultiple({ root, action: { value: root.query('GET_ALLOW_MULTIPLE') } });\n toggleDirectoryFilter({ root, action: { value: root.query('GET_ALLOW_DIRECTORIES_ONLY') } });\n toggleDisabled({ root });\n toggleRequired({ root, action: { value: root.query('GET_REQUIRED') } });\n setCaptureMethod({ root, action: { value: root.query('GET_CAPTURE_METHOD') } });\n\n // handle changes to the input field\n root.ref.handleChange = e => {\n if (!root.element.value) {\n return;\n }\n\n // extract files and move value of webkitRelativePath path to _relativePath\n const files = Array.from(root.element.files).map(file => {\n file._relativePath = file.webkitRelativePath;\n return file;\n });\n\n // we add a little delay so the OS file select window can move out of the way before we add our file\n setTimeout(() => {\n // load files\n props.onload(files);\n\n // reset input, it's just for exposing a method to drop files, should not retain any state\n resetFileInput(root.element);\n }, 250);\n };\n\n root.element.addEventListener('change', root.ref.handleChange);\n};\n\nconst setAcceptedFileTypes = ({ root, action }) => {\n if (!root.query('GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE')) return;\n attrToggle(root.element, 'accept', !!action.value, action.value ? action.value.join(',') : '');\n};\n\nconst toggleAllowMultiple = ({ root, action }) => {\n attrToggle(root.element, 'multiple', action.value);\n};\n\nconst toggleDirectoryFilter = ({ root, action }) => {\n attrToggle(root.element, 'webkitdirectory', action.value);\n};\n\nconst toggleDisabled = ({ root }) => {\n const isDisabled = root.query('GET_DISABLED');\n const doesAllowBrowse = root.query('GET_ALLOW_BROWSE');\n const disableField = isDisabled || !doesAllowBrowse;\n attrToggle(root.element, 'disabled', disableField);\n};\n\nconst toggleRequired = ({ root, action }) => {\n // want to remove required, always possible\n if (!action.value) {\n attrToggle(root.element, 'required', false);\n }\n // if want to make required, only possible when zero items\n else if (root.query('GET_TOTAL_ITEMS') === 0) {\n attrToggle(root.element, 'required', true);\n }\n};\n\nconst setCaptureMethod = ({ root, action }) => {\n attrToggle(root.element, 'capture', !!action.value, action.value === true ? '' : action.value);\n};\n\nconst updateRequiredStatus = ({ root }) => {\n const { element } = root;\n // always remove the required attribute when more than zero items\n if (root.query('GET_TOTAL_ITEMS') > 0) {\n attrToggle(element, 'required', false);\n attrToggle(element, 'name', false);\n\n // still has items\n const activeItems = root.query('GET_ACTIVE_ITEMS');\n let hasInvalidField = false;\n for (let i = 0; i < activeItems.length; i++) {\n if (activeItems[i].status === ItemStatus.LOAD_ERROR) {\n hasInvalidField = true;\n }\n }\n // set validity status\n root.element.setCustomValidity(\n hasInvalidField ? root.query('GET_LABEL_INVALID_FIELD') : ''\n );\n } else {\n // add name attribute\n attrToggle(element, 'name', true, root.query('GET_NAME'));\n\n // remove any validation messages\n const shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (shouldCheckValidity) {\n element.setCustomValidity('');\n }\n\n // we only add required if the field has been deemed required\n if (root.query('GET_REQUIRED')) {\n attrToggle(element, 'required', true);\n }\n }\n};\n\nconst updateFieldValidityStatus = ({ root }) => {\n const shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (!shouldCheckValidity) return;\n root.element.setCustomValidity(root.query('GET_LABEL_INVALID_FIELD'));\n};\n\nconst browser = createView({\n tag: 'input',\n name: 'browser',\n ignoreRect: true,\n ignoreRectUpdate: true,\n attributes: {\n type: 'file',\n },\n create: create$a,\n destroy: ({ root }) => {\n root.element.removeEventListener('change', root.ref.handleChange);\n },\n write: createRoute({\n DID_LOAD_ITEM: updateRequiredStatus,\n DID_REMOVE_ITEM: updateRequiredStatus,\n DID_THROW_ITEM_INVALID: updateFieldValidityStatus,\n\n DID_SET_DISABLED: toggleDisabled,\n DID_SET_ALLOW_BROWSE: toggleDisabled,\n DID_SET_ALLOW_DIRECTORIES_ONLY: toggleDirectoryFilter,\n DID_SET_ALLOW_MULTIPLE: toggleAllowMultiple,\n DID_SET_ACCEPTED_FILE_TYPES: setAcceptedFileTypes,\n DID_SET_CAPTURE_METHOD: setCaptureMethod,\n DID_SET_REQUIRED: toggleRequired,\n }),\n});\n\nconst Key = {\n ENTER: 13,\n SPACE: 32,\n};\n\nconst create$b = ({ root, props }) => {\n // create the label and link it to the file browser\n const label = createElement$1('label');\n attr(label, 'for', `filepond--browser-${props.id}`);\n\n // use for labeling file input (aria-labelledby on file input)\n attr(label, 'id', `filepond--drop-label-${props.id}`);\n\n // handle keys\n root.ref.handleKeyDown = e => {\n const isActivationKey = e.keyCode === Key.ENTER || e.keyCode === Key.SPACE;\n if (!isActivationKey) return;\n // stops from triggering the element a second time\n e.preventDefault();\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n root.ref.handleClick = e => {\n const isLabelClick = e.target === label || label.contains(e.target);\n\n // don't want to click twice\n if (isLabelClick) return;\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n // attach events\n label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.addEventListener('click', root.ref.handleClick);\n\n // update\n updateLabelValue(label, props.caption);\n\n // add!\n root.appendChild(label);\n root.ref.label = label;\n};\n\nconst updateLabelValue = (label, value) => {\n label.innerHTML = value;\n const clickable = label.querySelector('.filepond--label-action');\n if (clickable) {\n attr(clickable, 'tabindex', '0');\n }\n return value;\n};\n\nconst dropLabel = createView({\n name: 'drop-label',\n ignoreRect: true,\n create: create$b,\n destroy: ({ root }) => {\n root.ref.label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.removeEventListener('click', root.ref.handleClick);\n },\n write: createRoute({\n DID_SET_LABEL_IDLE: ({ root, action }) => {\n updateLabelValue(root.ref.label, action.value);\n },\n }),\n mixins: {\n styles: ['opacity', 'translateX', 'translateY'],\n animations: {\n opacity: { type: 'tween', duration: 150 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n});\n\nconst blob = createView({\n name: 'drip-blob',\n ignoreRect: true,\n mixins: {\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n});\n\nconst addBlob = ({ root }) => {\n const centerX = root.rect.element.width * 0.5;\n const centerY = root.rect.element.height * 0.5;\n\n root.ref.blob = root.appendChildView(\n root.createChildView(blob, {\n opacity: 0,\n scaleX: 2.5,\n scaleY: 2.5,\n translateX: centerX,\n translateY: centerY,\n })\n );\n};\n\nconst moveBlob = ({ root, action }) => {\n if (!root.ref.blob) {\n addBlob({ root });\n return;\n }\n\n root.ref.blob.translateX = action.position.scopeLeft;\n root.ref.blob.translateY = action.position.scopeTop;\n root.ref.blob.scaleX = 1;\n root.ref.blob.scaleY = 1;\n root.ref.blob.opacity = 1;\n};\n\nconst hideBlob = ({ root }) => {\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.opacity = 0;\n};\n\nconst explodeBlob = ({ root }) => {\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.scaleX = 2.5;\n root.ref.blob.scaleY = 2.5;\n root.ref.blob.opacity = 0;\n};\n\nconst write$7 = ({ root, props, actions }) => {\n route$4({ root, props, actions });\n\n const { blob } = root.ref;\n\n if (actions.length === 0 && blob && blob.opacity === 0) {\n root.removeChildView(blob);\n root.ref.blob = null;\n }\n};\n\nconst route$4 = createRoute({\n DID_DRAG: moveBlob,\n DID_DROP: explodeBlob,\n DID_END_DRAG: hideBlob,\n});\n\nconst drip = createView({\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'drip',\n write: write$7,\n});\n\nconst setInputFiles = (element, files) => {\n try {\n // Create a DataTransfer instance and add a newly created file\n const dataTransfer = new DataTransfer();\n files.forEach(file => {\n if (file instanceof File) {\n dataTransfer.items.add(file);\n } else {\n dataTransfer.items.add(\n new File([file], file.name, {\n type: file.type,\n })\n );\n }\n });\n\n // Assign the DataTransfer files list to the file input\n element.files = dataTransfer.files;\n } catch (err) {\n return false;\n }\n return true;\n};\n\nconst create$c = ({ root }) => {\n root.ref.fields = {};\n const legend = document.createElement('legend');\n legend.textContent = 'Files';\n root.element.appendChild(legend);\n};\n\nconst getField = (root, id) => root.ref.fields[id];\n\nconst syncFieldPositionsWithItems = root => {\n root.query('GET_ACTIVE_ITEMS').forEach(item => {\n if (!root.ref.fields[item.id]) return;\n root.element.appendChild(root.ref.fields[item.id]);\n });\n};\n\nconst didReorderItems = ({ root }) => syncFieldPositionsWithItems(root);\n\nconst didAddItem = ({ root, action }) => {\n const fileItem = root.query('GET_ITEM', action.id);\n const isLocalFile = fileItem.origin === FileOrigin.LOCAL;\n const shouldUseFileInput = !isLocalFile && root.query('SHOULD_UPDATE_FILE_INPUT');\n const dataContainer = createElement$1('input');\n dataContainer.type = shouldUseFileInput ? 'file' : 'hidden';\n dataContainer.name = root.query('GET_NAME');\n root.ref.fields[action.id] = dataContainer;\n syncFieldPositionsWithItems(root);\n};\n\nconst didLoadItem$1 = ({ root, action }) => {\n const field = getField(root, action.id);\n if (!field) return;\n\n // store server ref in hidden input\n if (action.serverFileReference !== null) field.value = action.serverFileReference;\n\n // store file item in file input\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n\n const fileItem = root.query('GET_ITEM', action.id);\n setInputFiles(field, [fileItem.file]);\n};\n\nconst didPrepareOutput = ({ root, action }) => {\n // this timeout pushes the handler after 'load'\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n setTimeout(() => {\n const field = getField(root, action.id);\n if (!field) return;\n setInputFiles(field, [action.file]);\n }, 0);\n};\n\nconst didSetDisabled = ({ root }) => {\n root.element.disabled = root.query('GET_DISABLED');\n};\n\nconst didRemoveItem = ({ root, action }) => {\n const field = getField(root, action.id);\n if (!field) return;\n if (field.parentNode) field.parentNode.removeChild(field);\n delete root.ref.fields[action.id];\n};\n\n// only runs for server files. will refuse to update the value if the field\n// is a file field\nconst didDefineValue = ({ root, action }) => {\n const field = getField(root, action.id);\n if (!field) return;\n if (action.value === null) {\n // clear field value\n field.removeAttribute('value');\n } else {\n // set field value\n if (field.type != 'file') {\n field.value = action.value;\n }\n }\n syncFieldPositionsWithItems(root);\n};\n\nconst write$8 = createRoute({\n DID_SET_DISABLED: didSetDisabled,\n DID_ADD_ITEM: didAddItem,\n DID_LOAD_ITEM: didLoadItem$1,\n DID_REMOVE_ITEM: didRemoveItem,\n DID_DEFINE_VALUE: didDefineValue,\n DID_PREPARE_OUTPUT: didPrepareOutput,\n DID_REORDER_ITEMS: didReorderItems,\n DID_SORT_ITEMS: didReorderItems,\n});\n\nconst data = createView({\n tag: 'fieldset',\n name: 'data',\n create: create$c,\n write: write$8,\n ignoreRect: true,\n});\n\nconst getRootNode = element => ('getRootNode' in element ? element.getRootNode() : document);\n\nconst images = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff'];\nconst text$1 = ['css', 'csv', 'html', 'txt'];\nconst map = {\n zip: 'zip|compressed',\n epub: 'application/epub+zip',\n};\n\nconst guesstimateMimeType = (extension = '') => {\n extension = extension.toLowerCase();\n if (images.includes(extension)) {\n return (\n 'image/' + (extension === 'jpg' ? 'jpeg' : extension === 'svg' ? 'svg+xml' : extension)\n );\n }\n if (text$1.includes(extension)) {\n return 'text/' + extension;\n }\n\n return map[extension] || '';\n};\n\nconst requestDataTransferItems = dataTransfer =>\n new Promise((resolve, reject) => {\n // try to get links from transfer, if found we'll exit immediately (unless a file is in the dataTransfer as well, this is because Firefox could represent the file as a URL and a file object at the same time)\n const links = getLinks(dataTransfer);\n if (links.length && !hasFiles(dataTransfer)) {\n return resolve(links);\n }\n // try to get files from the transfer\n getFiles(dataTransfer).then(resolve);\n });\n\n/**\n * Test if datatransfer has files\n */\nconst hasFiles = dataTransfer => {\n if (dataTransfer.files) return dataTransfer.files.length > 0;\n return false;\n};\n\n/**\n * Extracts files from a DataTransfer object\n */\nconst getFiles = dataTransfer =>\n new Promise((resolve, reject) => {\n // get the transfer items as promises\n const promisedFiles = (dataTransfer.items ? Array.from(dataTransfer.items) : [])\n\n // only keep file system items (files and directories)\n .filter(item => isFileSystemItem(item))\n\n // map each item to promise\n .map(item => getFilesFromItem(item));\n\n // if is empty, see if we can extract some info from the files property as a fallback\n if (!promisedFiles.length) {\n // TODO: test for directories (should not be allowed)\n // Use FileReader, problem is that the files property gets lost in the process\n resolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n return;\n }\n\n // done!\n Promise.all(promisedFiles)\n .then(returnedFileGroups => {\n // flatten groups\n const files = [];\n returnedFileGroups.forEach(group => {\n files.push.apply(files, group);\n });\n\n // done (filter out empty files)!\n resolve(\n files\n .filter(file => file)\n .map(file => {\n if (!file._relativePath) file._relativePath = file.webkitRelativePath;\n return file;\n })\n );\n })\n .catch(console.error);\n });\n\nconst isFileSystemItem = item => {\n if (isEntry(item)) {\n const entry = getAsEntry(item);\n if (entry) {\n return entry.isFile || entry.isDirectory;\n }\n }\n return item.kind === 'file';\n};\n\nconst getFilesFromItem = item =>\n new Promise((resolve, reject) => {\n if (isDirectoryEntry(item)) {\n getFilesInDirectory(getAsEntry(item))\n .then(resolve)\n .catch(reject);\n return;\n }\n\n resolve([item.getAsFile()]);\n });\n\nconst getFilesInDirectory = entry =>\n new Promise((resolve, reject) => {\n const files = [];\n\n // the total entries to read\n let dirCounter = 0;\n let fileCounter = 0;\n\n const resolveIfDone = () => {\n if (fileCounter === 0 && dirCounter === 0) {\n resolve(files);\n }\n };\n\n // the recursive function\n const readEntries = dirEntry => {\n dirCounter++;\n\n const directoryReader = dirEntry.createReader();\n\n // directories are returned in batches, we need to process all batches before we're done\n const readBatch = () => {\n directoryReader.readEntries(entries => {\n if (entries.length === 0) {\n dirCounter--;\n resolveIfDone();\n return;\n }\n\n entries.forEach(entry => {\n // recursively read more directories\n if (entry.isDirectory) {\n readEntries(entry);\n } else {\n // read as file\n fileCounter++;\n\n entry.file(file => {\n const correctedFile = correctMissingFileType(file);\n if (entry.fullPath) correctedFile._relativePath = entry.fullPath;\n files.push(correctedFile);\n fileCounter--;\n resolveIfDone();\n });\n }\n });\n\n // try to get next batch of files\n readBatch();\n }, reject);\n };\n\n // read first batch of files\n readBatch();\n };\n\n // go!\n readEntries(entry);\n });\n\nconst correctMissingFileType = file => {\n if (file.type.length) return file;\n const date = file.lastModifiedDate;\n const name = file.name;\n const type = guesstimateMimeType(getExtensionFromFilename(file.name));\n if (!type.length) return file;\n file = file.slice(0, file.size, type);\n file.name = name;\n file.lastModifiedDate = date;\n return file;\n};\n\nconst isDirectoryEntry = item => isEntry(item) && (getAsEntry(item) || {}).isDirectory;\n\nconst isEntry = item => 'webkitGetAsEntry' in item;\n\nconst getAsEntry = item => item.webkitGetAsEntry();\n\n/**\n * Extracts links from a DataTransfer object\n */\nconst getLinks = dataTransfer => {\n let links = [];\n try {\n // look in meta data property\n links = getLinksFromTransferMetaData(dataTransfer);\n if (links.length) {\n return links;\n }\n links = getLinksFromTransferURLData(dataTransfer);\n } catch (e) {\n // nope nope nope (probably IE trouble)\n }\n return links;\n};\n\nconst getLinksFromTransferURLData = dataTransfer => {\n let data = dataTransfer.getData('url');\n if (typeof data === 'string' && data.length) {\n return [data];\n }\n return [];\n};\n\nconst getLinksFromTransferMetaData = dataTransfer => {\n let data = dataTransfer.getData('text/html');\n if (typeof data === 'string' && data.length) {\n const matches = data.match(/src\\s*=\\s*\"(.+?)\"/);\n if (matches) {\n return [matches[1]];\n }\n }\n return [];\n};\n\nconst dragNDropObservers = [];\n\nconst eventPosition = e => ({\n pageLeft: e.pageX,\n pageTop: e.pageY,\n scopeLeft: e.offsetX || e.layerX,\n scopeTop: e.offsetY || e.layerY,\n});\n\nconst createDragNDropClient = (element, scopeToObserve, filterElement) => {\n const observer = getDragNDropObserver(scopeToObserve);\n\n const client = {\n element,\n filterElement,\n state: null,\n ondrop: () => {},\n onenter: () => {},\n ondrag: () => {},\n onexit: () => {},\n onload: () => {},\n allowdrop: () => {},\n };\n\n client.destroy = observer.addListener(client);\n\n return client;\n};\n\nconst getDragNDropObserver = element => {\n // see if already exists, if so, return\n const observer = dragNDropObservers.find(item => item.element === element);\n if (observer) {\n return observer;\n }\n\n // create new observer, does not yet exist for this element\n const newObserver = createDragNDropObserver(element);\n dragNDropObservers.push(newObserver);\n return newObserver;\n};\n\nconst createDragNDropObserver = element => {\n const clients = [];\n\n const routes = {\n dragenter,\n dragover,\n dragleave,\n drop,\n };\n\n const handlers = {};\n\n forin(routes, (event, createHandler) => {\n handlers[event] = createHandler(element, clients);\n element.addEventListener(event, handlers[event], false);\n });\n\n const observer = {\n element,\n addListener: client => {\n // add as client\n clients.push(client);\n\n // return removeListener function\n return () => {\n // remove client\n clients.splice(clients.indexOf(client), 1);\n\n // if no more clients, clean up observer\n if (clients.length === 0) {\n dragNDropObservers.splice(dragNDropObservers.indexOf(observer), 1);\n\n forin(routes, event => {\n element.removeEventListener(event, handlers[event], false);\n });\n }\n };\n },\n };\n\n return observer;\n};\n\nconst elementFromPoint = (root, point) => {\n if (!('elementFromPoint' in root)) {\n root = document;\n }\n return root.elementFromPoint(point.x, point.y);\n};\n\nconst isEventTarget = (e, target) => {\n // get root\n const root = getRootNode(target);\n\n // get element at position\n // if root is not actual shadow DOM and does not have elementFromPoint method, use the one on document\n const elementAtPosition = elementFromPoint(root, {\n x: e.pageX - window.pageXOffset,\n y: e.pageY - window.pageYOffset,\n });\n\n // test if target is the element or if one of its children is\n return elementAtPosition === target || target.contains(elementAtPosition);\n};\n\nlet initialTarget = null;\n\nconst setDropEffect = (dataTransfer, effect) => {\n // is in try catch as IE11 will throw error if not\n try {\n dataTransfer.dropEffect = effect;\n } catch (e) {}\n};\n\nconst dragenter = (root, clients) => e => {\n e.preventDefault();\n\n initialTarget = e.target;\n\n clients.forEach(client => {\n const { element, onenter } = client;\n\n if (isEventTarget(e, element)) {\n client.state = 'enter';\n\n // fire enter event\n onenter(eventPosition(e));\n }\n });\n};\n\nconst dragover = (root, clients) => e => {\n e.preventDefault();\n\n const dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(items => {\n let overDropTarget = false;\n\n clients.some(client => {\n const { filterElement, element, onenter, onexit, ondrag, allowdrop } = client;\n\n // by default we can drop\n setDropEffect(dataTransfer, 'copy');\n\n // allow transfer of these items\n const allowsTransfer = allowdrop(items);\n\n // only used when can be dropped on page\n if (!allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // targetting this client\n if (isEventTarget(e, element)) {\n overDropTarget = true;\n\n // had no previous state, means we are entering this client\n if (client.state === null) {\n client.state = 'enter';\n onenter(eventPosition(e));\n return;\n }\n\n // now over element (no matter if it allows the drop or not)\n client.state = 'over';\n\n // needs to allow transfer\n if (filterElement && !allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // dragging\n ondrag(eventPosition(e));\n } else {\n // should be over an element to drop\n if (filterElement && !overDropTarget) {\n setDropEffect(dataTransfer, 'none');\n }\n\n // might have just left this client?\n if (client.state) {\n client.state = null;\n onexit(eventPosition(e));\n }\n }\n });\n });\n};\n\nconst drop = (root, clients) => e => {\n e.preventDefault();\n\n const dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(items => {\n clients.forEach(client => {\n const { filterElement, element, ondrop, onexit, allowdrop } = client;\n\n client.state = null;\n\n // if we're filtering on element we need to be over the element to drop\n if (filterElement && !isEventTarget(e, element)) return;\n\n // no transfer for this client\n if (!allowdrop(items)) return onexit(eventPosition(e));\n\n // we can drop these items on this client\n ondrop(eventPosition(e), items);\n });\n });\n};\n\nconst dragleave = (root, clients) => e => {\n if (initialTarget !== e.target) {\n return;\n }\n\n clients.forEach(client => {\n const { onexit } = client;\n\n client.state = null;\n\n onexit(eventPosition(e));\n });\n};\n\nconst createHopper = (scope, validateItems, options) => {\n // is now hopper scope\n scope.classList.add('filepond--hopper');\n\n // shortcuts\n const { catchesDropsOnPage, requiresDropOnElement, filterItems = items => items } = options;\n\n // create a dnd client\n const client = createDragNDropClient(\n scope,\n catchesDropsOnPage ? document.documentElement : scope,\n requiresDropOnElement\n );\n\n // current client state\n let lastState = '';\n let currentState = '';\n\n // determines if a file may be dropped\n client.allowdrop = items => {\n // TODO: if we can, throw error to indicate the items cannot by dropped\n\n return validateItems(filterItems(items));\n };\n\n client.ondrop = (position, items) => {\n const filteredItems = filterItems(items);\n\n if (!validateItems(filteredItems)) {\n api.ondragend(position);\n return;\n }\n\n currentState = 'drag-drop';\n\n api.onload(filteredItems, position);\n };\n\n client.ondrag = position => {\n api.ondrag(position);\n };\n\n client.onenter = position => {\n currentState = 'drag-over';\n\n api.ondragstart(position);\n };\n\n client.onexit = position => {\n currentState = 'drag-exit';\n\n api.ondragend(position);\n };\n\n const api = {\n updateHopperState: () => {\n if (lastState !== currentState) {\n scope.dataset.hopperState = currentState;\n lastState = currentState;\n }\n },\n onload: () => {},\n ondragstart: () => {},\n ondrag: () => {},\n ondragend: () => {},\n destroy: () => {\n // destroy client\n client.destroy();\n },\n };\n\n return api;\n};\n\nlet listening = false;\nconst listeners$1 = [];\n\nconst handlePaste = e => {\n // if is pasting in input or textarea and the target is outside of a filepond scope, ignore\n const activeEl = document.activeElement;\n const isActiveElementEditable =\n activeEl &&\n (/textarea|input/i.test(activeEl.nodeName) ||\n activeEl.getAttribute('contenteditable') === 'true' ||\n activeEl.getAttribute('contenteditable') === '');\n\n if (isActiveElementEditable) {\n // test textarea or input is contained in filepond root\n let inScope = false;\n let element = activeEl;\n while (element !== document.body) {\n if (element.classList.contains('filepond--root')) {\n inScope = true;\n break;\n }\n element = element.parentNode;\n }\n\n if (!inScope) return;\n }\n\n requestDataTransferItems(e.clipboardData).then(files => {\n // no files received\n if (!files.length) {\n return;\n }\n\n // notify listeners of received files\n listeners$1.forEach(listener => listener(files));\n });\n};\n\nconst listen = cb => {\n // can't add twice\n if (listeners$1.includes(cb)) {\n return;\n }\n\n // add initial listener\n listeners$1.push(cb);\n\n // setup paste listener for entire page\n if (listening) {\n return;\n }\n\n listening = true;\n document.addEventListener('paste', handlePaste);\n};\n\nconst unlisten = listener => {\n arrayRemove(listeners$1, listeners$1.indexOf(listener));\n\n // clean up\n if (listeners$1.length === 0) {\n document.removeEventListener('paste', handlePaste);\n listening = false;\n }\n};\n\nconst createPaster = () => {\n const cb = files => {\n api.onload(files);\n };\n\n const api = {\n destroy: () => {\n unlisten(cb);\n },\n onload: () => {},\n };\n\n listen(cb);\n\n return api;\n};\n\n/**\n * Creates the file view\n */\nconst create$d = ({ root, props }) => {\n root.element.id = `filepond--assistant-${props.id}`;\n attr(root.element, 'role', 'alert');\n attr(root.element, 'aria-live', 'polite');\n attr(root.element, 'aria-relevant', 'additions');\n};\n\nlet addFilesNotificationTimeout = null;\nlet notificationClearTimeout = null;\n\nconst filenames = [];\n\nconst assist = (root, message) => {\n root.element.textContent = message;\n};\n\nconst clear$1 = root => {\n root.element.textContent = '';\n};\n\nconst listModified = (root, filename, label) => {\n const total = root.query('GET_TOTAL_ITEMS');\n assist(\n root,\n `${label} ${filename}, ${total} ${\n total === 1\n ? root.query('GET_LABEL_FILE_COUNT_SINGULAR')\n : root.query('GET_LABEL_FILE_COUNT_PLURAL')\n }`\n );\n\n // clear group after set amount of time so the status is not read twice\n clearTimeout(notificationClearTimeout);\n notificationClearTimeout = setTimeout(() => {\n clear$1(root);\n }, 1500);\n};\n\nconst isUsingFilePond = root => root.element.parentNode.contains(document.activeElement);\n\nconst itemAdded = ({ root, action }) => {\n if (!isUsingFilePond(root)) {\n return;\n }\n\n root.element.textContent = '';\n const item = root.query('GET_ITEM', action.id);\n filenames.push(item.filename);\n\n clearTimeout(addFilesNotificationTimeout);\n addFilesNotificationTimeout = setTimeout(() => {\n listModified(root, filenames.join(', '), root.query('GET_LABEL_FILE_ADDED'));\n filenames.length = 0;\n }, 750);\n};\n\nconst itemRemoved = ({ root, action }) => {\n if (!isUsingFilePond(root)) {\n return;\n }\n\n const item = action.item;\n listModified(root, item.filename, root.query('GET_LABEL_FILE_REMOVED'));\n};\n\nconst itemProcessed = ({ root, action }) => {\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n const item = root.query('GET_ITEM', action.id);\n const filename = item.filename;\n const label = root.query('GET_LABEL_FILE_PROCESSING_COMPLETE');\n\n assist(root, `${filename} ${label}`);\n};\n\nconst itemProcessedUndo = ({ root, action }) => {\n const item = root.query('GET_ITEM', action.id);\n const filename = item.filename;\n const label = root.query('GET_LABEL_FILE_PROCESSING_ABORTED');\n\n assist(root, `${filename} ${label}`);\n};\n\nconst itemError = ({ root, action }) => {\n const item = root.query('GET_ITEM', action.id);\n const filename = item.filename;\n\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n assist(root, `${action.status.main} ${filename} ${action.status.sub}`);\n};\n\nconst assistant = createView({\n create: create$d,\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: itemAdded,\n DID_REMOVE_ITEM: itemRemoved,\n DID_COMPLETE_ITEM_PROCESSING: itemProcessed,\n\n DID_ABORT_ITEM_PROCESSING: itemProcessedUndo,\n DID_REVERT_ITEM_PROCESSING: itemProcessedUndo,\n\n DID_THROW_ITEM_REMOVE_ERROR: itemError,\n DID_THROW_ITEM_LOAD_ERROR: itemError,\n DID_THROW_ITEM_INVALID: itemError,\n DID_THROW_ITEM_PROCESSING_ERROR: itemError,\n }),\n tag: 'span',\n name: 'assistant',\n});\n\nconst toCamels = (string, separator = '-') =>\n string.replace(new RegExp(`${separator}.`, 'g'), sub => sub.charAt(1).toUpperCase());\n\nconst debounce = (func, interval = 16, immidiateOnly = true) => {\n let last = Date.now();\n let timeout = null;\n\n return (...args) => {\n clearTimeout(timeout);\n\n const dist = Date.now() - last;\n\n const fn = () => {\n last = Date.now();\n func(...args);\n };\n\n if (dist < interval) {\n // we need to delay by the difference between interval and dist\n // for example: if distance is 10 ms and interval is 16 ms,\n // we need to wait an additional 6ms before calling the function)\n if (!immidiateOnly) {\n timeout = setTimeout(fn, interval - dist);\n }\n } else {\n // go!\n fn();\n }\n };\n};\n\nconst MAX_FILES_LIMIT = 1000000;\n\nconst prevent = e => e.preventDefault();\n\nconst create$e = ({ root, props }) => {\n // Add id\n const id = root.query('GET_ID');\n if (id) {\n root.element.id = id;\n }\n\n // Add className\n const className = root.query('GET_CLASS_NAME');\n if (className) {\n className\n .split(' ')\n .filter(name => name.length)\n .forEach(name => {\n root.element.classList.add(name);\n });\n }\n\n // Field label\n root.ref.label = root.appendChildView(\n root.createChildView(dropLabel, {\n ...props,\n translateY: null,\n caption: root.query('GET_LABEL_IDLE'),\n })\n );\n\n // List of items\n root.ref.list = root.appendChildView(root.createChildView(listScroller, { translateY: null }));\n\n // Background panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'panel-root' }));\n\n // Assistant notifies assistive tech when content changes\n root.ref.assistant = root.appendChildView(root.createChildView(assistant, { ...props }));\n\n // Data\n root.ref.data = root.appendChildView(root.createChildView(data, { ...props }));\n\n // Measure (tests if fixed height was set)\n // DOCTYPE needs to be set for this to work\n root.ref.measure = createElement$1('div');\n root.ref.measure.style.height = '100%';\n root.element.appendChild(root.ref.measure);\n\n // information on the root height or fixed height status\n root.ref.bounds = null;\n\n // apply initial style properties\n root.query('GET_STYLES')\n .filter(style => !isEmpty(style.value))\n .map(({ name, value }) => {\n root.element.dataset[name] = value;\n });\n\n // determine if width changed\n root.ref.widthPrevious = null;\n root.ref.widthUpdated = debounce(() => {\n root.ref.updateHistory = [];\n root.dispatch('DID_RESIZE_ROOT');\n }, 250);\n\n // history of updates\n root.ref.previousAspectRatio = null;\n root.ref.updateHistory = [];\n\n // prevent scrolling and zooming on iOS (only if supports pointer events, for then we can enable reorder)\n const canHover = window.matchMedia('(pointer: fine) and (hover: hover)').matches;\n const hasPointerEvents = 'PointerEvent' in window;\n if (root.query('GET_ALLOW_REORDER') && hasPointerEvents && !canHover) {\n root.element.addEventListener('touchmove', prevent, { passive: false });\n root.element.addEventListener('gesturestart', prevent);\n }\n\n // add credits\n const credits = root.query('GET_CREDITS');\n const hasCredits = credits.length === 2;\n if (hasCredits) {\n const frag = document.createElement('a');\n frag.className = 'filepond--credits';\n frag.href = credits[0];\n frag.tabIndex = -1;\n frag.target = '_blank';\n frag.rel = 'noopener noreferrer nofollow';\n frag.textContent = credits[1];\n root.element.appendChild(frag);\n root.ref.credits = frag;\n }\n};\n\nconst write$9 = ({ root, props, actions }) => {\n // route actions\n route$5({ root, props, actions });\n\n // apply style properties\n actions\n .filter(action => /^DID_SET_STYLE_/.test(action.type))\n .filter(action => !isEmpty(action.data.value))\n .map(({ type, data }) => {\n const name = toCamels(type.substring(8).toLowerCase(), '_');\n root.element.dataset[name] = data.value;\n root.invalidateLayout();\n });\n\n if (root.rect.element.hidden) return;\n\n if (root.rect.element.width !== root.ref.widthPrevious) {\n root.ref.widthPrevious = root.rect.element.width;\n root.ref.widthUpdated();\n }\n\n // get box bounds, we do this only once\n let bounds = root.ref.bounds;\n if (!bounds) {\n bounds = root.ref.bounds = calculateRootBoundingBoxHeight(root);\n\n // destroy measure element\n root.element.removeChild(root.ref.measure);\n root.ref.measure = null;\n }\n\n // get quick references to various high level parts of the upload tool\n const { hopper, label, list, panel } = root.ref;\n\n // sets correct state to hopper scope\n if (hopper) {\n hopper.updateHopperState();\n }\n\n // bool to indicate if we're full or not\n const aspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n const isMultiItem = root.query('GET_ALLOW_MULTIPLE');\n const totalItems = root.query('GET_TOTAL_ITEMS');\n const maxItems = isMultiItem ? root.query('GET_MAX_FILES') || MAX_FILES_LIMIT : 1;\n const atMaxCapacity = totalItems === maxItems;\n\n // action used to add item\n const addAction = actions.find(action => action.type === 'DID_ADD_ITEM');\n\n // if reached max capacity and we've just reached it\n if (atMaxCapacity && addAction) {\n // get interaction type\n const interactionMethod = addAction.data.interactionMethod;\n\n // hide label\n label.opacity = 0;\n\n if (isMultiItem) {\n label.translateY = -40;\n } else {\n if (interactionMethod === InteractionMethod.API) {\n label.translateX = 40;\n } else if (interactionMethod === InteractionMethod.BROWSE) {\n label.translateY = 40;\n } else {\n label.translateY = 30;\n }\n }\n } else if (!atMaxCapacity) {\n label.opacity = 1;\n label.translateX = 0;\n label.translateY = 0;\n }\n\n const listItemMargin = calculateListItemMargin(root);\n\n const listHeight = calculateListHeight(root);\n\n const labelHeight = label.rect.element.height;\n const currentLabelHeight = !isMultiItem || atMaxCapacity ? 0 : labelHeight;\n\n const listMarginTop = atMaxCapacity ? list.rect.element.marginTop : 0;\n const listMarginBottom = totalItems === 0 ? 0 : list.rect.element.marginBottom;\n\n const visualHeight = currentLabelHeight + listMarginTop + listHeight.visual + listMarginBottom;\n const boundsHeight = currentLabelHeight + listMarginTop + listHeight.bounds + listMarginBottom;\n\n // link list to label bottom position\n list.translateY =\n Math.max(0, currentLabelHeight - list.rect.element.marginTop) - listItemMargin.top;\n\n if (aspectRatio) {\n // fixed aspect ratio\n\n // calculate height based on width\n const width = root.rect.element.width;\n const height = width * aspectRatio;\n\n // clear history if aspect ratio has changed\n if (aspectRatio !== root.ref.previousAspectRatio) {\n root.ref.previousAspectRatio = aspectRatio;\n root.ref.updateHistory = [];\n }\n\n // remember this width\n const history = root.ref.updateHistory;\n history.push(width);\n\n const MAX_BOUNCES = 2;\n if (history.length > MAX_BOUNCES * 2) {\n const l = history.length;\n const bottom = l - 10;\n let bounces = 0;\n for (let i = l; i >= bottom; i--) {\n if (history[i] === history[i - 2]) {\n bounces++;\n }\n\n if (bounces >= MAX_BOUNCES) {\n // dont adjust height\n return;\n }\n }\n }\n\n // fix height of panel so it adheres to aspect ratio\n panel.scalable = false;\n panel.height = height;\n\n // available height for list\n const listAvailableHeight =\n // the height of the panel minus the label height\n height -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n if (listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = height;\n } else if (bounds.fixedHeight) {\n // fixed height\n\n // fix height of panel\n panel.scalable = false;\n\n // available height for list\n const listAvailableHeight =\n // the height of the panel minus the label height\n bounds.fixedHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height\n if (listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // no need to set container bounds as these are handles by CSS fixed height\n } else if (bounds.cappedHeight) {\n // max-height\n\n // not a fixed height panel\n const isCappedHeight = visualHeight >= bounds.cappedHeight;\n const panelHeight = Math.min(bounds.cappedHeight, visualHeight);\n panel.scalable = true;\n panel.height = isCappedHeight\n ? panelHeight\n : panelHeight - listItemMargin.top - listItemMargin.bottom;\n\n // available height for list\n const listAvailableHeight =\n // the height of the panel minus the label height\n panelHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height (if is overflowing)\n if (visualHeight > bounds.cappedHeight && listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.min(\n bounds.cappedHeight,\n boundsHeight - listItemMargin.top - listItemMargin.bottom\n );\n } else {\n // flexible height\n\n // not a fixed height panel\n const itemMargin = totalItems > 0 ? listItemMargin.top + listItemMargin.bottom : 0;\n panel.scalable = true;\n panel.height = Math.max(labelHeight, visualHeight - itemMargin);\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.max(labelHeight, boundsHeight - itemMargin);\n }\n\n // move credits to bottom\n if (root.ref.credits && panel.heightCurrent)\n root.ref.credits.style.transform = `translateY(${panel.heightCurrent}px)`;\n};\n\nconst calculateListItemMargin = root => {\n const item = root.ref.list.childViews[0].childViews[0];\n return item\n ? {\n top: item.rect.element.marginTop,\n bottom: item.rect.element.marginBottom,\n }\n : {\n top: 0,\n bottom: 0,\n };\n};\n\nconst calculateListHeight = root => {\n let visual = 0;\n let bounds = 0;\n\n // get file list reference\n const scrollList = root.ref.list;\n const itemList = scrollList.childViews[0];\n const visibleChildren = itemList.childViews.filter(child => child.rect.element.height);\n const children = root\n .query('GET_ACTIVE_ITEMS')\n .map(item => visibleChildren.find(child => child.id === item.id))\n .filter(item => item);\n\n // no children, done!\n if (children.length === 0) return { visual, bounds };\n\n const horizontalSpace = itemList.rect.element.width;\n const dragIndex = getItemIndexByPosition(itemList, children, scrollList.dragCoordinates);\n\n const childRect = children[0].rect.element;\n\n const itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n const itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n\n const itemWidth = childRect.width + itemHorizontalMargin;\n const itemHeight = childRect.height + itemVerticalMargin;\n\n const newItem = typeof dragIndex !== 'undefined' && dragIndex >= 0 ? 1 : 0;\n const removedItem = children.find(child => child.markedForRemoval && child.opacity < 0.45)\n ? -1\n : 0;\n const verticalItemCount = children.length + newItem + removedItem;\n const itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n children.forEach(item => {\n const height = item.rect.element.height + itemVerticalMargin;\n bounds += height;\n visual += height * item.opacity;\n });\n }\n // grid\n else {\n bounds = Math.ceil(verticalItemCount / itemsPerRow) * itemHeight;\n visual = bounds;\n }\n\n return { visual, bounds };\n};\n\nconst calculateRootBoundingBoxHeight = root => {\n const height = root.ref.measureHeight || null;\n const cappedHeight = parseInt(root.style.maxHeight, 10) || null;\n const fixedHeight = height === 0 ? null : height;\n\n return {\n cappedHeight,\n fixedHeight,\n };\n};\n\nconst exceedsMaxFiles = (root, items) => {\n const allowReplace = root.query('GET_ALLOW_REPLACE');\n const allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n const totalItems = root.query('GET_TOTAL_ITEMS');\n let maxItems = root.query('GET_MAX_FILES');\n\n // total amount of items being dragged\n const totalBrowseItems = items.length;\n\n // if does not allow multiple items and dragging more than one item\n if (!allowMultiple && totalBrowseItems > 1) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n return true;\n }\n\n // limit max items to one if not allowed to drop multiple items\n maxItems = allowMultiple ? maxItems : 1;\n\n if (!allowMultiple && allowReplace) {\n // There is only one item, so there is room to replace or add an item\n return false;\n }\n\n // no more room?\n const hasMaxItems = isInt(maxItems);\n if (hasMaxItems && totalItems + totalBrowseItems > maxItems) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n return true;\n }\n\n return false;\n};\n\nconst getDragIndex = (list, children, position) => {\n const itemList = list.childViews[0];\n return getItemIndexByPosition(itemList, children, {\n left: position.scopeLeft - itemList.rect.element.left,\n top:\n position.scopeTop -\n (list.rect.outer.top + list.rect.element.marginTop + list.rect.element.scrollTop),\n });\n};\n\n/**\n * Enable or disable file drop functionality\n */\nconst toggleDrop = root => {\n const isAllowed = root.query('GET_ALLOW_DROP');\n const isDisabled = root.query('GET_DISABLED');\n const enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.hopper) {\n const hopper = createHopper(\n root.element,\n items => {\n // allow quick validation of dropped items\n const beforeDropFile = root.query('GET_BEFORE_DROP_FILE') || (() => true);\n\n // all items should be validated by all filters as valid\n const dropValidation = root.query('GET_DROP_VALIDATION');\n return dropValidation\n ? items.every(\n item =>\n applyFilters('ALLOW_HOPPER_ITEM', item, {\n query: root.query,\n }).every(result => result === true) && beforeDropFile(item)\n )\n : true;\n },\n {\n filterItems: items => {\n const ignoredFiles = root.query('GET_IGNORED_FILES');\n return items.filter(item => {\n if (isFile(item)) {\n return !ignoredFiles.includes(item.name.toLowerCase());\n }\n return true;\n });\n },\n catchesDropsOnPage: root.query('GET_DROP_ON_PAGE'),\n requiresDropOnElement: root.query('GET_DROP_ON_ELEMENT'),\n }\n );\n\n hopper.onload = (items, position) => {\n // get item children elements and sort based on list sort\n const list = root.ref.list.childViews[0];\n const visibleChildren = list.childViews.filter(child => child.rect.element.height);\n const children = root\n .query('GET_ACTIVE_ITEMS')\n .map(item => visibleChildren.find(child => child.id === item.id))\n .filter(item => item);\n\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(queue => {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // go\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: getDragIndex(root.ref.list, children, position),\n interactionMethod: InteractionMethod.DROP,\n });\n });\n\n root.dispatch('DID_DROP', { position });\n\n root.dispatch('DID_END_DRAG', { position });\n };\n\n hopper.ondragstart = position => {\n root.dispatch('DID_START_DRAG', { position });\n };\n\n hopper.ondrag = debounce(position => {\n root.dispatch('DID_DRAG', { position });\n });\n\n hopper.ondragend = position => {\n root.dispatch('DID_END_DRAG', { position });\n };\n\n root.ref.hopper = hopper;\n\n root.ref.drip = root.appendChildView(root.createChildView(drip));\n } else if (!enabled && root.ref.hopper) {\n root.ref.hopper.destroy();\n root.ref.hopper = null;\n root.removeChildView(root.ref.drip);\n }\n};\n\n/**\n * Enable or disable browse functionality\n */\nconst toggleBrowse = (root, props) => {\n const isAllowed = root.query('GET_ALLOW_BROWSE');\n const isDisabled = root.query('GET_DISABLED');\n const enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.browser) {\n root.ref.browser = root.appendChildView(\n root.createChildView(browser, {\n ...props,\n onload: items => {\n applyFilterChain('ADD_ITEMS', items, {\n dispatch: root.dispatch,\n }).then(queue => {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.BROWSE,\n });\n });\n },\n }),\n 0\n );\n } else if (!enabled && root.ref.browser) {\n root.removeChildView(root.ref.browser);\n root.ref.browser = null;\n }\n};\n\n/**\n * Enable or disable paste functionality\n */\nconst togglePaste = root => {\n const isAllowed = root.query('GET_ALLOW_PASTE');\n const isDisabled = root.query('GET_DISABLED');\n const enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.paster) {\n root.ref.paster = createPaster();\n root.ref.paster.onload = items => {\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(queue => {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.PASTE,\n });\n });\n };\n } else if (!enabled && root.ref.paster) {\n root.ref.paster.destroy();\n root.ref.paster = null;\n }\n};\n\n/**\n * Route actions\n */\nconst route$5 = createRoute({\n DID_SET_ALLOW_BROWSE: ({ root, props }) => {\n toggleBrowse(root, props);\n },\n DID_SET_ALLOW_DROP: ({ root }) => {\n toggleDrop(root);\n },\n DID_SET_ALLOW_PASTE: ({ root }) => {\n togglePaste(root);\n },\n DID_SET_DISABLED: ({ root, props }) => {\n toggleDrop(root);\n togglePaste(root);\n toggleBrowse(root, props);\n const isDisabled = root.query('GET_DISABLED');\n if (isDisabled) {\n root.element.dataset.disabled = 'disabled';\n } else {\n // delete root.element.dataset.disabled; <= this does not work on iOS 10\n root.element.removeAttribute('data-disabled');\n }\n },\n});\n\nconst root = createView({\n name: 'root',\n read: ({ root }) => {\n if (root.ref.measure) {\n root.ref.measureHeight = root.ref.measure.offsetHeight;\n }\n },\n create: create$e,\n write: write$9,\n destroy: ({ root }) => {\n if (root.ref.paster) {\n root.ref.paster.destroy();\n }\n if (root.ref.hopper) {\n root.ref.hopper.destroy();\n }\n root.element.removeEventListener('touchmove', prevent);\n root.element.removeEventListener('gesturestart', prevent);\n },\n mixins: {\n styles: ['height'],\n },\n});\n\n// creates the app\nconst createApp = (initialOptions = {}) => {\n // let element\n let originalElement = null;\n\n // get default options\n const defaultOptions = getOptions();\n\n // create the data store, this will contain all our app info\n const store = createStore(\n // initial state (should be serializable)\n createInitialState(defaultOptions),\n\n // queries\n [queries, createOptionQueries(defaultOptions)],\n\n // action handlers\n [actions, createOptionActions(defaultOptions)]\n );\n\n // set initial options\n store.dispatch('SET_OPTIONS', { options: initialOptions });\n\n // kick thread if visibility changes\n const visibilityHandler = () => {\n if (document.hidden) return;\n store.dispatch('KICK');\n };\n document.addEventListener('visibilitychange', visibilityHandler);\n\n // re-render on window resize start and finish\n let resizeDoneTimer = null;\n let isResizing = false;\n let isResizingHorizontally = false;\n let initialWindowWidth = null;\n let currentWindowWidth = null;\n const resizeHandler = () => {\n if (!isResizing) {\n isResizing = true;\n }\n clearTimeout(resizeDoneTimer);\n resizeDoneTimer = setTimeout(() => {\n isResizing = false;\n initialWindowWidth = null;\n currentWindowWidth = null;\n if (isResizingHorizontally) {\n isResizingHorizontally = false;\n store.dispatch('DID_STOP_RESIZE');\n }\n }, 500);\n };\n window.addEventListener('resize', resizeHandler);\n\n // render initial view\n const view = root(store, { id: getUniqueId() });\n\n //\n // PRIVATE API -------------------------------------------------------------------------------------\n //\n let isResting = false;\n let isHidden = false;\n\n const readWriteApi = {\n // necessary for update loop\n\n /**\n * Reads from dom (never call manually)\n * @private\n */\n _read: () => {\n // test if we're resizing horizontally\n // TODO: see if we can optimize this by measuring root rect\n if (isResizing) {\n currentWindowWidth = window.innerWidth;\n if (!initialWindowWidth) {\n initialWindowWidth = currentWindowWidth;\n }\n\n if (!isResizingHorizontally && currentWindowWidth !== initialWindowWidth) {\n store.dispatch('DID_START_RESIZE');\n isResizingHorizontally = true;\n }\n }\n\n if (isHidden && isResting) {\n // test if is no longer hidden\n isResting = view.element.offsetParent === null;\n }\n\n // if resting, no need to read as numbers will still all be correct\n if (isResting) return;\n\n // read view data\n view._read();\n\n // if is hidden we need to know so we exit rest mode when revealed\n isHidden = view.rect.element.hidden;\n },\n\n /**\n * Writes to dom (never call manually)\n * @private\n */\n _write: ts => {\n // get all actions from store\n const actions = store\n .processActionQueue()\n\n // filter out set actions (these will automatically trigger DID_SET)\n .filter(action => !/^SET_/.test(action.type));\n\n // if was idling and no actions stop here\n if (isResting && !actions.length) return;\n\n // some actions might trigger events\n routeActionsToEvents(actions);\n\n // update the view\n isResting = view._write(ts, actions, isResizingHorizontally);\n\n // will clean up all archived items\n removeReleasedItems(store.query('GET_ITEMS'));\n\n // now idling\n if (isResting) {\n store.processDispatchQueue();\n }\n },\n };\n\n //\n // EXPOSE EVENTS -------------------------------------------------------------------------------------\n //\n const createEvent = name => data => {\n // create default event\n const event = {\n type: name,\n };\n\n // no data to add\n if (!data) {\n return event;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('error')) {\n event.error = data.error ? { ...data.error } : null;\n }\n\n if (data.status) {\n event.status = { ...data.status };\n }\n\n if (data.file) {\n event.output = data.file;\n }\n\n // only source is available, else add item if possible\n if (data.source) {\n event.file = data.source;\n } else if (data.item || data.id) {\n const item = data.item ? data.item : store.query('GET_ITEM', data.id);\n event.file = item ? createItemAPI(item) : null;\n }\n\n // map all items in a possible items array\n if (data.items) {\n event.items = data.items.map(createItemAPI);\n }\n\n // if this is a progress event add the progress amount\n if (/progress/.test(name)) {\n event.progress = data.progress;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('origin') && data.hasOwnProperty('target')) {\n event.origin = data.origin;\n event.target = data.target;\n }\n\n return event;\n };\n\n const eventRoutes = {\n DID_DESTROY: createEvent('destroy'),\n\n DID_INIT: createEvent('init'),\n\n DID_THROW_MAX_FILES: createEvent('warning'),\n\n DID_INIT_ITEM: createEvent('initfile'),\n DID_START_ITEM_LOAD: createEvent('addfilestart'),\n DID_UPDATE_ITEM_LOAD_PROGRESS: createEvent('addfileprogress'),\n DID_LOAD_ITEM: createEvent('addfile'),\n\n DID_THROW_ITEM_INVALID: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_LOAD_ERROR: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_REMOVE_ERROR: [createEvent('error'), createEvent('removefile')],\n\n DID_PREPARE_OUTPUT: createEvent('preparefile'),\n\n DID_START_ITEM_PROCESSING: createEvent('processfilestart'),\n DID_UPDATE_ITEM_PROCESS_PROGRESS: createEvent('processfileprogress'),\n DID_ABORT_ITEM_PROCESSING: createEvent('processfileabort'),\n DID_COMPLETE_ITEM_PROCESSING: createEvent('processfile'),\n DID_COMPLETE_ITEM_PROCESSING_ALL: createEvent('processfiles'),\n DID_REVERT_ITEM_PROCESSING: createEvent('processfilerevert'),\n\n DID_THROW_ITEM_PROCESSING_ERROR: [createEvent('error'), createEvent('processfile')],\n\n DID_REMOVE_ITEM: createEvent('removefile'),\n\n DID_UPDATE_ITEMS: createEvent('updatefiles'),\n\n DID_ACTIVATE_ITEM: createEvent('activatefile'),\n\n DID_REORDER_ITEMS: createEvent('reorderfiles'),\n };\n\n const exposeEvent = event => {\n // create event object to be dispatched\n const detail = { pond: exports, ...event };\n delete detail.type;\n view.element.dispatchEvent(\n new CustomEvent(`FilePond:${event.type}`, {\n // event info\n detail,\n\n // event behaviour\n bubbles: true,\n cancelable: true,\n composed: true, // triggers listeners outside of shadow root\n })\n );\n\n // event object to params used for `on()` event handlers and callbacks `oninit()`\n const params = [];\n\n // if is possible error event, make it the first param\n if (event.hasOwnProperty('error')) {\n params.push(event.error);\n }\n\n // file is always section\n if (event.hasOwnProperty('file')) {\n params.push(event.file);\n }\n\n // append other props\n const filtered = ['type', 'error', 'file'];\n Object.keys(event)\n .filter(key => !filtered.includes(key))\n .forEach(key => params.push(event[key]));\n\n // on(type, () => { })\n exports.fire(event.type, ...params);\n\n // oninit = () => {}\n const handler = store.query(`GET_ON${event.type.toUpperCase()}`);\n if (handler) {\n handler(...params);\n }\n };\n\n const routeActionsToEvents = actions => {\n if (!actions.length) return;\n actions\n .filter(action => eventRoutes[action.type])\n .forEach(action => {\n const routes = eventRoutes[action.type];\n (Array.isArray(routes) ? routes : [routes]).forEach(route => {\n // this isn't fantastic, but because of the stacking of settimeouts plugins can handle the did_load before the did_init\n if (action.type === 'DID_INIT_ITEM') {\n exposeEvent(route(action.data));\n } else {\n setTimeout(() => {\n exposeEvent(route(action.data));\n }, 0);\n }\n });\n });\n };\n\n //\n // PUBLIC API -------------------------------------------------------------------------------------\n //\n const setOptions = options => store.dispatch('SET_OPTIONS', { options });\n\n const getFile = query => store.query('GET_ACTIVE_ITEM', query);\n\n const prepareFile = query =>\n new Promise((resolve, reject) => {\n store.dispatch('REQUEST_ITEM_PREPARE', {\n query,\n success: item => {\n resolve(item);\n },\n failure: error => {\n reject(error);\n },\n });\n });\n\n const addFile = (source, options = {}) =>\n new Promise((resolve, reject) => {\n addFiles([{ source, options }], { index: options.index })\n .then(items => resolve(items && items[0]))\n .catch(reject);\n });\n\n const isFilePondFile = obj => obj.file && obj.id;\n\n const removeFile = (query, options) => {\n // if only passed options\n if (typeof query === 'object' && !isFilePondFile(query) && !options) {\n options = query;\n query = undefined;\n }\n\n // request item removal\n store.dispatch('REMOVE_ITEM', { ...options, query });\n\n // see if item has been removed\n return store.query('GET_ACTIVE_ITEM', query) === null;\n };\n\n const addFiles = (...args) =>\n new Promise((resolve, reject) => {\n const sources = [];\n const options = {};\n\n // user passed a sources array\n if (isArray(args[0])) {\n sources.push.apply(sources, args[0]);\n Object.assign(options, args[1] || {});\n } else {\n // user passed sources as arguments, last one might be options object\n const lastArgument = args[args.length - 1];\n if (typeof lastArgument === 'object' && !(lastArgument instanceof Blob)) {\n Object.assign(options, args.pop());\n }\n\n // add rest to sources\n sources.push(...args);\n }\n\n store.dispatch('ADD_ITEMS', {\n items: sources,\n index: options.index,\n interactionMethod: InteractionMethod.API,\n success: resolve,\n failure: reject,\n });\n });\n\n const getFiles = () => store.query('GET_ACTIVE_ITEMS');\n\n const processFile = query =>\n new Promise((resolve, reject) => {\n store.dispatch('REQUEST_ITEM_PROCESSING', {\n query,\n success: item => {\n resolve(item);\n },\n failure: error => {\n reject(error);\n },\n });\n });\n\n const prepareFiles = (...args) => {\n const queries = Array.isArray(args[0]) ? args[0] : args;\n const items = queries.length ? queries : getFiles();\n return Promise.all(items.map(prepareFile));\n };\n\n const processFiles = (...args) => {\n const queries = Array.isArray(args[0]) ? args[0] : args;\n if (!queries.length) {\n const files = getFiles().filter(\n item =>\n !(item.status === ItemStatus.IDLE && item.origin === FileOrigin.LOCAL) &&\n item.status !== ItemStatus.PROCESSING &&\n item.status !== ItemStatus.PROCESSING_COMPLETE &&\n item.status !== ItemStatus.PROCESSING_REVERT_ERROR\n );\n return Promise.all(files.map(processFile));\n }\n return Promise.all(queries.map(processFile));\n };\n\n const removeFiles = (...args) => {\n const queries = Array.isArray(args[0]) ? args[0] : args;\n\n let options;\n if (typeof queries[queries.length - 1] === 'object') {\n options = queries.pop();\n } else if (Array.isArray(args[0])) {\n options = args[1];\n }\n\n const files = getFiles();\n\n if (!queries.length) return Promise.all(files.map(file => removeFile(file, options)));\n\n // when removing by index the indexes shift after each file removal so we need to convert indexes to ids\n const mappedQueries = queries\n .map(query => (isNumber(query) ? (files[query] ? files[query].id : null) : query))\n .filter(query => query);\n\n return mappedQueries.map(q => removeFile(q, options));\n };\n\n const exports = {\n // supports events\n ...on(),\n\n // inject private api methods\n ...readWriteApi,\n\n // inject all getters and setters\n ...createOptionAPI(store, defaultOptions),\n\n /**\n * Override options defined in options object\n * @param options\n */\n setOptions,\n\n /**\n * Load the given file\n * @param source - the source of the file (either a File, base64 data uri or url)\n * @param options - object, { index: 0 }\n */\n addFile,\n\n /**\n * Load the given files\n * @param sources - the sources of the files to load\n * @param options - object, { index: 0 }\n */\n addFiles,\n\n /**\n * Returns the file objects matching the given query\n * @param query { string, number, null }\n */\n getFile,\n\n /**\n * Upload file with given name\n * @param query { string, number, null }\n */\n processFile,\n\n /**\n * Request prepare output for file with given name\n * @param query { string, number, null }\n */\n prepareFile,\n\n /**\n * Removes a file by its name\n * @param query { string, number, null }\n */\n removeFile,\n\n /**\n * Moves a file to a new location in the files list\n */\n moveFile: (query, index) => store.dispatch('MOVE_ITEM', { query, index }),\n\n /**\n * Returns all files (wrapped in public api)\n */\n getFiles,\n\n /**\n * Starts uploading all files\n */\n processFiles,\n\n /**\n * Clears all files from the files list\n */\n removeFiles,\n\n /**\n * Starts preparing output of all files\n */\n prepareFiles,\n\n /**\n * Sort list of files\n */\n sort: compare => store.dispatch('SORT', { compare }),\n\n /**\n * Browse the file system for a file\n */\n browse: () => {\n // needs to be trigger directly as user action needs to be traceable (is not traceable in requestAnimationFrame)\n var input = view.element.querySelector('input[type=file]');\n if (input) {\n input.click();\n }\n },\n\n /**\n * Destroys the app\n */\n destroy: () => {\n // request destruction\n exports.fire('destroy', view.element);\n\n // stop active processes (file uploads, fetches, stuff like that)\n // loop over items and depending on states call abort for ongoing processes\n store.dispatch('ABORT_ALL');\n\n // destroy view\n view._destroy();\n\n // stop listening to resize\n window.removeEventListener('resize', resizeHandler);\n\n // stop listening to the visiblitychange event\n document.removeEventListener('visibilitychange', visibilityHandler);\n\n // dispatch destroy\n store.dispatch('DID_DESTROY');\n },\n\n /**\n * Inserts the plugin before the target element\n */\n insertBefore: element => insertBefore(view.element, element),\n\n /**\n * Inserts the plugin after the target element\n */\n insertAfter: element => insertAfter(view.element, element),\n\n /**\n * Appends the plugin to the target element\n */\n appendTo: element => element.appendChild(view.element),\n\n /**\n * Replaces an element with the app\n */\n replaceElement: element => {\n // insert the app before the element\n insertBefore(view.element, element);\n\n // remove the original element\n element.parentNode.removeChild(element);\n\n // remember original element\n originalElement = element;\n },\n\n /**\n * Restores the original element\n */\n restoreElement: () => {\n if (!originalElement) {\n return; // no element to restore\n }\n\n // restore original element\n insertAfter(originalElement, view.element);\n\n // remove our element\n view.element.parentNode.removeChild(view.element);\n\n // remove reference\n originalElement = null;\n },\n\n /**\n * Returns true if the app root is attached to given element\n * @param element\n */\n isAttachedTo: element => view.element === element || originalElement === element,\n\n /**\n * Returns the root element\n */\n element: {\n get: () => view.element,\n },\n\n /**\n * Returns the current pond status\n */\n status: {\n get: () => store.query('GET_STATUS'),\n },\n };\n\n // Done!\n store.dispatch('DID_INIT');\n\n // create actual api object\n return createObject(exports);\n};\n\nconst createAppObject = (customOptions = {}) => {\n // default options\n const defaultOptions = {};\n forin(getOptions(), (key, value) => {\n defaultOptions[key] = value[0];\n });\n\n // set app options\n const app = createApp({\n // default options\n ...defaultOptions,\n\n // custom options\n ...customOptions,\n });\n\n // return the plugin instance\n return app;\n};\n\nconst lowerCaseFirstLetter = string => string.charAt(0).toLowerCase() + string.slice(1);\n\nconst attributeNameToPropertyName = attributeName => toCamels(attributeName.replace(/^data-/, ''));\n\nconst mapObject = (object, propertyMap) => {\n // remove unwanted\n forin(propertyMap, (selector, mapping) => {\n forin(object, (property, value) => {\n // create regexp shortcut\n const selectorRegExp = new RegExp(selector);\n\n // tests if\n const matches = selectorRegExp.test(property);\n\n // no match, skip\n if (!matches) {\n return;\n }\n\n // if there's a mapping, the original property is always removed\n delete object[property];\n\n // should only remove, we done!\n if (mapping === false) {\n return;\n }\n\n // move value to new property\n if (isString(mapping)) {\n object[mapping] = value;\n return;\n }\n\n // move to group\n const group = mapping.group;\n if (isObject(mapping) && !object[group]) {\n object[group] = {};\n }\n\n object[group][lowerCaseFirstLetter(property.replace(selectorRegExp, ''))] = value;\n });\n\n // do submapping\n if (mapping.mapping) {\n mapObject(object[mapping.group], mapping.mapping);\n }\n });\n};\n\nconst getAttributesAsObject = (node, attributeMapping = {}) => {\n // turn attributes into object\n const attributes = [];\n forin(node.attributes, index => {\n attributes.push(node.attributes[index]);\n });\n\n const output = attributes\n .filter(attribute => attribute.name)\n .reduce((obj, attribute) => {\n const value = attr(node, attribute.name);\n\n obj[attributeNameToPropertyName(attribute.name)] =\n value === attribute.name ? true : value;\n return obj;\n }, {});\n\n // do mapping of object properties\n mapObject(output, attributeMapping);\n\n return output;\n};\n\nconst createAppAtElement = (element, options = {}) => {\n // how attributes of the input element are mapped to the options for the plugin\n const attributeMapping = {\n // translate to other name\n '^class$': 'className',\n '^multiple$': 'allowMultiple',\n '^capture$': 'captureMethod',\n '^webkitdirectory$': 'allowDirectoriesOnly',\n\n // group under single property\n '^server': {\n group: 'server',\n mapping: {\n '^process': {\n group: 'process',\n },\n '^revert': {\n group: 'revert',\n },\n '^fetch': {\n group: 'fetch',\n },\n '^restore': {\n group: 'restore',\n },\n '^load': {\n group: 'load',\n },\n },\n },\n\n // don't include in object\n '^type$': false,\n '^files$': false,\n };\n\n // add additional option translators\n applyFilters('SET_ATTRIBUTE_TO_OPTION_MAP', attributeMapping);\n\n // create final options object by setting options object and then overriding options supplied on element\n const mergedOptions = {\n ...options,\n };\n\n const attributeOptions = getAttributesAsObject(\n element.nodeName === 'FIELDSET' ? element.querySelector('input[type=file]') : element,\n attributeMapping\n );\n\n // merge with options object\n Object.keys(attributeOptions).forEach(key => {\n if (isObject(attributeOptions[key])) {\n if (!isObject(mergedOptions[key])) {\n mergedOptions[key] = {};\n }\n Object.assign(mergedOptions[key], attributeOptions[key]);\n } else {\n mergedOptions[key] = attributeOptions[key];\n }\n });\n\n // if parent is a fieldset, get files from parent by selecting all input fields that are not file upload fields\n // these will then be automatically set to the initial files\n mergedOptions.files = (options.files || []).concat(\n Array.from(element.querySelectorAll('input:not([type=file])')).map(input => ({\n source: input.value,\n options: {\n type: input.dataset.type,\n },\n }))\n );\n\n // build plugin\n const app = createAppObject(mergedOptions);\n\n // add already selected files\n if (element.files) {\n Array.from(element.files).forEach(file => {\n app.addFile(file);\n });\n }\n\n // replace the target element\n app.replaceElement(element);\n\n // expose\n return app;\n};\n\n// if an element is passed, we create the instance at that element, if not, we just create an up object\nconst createApp$1 = (...args) =>\n isNode(args[0]) ? createAppAtElement(...args) : createAppObject(...args);\n\nconst PRIVATE_METHODS = ['fire', '_read', '_write'];\n\nconst createAppAPI = app => {\n const api = {};\n\n copyObjectPropertiesToObject(app, api, PRIVATE_METHODS);\n\n return api;\n};\n\n/**\n * Replaces placeholders in given string with replacements\n * @param string - \"Foo {bar}\"\"\n * @param replacements - { \"bar\": 10 }\n */\nconst replaceInString = (string, replacements) =>\n string.replace(/(?:{([a-zA-Z]+)})/g, (match, group) => replacements[group]);\n\nconst createWorker = fn => {\n const workerBlob = new Blob(['(', fn.toString(), ')()'], {\n type: 'application/javascript',\n });\n const workerURL = URL.createObjectURL(workerBlob);\n const worker = new Worker(workerURL);\n\n return {\n transfer: (message, cb) => {},\n post: (message, cb, transferList) => {\n const id = getUniqueId();\n\n worker.onmessage = e => {\n if (e.data.id === id) {\n cb(e.data.message);\n }\n };\n\n worker.postMessage(\n {\n id,\n message,\n },\n transferList\n );\n },\n terminate: () => {\n worker.terminate();\n URL.revokeObjectURL(workerURL);\n },\n };\n};\n\nconst loadImage = url =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = e => {\n reject(e);\n };\n img.src = url;\n });\n\nconst renameFile = (file, name) => {\n const renamedFile = file.slice(0, file.size, file.type);\n renamedFile.lastModifiedDate = file.lastModifiedDate;\n renamedFile.name = name;\n return renamedFile;\n};\n\nconst copyFile = file => renameFile(file, file.name);\n\n// already registered plugins (can't register twice)\nconst registeredPlugins = [];\n\n// pass utils to plugin\nconst createAppPlugin = plugin => {\n // already registered\n if (registeredPlugins.includes(plugin)) {\n return;\n }\n\n // remember this plugin\n registeredPlugins.push(plugin);\n\n // setup!\n const pluginOutline = plugin({\n addFilter,\n utils: {\n Type,\n forin,\n isString,\n isFile,\n toNaturalFileSize,\n replaceInString,\n getExtensionFromFilename,\n getFilenameWithoutExtension,\n guesstimateMimeType,\n getFileFromBlob,\n getFilenameFromURL,\n createRoute,\n createWorker,\n createView,\n createItemAPI,\n loadImage,\n copyFile,\n renameFile,\n createBlob,\n applyFilterChain,\n text,\n getNumericAspectRatioFromString,\n },\n views: {\n fileActionButton,\n },\n });\n\n // add plugin options to default options\n extendDefaultOptions(pluginOutline.options);\n};\n\n// feature detection used by supported() method\nconst isOperaMini = () => Object.prototype.toString.call(window.operamini) === '[object OperaMini]';\nconst hasPromises = () => 'Promise' in window;\nconst hasBlobSlice = () => 'slice' in Blob.prototype;\nconst hasCreateObjectURL = () => 'URL' in window && 'createObjectURL' in window.URL;\nconst hasVisibility = () => 'visibilityState' in document;\nconst hasTiming = () => 'performance' in window; // iOS 8.x\nconst hasCSSSupports = () => 'supports' in (window.CSS || {}); // use to detect Safari 9+\nconst isIE11 = () => /MSIE|Trident/.test(window.navigator.userAgent);\n\nconst supported = (() => {\n // Runs immediately and then remembers result for subsequent calls\n const isSupported =\n // Has to be a browser\n isBrowser() &&\n // Can't run on Opera Mini due to lack of everything\n !isOperaMini() &&\n // Require these APIs to feature detect a modern browser\n hasVisibility() &&\n hasPromises() &&\n hasBlobSlice() &&\n hasCreateObjectURL() &&\n hasTiming() &&\n // doesn't need CSSSupports but is a good way to detect Safari 9+ (we do want to support IE11 though)\n (hasCSSSupports() || isIE11());\n\n return () => isSupported;\n})();\n\n/**\n * Plugin internal state (over all instances)\n */\nconst state = {\n // active app instances, used to redraw the apps and to find the later\n apps: [],\n};\n\n// plugin name\nconst name = 'filepond';\n\n/**\n * Public Plugin methods\n */\nconst fn = () => {};\nlet Status$1 = {};\nlet FileStatus = {};\nlet FileOrigin$1 = {};\nlet OptionTypes = {};\nlet create$f = fn;\nlet destroy = fn;\nlet parse = fn;\nlet find = fn;\nlet registerPlugin = fn;\nlet getOptions$1 = fn;\nlet setOptions$1 = fn;\n\n// if not supported, no API\nif (supported()) {\n // start painter and fire load event\n createPainter(\n () => {\n state.apps.forEach(app => app._read());\n },\n ts => {\n state.apps.forEach(app => app._write(ts));\n }\n );\n\n // fire loaded event so we know when FilePond is available\n const dispatch = () => {\n // let others know we have area ready\n document.dispatchEvent(\n new CustomEvent('FilePond:loaded', {\n detail: {\n supported,\n create: create$f,\n destroy,\n parse,\n find,\n registerPlugin,\n setOptions: setOptions$1,\n },\n })\n );\n\n // clean up event\n document.removeEventListener('DOMContentLoaded', dispatch);\n };\n\n if (document.readyState !== 'loading') {\n // move to back of execution queue, FilePond should have been exported by then\n setTimeout(() => dispatch(), 0);\n } else {\n document.addEventListener('DOMContentLoaded', dispatch);\n }\n\n // updates the OptionTypes object based on the current options\n const updateOptionTypes = () =>\n forin(getOptions(), (key, value) => {\n OptionTypes[key] = value[1];\n });\n\n Status$1 = { ...Status };\n FileOrigin$1 = { ...FileOrigin };\n FileStatus = { ...ItemStatus };\n\n OptionTypes = {};\n updateOptionTypes();\n\n // create method, creates apps and adds them to the app array\n create$f = (...args) => {\n const app = createApp$1(...args);\n app.on('destroy', destroy);\n state.apps.push(app);\n return createAppAPI(app);\n };\n\n // destroys apps and removes them from the app array\n destroy = hook => {\n // returns true if the app was destroyed successfully\n const indexToRemove = state.apps.findIndex(app => app.isAttachedTo(hook));\n if (indexToRemove >= 0) {\n // remove from apps\n const app = state.apps.splice(indexToRemove, 1)[0];\n\n // restore original dom element\n app.restoreElement();\n\n return true;\n }\n\n return false;\n };\n\n // parses the given context for plugins (does not include the context element itself)\n parse = context => {\n // get all possible hooks\n const matchedHooks = Array.from(context.querySelectorAll(`.${name}`));\n\n // filter out already active hooks\n const newHooks = matchedHooks.filter(\n newHook => !state.apps.find(app => app.isAttachedTo(newHook))\n );\n\n // create new instance for each hook\n return newHooks.map(hook => create$f(hook));\n };\n\n // returns an app based on the given element hook\n find = hook => {\n const app = state.apps.find(app => app.isAttachedTo(hook));\n if (!app) {\n return null;\n }\n return createAppAPI(app);\n };\n\n // adds a plugin extension\n registerPlugin = (...plugins) => {\n // register plugins\n plugins.forEach(createAppPlugin);\n\n // update OptionTypes, each plugin might have extended the default options\n updateOptionTypes();\n };\n\n getOptions$1 = () => {\n const opts = {};\n forin(getOptions(), (key, value) => {\n opts[key] = value[0];\n });\n return opts;\n };\n\n setOptions$1 = opts => {\n if (isObject(opts)) {\n // update existing plugins\n state.apps.forEach(app => {\n app.setOptions(opts);\n });\n\n // override defaults\n setOptions(opts);\n }\n\n // return new options\n return getOptions$1();\n };\n}\n\nexport {\n FileOrigin$1 as FileOrigin,\n FileStatus,\n OptionTypes,\n Status$1 as Status,\n create$f as create,\n destroy,\n find,\n getOptions$1 as getOptions,\n parse,\n registerPlugin,\n setOptions$1 as setOptions,\n supported,\n};\n","/*!\n * react-filepond v7.1.3\n * A handy FilePond adapter component for React\n * \n * Copyright (c) 2024 PQINA\n * https://pqina.nl/filepond\n * \n * Licensed under the MIT license.\n */\n\nimport React, { createElement, useCallback } from \"react\";\n\n// Import required methods and styles from the FilePond module, should not need anything else\nimport { create, supported, registerPlugin, FileStatus } from \"filepond\";\n\n// We need to be able to call the registerPlugin method directly so we can add plugins\nexport { registerPlugin, FileStatus };\n\n// Do this once\nconst isSupported = supported();\n\n// filtered methods\nconst filteredMethods = [\n \"setOptions\",\n \"on\",\n \"off\",\n \"onOnce\",\n \"appendTo\",\n \"insertAfter\",\n \"insertBefore\",\n \"isAttachedTo\",\n \"replaceElement\",\n \"restoreElement\",\n \"destroy\",\n];\n\n// The React <FilePond/> wrapper\nexport class FilePond extends React.Component {\n constructor(props) {\n super(props);\n this.allowFilesSync = true;\n }\n\n // Will setup FilePond instance when mounted\n componentDidMount() {\n // clone the input so we can restore it in unmount\n this._input = this._element.querySelector('input[type=\"file\"]');\n this._inputClone = this._input.cloneNode();\n\n // exit here if not supported\n if (!isSupported) return;\n\n const options = Object.assign({}, this.props);\n\n // if onupdate files is defined, make sure setFiles does not cause race condition\n if (options.onupdatefiles) {\n const cb = options.onupdatefiles;\n options.onupdatefiles = (items) => {\n this.allowFilesSync = false;\n cb(items);\n };\n }\n\n // Create our pond\n this._pond = create(this._input, options);\n\n // Reference pond methods to FilePond component instance\n Object.keys(this._pond)\n .filter((key) => !filteredMethods.includes(key))\n .forEach((key) => {\n this[key] = this._pond[key];\n });\n }\n\n // Will clean up FilePond instance when unmounted\n componentWillUnmount() {\n // exit when no pond defined\n if (!this._pond) return;\n\n // This fixed <Strict> errors\n\n // FilePond destroy is async so we have to move FilePond to a bin element so it can no longer affect current element tree as React unmount / mount is sync\n const bin = document.createElement(\"div\");\n bin.append(this._pond.element);\n bin.id = \"foo\";\n\n // now we call destroy so FilePond can start it's destroy logic\n this._pond.destroy();\n this._pond = undefined;\n\n // we re-add the original file input element so everything is as it was before\n this._element.append(this._inputClone);\n }\n\n shouldComponentUpdate() {\n if (!this.allowFilesSync) {\n this.allowFilesSync = true;\n return false;\n }\n return true;\n }\n\n // Something changed\n componentDidUpdate() {\n // exit when no pond defined\n if (!this._pond) return;\n\n const options = Object.assign({}, this.props);\n\n // this is only set onces, on didmount\n delete options.onupdatefiles;\n\n // update pond options based on new props\n this._pond.setOptions(options);\n }\n\n // Renders basic element hook for FilePond to attach to\n render() {\n const {\n id,\n name,\n className,\n allowMultiple,\n required,\n captureMethod,\n acceptedFileTypes,\n } = this.props;\n return createElement(\n \"div\",\n {\n className: \"filepond--wrapper\",\n ref: (element) => (this._element = element),\n },\n createElement(\"input\", {\n type: \"file\",\n name,\n id,\n accept: acceptedFileTypes,\n multiple: allowMultiple,\n required: required,\n className: className,\n capture: captureMethod,\n })\n );\n }\n}\n\n","/*!\n * FilePondPluginFileValidateSize 2.2.8\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\nconst plugin = ({ addFilter, utils }) => {\n // get quick reference to Type utils\n const { Type, replaceInString, toNaturalFileSize } = utils;\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', (file, { query }) => {\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return true;\n }\n\n const sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n return false;\n }\n\n const sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n return false;\n }\n\n return true;\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter(\n 'LOAD_FILE',\n (file, { query }) =>\n new Promise((resolve, reject) => {\n // if not allowed, all fine, exit\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return resolve(file);\n }\n\n // check if file should be filtered\n const fileFilter = query('GET_FILE_VALIDATE_SIZE_FILTER');\n if (fileFilter && !fileFilter(file)) {\n return resolve(file);\n }\n\n // reject or resolve based on file size\n const sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n sizeMax,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n return;\n }\n\n // reject or resolve based on file size\n const sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n reject({\n status: {\n main: query('GET_LABEL_MIN_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MIN_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n sizeMin,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n return;\n }\n\n // returns the current option value\n const totalSizeMax = query('GET_MAX_TOTAL_FILE_SIZE');\n if (totalSizeMax !== null) {\n // get the current total file size\n const currentTotalSize = query('GET_ACTIVE_ITEMS').reduce((total, item) => {\n return total + item.fileSize;\n }, 0);\n\n // get the size of the new file\n if (currentTotalSize > totalSizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_TOTAL_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n totalSizeMax,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n return;\n }\n }\n\n // file is fine, let's pass it back\n resolve(file);\n })\n );\n\n return {\n options: {\n // Enable or disable file type validation\n allowFileSizeValidation: [true, Type.BOOLEAN],\n\n // Max individual file size in bytes\n maxFileSize: [null, Type.INT],\n\n // Min individual file size in bytes\n minFileSize: [null, Type.INT],\n\n // Max total file size in bytes\n maxTotalFileSize: [null, Type.INT],\n\n // Filter the files that need to be validated for size\n fileValidateSizeFilter: [null, Type.FUNCTION],\n\n // error labels\n labelMinFileSizeExceeded: ['File is too small', Type.STRING],\n labelMinFileSize: ['Minimum file size is {filesize}', Type.STRING],\n\n labelMaxFileSizeExceeded: ['File is too large', Type.STRING],\n labelMaxFileSize: ['Maximum file size is {filesize}', Type.STRING],\n\n labelMaxTotalFileSizeExceeded: ['Maximum total size exceeded', Type.STRING],\n labelMaxTotalFileSize: ['Maximum total file size is {filesize}', Type.STRING],\n },\n };\n};\n\n// fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\nconst isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nif (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n}\n\nexport default plugin;\n","/*!\n * FilePondPluginFileValidateType 1.2.9\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\nconst plugin = ({ addFilter, utils }) => {\n // get quick reference to Type utils\n const {\n Type,\n isString,\n replaceInString,\n guesstimateMimeType,\n getExtensionFromFilename,\n getFilenameFromURL,\n } = utils;\n\n const mimeTypeMatchesWildCard = (mimeType, wildcard) => {\n const mimeTypeGroup = (/^[^/]+/.exec(mimeType) || []).pop(); // image/png -> image\n const wildcardGroup = wildcard.slice(0, -2); // image/* -> image\n return mimeTypeGroup === wildcardGroup;\n };\n\n const isValidMimeType = (acceptedTypes, userInputType) =>\n acceptedTypes.some(acceptedType => {\n // accepted is wildcard mime type\n if (/\\*$/.test(acceptedType)) {\n return mimeTypeMatchesWildCard(userInputType, acceptedType);\n }\n\n // is normal mime type\n return acceptedType === userInputType;\n });\n\n const getItemType = item => {\n // if the item is a url we guess the mime type by the extension\n let type = '';\n if (isString(item)) {\n const filename = getFilenameFromURL(item);\n const extension = getExtensionFromFilename(filename);\n if (extension) {\n type = guesstimateMimeType(extension);\n }\n } else {\n type = item.type;\n }\n\n return type;\n };\n\n const validateFile = (item, acceptedFileTypes, typeDetector) => {\n // no types defined, everything is allowed \\o/\n if (acceptedFileTypes.length === 0) {\n return true;\n }\n\n // gets the item type\n const type = getItemType(item);\n\n // no type detector, test now\n if (!typeDetector) {\n return isValidMimeType(acceptedFileTypes, type);\n }\n\n // use type detector\n return new Promise((resolve, reject) => {\n typeDetector(item, type)\n .then(detectedType => {\n if (isValidMimeType(acceptedFileTypes, detectedType)) {\n resolve();\n } else {\n reject();\n }\n })\n .catch(reject);\n });\n };\n\n const applyMimeTypeMap = map => acceptedFileType =>\n map[acceptedFileType] === null ? false : map[acceptedFileType] || acceptedFileType;\n\n // setup attribute mapping for accept\n addFilter('SET_ATTRIBUTE_TO_OPTION_MAP', map =>\n Object.assign(map, {\n accept: 'acceptedFileTypes',\n })\n );\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', (file, { query }) => {\n // if we are not doing file type validation exit\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n return true;\n }\n\n // we validate the file against the accepted file types\n return validateFile(file, query('GET_ACCEPTED_FILE_TYPES'));\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter(\n 'LOAD_FILE',\n (file, { query }) =>\n new Promise((resolve, reject) => {\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n resolve(file);\n return;\n }\n\n const acceptedFileTypes = query('GET_ACCEPTED_FILE_TYPES');\n\n // custom type detector method\n const typeDetector = query('GET_FILE_VALIDATE_TYPE_DETECT_TYPE');\n\n // if invalid, exit here\n const validationResult = validateFile(file, acceptedFileTypes, typeDetector);\n\n const handleRejection = () => {\n const acceptedFileTypesMapped = acceptedFileTypes\n .map(\n applyMimeTypeMap(\n query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP')\n )\n )\n .filter(label => label !== false);\n\n const acceptedFileTypesMappedUnique = acceptedFileTypesMapped.filter(\n (item, index) => acceptedFileTypesMapped.indexOf(item) === index\n );\n\n reject({\n status: {\n main: query('GET_LABEL_FILE_TYPE_NOT_ALLOWED'),\n sub: replaceInString(\n query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES'),\n {\n allTypes: acceptedFileTypesMappedUnique.join(', '),\n allButLastType: acceptedFileTypesMappedUnique\n .slice(0, -1)\n .join(', '),\n lastType:\n acceptedFileTypesMappedUnique[\n acceptedFileTypesMappedUnique.length - 1\n ],\n }\n ),\n },\n });\n };\n\n // has returned new filename immidiately\n if (typeof validationResult === 'boolean') {\n if (!validationResult) {\n return handleRejection();\n }\n return resolve(file);\n }\n\n // is promise\n validationResult\n .then(() => {\n resolve(file);\n })\n .catch(handleRejection);\n })\n );\n\n // expose plugin\n return {\n // default options\n options: {\n // Enable or disable file type validation\n allowFileTypeValidation: [true, Type.BOOLEAN],\n\n // What file types to accept\n acceptedFileTypes: [[], Type.ARRAY],\n // - must be comma separated\n // - mime types: image/png, image/jpeg, image/gif\n // - extensions: .png, .jpg, .jpeg ( not enabled yet )\n // - wildcards: image/*\n\n // label to show when a type is not allowed\n labelFileTypeNotAllowed: ['File is of invalid type', Type.STRING],\n\n // nicer label\n fileValidateTypeLabelExpectedTypes: [\n 'Expects {allButLastType} or {lastType}',\n Type.STRING,\n ],\n\n // map mime types to extensions\n fileValidateTypeLabelExpectedTypesMap: [{}, Type.OBJECT],\n\n // Custom function to detect type of file\n fileValidateTypeDetectType: [null, Type.FUNCTION],\n },\n };\n};\n\n// fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\nconst isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nif (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n}\n\nexport default plugin;\n","/*!\n * FilePondPluginImageExifOrientation 1.0.11\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n// test if file is of type image\nconst isJPEG = file => /^image\\/jpeg/.test(file.type);\n\nconst Marker = {\n JPEG: 0xffd8,\n APP1: 0xffe1,\n EXIF: 0x45786966,\n TIFF: 0x4949,\n Orientation: 0x0112,\n Unknown: 0xff00\n};\n\nconst getUint16 = (view, offset, little = false) =>\n view.getUint16(offset, little);\nconst getUint32 = (view, offset, little = false) =>\n view.getUint32(offset, little);\n\nconst getImageOrientation = file =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = function(e) {\n const view = new DataView(e.target.result);\n\n // Every JPEG file starts from binary value '0xFFD8'\n if (getUint16(view, 0) !== Marker.JPEG) {\n // This aint no JPEG\n resolve(-1);\n return;\n }\n\n const length = view.byteLength;\n let offset = 2;\n\n while (offset < length) {\n const marker = getUint16(view, offset);\n offset += 2;\n\n // There's our APP1 Marker\n if (marker === Marker.APP1) {\n if (getUint32(view, (offset += 2)) !== Marker.EXIF) {\n // no EXIF info defined\n break;\n }\n\n // Get TIFF Header\n const little = getUint16(view, (offset += 6)) === Marker.TIFF;\n offset += getUint32(view, offset + 4, little);\n\n const tags = getUint16(view, offset, little);\n offset += 2;\n\n for (let i = 0; i < tags; i++) {\n // found the orientation tag\n if (\n getUint16(view, offset + i * 12, little) === Marker.Orientation\n ) {\n resolve(getUint16(view, offset + i * 12 + 8, little));\n return;\n }\n }\n } else if ((marker & Marker.Unknown) !== Marker.Unknown) {\n // Invalid\n break;\n } else {\n offset += getUint16(view, offset);\n }\n }\n\n // Nothing found\n resolve(-1);\n };\n\n // we don't need to read the entire file to get the orientation\n reader.readAsArrayBuffer(file.slice(0, 64 * 1024));\n });\n\nconst IS_BROWSER = (() =>\n typeof window !== 'undefined' && typeof window.document !== 'undefined')();\nconst isBrowser = () => IS_BROWSER;\n\n// 2x1 pixel image 90CW rotated with orientation header\nconst testSrc =\n 'data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QA6RXhpZgAATU0AKgAAAAgAAwESAAMAAAABAAYAAAEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////wAALCAABAAIBASIA/8QAJgABAAAAAAAAAAAAAAAAAAAAAxABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQAAPwBH/9k=';\n\n// should correct orientation if is presented in landscape, in which case the browser doesn't autocorrect\nlet shouldCorrect = undefined;\nconst testImage = isBrowser() ? new Image() : {};\ntestImage.onload = () =>\n (shouldCorrect = testImage.naturalWidth > testImage.naturalHeight);\ntestImage.src = testSrc;\n\nconst shouldCorrectImageExifOrientation = () => shouldCorrect;\n\n/**\n * Read Image Orientation Plugin\n */\nconst plugin = ({ addFilter, utils }) => {\n const { Type, isFile } = utils;\n\n // subscribe to file load and append required info\n addFilter(\n 'DID_LOAD_ITEM',\n (item, { query }) =>\n new Promise((resolve, reject) => {\n // get file reference\n const file = item.file;\n\n // if this is not a jpeg image we are not interested\n if (\n !isFile(file) ||\n !isJPEG(file) ||\n !query('GET_ALLOW_IMAGE_EXIF_ORIENTATION') ||\n !shouldCorrectImageExifOrientation()\n ) {\n // continue with the unaltered dataset\n return resolve(item);\n }\n\n // get orientation from exif data\n getImageOrientation(file).then(orientation => {\n item.setMetadata('exif', { orientation });\n resolve(item);\n });\n })\n );\n\n // Expose plugin options\n return {\n options: {\n // Enable or disable image orientation reading\n allowImageExifOrientation: [true, Type.BOOLEAN]\n }\n };\n};\n\n// fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\nconst isBrowser$1 =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\nif (isBrowser$1) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n );\n}\n\nexport default plugin;\n","/*!\n * FilePondPluginImagePreview 4.6.12\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n// test if file is of type image and can be viewed in canvas\nconst isPreviewableImage = file => /^image/.test(file.type);\n\nconst vectorMultiply = (v, amount) => createVector(v.x * amount, v.y * amount);\n\nconst vectorAdd = (a, b) => createVector(a.x + b.x, a.y + b.y);\n\nconst vectorNormalize = v => {\n const l = Math.sqrt(v.x * v.x + v.y * v.y);\n if (l === 0) {\n return {\n x: 0,\n y: 0\n };\n }\n return createVector(v.x / l, v.y / l);\n};\n\nconst vectorRotate = (v, radians, origin) => {\n const cos = Math.cos(radians);\n const sin = Math.sin(radians);\n const t = createVector(v.x - origin.x, v.y - origin.y);\n return createVector(\n origin.x + cos * t.x - sin * t.y,\n origin.y + sin * t.x + cos * t.y\n );\n};\n\nconst createVector = (x = 0, y = 0) => ({ x, y });\n\nconst getMarkupValue = (value, size, scalar = 1, axis) => {\n if (typeof value === 'string') {\n return parseFloat(value) * scalar;\n }\n if (typeof value === 'number') {\n return value * (axis ? size[axis] : Math.min(size.width, size.height));\n }\n return;\n};\n\nconst getMarkupStyles = (markup, size, scale) => {\n const lineStyle = markup.borderStyle || markup.lineStyle || 'solid';\n const fill = markup.backgroundColor || markup.fontColor || 'transparent';\n const stroke = markup.borderColor || markup.lineColor || 'transparent';\n const strokeWidth = getMarkupValue(\n markup.borderWidth || markup.lineWidth,\n size,\n scale\n );\n const lineCap = markup.lineCap || 'round';\n const lineJoin = markup.lineJoin || 'round';\n const dashes =\n typeof lineStyle === 'string'\n ? ''\n : lineStyle.map(v => getMarkupValue(v, size, scale)).join(',');\n const opacity = markup.opacity || 1;\n return {\n 'stroke-linecap': lineCap,\n 'stroke-linejoin': lineJoin,\n 'stroke-width': strokeWidth || 0,\n 'stroke-dasharray': dashes,\n stroke,\n fill,\n opacity\n };\n};\n\nconst isDefined = value => value != null;\n\nconst getMarkupRect = (rect, size, scalar = 1) => {\n let left =\n getMarkupValue(rect.x, size, scalar, 'width') ||\n getMarkupValue(rect.left, size, scalar, 'width');\n let top =\n getMarkupValue(rect.y, size, scalar, 'height') ||\n getMarkupValue(rect.top, size, scalar, 'height');\n let width = getMarkupValue(rect.width, size, scalar, 'width');\n let height = getMarkupValue(rect.height, size, scalar, 'height');\n let right = getMarkupValue(rect.right, size, scalar, 'width');\n let bottom = getMarkupValue(rect.bottom, size, scalar, 'height');\n\n if (!isDefined(top)) {\n if (isDefined(height) && isDefined(bottom)) {\n top = size.height - height - bottom;\n } else {\n top = bottom;\n }\n }\n\n if (!isDefined(left)) {\n if (isDefined(width) && isDefined(right)) {\n left = size.width - width - right;\n } else {\n left = right;\n }\n }\n\n if (!isDefined(width)) {\n if (isDefined(left) && isDefined(right)) {\n width = size.width - left - right;\n } else {\n width = 0;\n }\n }\n\n if (!isDefined(height)) {\n if (isDefined(top) && isDefined(bottom)) {\n height = size.height - top - bottom;\n } else {\n height = 0;\n }\n }\n\n return {\n x: left || 0,\n y: top || 0,\n width: width || 0,\n height: height || 0\n };\n};\n\nconst pointsToPathShape = points =>\n points\n .map((point, index) => `${index === 0 ? 'M' : 'L'} ${point.x} ${point.y}`)\n .join(' ');\n\nconst setAttributes = (element, attr) =>\n Object.keys(attr).forEach(key => element.setAttribute(key, attr[key]));\n\nconst ns = 'http://www.w3.org/2000/svg';\nconst svg = (tag, attr) => {\n const element = document.createElementNS(ns, tag);\n if (attr) {\n setAttributes(element, attr);\n }\n return element;\n};\n\nconst updateRect = element =>\n setAttributes(element, {\n ...element.rect,\n ...element.styles\n });\n\nconst updateEllipse = element => {\n const cx = element.rect.x + element.rect.width * 0.5;\n const cy = element.rect.y + element.rect.height * 0.5;\n const rx = element.rect.width * 0.5;\n const ry = element.rect.height * 0.5;\n return setAttributes(element, {\n cx,\n cy,\n rx,\n ry,\n ...element.styles\n });\n};\n\nconst IMAGE_FIT_STYLE = {\n contain: 'xMidYMid meet',\n cover: 'xMidYMid slice'\n};\n\nconst updateImage = (element, markup) => {\n setAttributes(element, {\n ...element.rect,\n ...element.styles,\n preserveAspectRatio: IMAGE_FIT_STYLE[markup.fit] || 'none'\n });\n};\n\nconst TEXT_ANCHOR = {\n left: 'start',\n center: 'middle',\n right: 'end'\n};\n\nconst updateText = (element, markup, size, scale) => {\n const fontSize = getMarkupValue(markup.fontSize, size, scale);\n const fontFamily = markup.fontFamily || 'sans-serif';\n const fontWeight = markup.fontWeight || 'normal';\n const textAlign = TEXT_ANCHOR[markup.textAlign] || 'start';\n\n setAttributes(element, {\n ...element.rect,\n ...element.styles,\n 'stroke-width': 0,\n 'font-weight': fontWeight,\n 'font-size': fontSize,\n 'font-family': fontFamily,\n 'text-anchor': textAlign\n });\n\n // update text\n if (element.text !== markup.text) {\n element.text = markup.text;\n element.textContent = markup.text.length ? markup.text : ' ';\n }\n};\n\nconst updateLine = (element, markup, size, scale) => {\n setAttributes(element, {\n ...element.rect,\n ...element.styles,\n fill: 'none'\n });\n\n const line = element.childNodes[0];\n const begin = element.childNodes[1];\n const end = element.childNodes[2];\n\n const origin = element.rect;\n\n const target = {\n x: element.rect.x + element.rect.width,\n y: element.rect.y + element.rect.height\n };\n\n setAttributes(line, {\n x1: origin.x,\n y1: origin.y,\n x2: target.x,\n y2: target.y\n });\n\n if (!markup.lineDecoration) return;\n\n begin.style.display = 'none';\n end.style.display = 'none';\n\n const v = vectorNormalize({\n x: target.x - origin.x,\n y: target.y - origin.y\n });\n\n const l = getMarkupValue(0.05, size, scale);\n\n if (markup.lineDecoration.indexOf('arrow-begin') !== -1) {\n const arrowBeginRotationPoint = vectorMultiply(v, l);\n const arrowBeginCenter = vectorAdd(origin, arrowBeginRotationPoint);\n const arrowBeginA = vectorRotate(origin, 2, arrowBeginCenter);\n const arrowBeginB = vectorRotate(origin, -2, arrowBeginCenter);\n\n setAttributes(begin, {\n style: 'display:block;',\n d: `M${arrowBeginA.x},${arrowBeginA.y} L${origin.x},${origin.y} L${\n arrowBeginB.x\n },${arrowBeginB.y}`\n });\n }\n\n if (markup.lineDecoration.indexOf('arrow-end') !== -1) {\n const arrowEndRotationPoint = vectorMultiply(v, -l);\n const arrowEndCenter = vectorAdd(target, arrowEndRotationPoint);\n const arrowEndA = vectorRotate(target, 2, arrowEndCenter);\n const arrowEndB = vectorRotate(target, -2, arrowEndCenter);\n\n setAttributes(end, {\n style: 'display:block;',\n d: `M${arrowEndA.x},${arrowEndA.y} L${target.x},${target.y} L${\n arrowEndB.x\n },${arrowEndB.y}`\n });\n }\n};\n\nconst updatePath = (element, markup, size, scale) => {\n setAttributes(element, {\n ...element.styles,\n fill: 'none',\n d: pointsToPathShape(\n markup.points.map(point => ({\n x: getMarkupValue(point.x, size, scale, 'width'),\n y: getMarkupValue(point.y, size, scale, 'height')\n }))\n )\n });\n};\n\nconst createShape = node => markup => svg(node, { id: markup.id });\n\nconst createImage = markup => {\n const shape = svg('image', {\n id: markup.id,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n opacity: '0'\n });\n shape.onload = () => {\n shape.setAttribute('opacity', markup.opacity || 1);\n };\n shape.setAttributeNS(\n 'http://www.w3.org/1999/xlink',\n 'xlink:href',\n markup.src\n );\n return shape;\n};\n\nconst createLine = markup => {\n const shape = svg('g', {\n id: markup.id,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round'\n });\n\n const line = svg('line');\n shape.appendChild(line);\n\n const begin = svg('path');\n shape.appendChild(begin);\n\n const end = svg('path');\n shape.appendChild(end);\n\n return shape;\n};\n\nconst CREATE_TYPE_ROUTES = {\n image: createImage,\n rect: createShape('rect'),\n ellipse: createShape('ellipse'),\n text: createShape('text'),\n path: createShape('path'),\n line: createLine\n};\n\nconst UPDATE_TYPE_ROUTES = {\n rect: updateRect,\n ellipse: updateEllipse,\n image: updateImage,\n text: updateText,\n path: updatePath,\n line: updateLine\n};\n\nconst createMarkupByType = (type, markup) => CREATE_TYPE_ROUTES[type](markup);\n\nconst updateMarkupByType = (element, type, markup, size, scale) => {\n if (type !== 'path') {\n element.rect = getMarkupRect(markup, size, scale);\n }\n element.styles = getMarkupStyles(markup, size, scale);\n UPDATE_TYPE_ROUTES[type](element, markup, size, scale);\n};\n\nconst MARKUP_RECT = [\n 'x',\n 'y',\n 'left',\n 'top',\n 'right',\n 'bottom',\n 'width',\n 'height'\n];\n\nconst toOptionalFraction = value =>\n typeof value === 'string' && /%/.test(value)\n ? parseFloat(value) / 100\n : value;\n\n// adds default markup properties, clones markup\nconst prepareMarkup = markup => {\n const [type, props] = markup;\n\n const rect = props.points\n ? {}\n : MARKUP_RECT.reduce((prev, curr) => {\n prev[curr] = toOptionalFraction(props[curr]);\n return prev;\n }, {});\n\n return [\n type,\n {\n zIndex: 0,\n ...props,\n ...rect\n }\n ];\n};\n\nconst sortMarkupByZIndex = (a, b) => {\n if (a[1].zIndex > b[1].zIndex) {\n return 1;\n }\n if (a[1].zIndex < b[1].zIndex) {\n return -1;\n }\n return 0;\n};\n\nconst createMarkupView = _ =>\n _.utils.createView({\n name: 'image-preview-markup',\n tag: 'svg',\n ignoreRect: true,\n mixins: {\n apis: ['width', 'height', 'crop', 'markup', 'resize', 'dirty']\n },\n write: ({ root, props }) => {\n if (!props.dirty) return;\n\n const { crop, resize, markup } = props;\n\n const viewWidth = props.width;\n const viewHeight = props.height;\n\n let cropWidth = crop.width;\n let cropHeight = crop.height;\n\n if (resize) {\n const { size } = resize;\n\n let outputWidth = size && size.width;\n let outputHeight = size && size.height;\n const outputFit = resize.mode;\n const outputUpscale = resize.upscale;\n\n if (outputWidth && !outputHeight) outputHeight = outputWidth;\n if (outputHeight && !outputWidth) outputWidth = outputHeight;\n\n const shouldUpscale =\n cropWidth < outputWidth && cropHeight < outputHeight;\n\n if (!shouldUpscale || (shouldUpscale && outputUpscale)) {\n let scalarWidth = outputWidth / cropWidth;\n let scalarHeight = outputHeight / cropHeight;\n\n if (outputFit === 'force') {\n cropWidth = outputWidth;\n cropHeight = outputHeight;\n } else {\n let scalar;\n if (outputFit === 'cover') {\n scalar = Math.max(scalarWidth, scalarHeight);\n } else if (outputFit === 'contain') {\n scalar = Math.min(scalarWidth, scalarHeight);\n }\n cropWidth = cropWidth * scalar;\n cropHeight = cropHeight * scalar;\n }\n }\n }\n\n const size = {\n width: viewWidth,\n height: viewHeight\n };\n\n root.element.setAttribute('width', size.width);\n root.element.setAttribute('height', size.height);\n\n const scale = Math.min(viewWidth / cropWidth, viewHeight / cropHeight);\n\n // clear\n root.element.innerHTML = '';\n\n // get filter\n const markupFilter = root.query('GET_IMAGE_PREVIEW_MARKUP_FILTER');\n\n // draw new\n markup\n .filter(markupFilter)\n .map(prepareMarkup)\n .sort(sortMarkupByZIndex)\n .forEach(markup => {\n const [type, settings] = markup;\n\n // create\n const element = createMarkupByType(type, settings);\n\n // update\n updateMarkupByType(element, type, settings, size, scale);\n\n // add\n root.element.appendChild(element);\n });\n }\n });\n\nconst createVector$1 = (x, y) => ({ x, y });\n\nconst vectorDot = (a, b) => a.x * b.x + a.y * b.y;\n\nconst vectorSubtract = (a, b) => createVector$1(a.x - b.x, a.y - b.y);\n\nconst vectorDistanceSquared = (a, b) =>\n vectorDot(vectorSubtract(a, b), vectorSubtract(a, b));\n\nconst vectorDistance = (a, b) => Math.sqrt(vectorDistanceSquared(a, b));\n\nconst getOffsetPointOnEdge = (length, rotation) => {\n const a = length;\n\n const A = 1.5707963267948966;\n const B = rotation;\n const C = 1.5707963267948966 - rotation;\n\n const sinA = Math.sin(A);\n const sinB = Math.sin(B);\n const sinC = Math.sin(C);\n const cosC = Math.cos(C);\n const ratio = a / sinA;\n const b = ratio * sinB;\n const c = ratio * sinC;\n\n return createVector$1(cosC * b, cosC * c);\n};\n\nconst getRotatedRectSize = (rect, rotation) => {\n const w = rect.width;\n const h = rect.height;\n\n const hor = getOffsetPointOnEdge(w, rotation);\n const ver = getOffsetPointOnEdge(h, rotation);\n\n const tl = createVector$1(rect.x + Math.abs(hor.x), rect.y - Math.abs(hor.y));\n\n const tr = createVector$1(\n rect.x + rect.width + Math.abs(ver.y),\n rect.y + Math.abs(ver.x)\n );\n\n const bl = createVector$1(\n rect.x - Math.abs(ver.y),\n rect.y + rect.height - Math.abs(ver.x)\n );\n\n return {\n width: vectorDistance(tl, tr),\n height: vectorDistance(tl, bl)\n };\n};\n\nconst calculateCanvasSize = (image, canvasAspectRatio, zoom = 1) => {\n const imageAspectRatio = image.height / image.width;\n\n // determine actual pixels on x and y axis\n let canvasWidth = 1;\n let canvasHeight = canvasAspectRatio;\n let imgWidth = 1;\n let imgHeight = imageAspectRatio;\n if (imgHeight > canvasHeight) {\n imgHeight = canvasHeight;\n imgWidth = imgHeight / imageAspectRatio;\n }\n\n const scalar = Math.max(canvasWidth / imgWidth, canvasHeight / imgHeight);\n const width = image.width / (zoom * scalar * imgWidth);\n const height = width * canvasAspectRatio;\n\n return {\n width: width,\n height: height\n };\n};\n\nconst getImageRectZoomFactor = (imageRect, cropRect, rotation, center) => {\n // calculate available space round image center position\n const cx = center.x > 0.5 ? 1 - center.x : center.x;\n const cy = center.y > 0.5 ? 1 - center.y : center.y;\n const imageWidth = cx * 2 * imageRect.width;\n const imageHeight = cy * 2 * imageRect.height;\n\n // calculate rotated crop rectangle size\n const rotatedCropSize = getRotatedRectSize(cropRect, rotation);\n\n // calculate scalar required to fit image\n return Math.max(\n rotatedCropSize.width / imageWidth,\n rotatedCropSize.height / imageHeight\n );\n};\n\nconst getCenteredCropRect = (container, aspectRatio) => {\n let width = container.width;\n let height = width * aspectRatio;\n if (height > container.height) {\n height = container.height;\n width = height / aspectRatio;\n }\n const x = (container.width - width) * 0.5;\n const y = (container.height - height) * 0.5;\n\n return {\n x,\n y,\n width,\n height\n };\n};\n\nconst getCurrentCropSize = (imageSize, crop = {}) => {\n let { zoom, rotation, center, aspectRatio } = crop;\n\n if (!aspectRatio) aspectRatio = imageSize.height / imageSize.width;\n\n const canvasSize = calculateCanvasSize(imageSize, aspectRatio, zoom);\n\n const canvasCenter = {\n x: canvasSize.width * 0.5,\n y: canvasSize.height * 0.5\n };\n\n const stage = {\n x: 0,\n y: 0,\n width: canvasSize.width,\n height: canvasSize.height,\n center: canvasCenter\n };\n\n const shouldLimit = typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n const stageZoomFactor = getImageRectZoomFactor(\n imageSize,\n getCenteredCropRect(stage, aspectRatio),\n rotation,\n shouldLimit ? center : { x: 0.5, y: 0.5 }\n );\n\n const scale = zoom * stageZoomFactor;\n\n // start drawing\n return {\n widthFloat: canvasSize.width / scale,\n heightFloat: canvasSize.height / scale,\n width: Math.round(canvasSize.width / scale),\n height: Math.round(canvasSize.height / scale)\n };\n};\n\nconst IMAGE_SCALE_SPRING_PROPS = {\n type: 'spring',\n stiffness: 0.5,\n damping: 0.45,\n mass: 10\n};\n\n// does horizontal and vertical flipping\nconst createBitmapView = _ =>\n _.utils.createView({\n name: 'image-bitmap',\n ignoreRect: true,\n mixins: { styles: ['scaleX', 'scaleY'] },\n create: ({ root, props }) => {\n root.appendChild(props.image);\n }\n });\n\n// shifts and rotates image\nconst createImageCanvasWrapper = _ =>\n _.utils.createView({\n name: 'image-canvas-wrapper',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['crop', 'width', 'height'],\n styles: [\n 'originX',\n 'originY',\n 'translateX',\n 'translateY',\n 'scaleX',\n 'scaleY',\n 'rotateZ'\n ],\n animations: {\n originX: IMAGE_SCALE_SPRING_PROPS,\n originY: IMAGE_SCALE_SPRING_PROPS,\n scaleX: IMAGE_SCALE_SPRING_PROPS,\n scaleY: IMAGE_SCALE_SPRING_PROPS,\n translateX: IMAGE_SCALE_SPRING_PROPS,\n translateY: IMAGE_SCALE_SPRING_PROPS,\n rotateZ: IMAGE_SCALE_SPRING_PROPS\n }\n },\n create: ({ root, props }) => {\n props.width = props.image.width;\n props.height = props.image.height;\n root.ref.bitmap = root.appendChildView(\n root.createChildView(createBitmapView(_), { image: props.image })\n );\n },\n write: ({ root, props }) => {\n const { flip } = props.crop;\n const { bitmap } = root.ref;\n bitmap.scaleX = flip.horizontal ? -1 : 1;\n bitmap.scaleY = flip.vertical ? -1 : 1;\n }\n });\n\n// clips canvas to correct aspect ratio\nconst createClipView = _ =>\n _.utils.createView({\n name: 'image-clip',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: [\n 'crop',\n 'markup',\n 'resize',\n 'width',\n 'height',\n 'dirty',\n 'background'\n ],\n styles: ['width', 'height', 'opacity'],\n animations: {\n opacity: { type: 'tween', duration: 250 }\n }\n },\n didWriteView: function({ root, props }) {\n if (!props.background) return;\n root.element.style.backgroundColor = props.background;\n },\n create: ({ root, props }) => {\n root.ref.image = root.appendChildView(\n root.createChildView(\n createImageCanvasWrapper(_),\n Object.assign({}, props)\n )\n );\n\n root.ref.createMarkup = () => {\n if (root.ref.markup) return;\n root.ref.markup = root.appendChildView(\n root.createChildView(createMarkupView(_), Object.assign({}, props))\n );\n };\n\n root.ref.destroyMarkup = () => {\n if (!root.ref.markup) return;\n root.removeChildView(root.ref.markup);\n root.ref.markup = null;\n };\n\n // set up transparency grid\n const transparencyIndicator = root.query(\n 'GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR'\n );\n if (transparencyIndicator === null) return;\n\n // grid pattern\n if (transparencyIndicator === 'grid') {\n root.element.dataset.transparencyIndicator = transparencyIndicator;\n }\n // basic color\n else {\n root.element.dataset.transparencyIndicator = 'color';\n }\n },\n write: ({ root, props, shouldOptimize }) => {\n const { crop, markup, resize, dirty, width, height } = props;\n\n root.ref.image.crop = crop;\n\n const stage = {\n x: 0,\n y: 0,\n width,\n height,\n center: {\n x: width * 0.5,\n y: height * 0.5\n }\n };\n\n const image = {\n width: root.ref.image.width,\n height: root.ref.image.height\n };\n\n const origin = {\n x: crop.center.x * image.width,\n y: crop.center.y * image.height\n };\n\n const translation = {\n x: stage.center.x - image.width * crop.center.x,\n y: stage.center.y - image.height * crop.center.y\n };\n\n const rotation = Math.PI * 2 + (crop.rotation % (Math.PI * 2));\n\n const cropAspectRatio = crop.aspectRatio || image.height / image.width;\n\n const shouldLimit =\n typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n const stageZoomFactor = getImageRectZoomFactor(\n image,\n getCenteredCropRect(stage, cropAspectRatio),\n rotation,\n shouldLimit ? crop.center : { x: 0.5, y: 0.5 }\n );\n\n const scale = crop.zoom * stageZoomFactor;\n\n // update markup view\n if (markup && markup.length) {\n root.ref.createMarkup();\n root.ref.markup.width = width;\n root.ref.markup.height = height;\n root.ref.markup.resize = resize;\n root.ref.markup.dirty = dirty;\n root.ref.markup.markup = markup;\n root.ref.markup.crop = getCurrentCropSize(image, crop);\n } else if (root.ref.markup) {\n root.ref.destroyMarkup();\n }\n\n // update image view\n const imageView = root.ref.image;\n\n // don't update clip layout\n if (shouldOptimize) {\n imageView.originX = null;\n imageView.originY = null;\n imageView.translateX = null;\n imageView.translateY = null;\n imageView.rotateZ = null;\n imageView.scaleX = null;\n imageView.scaleY = null;\n return;\n }\n\n imageView.originX = origin.x;\n imageView.originY = origin.y;\n imageView.translateX = translation.x;\n imageView.translateY = translation.y;\n imageView.rotateZ = rotation;\n imageView.scaleX = scale;\n imageView.scaleY = scale;\n }\n });\n\nconst createImageView = _ =>\n _.utils.createView({\n name: 'image-preview',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['image', 'crop', 'markup', 'resize', 'dirty', 'background'],\n styles: ['translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: IMAGE_SCALE_SPRING_PROPS,\n scaleY: IMAGE_SCALE_SPRING_PROPS,\n translateY: IMAGE_SCALE_SPRING_PROPS,\n opacity: { type: 'tween', duration: 400 }\n }\n },\n create: ({ root, props }) => {\n root.ref.clip = root.appendChildView(\n root.createChildView(createClipView(_), {\n id: props.id,\n image: props.image,\n crop: props.crop,\n markup: props.markup,\n resize: props.resize,\n dirty: props.dirty,\n background: props.background\n })\n );\n },\n write: ({ root, props, shouldOptimize }) => {\n const { clip } = root.ref;\n\n const { image, crop, markup, resize, dirty } = props;\n\n clip.crop = crop;\n clip.markup = markup;\n clip.resize = resize;\n clip.dirty = dirty;\n\n // don't update clip layout\n clip.opacity = shouldOptimize ? 0 : 1;\n\n // don't re-render if optimizing or hidden (width will be zero resulting in weird animations)\n if (shouldOptimize || root.rect.element.hidden) return;\n\n // calculate scaled preview image size\n const imageAspectRatio = image.height / image.width;\n let aspectRatio = crop.aspectRatio || imageAspectRatio;\n\n // calculate container size\n const containerWidth = root.rect.inner.width;\n const containerHeight = root.rect.inner.height;\n\n let fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n const minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n const maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n const panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n const allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n\n if (panelAspectRatio && !allowMultiple) {\n fixedPreviewHeight = containerWidth * panelAspectRatio;\n aspectRatio = panelAspectRatio;\n }\n\n // determine clip width and height\n let clipHeight =\n fixedPreviewHeight !== null\n ? fixedPreviewHeight\n : Math.max(\n minPreviewHeight,\n Math.min(containerWidth * aspectRatio, maxPreviewHeight)\n );\n\n let clipWidth = clipHeight / aspectRatio;\n if (clipWidth > containerWidth) {\n clipWidth = containerWidth;\n clipHeight = clipWidth * aspectRatio;\n }\n\n if (clipHeight > containerHeight) {\n clipHeight = containerHeight;\n clipWidth = containerHeight / aspectRatio;\n }\n\n clip.width = clipWidth;\n clip.height = clipHeight;\n }\n });\n\nlet SVG_MASK = `<svg width=\"500\" height=\"200\" viewBox=\"0 0 500 200\" preserveAspectRatio=\"none\">\n <defs>\n <radialGradient id=\"gradient-__UID__\" cx=\".5\" cy=\"1.25\" r=\"1.15\">\n <stop offset='50%' stop-color='#000000'/>\n <stop offset='56%' stop-color='#0a0a0a'/>\n <stop offset='63%' stop-color='#262626'/>\n <stop offset='69%' stop-color='#4f4f4f'/>\n <stop offset='75%' stop-color='#808080'/>\n <stop offset='81%' stop-color='#b1b1b1'/>\n <stop offset='88%' stop-color='#dadada'/>\n <stop offset='94%' stop-color='#f6f6f6'/>\n <stop offset='100%' stop-color='#ffffff'/>\n </radialGradient>\n <mask id=\"mask-__UID__\">\n <rect x=\"0\" y=\"0\" width=\"500\" height=\"200\" fill=\"url(#gradient-__UID__)\"></rect>\n </mask>\n </defs>\n <rect x=\"0\" width=\"500\" height=\"200\" fill=\"currentColor\" mask=\"url(#mask-__UID__)\"></rect>\n</svg>`;\n\nlet SVGMaskUniqueId = 0;\n\nconst createImageOverlayView = fpAPI =>\n fpAPI.utils.createView({\n name: 'image-preview-overlay',\n tag: 'div',\n ignoreRect: true,\n create: ({ root, props }) => {\n let mask = SVG_MASK;\n if (document.querySelector('base')) {\n const url = new URL(\n window.location.href.replace(window.location.hash, '')\n ).href;\n mask = mask.replace(/url\\(\\#/g, 'url(' + url + '#');\n }\n\n SVGMaskUniqueId++;\n root.element.classList.add(\n `filepond--image-preview-overlay-${props.status}`\n );\n root.element.innerHTML = mask.replace(/__UID__/g, SVGMaskUniqueId);\n },\n mixins: {\n styles: ['opacity'],\n animations: {\n opacity: { type: 'spring', mass: 25 }\n }\n }\n });\n\n/**\n * Bitmap Worker\n */\nconst BitmapWorker = function() {\n self.onmessage = e => {\n createImageBitmap(e.data.message.file).then(bitmap => {\n self.postMessage({ id: e.data.id, message: bitmap }, [bitmap]);\n });\n };\n};\n\n/**\n * ColorMatrix Worker\n */\nconst ColorMatrixWorker = function() {\n self.onmessage = e => {\n const imageData = e.data.message.imageData;\n const matrix = e.data.message.colorMatrix;\n\n const data = imageData.data;\n const l = data.length;\n\n const m11 = matrix[0];\n const m12 = matrix[1];\n const m13 = matrix[2];\n const m14 = matrix[3];\n const m15 = matrix[4];\n\n const m21 = matrix[5];\n const m22 = matrix[6];\n const m23 = matrix[7];\n const m24 = matrix[8];\n const m25 = matrix[9];\n\n const m31 = matrix[10];\n const m32 = matrix[11];\n const m33 = matrix[12];\n const m34 = matrix[13];\n const m35 = matrix[14];\n\n const m41 = matrix[15];\n const m42 = matrix[16];\n const m43 = matrix[17];\n const m44 = matrix[18];\n const m45 = matrix[19];\n\n let index = 0,\n r = 0.0,\n g = 0.0,\n b = 0.0,\n a = 0.0;\n\n for (; index < l; index += 4) {\n r = data[index] / 255;\n g = data[index + 1] / 255;\n b = data[index + 2] / 255;\n a = data[index + 3] / 255;\n data[index] = Math.max(\n 0,\n Math.min((r * m11 + g * m12 + b * m13 + a * m14 + m15) * 255, 255)\n );\n data[index + 1] = Math.max(\n 0,\n Math.min((r * m21 + g * m22 + b * m23 + a * m24 + m25) * 255, 255)\n );\n data[index + 2] = Math.max(\n 0,\n Math.min((r * m31 + g * m32 + b * m33 + a * m34 + m35) * 255, 255)\n );\n data[index + 3] = Math.max(\n 0,\n Math.min((r * m41 + g * m42 + b * m43 + a * m44 + m45) * 255, 255)\n );\n }\n\n self.postMessage({ id: e.data.id, message: imageData }, [\n imageData.data.buffer\n ]);\n };\n};\n\nconst getImageSize = (url, cb) => {\n let image = new Image();\n image.onload = () => {\n const width = image.naturalWidth;\n const height = image.naturalHeight;\n image = null;\n cb(width, height);\n };\n image.src = url;\n};\n\nconst transforms = {\n 1: () => [1, 0, 0, 1, 0, 0],\n 2: width => [-1, 0, 0, 1, width, 0],\n 3: (width, height) => [-1, 0, 0, -1, width, height],\n 4: (width, height) => [1, 0, 0, -1, 0, height],\n 5: () => [0, 1, 1, 0, 0, 0],\n 6: (width, height) => [0, 1, -1, 0, height, 0],\n 7: (width, height) => [0, -1, -1, 0, height, width],\n 8: width => [0, -1, 1, 0, 0, width]\n};\n\nconst fixImageOrientation = (ctx, width, height, orientation) => {\n // no orientation supplied\n if (orientation === -1) {\n return;\n }\n\n ctx.transform.apply(ctx, transforms[orientation](width, height));\n};\n\n// draws the preview image to canvas\nconst createPreviewImage = (data, width, height, orientation) => {\n // can't draw on half pixels\n width = Math.round(width);\n height = Math.round(height);\n\n // draw image\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n\n // if is rotated incorrectly swap width and height\n if (orientation >= 5 && orientation <= 8) {\n [width, height] = [height, width];\n }\n\n // correct image orientation\n fixImageOrientation(ctx, width, height, orientation);\n\n // draw the image\n ctx.drawImage(data, 0, 0, width, height);\n\n return canvas;\n};\n\nconst isBitmap = file => /^image/.test(file.type) && !/svg/.test(file.type);\n\nconst MAX_WIDTH = 10;\nconst MAX_HEIGHT = 10;\n\nconst calculateAverageColor = image => {\n const scalar = Math.min(MAX_WIDTH / image.width, MAX_HEIGHT / image.height);\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const width = (canvas.width = Math.ceil(image.width * scalar));\n const height = (canvas.height = Math.ceil(image.height * scalar));\n ctx.drawImage(image, 0, 0, width, height);\n let data = null;\n try {\n data = ctx.getImageData(0, 0, width, height).data;\n } catch (e) {\n return null;\n }\n const l = data.length;\n\n let r = 0;\n let g = 0;\n let b = 0;\n let i = 0;\n\n for (; i < l; i += 4) {\n r += data[i] * data[i];\n g += data[i + 1] * data[i + 1];\n b += data[i + 2] * data[i + 2];\n }\n\n r = averageColor(r, l);\n g = averageColor(g, l);\n b = averageColor(b, l);\n\n return { r, g, b };\n};\n\nconst averageColor = (c, l) => Math.floor(Math.sqrt(c / (l / 4)));\n\nconst cloneCanvas = (origin, target) => {\n target = target || document.createElement('canvas');\n target.width = origin.width;\n target.height = origin.height;\n const ctx = target.getContext('2d');\n ctx.drawImage(origin, 0, 0);\n return target;\n};\n\nconst cloneImageData = imageData => {\n let id;\n try {\n id = new ImageData(imageData.width, imageData.height);\n } catch (e) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n id = ctx.createImageData(imageData.width, imageData.height);\n }\n id.data.set(new Uint8ClampedArray(imageData.data));\n return id;\n};\n\nconst loadImage = url =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onload = () => {\n resolve(img);\n };\n img.onerror = e => {\n reject(e);\n };\n img.src = url;\n });\n\nconst createImageWrapperView = _ => {\n // create overlay view\n const OverlayView = createImageOverlayView(_);\n\n const ImageView = createImageView(_);\n\n const { createWorker } = _.utils;\n\n const applyFilter = (root, filter, target) =>\n new Promise(resolve => {\n // will store image data for future filter updates\n if (!root.ref.imageData) {\n root.ref.imageData = target\n .getContext('2d')\n .getImageData(0, 0, target.width, target.height);\n }\n\n // get image data reference\n const imageData = cloneImageData(root.ref.imageData);\n\n if (!filter || filter.length !== 20) {\n target.getContext('2d').putImageData(imageData, 0, 0);\n return resolve();\n }\n\n const worker = createWorker(ColorMatrixWorker);\n worker.post(\n {\n imageData,\n colorMatrix: filter\n },\n response => {\n // apply filtered colors\n target.getContext('2d').putImageData(response, 0, 0);\n\n // stop worker\n worker.terminate();\n\n // done!\n resolve();\n },\n [imageData.data.buffer]\n );\n });\n\n const removeImageView = (root, imageView) => {\n root.removeChildView(imageView);\n imageView.image.width = 1;\n imageView.image.height = 1;\n imageView._destroy();\n };\n\n // remove an image\n const shiftImage = ({ root }) => {\n const imageView = root.ref.images.shift();\n imageView.opacity = 0;\n imageView.translateY = -15;\n root.ref.imageViewBin.push(imageView);\n return imageView;\n };\n\n // add new image\n const pushImage = ({ root, props, image }) => {\n const id = props.id;\n const item = root.query('GET_ITEM', { id });\n if (!item) return;\n\n const crop = item.getMetadata('crop') || {\n center: {\n x: 0.5,\n y: 0.5\n },\n flip: {\n horizontal: false,\n vertical: false\n },\n zoom: 1,\n rotation: 0,\n aspectRatio: null\n };\n\n const background = root.query(\n 'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n );\n\n let markup;\n let resize;\n let dirty = false;\n if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n markup = item.getMetadata('markup') || [];\n resize = item.getMetadata('resize');\n dirty = true;\n }\n\n // append image presenter\n const imageView = root.appendChildView(\n root.createChildView(ImageView, {\n id,\n image,\n crop,\n resize,\n markup,\n dirty,\n background,\n opacity: 0,\n scaleX: 1.15,\n scaleY: 1.15,\n translateY: 15\n }),\n root.childViews.length\n );\n root.ref.images.push(imageView);\n\n // reveal the preview image\n imageView.opacity = 1;\n imageView.scaleX = 1;\n imageView.scaleY = 1;\n imageView.translateY = 0;\n\n // the preview is now ready to be drawn\n setTimeout(() => {\n root.dispatch('DID_IMAGE_PREVIEW_SHOW', { id });\n }, 250);\n };\n\n const updateImage = ({ root, props }) => {\n const item = root.query('GET_ITEM', { id: props.id });\n if (!item) return;\n const imageView = root.ref.images[root.ref.images.length - 1];\n imageView.crop = item.getMetadata('crop');\n imageView.background = root.query(\n 'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n );\n if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n imageView.dirty = true;\n imageView.resize = item.getMetadata('resize');\n imageView.markup = item.getMetadata('markup');\n }\n };\n\n // replace image preview\n const didUpdateItemMetadata = ({ root, props, action }) => {\n // only filter and crop trigger redraw\n if (!/crop|filter|markup|resize/.test(action.change.key)) return;\n\n // no images to update, exit\n if (!root.ref.images.length) return;\n\n // no item found, exit\n const item = root.query('GET_ITEM', { id: props.id });\n if (!item) return;\n\n // for now, update existing image when filtering\n if (/filter/.test(action.change.key)) {\n const imageView = root.ref.images[root.ref.images.length - 1];\n applyFilter(root, action.change.value, imageView.image);\n return;\n }\n\n if (/crop|markup|resize/.test(action.change.key)) {\n const crop = item.getMetadata('crop');\n const image = root.ref.images[root.ref.images.length - 1];\n\n // if aspect ratio has changed, we need to create a new image\n if (\n crop &&\n crop.aspectRatio &&\n image.crop &&\n image.crop.aspectRatio &&\n Math.abs(crop.aspectRatio - image.crop.aspectRatio) > 0.00001\n ) {\n const imageView = shiftImage({ root });\n pushImage({ root, props, image: cloneCanvas(imageView.image) });\n }\n // if not, we can update the current image\n else {\n updateImage({ root, props });\n }\n }\n };\n\n const canCreateImageBitmap = file => {\n // Firefox versions before 58 will freeze when running createImageBitmap\n // in a Web Worker so we detect those versions and return false for support\n const userAgent = window.navigator.userAgent;\n const isFirefox = userAgent.match(/Firefox\\/([0-9]+)\\./);\n const firefoxVersion = isFirefox ? parseInt(isFirefox[1]) : null;\n if (firefoxVersion !== null && firefoxVersion <= 58) return false;\n\n return 'createImageBitmap' in window && isBitmap(file);\n };\n\n /**\n * Write handler for when preview container has been created\n */\n const didCreatePreviewContainer = ({ root, props }) => {\n const { id } = props;\n\n // we need to get the file data to determine the eventual image size\n const item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // get url to file (we'll revoke it later on when done)\n const fileURL = URL.createObjectURL(item.file);\n\n // determine image size of this item\n getImageSize(fileURL, (width, height) => {\n // we can now scale the panel to the final size\n root.dispatch('DID_IMAGE_PREVIEW_CALCULATE_SIZE', {\n id,\n width,\n height\n });\n });\n };\n\n const drawPreview = ({ root, props }) => {\n const { id } = props;\n\n // we need to get the file data to determine the eventual image size\n const item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // get url to file (we'll revoke it later on when done)\n const fileURL = URL.createObjectURL(item.file);\n\n // fallback\n const loadPreviewFallback = () => {\n // let's scale the image in the main thread :(\n loadImage(fileURL).then(previewImageLoaded);\n };\n\n // image is now ready\n const previewImageLoaded = imageData => {\n // the file url is no longer needed\n URL.revokeObjectURL(fileURL);\n\n // draw the scaled down version here and use that as source so bitmapdata can be closed\n // orientation info\n const exif = item.getMetadata('exif') || {};\n const orientation = exif.orientation || -1;\n\n // get width and height from action, and swap if orientation is incorrect\n let { width, height } = imageData;\n\n // if no width or height, just return early.\n if (!width || !height) return;\n\n if (orientation >= 5 && orientation <= 8) {\n [width, height] = [height, width];\n }\n\n // scale canvas based on pixel density\n // we multiply by .75 as that creates smaller but still clear images on screens with high res displays\n const pixelDensityFactor = Math.max(1, window.devicePixelRatio * 0.75);\n\n // we want as much pixels to work with as possible,\n // this multiplies the minimum image resolution,\n // so when zooming in it doesn't get too blurry\n const zoomFactor = root.query('GET_IMAGE_PREVIEW_ZOOM_FACTOR');\n\n // imaeg scale factor\n const scaleFactor = zoomFactor * pixelDensityFactor;\n\n // calculate scaled preview image size\n const previewImageRatio = height / width;\n\n // calculate image preview height and width\n const previewContainerWidth = root.rect.element.width;\n const previewContainerHeight = root.rect.element.height;\n\n let imageWidth = previewContainerWidth;\n let imageHeight = imageWidth * previewImageRatio;\n\n if (previewImageRatio > 1) {\n imageWidth = Math.min(width, previewContainerWidth * scaleFactor);\n imageHeight = imageWidth * previewImageRatio;\n } else {\n imageHeight = Math.min(height, previewContainerHeight * scaleFactor);\n imageWidth = imageHeight / previewImageRatio;\n }\n\n // transfer to image tag so no canvas memory wasted on iOS\n const previewImage = createPreviewImage(\n imageData,\n imageWidth,\n imageHeight,\n orientation\n );\n\n // done\n const done = () => {\n // calculate average image color, disabled for now\n const averageColor = root.query(\n 'GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR'\n )\n ? calculateAverageColor(data)\n : null;\n item.setMetadata('color', averageColor, true);\n\n // data has been transferred to canvas ( if was ImageBitmap )\n if ('close' in imageData) {\n imageData.close();\n }\n\n // show the overlay\n root.ref.overlayShadow.opacity = 1;\n\n // create the first image\n pushImage({ root, props, image: previewImage });\n };\n\n // apply filter\n const filter = item.getMetadata('filter');\n if (filter) {\n applyFilter(root, filter, previewImage).then(done);\n } else {\n done();\n }\n };\n\n // if we support scaling using createImageBitmap we use a worker\n if (canCreateImageBitmap(item.file)) {\n // let's scale the image in a worker\n const worker = createWorker(BitmapWorker);\n\n worker.post(\n {\n file: item.file\n },\n imageBitmap => {\n // destroy worker\n worker.terminate();\n\n // no bitmap returned, must be something wrong,\n // try the oldschool way\n if (!imageBitmap) {\n loadPreviewFallback();\n return;\n }\n\n // yay we got our bitmap, let's continue showing the preview\n previewImageLoaded(imageBitmap);\n }\n );\n } else {\n // create fallback preview\n loadPreviewFallback();\n }\n };\n\n /**\n * Write handler for when the preview image is ready to be animated\n */\n const didDrawPreview = ({ root }) => {\n // get last added image\n const image = root.ref.images[root.ref.images.length - 1];\n image.translateY = 0;\n image.scaleX = 1.0;\n image.scaleY = 1.0;\n image.opacity = 1;\n };\n\n /**\n * Write handler for when the preview has been loaded\n */\n const restoreOverlay = ({ root }) => {\n root.ref.overlayShadow.opacity = 1;\n root.ref.overlayError.opacity = 0;\n root.ref.overlaySuccess.opacity = 0;\n };\n\n const didThrowError = ({ root }) => {\n root.ref.overlayShadow.opacity = 0.25;\n root.ref.overlayError.opacity = 1;\n };\n\n const didCompleteProcessing = ({ root }) => {\n root.ref.overlayShadow.opacity = 0.25;\n root.ref.overlaySuccess.opacity = 1;\n };\n\n /**\n * Constructor\n */\n const create = ({ root }) => {\n // image view\n root.ref.images = [];\n\n // the preview image data (we need this to filter the image)\n root.ref.imageData = null;\n\n // image bin\n root.ref.imageViewBin = [];\n\n // image overlays\n root.ref.overlayShadow = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'idle'\n })\n );\n\n root.ref.overlaySuccess = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'success'\n })\n );\n\n root.ref.overlayError = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'failure'\n })\n );\n };\n\n return _.utils.createView({\n name: 'image-preview-wrapper',\n create,\n styles: ['height'],\n apis: ['height'],\n destroy: ({ root }) => {\n // we resize the image so memory on iOS 12 is released more quickly (it seems)\n root.ref.images.forEach(imageView => {\n imageView.image.width = 1;\n imageView.image.height = 1;\n });\n },\n didWriteView: ({ root }) => {\n root.ref.images.forEach(imageView => {\n imageView.dirty = false;\n });\n },\n write: _.utils.createRoute(\n {\n // image preview stated\n DID_IMAGE_PREVIEW_DRAW: didDrawPreview,\n DID_IMAGE_PREVIEW_CONTAINER_CREATE: didCreatePreviewContainer,\n DID_FINISH_CALCULATE_PREVIEWSIZE: drawPreview,\n DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata,\n\n // file states\n DID_THROW_ITEM_LOAD_ERROR: didThrowError,\n DID_THROW_ITEM_PROCESSING_ERROR: didThrowError,\n DID_THROW_ITEM_INVALID: didThrowError,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteProcessing,\n DID_START_ITEM_PROCESSING: restoreOverlay,\n DID_REVERT_ITEM_PROCESSING: restoreOverlay\n },\n ({ root }) => {\n // views on death row\n const viewsToRemove = root.ref.imageViewBin.filter(\n imageView => imageView.opacity === 0\n );\n\n // views to retain\n root.ref.imageViewBin = root.ref.imageViewBin.filter(\n imageView => imageView.opacity > 0\n );\n\n // remove these views\n viewsToRemove.forEach(imageView => removeImageView(root, imageView));\n viewsToRemove.length = 0;\n }\n )\n });\n};\n\n/**\n * Image Preview Plugin\n */\nconst plugin = fpAPI => {\n const { addFilter, utils } = fpAPI;\n const { Type, createRoute, isFile } = utils;\n\n // imagePreviewView\n const imagePreviewView = createImageWrapperView(fpAPI);\n\n // called for each view that is created right after the 'create' method\n addFilter('CREATE_VIEW', viewAPI => {\n // get reference to created view\n const { is, view, query } = viewAPI;\n\n // only hook up to item view and only if is enabled for this cropper\n if (!is('file') || !query('GET_ALLOW_IMAGE_PREVIEW')) return;\n\n // create the image preview plugin, but only do so if the item is an image\n const didLoadItem = ({ root, props }) => {\n const { id } = props;\n const item = query('GET_ITEM', id);\n\n // item could theoretically have been removed in the mean time\n if (!item || !isFile(item.file) || item.archived) return;\n\n // get the file object\n const file = item.file;\n\n // exit if this is not an image\n if (!isPreviewableImage(file)) return;\n\n // test if is filtered\n if (!query('GET_IMAGE_PREVIEW_FILTER_ITEM')(item)) return;\n\n // exit if image size is too high and no createImageBitmap support\n // this would simply bring the browser to its knees and that is not what we want\n const supportsCreateImageBitmap = 'createImageBitmap' in (window || {});\n const maxPreviewFileSize = query('GET_IMAGE_PREVIEW_MAX_FILE_SIZE');\n if (\n !supportsCreateImageBitmap &&\n (maxPreviewFileSize && file.size > maxPreviewFileSize)\n )\n return;\n\n // set preview view\n root.ref.imagePreview = view.appendChildView(\n view.createChildView(imagePreviewView, { id })\n );\n\n // update height if is fixed\n const fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n if (fixedPreviewHeight) {\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: item.id,\n height: fixedPreviewHeight\n });\n }\n\n // now ready\n const queue =\n !supportsCreateImageBitmap &&\n file.size > query('GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE');\n root.dispatch('DID_IMAGE_PREVIEW_CONTAINER_CREATE', { id }, queue);\n };\n\n const rescaleItem = (root, props) => {\n if (!root.ref.imagePreview) return;\n\n let { id } = props;\n\n // get item\n const item = root.query('GET_ITEM', { id });\n if (!item) return;\n\n // if is fixed height or panel has aspect ratio, exit here, height has already been defined\n const panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n const itemPanelAspectRatio = root.query('GET_ITEM_PANEL_ASPECT_RATIO');\n const fixedHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n if (panelAspectRatio || itemPanelAspectRatio || fixedHeight) return;\n\n // no data!\n let { imageWidth, imageHeight } = root.ref;\n if (!imageWidth || !imageHeight) return;\n\n // get height min and max\n const minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n const maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n // orientation info\n const exif = item.getMetadata('exif') || {};\n const orientation = exif.orientation || -1;\n\n // get width and height from action, and swap of orientation is incorrect\n if (orientation >= 5 && orientation <= 8)\n [imageWidth, imageHeight] = [imageHeight, imageWidth];\n\n // scale up width and height when we're dealing with an SVG\n if (!isBitmap(item.file) || root.query('GET_IMAGE_PREVIEW_UPSCALE')) {\n const scalar = 2048 / imageWidth;\n imageWidth *= scalar;\n imageHeight *= scalar;\n }\n\n // image aspect ratio\n const imageAspectRatio = imageHeight / imageWidth;\n\n // we need the item to get to the crop size\n const previewAspectRatio =\n (item.getMetadata('crop') || {}).aspectRatio || imageAspectRatio;\n\n // preview height range\n let previewHeightMax = Math.max(\n minPreviewHeight,\n Math.min(imageHeight, maxPreviewHeight)\n );\n const itemWidth = root.rect.element.width;\n const previewHeight = Math.min(\n itemWidth * previewAspectRatio,\n previewHeightMax\n );\n\n // request update to panel height\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: item.id,\n height: previewHeight\n });\n };\n\n const didResizeView = ({ root }) => {\n // actions in next write operation\n root.ref.shouldRescale = true;\n };\n\n const didUpdateItemMetadata = ({ root, action }) => {\n if (action.change.key !== 'crop') return;\n\n // actions in next write operation\n root.ref.shouldRescale = true;\n };\n\n const didCalculatePreviewSize = ({ root, action }) => {\n // remember dimensions\n root.ref.imageWidth = action.width;\n root.ref.imageHeight = action.height;\n\n // actions in next write operation\n root.ref.shouldRescale = true;\n root.ref.shouldDrawPreview = true;\n\n // as image load could take a while and fire when draw loop is resting we need to give it a kick\n root.dispatch('KICK');\n };\n\n // start writing\n view.registerWriter(\n createRoute(\n {\n DID_RESIZE_ROOT: didResizeView,\n DID_STOP_RESIZE: didResizeView,\n DID_LOAD_ITEM: didLoadItem,\n DID_IMAGE_PREVIEW_CALCULATE_SIZE: didCalculatePreviewSize,\n DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata\n },\n ({ root, props }) => {\n // no preview view attached\n if (!root.ref.imagePreview) return;\n\n // don't do anything while hidden\n if (root.rect.element.hidden) return;\n\n // resize the item panel\n if (root.ref.shouldRescale) {\n rescaleItem(root, props);\n root.ref.shouldRescale = false;\n }\n\n if (root.ref.shouldDrawPreview) {\n // queue till next frame so we're sure the height has been applied this forces the draw image call inside the wrapper view to use the correct height\n requestAnimationFrame(() => {\n // this requestAnimationFrame nesting is horrible but it fixes an issue with 100hz displays on Chrome\n // https://github.com/pqina/filepond-plugin-image-preview/issues/57\n requestAnimationFrame(() => {\n root.dispatch('DID_FINISH_CALCULATE_PREVIEWSIZE', {\n id: props.id\n });\n });\n });\n\n root.ref.shouldDrawPreview = false;\n }\n }\n )\n );\n });\n\n // expose plugin\n return {\n options: {\n // Enable or disable image preview\n allowImagePreview: [true, Type.BOOLEAN],\n\n // filters file items to determine which are shown as preview\n imagePreviewFilterItem: [() => true, Type.FUNCTION],\n\n // Fixed preview height\n imagePreviewHeight: [null, Type.INT],\n\n // Min image height\n imagePreviewMinHeight: [44, Type.INT],\n\n // Max image height\n imagePreviewMaxHeight: [256, Type.INT],\n\n // Max size of preview file for when createImageBitmap is not supported\n imagePreviewMaxFileSize: [null, Type.INT],\n\n // The amount of extra pixels added to the image preview to allow comfortable zooming\n imagePreviewZoomFactor: [2, Type.INT],\n\n // Should we upscale small images to fit the max bounding box of the preview area\n imagePreviewUpscale: [false, Type.BOOLEAN],\n\n // Max size of preview file that we allow to try to instant preview if createImageBitmap is not supported, else image is queued for loading\n imagePreviewMaxInstantPreviewFileSize: [1000000, Type.INT],\n\n // Style of the transparancy indicator used behind images\n imagePreviewTransparencyIndicator: [null, Type.STRING],\n\n // Enables or disables reading average image color\n imagePreviewCalculateAverageImageColor: [false, Type.BOOLEAN],\n\n // Enables or disables the previewing of markup\n imagePreviewMarkupShow: [true, Type.BOOLEAN],\n\n // Allows filtering of markup to only show certain shapes\n imagePreviewMarkupFilter: [() => true, Type.FUNCTION]\n }\n };\n};\n\n// fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\nconst isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\nif (isBrowser) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n );\n}\n\nexport default plugin;\n","/* eslint-disable no-restricted-properties */\n\n/* eslint-disable no-restricted-globals */\nexport const canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n/* eslint-enable no-restricted-globals */\n\nexport function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport function getOwnerWindow(element: Node | null | undefined) {\n if (!canUseDOM) {\n throw new Error('Cannot access window outside of the DOM');\n }\n // eslint-disable-next-line no-restricted-globals\n return element?.ownerDocument?.defaultView ?? window;\n}\n\nexport function getOwnerDocument(element: Node | null | undefined) {\n if (!canUseDOM) {\n throw new Error('Cannot access document outside of the DOM');\n }\n // eslint-disable-next-line no-restricted-globals\n return element?.ownerDocument ?? document;\n}\n\n/**\n * Lifted from https://github.com/ariakit/ariakit/blob/main/packages/ariakit-core/src/utils/dom.ts#L37\n * MIT License, Copyright (c) AriaKit.\n */\nexport function getActiveElement(\n node: Node | null | undefined,\n activeDescendant = false\n): HTMLElement | null {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n // `activeElement` might be an empty object if we're interacting with elements\n // inside of an iframe.\n return null;\n }\n\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n\n if (activeDescendant) {\n const id = activeElement.getAttribute('aria-activedescendant');\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n\n return activeElement as HTMLElement | null;\n}\n\nexport function isFrame(element: Element): element is HTMLIFrameElement {\n return element.tagName === 'IFRAME';\n}\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider: React.FC<ContextValueType & { children: React.ReactNode }> = (props) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n const Provider: React.FC<\n ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n > = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = globalThis?.document ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We spaces with `.trim().toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[' useId '.trim().toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// Prevent bundlers from trying to optimize the import\nconst useInsertionEffect: typeof useLayoutEffect =\n (React as any)[' useInsertionEffect '.trim().toString()] || useLayoutEffect;\n\ntype ChangeHandler<T> = (state: T) => void;\ntype SetStateFn<T> = React.Dispatch<React.SetStateAction<T>>;\n\ninterface UseControllableStateParams<T> {\n prop?: T | undefined;\n defaultProp: T;\n onChange?: ChangeHandler<T>;\n caller?: string;\n}\n\nexport function useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n caller,\n}: UseControllableStateParams<T>): [T, SetStateFn<T>] {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange,\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(prop !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n const setValue = React.useCallback<SetStateFn<T>>(\n (nextValue) => {\n if (isControlled) {\n const value = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value !== prop) {\n onChangeRef.current?.(value);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n\n return [value, setValue];\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>): [\n Value: T,\n setValue: React.Dispatch<React.SetStateAction<T>>,\n OnChangeRef: React.RefObject<ChangeHandler<T> | undefined>,\n] {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n\n return [value, setValue, onChangeRef];\n}\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlot(ownerName: string) {\n const SlotClone = createSlotClone(ownerName);\n const Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n\n if (slottable) {\n // the new element to render is the one passed as a child of `Slottable`\n const newElement = slottable.props.children;\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n // because the new element will be the one rendered, we are only interested\n // in grabbing its children (`newElement.props.children`)\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement)\n ? (newElement.props as { children: React.ReactNode }).children\n : null;\n } else {\n return child;\n }\n });\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {React.isValidElement(newElement)\n ? React.cloneElement(newElement, undefined, newChildren)\n : null}\n </SlotClone>\n );\n }\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {children}\n </SlotClone>\n );\n });\n\n Slot.displayName = `${ownerName}.Slot`;\n return Slot;\n}\n\nconst Slot = createSlot('Slot');\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ function createSlotClone(ownerName: string) {\n const SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props = mergeProps(slotProps, children.props as AnyProps);\n // do not pass ref to React.Fragment for React 19 compatibility\n if (children.type !== React.Fragment) {\n props.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props);\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst SLOTTABLE_IDENTIFIER = Symbol('radix.slottable');\n\ninterface SlottableProps {\n children: React.ReactNode;\n}\n\ninterface SlottableComponent extends React.FC<SlottableProps> {\n __radixId: symbol;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlottable(ownerName: string) {\n const Slottable: SlottableComponent = ({ children }) => {\n return <>{children}</>;\n };\n Slottable.displayName = `${ownerName}.Slottable`;\n Slottable.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable;\n}\n\nconst Slottable = createSlottable('Slottable');\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>;\n\nfunction isSlottable(\n child: React.ReactNode\n): child is React.ReactElement<SlottableProps, typeof Slottable> {\n return (\n React.isValidElement(child) &&\n typeof child.type === 'function' &&\n '__radixId' in child.type &&\n child.type.__radixId === SLOTTABLE_IDENTIFIER\n );\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args: unknown[]) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n }\n // but if it exists only on the slot, we use only this one\n else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref;\n }\n\n // Not DEV\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref;\n}\n\nexport {\n Slot,\n Slottable,\n //\n Slot as Root,\n};\nexport type { SlotProps };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nfunction useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n const callbackRef = React.useRef(callback);\n\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n\n // https://github.com/facebook/react/issues/19240\n return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport { useCallbackRef };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\n/**\n * Listens for when the escape key is down\n */\nfunction useEscapeKeydown(\n onEscapeKeyDownProp?: (event: KeyboardEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener('keydown', handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener('keydown', handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\n\nexport { useEscapeKeydown };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown';\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayer\n * -----------------------------------------------------------------------------------------------*/\n\nconst DISMISSABLE_LAYER_NAME = 'DismissableLayer';\nconst CONTEXT_UPDATE = 'dismissableLayer.update';\nconst POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';\nconst FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';\n\nlet originalBodyPointerEvents: string;\n\nconst DismissableLayerContext = React.createContext({\n layers: new Set<DismissableLayerElement>(),\n layersWithOutsidePointerEventsDisabled: new Set<DismissableLayerElement>(),\n branches: new Set<DismissableLayerBranchElement>(),\n});\n\ntype DismissableLayerElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface DismissableLayerProps extends PrimitiveDivProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: boolean;\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void;\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void;\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void;\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n onDismiss?: () => void;\n}\n\nconst DismissableLayer = React.forwardRef<DismissableLayerElement, DismissableLayerProps>(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState<DismissableLayerElement | null>(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node) => setNode(node));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled!); // prettier-ignore\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target as HTMLElement;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n const focusOutside = useFocusOutside((event) => {\n const target = event.target as HTMLElement;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = 'none';\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (\n disableOutsidePointerEvents &&\n context.layersWithOutsidePointerEventsDisabled.size === 1\n ) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n\n /**\n * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect\n * because a change to `disableOutsidePointerEvents` would remove this layer from the stack\n * and add it to the end again so the layering order wouldn't be _creation order_.\n * We only want them to be removed from context stacks when unmounted.\n */\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n\n return (\n <Primitive.div\n {...layerProps}\n ref={composedRefs}\n style={{\n pointerEvents: isBodyPointerEventsDisabled\n ? isPointerEventsEnabled\n ? 'auto'\n : 'none'\n : undefined,\n ...props.style,\n }}\n onFocusCapture={composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture)}\n onBlurCapture={composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture)}\n onPointerDownCapture={composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )}\n />\n );\n }\n);\n\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayerBranch\n * -----------------------------------------------------------------------------------------------*/\n\nconst BRANCH_NAME = 'DismissableLayerBranch';\n\ntype DismissableLayerBranchElement = React.ComponentRef<typeof Primitive.div>;\ninterface DismissableLayerBranchProps extends PrimitiveDivProps {}\n\nconst DismissableLayerBranch = React.forwardRef<\n DismissableLayerBranchElement,\n DismissableLayerBranchProps\n>((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef<DismissableLayerBranchElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n\n return <Primitive.div {...props} ref={composedRefs} />;\n});\n\nDismissableLayerBranch.displayName = BRANCH_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PointerDownOutsideEvent = CustomEvent<{ originalEvent: PointerEvent }>;\ntype FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>;\n\n/**\n * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nfunction usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside) as EventListener;\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {});\n\n React.useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executres events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;\n ownerDocument.addEventListener('click', handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent();\n }\n } else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is not React specific, but rather how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n ownerDocument.removeEventListener('click', handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => (isPointerInsideReactTreeRef.current = true),\n };\n}\n\n/**\n * Listens for when focus happens outside a react subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nfunction useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handleFocusOutside = useCallbackRef(onFocusOutside) as EventListener;\n const isFocusInsideReactTreeRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleFocus = (event: FocusEvent) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false,\n });\n }\n };\n ownerDocument.addEventListener('focusin', handleFocus);\n return () => ownerDocument.removeEventListener('focusin', handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n\n return {\n onFocusCapture: () => (isFocusInsideReactTreeRef.current = true),\n onBlurCapture: () => (isFocusInsideReactTreeRef.current = false),\n };\n}\n\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\n\nfunction handleAndDispatchCustomEvent<E extends CustomEvent, OriginalEvent extends Event>(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent<infer D> ? D : never),\n { discrete }: { discrete: boolean }\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\n\nconst Root = DismissableLayer;\nconst Branch = DismissableLayerBranch;\n\nexport {\n DismissableLayer,\n DismissableLayerBranch,\n //\n Root,\n Branch,\n};\nexport type { DismissableLayerProps };\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\nconst AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';\nconst AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\ntype FocusableTarget = HTMLElement | { focus(): void };\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope\n * -----------------------------------------------------------------------------------------------*/\n\nconst FOCUS_SCOPE_NAME = 'FocusScope';\n\ntype FocusScopeElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface FocusScopeProps extends PrimitiveDivProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean;\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean;\n\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n onMountAutoFocus?: (event: Event) => void;\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n onUnmountAutoFocus?: (event: Event) => void;\n}\n\nconst FocusScope = React.forwardRef<FocusScopeElement, FocusScopeProps>((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState<HTMLElement | null>(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef<HTMLElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n },\n }).current;\n\n // Takes care of trapping focus if focus is moved outside programmatically for example\n React.useEffect(() => {\n if (trapped) {\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const target = event.target as HTMLElement | null;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null) return;\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n function handleMutations(mutations: MutationRecord[]) {\n const focusedElement = document.activeElement as HTMLElement | null;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n }\n\n document.addEventListener('focusin', handleFocusIn);\n document.addEventListener('focusout', handleFocusOut);\n const mutationObserver = new MutationObserver(handleMutations);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n\n return () => {\n document.removeEventListener('focusin', handleFocusIn);\n document.removeEventListener('focusout', handleFocusOut);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement as HTMLElement | null;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n\n // We hit a react bug (fixed in v17) with focusing in unmount.\n // We need to delay the focus a little to get around it for now.\n // See: https://github.com/facebook/react/issues/17894\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n\n // Takes care of looping focus (when tabbing whilst at the edges)\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n\n const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement as HTMLElement | null;\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement;\n const [first, last] = getTabbableEdges(container);\n const hasTabbableElementsInside = first && last;\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n\n return (\n <Primitive.div tabIndex={-1} {...scopeProps} ref={composedRefs} onKeyDown={handleKeyDown} />\n );\n});\n\nFocusScope.displayName = FOCUS_SCOPE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Attempts focusing the first element in a list of candidates.\n * Stops when focus has actually moved.\n */\nfunction focusFirst(candidates: HTMLElement[], { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\n\n/**\n * Returns the first and last tabbable elements inside a container.\n */\nfunction getTabbableEdges(container: HTMLElement) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last] as const;\n}\n\n/**\n * Returns a list of potential tabbable candidates.\n *\n * NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n * elements are not visible. This cannot be worked out easily by just reading a property, but rather\n * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n */\nfunction getTabbableCandidates(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n // we do not take into account the order of nodes with positive `tabIndex` as it\n // hinders accessibility to have tab order different from visual order.\n return nodes;\n}\n\n/**\n * Returns the first visible element in a list.\n * NOTE: Only checks visibility up to the `container`.\n */\nfunction findVisible(elements: HTMLElement[], container: HTMLElement) {\n for (const element of elements) {\n // we stop checking if it's hidden at the `container` level (excluding)\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\n\nfunction isHidden(node: HTMLElement, { upTo }: { upTo?: HTMLElement }) {\n if (getComputedStyle(node).visibility === 'hidden') return true;\n while (node) {\n // we stop at `upTo` (excluding it)\n if (upTo !== undefined && node === upTo) return false;\n if (getComputedStyle(node).display === 'none') return true;\n node = node.parentElement as HTMLElement;\n }\n return false;\n}\n\nfunction isSelectableInput(element: any): element is FocusableTarget & { select: () => void } {\n return element instanceof HTMLInputElement && 'select' in element;\n}\n\nfunction focus(element?: FocusableTarget | null, { select = false } = {}) {\n // only focus if that element is focusable\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users\n element.focus({ preventScroll: true });\n // only select if its not the same element, it supports selection and we need to select\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope stack\n * -----------------------------------------------------------------------------------------------*/\n\ntype FocusScopeAPI = { paused: boolean; pause(): void; resume(): void };\nconst focusScopesStack = createFocusScopesStack();\n\nfunction createFocusScopesStack() {\n /** A stack of focus scopes, with the active one at the top */\n let stack: FocusScopeAPI[] = [];\n\n return {\n add(focusScope: FocusScopeAPI) {\n // pause the currently active focus scope (at the top of the stack)\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n // remove in case it already exists (because we'll re-add it at the top of the stack)\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n\n remove(focusScope: FocusScopeAPI) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n },\n };\n}\n\nfunction arrayRemove<T>(array: T[], item: T) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\n\nfunction removeLinks(items: HTMLElement[]) {\n return items.filter((item) => item.tagName !== 'A');\n}\n\nconst Root = FocusScope;\n\nexport {\n FocusScope,\n //\n Root,\n};\nexport type { FocusScopeProps };\n","import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n/* -------------------------------------------------------------------------------------------------\n * Portal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'Portal';\n\ntype PortalElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface PortalProps extends PrimitiveDivProps {\n /**\n * An optional container where the portaled content should be appended.\n */\n container?: Element | DocumentFragment | null;\n}\n\nconst Portal = React.forwardRef<PortalElement, PortalProps>((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || (mounted && globalThis?.document?.body);\n return container\n ? ReactDOM.createPortal(<Primitive.div {...portalProps} ref={forwardedRef} />, container)\n : null;\n});\n\nPortal.displayName = PORTAL_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Portal;\n\nexport {\n Portal,\n //\n Root,\n};\nexport type { PortalProps };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './use-state-machine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref<HTMLElement> }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState<HTMLElement>();\n const stylesRef = React.useRef<CSSStyleDeclaration | null>(null);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef<string>('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n // The event.animationName is unescaped for CSS syntax,\n // so we need to escape it to compare with the animationName computed from the style.\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n stylesRef.current = node ? getComputedStyle(node) : null;\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles: CSSStyleDeclaration | null) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref<unknown> }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nconst Root = Presence;\n\nexport {\n Presence,\n //\n Root,\n};\nexport type { PresenceProps };\n","import * as React from 'react';\n\n/** Number of components which have requested interest to have focus guards */\nlet count = 0;\n\ninterface FocusGuardsProps {\n children?: React.ReactNode;\n}\n\nfunction FocusGuards(props: FocusGuardsProps) {\n useFocusGuards();\n return props.children;\n}\n\n/**\n * Injects a pair of focus guards at the edges of the whole DOM tree\n * to ensure `focusin` & `focusout` events can be caught consistently.\n */\nfunction useFocusGuards() {\n /* eslint-disable no-restricted-globals */\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');\n document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? createFocusGuard());\n count++;\n\n return () => {\n if (count === 1) {\n document.querySelectorAll('[data-radix-focus-guard]').forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n /* eslint-enable no-restricted-globals */\n}\n\nfunction createFocusGuard() {\n // eslint-disable-next-line no-restricted-globals\n const element = document.createElement('span');\n element.setAttribute('data-radix-focus-guard', '');\n element.tabIndex = 0;\n element.style.outline = 'none';\n element.style.opacity = '0';\n element.style.position = 'fixed';\n element.style.pointerEvents = 'none';\n return element;\n}\n\nexport {\n FocusGuards,\n //\n FocusGuards as Root,\n //\n useFocusGuards,\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContext, createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useFocusGuards } from '@radix-ui/react-focus-guards';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport { hideOthers } from 'aria-hidden';\nimport { createSlot } from '@radix-ui/react-slot';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Dialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst DIALOG_NAME = 'Dialog';\n\ntype ScopedProps<P> = P & { __scopeDialog?: Scope };\nconst [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\n\ntype DialogContextValue = {\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentRef: React.RefObject<DialogContentElement | null>;\n contentId: string;\n titleId: string;\n descriptionId: string;\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpenToggle(): void;\n modal: boolean;\n};\n\nconst [DialogProvider, useDialogContext] = createDialogContext<DialogContextValue>(DIALOG_NAME);\n\ninterface DialogProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n modal?: boolean;\n}\n\nconst Dialog: React.FC<DialogProps> = (props: ScopedProps<DialogProps>) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true,\n } = props;\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const contentRef = React.useRef<DialogContentElement>(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME,\n });\n\n return (\n <DialogProvider\n scope={__scopeDialog}\n triggerRef={triggerRef}\n contentRef={contentRef}\n contentId={useId()}\n titleId={useId()}\n descriptionId={useId()}\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n modal={modal}\n >\n {children}\n </DialogProvider>\n );\n};\n\nDialog.displayName = DIALOG_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'DialogTrigger';\n\ntype DialogTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface DialogTriggerProps extends PrimitiveButtonProps {}\n\nconst DialogTrigger = React.forwardRef<DialogTriggerElement, DialogTriggerProps>(\n (props: ScopedProps<DialogTriggerProps>, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return (\n <Primitive.button\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={context.open}\n aria-controls={context.contentId}\n data-state={getState(context.open)}\n {...triggerProps}\n ref={composedTriggerRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n }\n);\n\nDialogTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'DialogPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createDialogContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface DialogPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogPortal: React.FC<DialogPortalProps> = (props: ScopedProps<DialogPortalProps>) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return (\n <PortalProvider scope={__scopeDialog} forceMount={forceMount}>\n {React.Children.map(children, (child) => (\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {child}\n </PortalPrimitive>\n </Presence>\n ))}\n </PortalProvider>\n );\n};\n\nDialogPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogOverlay\n * -----------------------------------------------------------------------------------------------*/\n\nconst OVERLAY_NAME = 'DialogOverlay';\n\ntype DialogOverlayElement = DialogOverlayImplElement;\ninterface DialogOverlayProps extends DialogOverlayImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogOverlay = React.forwardRef<DialogOverlayElement, DialogOverlayProps>(\n (props: ScopedProps<DialogOverlayProps>, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? (\n <Presence present={forceMount || context.open}>\n <DialogOverlayImpl {...overlayProps} ref={forwardedRef} />\n </Presence>\n ) : null;\n }\n);\n\nDialogOverlay.displayName = OVERLAY_NAME;\n\ntype DialogOverlayImplElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface DialogOverlayImplProps extends PrimitiveDivProps {}\n\nconst Slot = createSlot('DialogOverlay.RemoveScroll');\n\nconst DialogOverlayImpl = React.forwardRef<DialogOverlayImplElement, DialogOverlayImplProps>(\n (props: ScopedProps<DialogOverlayImplProps>, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n <RemoveScroll as={Slot} allowPinchZoom shards={[context.contentRef]}>\n <Primitive.div\n data-state={getState(context.open)}\n {...overlayProps}\n ref={forwardedRef}\n // We re-enable pointer-events prevented by `Dialog.Content` to allow scrolling the overlay.\n style={{ pointerEvents: 'auto', ...overlayProps.style }}\n />\n </RemoveScroll>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DialogContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'DialogContent';\n\ntype DialogContentElement = DialogContentTypeElement;\ninterface DialogContentProps extends DialogContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>(\n (props: ScopedProps<DialogContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return (\n <Presence present={forceMount || context.open}>\n {context.modal ? (\n <DialogContentModal {...contentProps} ref={forwardedRef} />\n ) : (\n <DialogContentNonModal {...contentProps} ref={forwardedRef} />\n )}\n </Presence>\n );\n }\n);\n\nDialogContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentTypeElement = DialogContentImplElement;\ninterface DialogContentTypeProps\n extends Omit<DialogContentImplProps, 'trapFocus' | 'disableOutsidePointerEvents'> {}\n\nconst DialogContentModal = React.forwardRef<DialogContentTypeElement, DialogContentTypeProps>(\n (props: ScopedProps<DialogContentTypeProps>, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n\n return (\n <DialogContentImpl\n {...props}\n ref={composedRefs}\n // we make sure focus isn't trapped once `DialogContent` has been closed\n // (closed !== unmounted when animating out)\n trapFocus={context.open}\n disableOutsidePointerEvents\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n })}\n onPointerDownOutside={composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\n // If the event is a right-click, we shouldn't close because\n // it is effectively as if we right-clicked the `Overlay`.\n if (isRightClick) event.preventDefault();\n })}\n // When focus is trapped, a `focusout` event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={composeEventHandlers(props.onFocusOutside, (event) =>\n event.preventDefault()\n )}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst DialogContentNonModal = React.forwardRef<DialogContentTypeElement, DialogContentTypeProps>(\n (props: ScopedProps<DialogContentTypeProps>, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n\n return (\n <DialogContentImpl\n {...props}\n ref={forwardedRef}\n trapFocus={false}\n disableOutsidePointerEvents={false}\n onCloseAutoFocus={(event) => {\n props.onCloseAutoFocus?.(event);\n\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\n\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n }}\n onInteractOutside={(event) => {\n props.onInteractOutside?.(event);\n\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === 'pointerdown') {\n hasPointerDownOutsideRef.current = true;\n }\n }\n\n // Prevent dismissing when clicking the trigger.\n // As the trigger is already setup to close, without doing so would\n // cause it to close and immediately open.\n const target = event.target as HTMLElement;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n\n // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n // we will get the pointer down outside event on the trigger, but then a subsequent\n // focus outside event on the container, we ignore any focus outside event when we've\n // already had a pointer down outside event.\n if (event.detail.originalEvent.type === 'focusin' && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentImplElement = React.ComponentRef<typeof DismissableLayer>;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype FocusScopeProps = React.ComponentPropsWithoutRef<typeof FocusScope>;\ninterface DialogContentImplProps extends Omit<DismissableLayerProps, 'onDismiss'> {\n /**\n * When `true`, focus cannot escape the `Content` via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapFocus?: FocusScopeProps['trapped'];\n\n /**\n * Event handler called when auto-focusing on open.\n * Can be prevented.\n */\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];\n\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];\n}\n\nconst DialogContentImpl = React.forwardRef<DialogContentImplElement, DialogContentImplProps>(\n (props: ScopedProps<DialogContentImplProps>, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n\n // Make sure the whole tree has focus guards as our `Dialog` will be\n // the last element in the DOM (because of the `Portal`)\n useFocusGuards();\n\n return (\n <>\n <FocusScope\n asChild\n loop\n trapped={trapFocus}\n onMountAutoFocus={onOpenAutoFocus}\n onUnmountAutoFocus={onCloseAutoFocus}\n >\n <DismissableLayer\n role=\"dialog\"\n id={context.contentId}\n aria-describedby={context.descriptionId}\n aria-labelledby={context.titleId}\n data-state={getState(context.open)}\n {...contentProps}\n ref={composedRefs}\n onDismiss={() => context.onOpenChange(false)}\n />\n </FocusScope>\n {process.env.NODE_ENV !== 'production' && (\n <>\n <TitleWarning titleId={context.titleId} />\n <DescriptionWarning contentRef={contentRef} descriptionId={context.descriptionId} />\n </>\n )}\n </>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DialogTitle\n * -----------------------------------------------------------------------------------------------*/\n\nconst TITLE_NAME = 'DialogTitle';\n\ntype DialogTitleElement = React.ComponentRef<typeof Primitive.h2>;\ntype PrimitiveHeading2Props = React.ComponentPropsWithoutRef<typeof Primitive.h2>;\ninterface DialogTitleProps extends PrimitiveHeading2Props {}\n\nconst DialogTitle = React.forwardRef<DialogTitleElement, DialogTitleProps>(\n (props: ScopedProps<DialogTitleProps>, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return <Primitive.h2 id={context.titleId} {...titleProps} ref={forwardedRef} />;\n }\n);\n\nDialogTitle.displayName = TITLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogDescription\n * -----------------------------------------------------------------------------------------------*/\n\nconst DESCRIPTION_NAME = 'DialogDescription';\n\ntype DialogDescriptionElement = React.ComponentRef<typeof Primitive.p>;\ntype PrimitiveParagraphProps = React.ComponentPropsWithoutRef<typeof Primitive.p>;\ninterface DialogDescriptionProps extends PrimitiveParagraphProps {}\n\nconst DialogDescription = React.forwardRef<DialogDescriptionElement, DialogDescriptionProps>(\n (props: ScopedProps<DialogDescriptionProps>, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return <Primitive.p id={context.descriptionId} {...descriptionProps} ref={forwardedRef} />;\n }\n);\n\nDialogDescription.displayName = DESCRIPTION_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'DialogClose';\n\ntype DialogCloseElement = React.ComponentRef<typeof Primitive.button>;\ninterface DialogCloseProps extends PrimitiveButtonProps {}\n\nconst DialogClose = React.forwardRef<DialogCloseElement, DialogCloseProps>(\n (props: ScopedProps<DialogCloseProps>, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return (\n <Primitive.button\n type=\"button\"\n {...closeProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => context.onOpenChange(false))}\n />\n );\n }\n);\n\nDialogClose.displayName = CLOSE_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst TITLE_WARNING_NAME = 'DialogTitleWarning';\n\nconst [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: 'dialog',\n});\n\ntype TitleWarningProps = { titleId?: string };\n\nconst TitleWarning: React.FC<TitleWarningProps> = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n\n return null;\n};\n\nconst DESCRIPTION_WARNING_NAME = 'DialogDescriptionWarning';\n\ntype DescriptionWarningProps = {\n contentRef: React.RefObject<DialogContentElement | null>;\n descriptionId?: string;\n};\n\nconst DescriptionWarning: React.FC<DescriptionWarningProps> = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute('aria-describedby');\n // if we have an id and the user hasn't set aria-describedby={undefined}\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n\n return null;\n};\n\nconst Root = Dialog;\nconst Trigger = DialogTrigger;\nconst Portal = DialogPortal;\nconst Overlay = DialogOverlay;\nconst Content = DialogContent;\nconst Title = DialogTitle;\nconst Description = DialogDescription;\nconst Close = DialogClose;\n\nexport {\n createDialogScope,\n //\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n //\n Root,\n Trigger,\n Portal,\n Overlay,\n Content,\n Title,\n Description,\n Close,\n //\n WarningProvider,\n};\nexport type {\n DialogProps,\n DialogTriggerProps,\n DialogPortalProps,\n DialogOverlayProps,\n DialogContentProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogCloseProps,\n};\n","'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport * as React from 'react';\nimport React__default, { useLayoutEffect, useEffect, useMemo } from 'react';\n\nconst DrawerContext = React__default.createContext({\n drawerRef: {\n current: null\n },\n overlayRef: {\n current: null\n },\n onPress: ()=>{},\n onRelease: ()=>{},\n onDrag: ()=>{},\n onNestedDrag: ()=>{},\n onNestedOpenChange: ()=>{},\n onNestedRelease: ()=>{},\n openProp: undefined,\n dismissible: false,\n isOpen: false,\n isDragging: false,\n keyboardIsOpen: {\n current: false\n },\n snapPointsOffset: null,\n snapPoints: null,\n handleOnly: false,\n modal: false,\n shouldFade: false,\n activeSnapPoint: null,\n onOpenChange: ()=>{},\n setActiveSnapPoint: ()=>{},\n closeDrawer: ()=>{},\n direction: 'bottom',\n shouldAnimate: {\n current: true\n },\n shouldScaleBackground: false,\n setBackgroundColorOnScale: true,\n noBodyStyles: false,\n container: null,\n autoFocus: false\n});\nconst useDrawerContext = ()=>{\n const context = React__default.useContext(DrawerContext);\n if (!context) {\n throw new Error('useDrawerContext must be used within a Drawer.Root');\n }\n return context;\n};\n\n__insertCSS(\"[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\\n[data-state=closed]\\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}\");\n\nfunction isMobileFirefox() {\n const userAgent = navigator.userAgent;\n return typeof window !== 'undefined' && (/Firefox/.test(userAgent) && /Mobile/.test(userAgent) || // Android Firefox\n /FxiOS/.test(userAgent) // iOS Firefox\n );\n}\nfunction isMac() {\n return testPlatform(/^Mac/);\n}\nfunction isIPhone() {\n return testPlatform(/^iPhone/);\n}\nfunction isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\nfunction isIPad() {\n return testPlatform(/^iPad/) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n isMac() && navigator.maxTouchPoints > 1;\n}\nfunction isIOS() {\n return isIPhone() || isIPad();\n}\nfunction testPlatform(re) {\n return typeof window !== 'undefined' && window.navigator != null ? re.test(window.navigator.platform) : undefined;\n}\n\n// This code comes from https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/overlays/src/usePreventScroll.ts\nconst KEYBOARD_BUFFER = 24;\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction chain$1(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks){\n if (typeof callback === 'function') {\n callback(...args);\n }\n }\n };\n}\n// @ts-ignore\nconst visualViewport = typeof document !== 'undefined' && window.visualViewport;\nfunction isScrollable(node) {\n let style = window.getComputedStyle(node);\n return /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n}\nfunction getScrollParent(node) {\n if (isScrollable(node)) {\n node = node.parentElement;\n }\n while(node && !isScrollable(node)){\n node = node.parentElement;\n }\n return node || document.scrollingElement || document.documentElement;\n}\n// HTML input types that do not cause the software keyboard to appear.\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n// The number of active usePreventScroll calls. Used to determine whether to revert back to the original page style/scroll position\nlet preventScrollCount = 0;\nlet restore;\n/**\n * Prevents scrolling on the document body on mount, and\n * restores it on unmount. Also ensures that content does not\n * shift due to the scrollbars disappearing.\n */ function usePreventScroll(options = {}) {\n let { isDisabled } = options;\n useIsomorphicLayoutEffect(()=>{\n if (isDisabled) {\n return;\n }\n preventScrollCount++;\n if (preventScrollCount === 1) {\n if (isIOS()) {\n restore = preventScrollMobileSafari();\n }\n }\n return ()=>{\n preventScrollCount--;\n if (preventScrollCount === 0) {\n restore == null ? void 0 : restore();\n }\n };\n }, [\n isDisabled\n ]);\n}\n// Mobile Safari is a whole different beast. Even with overflow: hidden,\n// it still scrolls the page in many situations:\n//\n// 1. When the bottom toolbar and address bar are collapsed, page scrolling is always allowed.\n// 2. When the keyboard is visible, the viewport does not resize. Instead, the keyboard covers part of\n// it, so it becomes scrollable.\n// 3. When tapping on an input, the page always scrolls so that the input is centered in the visual viewport.\n// This may cause even fixed position elements to scroll off the screen.\n// 4. When using the next/previous buttons in the keyboard to navigate between inputs, the whole page always\n// scrolls, even if the input is inside a nested scrollable element that could be scrolled instead.\n//\n// In order to work around these cases, and prevent scrolling without jankiness, we do a few things:\n//\n// 1. Prevent default on `touchmove` events that are not in a scrollable element. This prevents touch scrolling\n// on the window.\n// 2. Prevent default on `touchmove` events inside a scrollable element when the scroll position is at the\n// top or bottom. This avoids the whole page scrolling instead, but does prevent overscrolling.\n// 3. Prevent default on `touchend` events on input elements and handle focusing the element ourselves.\n// 4. When focusing an input, apply a transform to trick Safari into thinking the input is at the top\n// of the page, which prevents it from scrolling the page. After the input is focused, scroll the element\n// into view ourselves, without scrolling the whole page.\n// 5. Offset the body by the scroll position using a negative margin and scroll to the top. This should appear the\n// same visually, but makes the actual scroll position always zero. This is required to make all of the\n// above work or Safari will still try to scroll the page when focusing an input.\n// 6. As a last resort, handle window scroll events, and scroll back to the top. This can happen when attempting\n// to navigate to an input with the next/previous buttons that's outside a modal.\nfunction preventScrollMobileSafari() {\n let scrollable;\n let lastY = 0;\n let onTouchStart = (e)=>{\n // Store the nearest scrollable parent element from the element that the user touched.\n scrollable = getScrollParent(e.target);\n if (scrollable === document.documentElement && scrollable === document.body) {\n return;\n }\n lastY = e.changedTouches[0].pageY;\n };\n let onTouchMove = (e)=>{\n // Prevent scrolling the window.\n if (!scrollable || scrollable === document.documentElement || scrollable === document.body) {\n e.preventDefault();\n return;\n }\n // Prevent scrolling up when at the top and scrolling down when at the bottom\n // of a nested scrollable area, otherwise mobile Safari will start scrolling\n // the window instead. Unfortunately, this disables bounce scrolling when at\n // the top but it's the best we can do.\n let y = e.changedTouches[0].pageY;\n let scrollTop = scrollable.scrollTop;\n let bottom = scrollable.scrollHeight - scrollable.clientHeight;\n if (bottom === 0) {\n return;\n }\n if (scrollTop <= 0 && y > lastY || scrollTop >= bottom && y < lastY) {\n e.preventDefault();\n }\n lastY = y;\n };\n let onTouchEnd = (e)=>{\n let target = e.target;\n // Apply this change if we're not already focused on the target element\n if (isInput(target) && target !== document.activeElement) {\n e.preventDefault();\n // Apply a transform to trick Safari into thinking the input is at the top of the page\n // so it doesn't try to scroll it into view. When tapping on an input, this needs to\n // be done before the \"focus\" event, so we have to focus the element ourselves.\n target.style.transform = 'translateY(-2000px)';\n target.focus();\n requestAnimationFrame(()=>{\n target.style.transform = '';\n });\n }\n };\n let onFocus = (e)=>{\n let target = e.target;\n if (isInput(target)) {\n // Transform also needs to be applied in the focus event in cases where focus moves\n // other than tapping on an input directly, e.g. the next/previous buttons in the\n // software keyboard. In these cases, it seems applying the transform in the focus event\n // is good enough, whereas when tapping an input, it must be done before the focus event. 🤷♂️\n target.style.transform = 'translateY(-2000px)';\n requestAnimationFrame(()=>{\n target.style.transform = '';\n // This will have prevented the browser from scrolling the focused element into view,\n // so we need to do this ourselves in a way that doesn't cause the whole page to scroll.\n if (visualViewport) {\n if (visualViewport.height < window.innerHeight) {\n // If the keyboard is already visible, do this after one additional frame\n // to wait for the transform to be removed.\n requestAnimationFrame(()=>{\n scrollIntoView(target);\n });\n } else {\n // Otherwise, wait for the visual viewport to resize before scrolling so we can\n // measure the correct position to scroll to.\n visualViewport.addEventListener('resize', ()=>scrollIntoView(target), {\n once: true\n });\n }\n }\n });\n }\n };\n let onWindowScroll = ()=>{\n // Last resort. If the window scrolled, scroll it back to the top.\n // It should always be at the top because the body will have a negative margin (see below).\n window.scrollTo(0, 0);\n };\n // Record the original scroll position so we can restore it.\n // Then apply a negative margin to the body to offset it by the scroll position. This will\n // enable us to scroll the window to the top, which is required for the rest of this to work.\n let scrollX = window.pageXOffset;\n let scrollY = window.pageYOffset;\n let restoreStyles = chain$1(setStyle(document.documentElement, 'paddingRight', `${window.innerWidth - document.documentElement.clientWidth}px`));\n // Scroll to the top. The negative margin on the body will make this appear the same.\n window.scrollTo(0, 0);\n let removeEvents = chain$1(addEvent(document, 'touchstart', onTouchStart, {\n passive: false,\n capture: true\n }), addEvent(document, 'touchmove', onTouchMove, {\n passive: false,\n capture: true\n }), addEvent(document, 'touchend', onTouchEnd, {\n passive: false,\n capture: true\n }), addEvent(document, 'focus', onFocus, true), addEvent(window, 'scroll', onWindowScroll));\n return ()=>{\n // Restore styles and scroll the page back to where it was.\n restoreStyles();\n removeEvents();\n window.scrollTo(scrollX, scrollY);\n };\n}\n// Sets a CSS property on an element, and returns a function to revert it to the previous value.\nfunction setStyle(element, style, value) {\n // https://github.com/microsoft/TypeScript/issues/17827#issuecomment-391663310\n // @ts-ignore\n let cur = element.style[style];\n // @ts-ignore\n element.style[style] = value;\n return ()=>{\n // @ts-ignore\n element.style[style] = cur;\n };\n}\n// Adds an event listener to an element, and returns a function to remove it.\nfunction addEvent(target, event, handler, options) {\n // @ts-ignore\n target.addEventListener(event, handler, options);\n return ()=>{\n // @ts-ignore\n target.removeEventListener(event, handler, options);\n };\n}\nfunction scrollIntoView(target) {\n let root = document.scrollingElement || document.documentElement;\n while(target && target !== root){\n // Find the parent scrollable element and adjust the scroll position if the target is not already in view.\n let scrollable = getScrollParent(target);\n if (scrollable !== document.documentElement && scrollable !== document.body && scrollable !== target) {\n let scrollableTop = scrollable.getBoundingClientRect().top;\n let targetTop = target.getBoundingClientRect().top;\n let targetBottom = target.getBoundingClientRect().bottom;\n // Buffer is needed for some edge cases\n const keyboardHeight = scrollable.getBoundingClientRect().bottom + KEYBOARD_BUFFER;\n if (targetBottom > keyboardHeight) {\n scrollable.scrollTop += targetTop - scrollableTop;\n }\n }\n // @ts-ignore\n target = scrollable.parentElement;\n }\n}\nfunction isInput(target) {\n return target instanceof HTMLInputElement && !nonTextInputTypes.has(target.type) || target instanceof HTMLTextAreaElement || target instanceof HTMLElement && target.isContentEditable;\n}\n\n// This code comes from https://github.com/radix-ui/primitives/tree/main/packages/react/compose-refs\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */ function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */ function composeRefs(...refs) {\n return (node)=>refs.forEach((ref)=>setRef(ref, node));\n}\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */ function useComposedRefs(...refs) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nconst cache = new WeakMap();\nfunction set(el, styles, ignoreCache = false) {\n if (!el || !(el instanceof HTMLElement)) return;\n let originalStyles = {};\n Object.entries(styles).forEach(([key, value])=>{\n if (key.startsWith('--')) {\n el.style.setProperty(key, value);\n return;\n }\n originalStyles[key] = el.style[key];\n el.style[key] = value;\n });\n if (ignoreCache) return;\n cache.set(el, originalStyles);\n}\nfunction reset(el, prop) {\n if (!el || !(el instanceof HTMLElement)) return;\n let originalStyles = cache.get(el);\n if (!originalStyles) {\n return;\n }\n {\n el.style[prop] = originalStyles[prop];\n }\n}\nconst isVertical = (direction)=>{\n switch(direction){\n case 'top':\n case 'bottom':\n return true;\n case 'left':\n case 'right':\n return false;\n default:\n return direction;\n }\n};\nfunction getTranslate(element, direction) {\n if (!element) {\n return null;\n }\n const style = window.getComputedStyle(element);\n const transform = // @ts-ignore\n style.transform || style.webkitTransform || style.mozTransform;\n let mat = transform.match(/^matrix3d\\((.+)\\)$/);\n if (mat) {\n // https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix3d\n return parseFloat(mat[1].split(', ')[isVertical(direction) ? 13 : 12]);\n }\n // https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n mat = transform.match(/^matrix\\((.+)\\)$/);\n return mat ? parseFloat(mat[1].split(', ')[isVertical(direction) ? 5 : 4]) : null;\n}\nfunction dampenValue(v) {\n return 8 * (Math.log(v + 1) - 2);\n}\nfunction assignStyle(element, style) {\n if (!element) return ()=>{};\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return ()=>{\n element.style.cssText = prevStyle;\n };\n}\n/**\n * Receives functions as arguments and returns a new function that calls all.\n */ function chain(...fns) {\n return (...args)=>{\n for (const fn of fns){\n if (typeof fn === 'function') {\n // @ts-ignore\n fn(...args);\n }\n }\n };\n}\n\nconst TRANSITIONS = {\n DURATION: 0.5,\n EASE: [\n 0.32,\n 0.72,\n 0,\n 1\n ]\n};\nconst VELOCITY_THRESHOLD = 0.4;\nconst CLOSE_THRESHOLD = 0.25;\nconst SCROLL_LOCK_TIMEOUT = 100;\nconst BORDER_RADIUS = 8;\nconst NESTED_DISPLACEMENT = 16;\nconst WINDOW_TOP_OFFSET = 26;\nconst DRAG_CLASS = 'vaul-dragging';\n\n// This code comes from https://github.com/radix-ui/primitives/blob/main/packages/react/use-controllable-state/src/useControllableState.tsx\nfunction useCallbackRef(callback) {\n const callbackRef = React__default.useRef(callback);\n React__default.useEffect(()=>{\n callbackRef.current = callback;\n });\n // https://github.com/facebook/react/issues/19240\n return React__default.useMemo(()=>(...args)=>callbackRef.current == null ? void 0 : callbackRef.current.call(callbackRef, ...args), []);\n}\nfunction useUncontrolledState({ defaultProp, onChange }) {\n const uncontrolledState = React__default.useState(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React__default.useRef(value);\n const handleChange = useCallbackRef(onChange);\n React__default.useEffect(()=>{\n if (prevValueRef.current !== value) {\n handleChange(value);\n prevValueRef.current = value;\n }\n }, [\n value,\n prevValueRef,\n handleChange\n ]);\n return uncontrolledState;\n}\nfunction useControllableState({ prop, defaultProp, onChange = ()=>{} }) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n const setValue = React__default.useCallback((nextValue)=>{\n if (isControlled) {\n const setter = nextValue;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value);\n } else {\n setUncontrolledProp(nextValue);\n }\n }, [\n isControlled,\n prop,\n setUncontrolledProp,\n handleChange\n ]);\n return [\n value,\n setValue\n ];\n}\n\nfunction useSnapPoints({ activeSnapPointProp, setActiveSnapPointProp, snapPoints, drawerRef, overlayRef, fadeFromIndex, onSnapPointChange, direction = 'bottom', container, snapToSequentialPoint }) {\n const [activeSnapPoint, setActiveSnapPoint] = useControllableState({\n prop: activeSnapPointProp,\n defaultProp: snapPoints == null ? void 0 : snapPoints[0],\n onChange: setActiveSnapPointProp\n });\n const [windowDimensions, setWindowDimensions] = React__default.useState(typeof window !== 'undefined' ? {\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight\n } : undefined);\n React__default.useEffect(()=>{\n function onResize() {\n setWindowDimensions({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight\n });\n }\n window.addEventListener('resize', onResize);\n return ()=>window.removeEventListener('resize', onResize);\n }, []);\n const isLastSnapPoint = React__default.useMemo(()=>activeSnapPoint === (snapPoints == null ? void 0 : snapPoints[snapPoints.length - 1]) || null, [\n snapPoints,\n activeSnapPoint\n ]);\n const activeSnapPointIndex = React__default.useMemo(()=>{\n var _snapPoints_findIndex;\n return (_snapPoints_findIndex = snapPoints == null ? void 0 : snapPoints.findIndex((snapPoint)=>snapPoint === activeSnapPoint)) != null ? _snapPoints_findIndex : null;\n }, [\n snapPoints,\n activeSnapPoint\n ]);\n const shouldFade = snapPoints && snapPoints.length > 0 && (fadeFromIndex || fadeFromIndex === 0) && !Number.isNaN(fadeFromIndex) && snapPoints[fadeFromIndex] === activeSnapPoint || !snapPoints;\n const snapPointsOffset = React__default.useMemo(()=>{\n const containerSize = container ? {\n width: container.getBoundingClientRect().width,\n height: container.getBoundingClientRect().height\n } : typeof window !== 'undefined' ? {\n width: window.innerWidth,\n height: window.innerHeight\n } : {\n width: 0,\n height: 0\n };\n var _snapPoints_map;\n return (_snapPoints_map = snapPoints == null ? void 0 : snapPoints.map((snapPoint)=>{\n const isPx = typeof snapPoint === 'string';\n let snapPointAsNumber = 0;\n if (isPx) {\n snapPointAsNumber = parseInt(snapPoint, 10);\n }\n if (isVertical(direction)) {\n const height = isPx ? snapPointAsNumber : windowDimensions ? snapPoint * containerSize.height : 0;\n if (windowDimensions) {\n return direction === 'bottom' ? containerSize.height - height : -containerSize.height + height;\n }\n return height;\n }\n const width = isPx ? snapPointAsNumber : windowDimensions ? snapPoint * containerSize.width : 0;\n if (windowDimensions) {\n return direction === 'right' ? containerSize.width - width : -containerSize.width + width;\n }\n return width;\n })) != null ? _snapPoints_map : [];\n }, [\n snapPoints,\n windowDimensions,\n container\n ]);\n const activeSnapPointOffset = React__default.useMemo(()=>activeSnapPointIndex !== null ? snapPointsOffset == null ? void 0 : snapPointsOffset[activeSnapPointIndex] : null, [\n snapPointsOffset,\n activeSnapPointIndex\n ]);\n const snapToPoint = React__default.useCallback((dimension)=>{\n var _snapPointsOffset_findIndex;\n const newSnapPointIndex = (_snapPointsOffset_findIndex = snapPointsOffset == null ? void 0 : snapPointsOffset.findIndex((snapPointDim)=>snapPointDim === dimension)) != null ? _snapPointsOffset_findIndex : null;\n onSnapPointChange(newSnapPointIndex);\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: isVertical(direction) ? `translate3d(0, ${dimension}px, 0)` : `translate3d(${dimension}px, 0, 0)`\n });\n if (snapPointsOffset && newSnapPointIndex !== snapPointsOffset.length - 1 && fadeFromIndex !== undefined && newSnapPointIndex !== fadeFromIndex && newSnapPointIndex < fadeFromIndex) {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '0'\n });\n } else {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '1'\n });\n }\n setActiveSnapPoint(snapPoints == null ? void 0 : snapPoints[Math.max(newSnapPointIndex, 0)]);\n }, [\n drawerRef.current,\n snapPoints,\n snapPointsOffset,\n fadeFromIndex,\n overlayRef,\n setActiveSnapPoint\n ]);\n React__default.useEffect(()=>{\n if (activeSnapPoint || activeSnapPointProp) {\n var _snapPoints_findIndex;\n const newIndex = (_snapPoints_findIndex = snapPoints == null ? void 0 : snapPoints.findIndex((snapPoint)=>snapPoint === activeSnapPointProp || snapPoint === activeSnapPoint)) != null ? _snapPoints_findIndex : -1;\n if (snapPointsOffset && newIndex !== -1 && typeof snapPointsOffset[newIndex] === 'number') {\n snapToPoint(snapPointsOffset[newIndex]);\n }\n }\n }, [\n activeSnapPoint,\n activeSnapPointProp,\n snapPoints,\n snapPointsOffset,\n snapToPoint\n ]);\n function onRelease({ draggedDistance, closeDrawer, velocity, dismissible }) {\n if (fadeFromIndex === undefined) return;\n const currentPosition = direction === 'bottom' || direction === 'right' ? (activeSnapPointOffset != null ? activeSnapPointOffset : 0) - draggedDistance : (activeSnapPointOffset != null ? activeSnapPointOffset : 0) + draggedDistance;\n const isOverlaySnapPoint = activeSnapPointIndex === fadeFromIndex - 1;\n const isFirst = activeSnapPointIndex === 0;\n const hasDraggedUp = draggedDistance > 0;\n if (isOverlaySnapPoint) {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n });\n }\n if (!snapToSequentialPoint && velocity > 2 && !hasDraggedUp) {\n if (dismissible) closeDrawer();\n else snapToPoint(snapPointsOffset[0]); // snap to initial point\n return;\n }\n if (!snapToSequentialPoint && velocity > 2 && hasDraggedUp && snapPointsOffset && snapPoints) {\n snapToPoint(snapPointsOffset[snapPoints.length - 1]);\n return;\n }\n // Find the closest snap point to the current position\n const closestSnapPoint = snapPointsOffset == null ? void 0 : snapPointsOffset.reduce((prev, curr)=>{\n if (typeof prev !== 'number' || typeof curr !== 'number') return prev;\n return Math.abs(curr - currentPosition) < Math.abs(prev - currentPosition) ? curr : prev;\n });\n const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;\n if (velocity > VELOCITY_THRESHOLD && Math.abs(draggedDistance) < dim * 0.4) {\n const dragDirection = hasDraggedUp ? 1 : -1; // 1 = up, -1 = down\n // Don't do anything if we swipe upwards while being on the last snap point\n if (dragDirection > 0 && isLastSnapPoint && snapPoints) {\n snapToPoint(snapPointsOffset[snapPoints.length - 1]);\n return;\n }\n if (isFirst && dragDirection < 0 && dismissible) {\n closeDrawer();\n }\n if (activeSnapPointIndex === null) return;\n snapToPoint(snapPointsOffset[activeSnapPointIndex + dragDirection]);\n return;\n }\n snapToPoint(closestSnapPoint);\n }\n function onDrag({ draggedDistance }) {\n if (activeSnapPointOffset === null) return;\n const newValue = direction === 'bottom' || direction === 'right' ? activeSnapPointOffset - draggedDistance : activeSnapPointOffset + draggedDistance;\n // Don't do anything if we exceed the last(biggest) snap point\n if ((direction === 'bottom' || direction === 'right') && newValue < snapPointsOffset[snapPointsOffset.length - 1]) {\n return;\n }\n if ((direction === 'top' || direction === 'left') && newValue > snapPointsOffset[snapPointsOffset.length - 1]) {\n return;\n }\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${newValue}px, 0)` : `translate3d(${newValue}px, 0, 0)`\n });\n }\n function getPercentageDragged(absDraggedDistance, isDraggingDown) {\n if (!snapPoints || typeof activeSnapPointIndex !== 'number' || !snapPointsOffset || fadeFromIndex === undefined) return null;\n // If this is true we are dragging to a snap point that is supposed to have an overlay\n const isOverlaySnapPoint = activeSnapPointIndex === fadeFromIndex - 1;\n const isOverlaySnapPointOrHigher = activeSnapPointIndex >= fadeFromIndex;\n if (isOverlaySnapPointOrHigher && isDraggingDown) {\n return 0;\n }\n // Don't animate, but still use this one if we are dragging away from the overlaySnapPoint\n if (isOverlaySnapPoint && !isDraggingDown) return 1;\n if (!shouldFade && !isOverlaySnapPoint) return null;\n // Either fadeFrom index or the one before\n const targetSnapPointIndex = isOverlaySnapPoint ? activeSnapPointIndex + 1 : activeSnapPointIndex - 1;\n // Get the distance from overlaySnapPoint to the one before or vice-versa to calculate the opacity percentage accordingly\n const snapPointDistance = isOverlaySnapPoint ? snapPointsOffset[targetSnapPointIndex] - snapPointsOffset[targetSnapPointIndex - 1] : snapPointsOffset[targetSnapPointIndex + 1] - snapPointsOffset[targetSnapPointIndex];\n const percentageDragged = absDraggedDistance / Math.abs(snapPointDistance);\n if (isOverlaySnapPoint) {\n return 1 - percentageDragged;\n } else {\n return percentageDragged;\n }\n }\n return {\n isLastSnapPoint,\n activeSnapPoint,\n shouldFade,\n getPercentageDragged,\n setActiveSnapPoint,\n activeSnapPointIndex,\n onRelease,\n onDrag,\n snapPointsOffset\n };\n}\n\nconst noop = ()=>()=>{};\nfunction useScaleBackground() {\n const { direction, isOpen, shouldScaleBackground, setBackgroundColorOnScale, noBodyStyles } = useDrawerContext();\n const timeoutIdRef = React__default.useRef(null);\n const initialBackgroundColor = useMemo(()=>document.body.style.backgroundColor, []);\n function getScale() {\n return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;\n }\n React__default.useEffect(()=>{\n if (isOpen && shouldScaleBackground) {\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]') || document.querySelector('[vaul-drawer-wrapper]');\n if (!wrapper) return;\n chain(setBackgroundColorOnScale && !noBodyStyles ? assignStyle(document.body, {\n background: 'black'\n }) : noop, assignStyle(wrapper, {\n transformOrigin: isVertical(direction) ? 'top' : 'left',\n transitionProperty: 'transform, border-radius',\n transitionDuration: `${TRANSITIONS.DURATION}s`,\n transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n }));\n const wrapperStylesCleanup = assignStyle(wrapper, {\n borderRadius: `${BORDER_RADIUS}px`,\n overflow: 'hidden',\n ...isVertical(direction) ? {\n transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`\n } : {\n transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`\n }\n });\n return ()=>{\n wrapperStylesCleanup();\n timeoutIdRef.current = window.setTimeout(()=>{\n if (initialBackgroundColor) {\n document.body.style.background = initialBackgroundColor;\n } else {\n document.body.style.removeProperty('background');\n }\n }, TRANSITIONS.DURATION * 1000);\n };\n }\n }, [\n isOpen,\n shouldScaleBackground,\n initialBackgroundColor\n ]);\n}\n\nlet previousBodyPosition = null;\n/**\n * This hook is necessary to prevent buggy behavior on iOS devices (need to test on Android).\n * I won't get into too much detail about what bugs it solves, but so far I've found that setting the body to `position: fixed` is the most reliable way to prevent those bugs.\n * Issues that this hook solves:\n * https://github.com/emilkowalski/vaul/issues/435\n * https://github.com/emilkowalski/vaul/issues/433\n * And more that I discovered, but were just not reported.\n */ function usePositionFixed({ isOpen, modal, nested, hasBeenOpened, preventScrollRestoration, noBodyStyles }) {\n const [activeUrl, setActiveUrl] = React__default.useState(()=>typeof window !== 'undefined' ? window.location.href : '');\n const scrollPos = React__default.useRef(0);\n const setPositionFixed = React__default.useCallback(()=>{\n // All browsers on iOS will return true here.\n if (!isSafari()) return;\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === null && isOpen && !noBodyStyles) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left,\n height: document.body.style.height,\n right: 'unset'\n };\n // Update the dom inside an animation frame\n const { scrollX, innerHeight } = window;\n document.body.style.setProperty('position', 'fixed', 'important');\n Object.assign(document.body.style, {\n top: `${-scrollPos.current}px`,\n left: `${-scrollX}px`,\n right: '0px',\n height: 'auto'\n });\n window.setTimeout(()=>window.requestAnimationFrame(()=>{\n // Attempt to check if the bottom bar appeared due to the position change\n const bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollPos.current >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = `${-(scrollPos.current + bottomBarHeight)}px`;\n }\n }), 300);\n }\n }, [\n isOpen\n ]);\n const restorePositionSetting = React__default.useCallback(()=>{\n // All browsers on iOS will return true here.\n if (!isSafari()) return;\n if (previousBodyPosition !== null && !noBodyStyles) {\n // Convert the position from \"px\" to Int\n const y = -parseInt(document.body.style.top, 10);\n const x = -parseInt(document.body.style.left, 10);\n // Restore styles\n Object.assign(document.body.style, previousBodyPosition);\n window.requestAnimationFrame(()=>{\n if (preventScrollRestoration && activeUrl !== window.location.href) {\n setActiveUrl(window.location.href);\n return;\n }\n window.scrollTo(x, y);\n });\n previousBodyPosition = null;\n }\n }, [\n activeUrl\n ]);\n React__default.useEffect(()=>{\n function onScroll() {\n scrollPos.current = window.scrollY;\n }\n onScroll();\n window.addEventListener('scroll', onScroll);\n return ()=>{\n window.removeEventListener('scroll', onScroll);\n };\n }, []);\n React__default.useEffect(()=>{\n if (!modal) return;\n return ()=>{\n if (typeof document === 'undefined') return;\n // Another drawer is opened, safe to ignore the execution\n const hasDrawerOpened = !!document.querySelector('[data-vaul-drawer]');\n if (hasDrawerOpened) return;\n restorePositionSetting();\n };\n }, [\n modal,\n restorePositionSetting\n ]);\n React__default.useEffect(()=>{\n if (nested || !hasBeenOpened) return;\n // This is needed to force Safari toolbar to show **before** the drawer starts animating to prevent a gnarly shift from happening\n if (isOpen) {\n // avoid for standalone mode (PWA)\n const isStandalone = window.matchMedia('(display-mode: standalone)').matches;\n !isStandalone && setPositionFixed();\n if (!modal) {\n window.setTimeout(()=>{\n restorePositionSetting();\n }, 500);\n }\n } else {\n restorePositionSetting();\n }\n }, [\n isOpen,\n hasBeenOpened,\n activeUrl,\n modal,\n nested,\n setPositionFixed,\n restorePositionSetting\n ]);\n return {\n restorePositionSetting\n };\n}\n\nfunction Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRelease: onReleaseProp, snapPoints, shouldScaleBackground = false, setBackgroundColorOnScale = true, closeThreshold = CLOSE_THRESHOLD, scrollLockTimeout = SCROLL_LOCK_TIMEOUT, dismissible = true, handleOnly = false, fadeFromIndex = snapPoints && snapPoints.length - 1, activeSnapPoint: activeSnapPointProp, setActiveSnapPoint: setActiveSnapPointProp, fixed, modal = true, onClose, nested, noBodyStyles = false, direction = 'bottom', defaultOpen = false, disablePreventScroll = true, snapToSequentialPoint = false, preventScrollRestoration = false, repositionInputs = true, onAnimationEnd, container, autoFocus = false }) {\n var _drawerRef_current, _drawerRef_current1;\n const [isOpen = false, setIsOpen] = useControllableState({\n defaultProp: defaultOpen,\n prop: openProp,\n onChange: (o)=>{\n onOpenChange == null ? void 0 : onOpenChange(o);\n if (!o && !nested) {\n restorePositionSetting();\n }\n setTimeout(()=>{\n onAnimationEnd == null ? void 0 : onAnimationEnd(o);\n }, TRANSITIONS.DURATION * 1000);\n if (o && !modal) {\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(()=>{\n document.body.style.pointerEvents = 'auto';\n });\n }\n }\n if (!o) {\n // This will be removed when the exit animation ends (`500ms`)\n document.body.style.pointerEvents = 'auto';\n }\n }\n });\n const [hasBeenOpened, setHasBeenOpened] = React__default.useState(false);\n const [isDragging, setIsDragging] = React__default.useState(false);\n const [justReleased, setJustReleased] = React__default.useState(false);\n const overlayRef = React__default.useRef(null);\n const openTime = React__default.useRef(null);\n const dragStartTime = React__default.useRef(null);\n const dragEndTime = React__default.useRef(null);\n const lastTimeDragPrevented = React__default.useRef(null);\n const isAllowedToDrag = React__default.useRef(false);\n const nestedOpenChangeTimer = React__default.useRef(null);\n const pointerStart = React__default.useRef(0);\n const keyboardIsOpen = React__default.useRef(false);\n const shouldAnimate = React__default.useRef(!defaultOpen);\n const previousDiffFromInitial = React__default.useRef(0);\n const drawerRef = React__default.useRef(null);\n const drawerHeightRef = React__default.useRef(((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.getBoundingClientRect().height) || 0);\n const drawerWidthRef = React__default.useRef(((_drawerRef_current1 = drawerRef.current) == null ? void 0 : _drawerRef_current1.getBoundingClientRect().width) || 0);\n const initialDrawerHeight = React__default.useRef(0);\n const onSnapPointChange = React__default.useCallback((activeSnapPointIndex)=>{\n // Change openTime ref when we reach the last snap point to prevent dragging for 500ms incase it's scrollable.\n if (snapPoints && activeSnapPointIndex === snapPointsOffset.length - 1) openTime.current = new Date();\n }, []);\n const { activeSnapPoint, activeSnapPointIndex, setActiveSnapPoint, onRelease: onReleaseSnapPoints, snapPointsOffset, onDrag: onDragSnapPoints, shouldFade, getPercentageDragged: getSnapPointsPercentageDragged } = useSnapPoints({\n snapPoints,\n activeSnapPointProp,\n setActiveSnapPointProp,\n drawerRef,\n fadeFromIndex,\n overlayRef,\n onSnapPointChange,\n direction,\n container,\n snapToSequentialPoint\n });\n usePreventScroll({\n isDisabled: !isOpen || isDragging || !modal || justReleased || !hasBeenOpened || !repositionInputs || !disablePreventScroll\n });\n const { restorePositionSetting } = usePositionFixed({\n isOpen,\n modal,\n nested: nested != null ? nested : false,\n hasBeenOpened,\n preventScrollRestoration,\n noBodyStyles\n });\n function getScale() {\n return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;\n }\n function onPress(event) {\n var _drawerRef_current, _drawerRef_current1;\n if (!dismissible && !snapPoints) return;\n if (drawerRef.current && !drawerRef.current.contains(event.target)) return;\n drawerHeightRef.current = ((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.getBoundingClientRect().height) || 0;\n drawerWidthRef.current = ((_drawerRef_current1 = drawerRef.current) == null ? void 0 : _drawerRef_current1.getBoundingClientRect().width) || 0;\n setIsDragging(true);\n dragStartTime.current = new Date();\n // iOS doesn't trigger mouseUp after scrolling so we need to listen to touched in order to disallow dragging\n if (isIOS()) {\n window.addEventListener('touchend', ()=>isAllowedToDrag.current = false, {\n once: true\n });\n }\n // Ensure we maintain correct pointer capture even when going outside of the drawer\n event.target.setPointerCapture(event.pointerId);\n pointerStart.current = isVertical(direction) ? event.pageY : event.pageX;\n }\n function shouldDrag(el, isDraggingInDirection) {\n var _window_getSelection;\n let element = el;\n const highlightedText = (_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString();\n const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;\n const date = new Date();\n // Fixes https://github.com/emilkowalski/vaul/issues/483\n if (element.tagName === 'SELECT') {\n return false;\n }\n if (element.hasAttribute('data-vaul-no-drag') || element.closest('[data-vaul-no-drag]')) {\n return false;\n }\n if (direction === 'right' || direction === 'left') {\n return true;\n }\n // Allow scrolling when animating\n if (openTime.current && date.getTime() - openTime.current.getTime() < 500) {\n return false;\n }\n if (swipeAmount !== null) {\n if (direction === 'bottom' ? swipeAmount > 0 : swipeAmount < 0) {\n return true;\n }\n }\n // Don't drag if there's highlighted text\n if (highlightedText && highlightedText.length > 0) {\n return false;\n }\n // Disallow dragging if drawer was scrolled within `scrollLockTimeout`\n if (lastTimeDragPrevented.current && date.getTime() - lastTimeDragPrevented.current.getTime() < scrollLockTimeout && swipeAmount === 0) {\n lastTimeDragPrevented.current = date;\n return false;\n }\n if (isDraggingInDirection) {\n lastTimeDragPrevented.current = date;\n // We are dragging down so we should allow scrolling\n return false;\n }\n // Keep climbing up the DOM tree as long as there's a parent\n while(element){\n // Check if the element is scrollable\n if (element.scrollHeight > element.clientHeight) {\n if (element.scrollTop !== 0) {\n lastTimeDragPrevented.current = new Date();\n // The element is scrollable and not scrolled to the top, so don't drag\n return false;\n }\n if (element.getAttribute('role') === 'dialog') {\n return true;\n }\n }\n // Move up to the parent element\n element = element.parentNode;\n }\n // No scrollable parents not scrolled to the top found, so drag\n return true;\n }\n function onDrag(event) {\n if (!drawerRef.current) {\n return;\n }\n // We need to know how much of the drawer has been dragged in percentages so that we can transform background accordingly\n if (isDragging) {\n const directionMultiplier = direction === 'bottom' || direction === 'right' ? 1 : -1;\n const draggedDistance = (pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX)) * directionMultiplier;\n const isDraggingInDirection = draggedDistance > 0;\n // Pre condition for disallowing dragging in the close direction.\n const noCloseSnapPointsPreCondition = snapPoints && !dismissible && !isDraggingInDirection;\n // Disallow dragging down to close when first snap point is the active one and dismissible prop is set to false.\n if (noCloseSnapPointsPreCondition && activeSnapPointIndex === 0) return;\n // We need to capture last time when drag with scroll was triggered and have a timeout between\n const absDraggedDistance = Math.abs(draggedDistance);\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]');\n const drawerDimension = direction === 'bottom' || direction === 'top' ? drawerHeightRef.current : drawerWidthRef.current;\n // Calculate the percentage dragged, where 1 is the closed position\n let percentageDragged = absDraggedDistance / drawerDimension;\n const snapPointPercentageDragged = getSnapPointsPercentageDragged(absDraggedDistance, isDraggingInDirection);\n if (snapPointPercentageDragged !== null) {\n percentageDragged = snapPointPercentageDragged;\n }\n // Disallow close dragging beyond the smallest snap point.\n if (noCloseSnapPointsPreCondition && percentageDragged >= 1) {\n return;\n }\n if (!isAllowedToDrag.current && !shouldDrag(event.target, isDraggingInDirection)) return;\n drawerRef.current.classList.add(DRAG_CLASS);\n // If shouldDrag gave true once after pressing down on the drawer, we set isAllowedToDrag to true and it will remain true until we let go, there's no reason to disable dragging mid way, ever, and that's the solution to it\n isAllowedToDrag.current = true;\n set(drawerRef.current, {\n transition: 'none'\n });\n set(overlayRef.current, {\n transition: 'none'\n });\n if (snapPoints) {\n onDragSnapPoints({\n draggedDistance\n });\n }\n // Run this only if snapPoints are not defined or if we are at the last snap point (highest one)\n if (isDraggingInDirection && !snapPoints) {\n const dampenedDraggedDistance = dampenValue(draggedDistance);\n const translateValue = Math.min(dampenedDraggedDistance * -1, 0) * directionMultiplier;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n return;\n }\n const opacityValue = 1 - percentageDragged;\n if (shouldFade || fadeFromIndex && activeSnapPointIndex === fadeFromIndex - 1) {\n onDragProp == null ? void 0 : onDragProp(event, percentageDragged);\n set(overlayRef.current, {\n opacity: `${opacityValue}`,\n transition: 'none'\n }, true);\n }\n if (wrapper && overlayRef.current && shouldScaleBackground) {\n // Calculate percentageDragged as a fraction (0 to 1)\n const scaleValue = Math.min(getScale() + percentageDragged * (1 - getScale()), 1);\n const borderRadiusValue = 8 - percentageDragged * 8;\n const translateValue = Math.max(0, 14 - percentageDragged * 14);\n set(wrapper, {\n borderRadius: `${borderRadiusValue}px`,\n transform: isVertical(direction) ? `scale(${scaleValue}) translate3d(0, ${translateValue}px, 0)` : `scale(${scaleValue}) translate3d(${translateValue}px, 0, 0)`,\n transition: 'none'\n }, true);\n }\n if (!snapPoints) {\n const translateValue = absDraggedDistance * directionMultiplier;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n }\n }\n }\n React__default.useEffect(()=>{\n window.requestAnimationFrame(()=>{\n shouldAnimate.current = true;\n });\n }, []);\n React__default.useEffect(()=>{\n var _window_visualViewport;\n function onVisualViewportChange() {\n if (!drawerRef.current || !repositionInputs) return;\n const focusedElement = document.activeElement;\n if (isInput(focusedElement) || keyboardIsOpen.current) {\n var _window_visualViewport;\n const visualViewportHeight = ((_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.height) || 0;\n const totalHeight = window.innerHeight;\n // This is the height of the keyboard\n let diffFromInitial = totalHeight - visualViewportHeight;\n const drawerHeight = drawerRef.current.getBoundingClientRect().height || 0;\n // Adjust drawer height only if it's tall enough\n const isTallEnough = drawerHeight > totalHeight * 0.8;\n if (!initialDrawerHeight.current) {\n initialDrawerHeight.current = drawerHeight;\n }\n const offsetFromTop = drawerRef.current.getBoundingClientRect().top;\n // visualViewport height may change due to somq e subtle changes to the keyboard. Checking if the height changed by 60 or more will make sure that they keyboard really changed its open state.\n if (Math.abs(previousDiffFromInitial.current - diffFromInitial) > 60) {\n keyboardIsOpen.current = !keyboardIsOpen.current;\n }\n if (snapPoints && snapPoints.length > 0 && snapPointsOffset && activeSnapPointIndex) {\n const activeSnapPointHeight = snapPointsOffset[activeSnapPointIndex] || 0;\n diffFromInitial += activeSnapPointHeight;\n }\n previousDiffFromInitial.current = diffFromInitial;\n // We don't have to change the height if the input is in view, when we are here we are in the opened keyboard state so we can correctly check if the input is in view\n if (drawerHeight > visualViewportHeight || keyboardIsOpen.current) {\n const height = drawerRef.current.getBoundingClientRect().height;\n let newDrawerHeight = height;\n if (height > visualViewportHeight) {\n newDrawerHeight = visualViewportHeight - (isTallEnough ? offsetFromTop : WINDOW_TOP_OFFSET);\n }\n // When fixed, don't move the drawer upwards if there's space, but rather only change it's height so it's fully scrollable when the keyboard is open\n if (fixed) {\n drawerRef.current.style.height = `${height - Math.max(diffFromInitial, 0)}px`;\n } else {\n drawerRef.current.style.height = `${Math.max(newDrawerHeight, visualViewportHeight - offsetFromTop)}px`;\n }\n } else if (!isMobileFirefox()) {\n drawerRef.current.style.height = `${initialDrawerHeight.current}px`;\n }\n if (snapPoints && snapPoints.length > 0 && !keyboardIsOpen.current) {\n drawerRef.current.style.bottom = `0px`;\n } else {\n // Negative bottom value would never make sense\n drawerRef.current.style.bottom = `${Math.max(diffFromInitial, 0)}px`;\n }\n }\n }\n (_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.addEventListener('resize', onVisualViewportChange);\n return ()=>{\n var _window_visualViewport;\n return (_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.removeEventListener('resize', onVisualViewportChange);\n };\n }, [\n activeSnapPointIndex,\n snapPoints,\n snapPointsOffset\n ]);\n function closeDrawer(fromWithin) {\n cancelDrag();\n onClose == null ? void 0 : onClose();\n if (!fromWithin) {\n setIsOpen(false);\n }\n setTimeout(()=>{\n if (snapPoints) {\n setActiveSnapPoint(snapPoints[0]);\n }\n }, TRANSITIONS.DURATION * 1000); // seconds to ms\n }\n function resetDrawer() {\n if (!drawerRef.current) return;\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]');\n const currentSwipeAmount = getTranslate(drawerRef.current, direction);\n set(drawerRef.current, {\n transform: 'translate3d(0, 0, 0)',\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n });\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '1'\n });\n // Don't reset background if swiped upwards\n if (shouldScaleBackground && currentSwipeAmount && currentSwipeAmount > 0 && isOpen) {\n set(wrapper, {\n borderRadius: `${BORDER_RADIUS}px`,\n overflow: 'hidden',\n ...isVertical(direction) ? {\n transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,\n transformOrigin: 'top'\n } : {\n transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,\n transformOrigin: 'left'\n },\n transitionProperty: 'transform, border-radius',\n transitionDuration: `${TRANSITIONS.DURATION}s`,\n transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n }, true);\n }\n }\n function cancelDrag() {\n if (!isDragging || !drawerRef.current) return;\n drawerRef.current.classList.remove(DRAG_CLASS);\n isAllowedToDrag.current = false;\n setIsDragging(false);\n dragEndTime.current = new Date();\n }\n function onRelease(event) {\n if (!isDragging || !drawerRef.current) return;\n drawerRef.current.classList.remove(DRAG_CLASS);\n isAllowedToDrag.current = false;\n setIsDragging(false);\n dragEndTime.current = new Date();\n const swipeAmount = getTranslate(drawerRef.current, direction);\n if (!event || !shouldDrag(event.target, false) || !swipeAmount || Number.isNaN(swipeAmount)) return;\n if (dragStartTime.current === null) return;\n const timeTaken = dragEndTime.current.getTime() - dragStartTime.current.getTime();\n const distMoved = pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX);\n const velocity = Math.abs(distMoved) / timeTaken;\n if (velocity > 0.05) {\n // `justReleased` is needed to prevent the drawer from focusing on an input when the drag ends, as it's not the intent most of the time.\n setJustReleased(true);\n setTimeout(()=>{\n setJustReleased(false);\n }, 200);\n }\n if (snapPoints) {\n const directionMultiplier = direction === 'bottom' || direction === 'right' ? 1 : -1;\n onReleaseSnapPoints({\n draggedDistance: distMoved * directionMultiplier,\n closeDrawer,\n velocity,\n dismissible\n });\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n return;\n }\n // Moved upwards, don't do anything\n if (direction === 'bottom' || direction === 'right' ? distMoved > 0 : distMoved < 0) {\n resetDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n return;\n }\n if (velocity > VELOCITY_THRESHOLD) {\n closeDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, false);\n return;\n }\n var _drawerRef_current_getBoundingClientRect_height;\n const visibleDrawerHeight = Math.min((_drawerRef_current_getBoundingClientRect_height = drawerRef.current.getBoundingClientRect().height) != null ? _drawerRef_current_getBoundingClientRect_height : 0, window.innerHeight);\n var _drawerRef_current_getBoundingClientRect_width;\n const visibleDrawerWidth = Math.min((_drawerRef_current_getBoundingClientRect_width = drawerRef.current.getBoundingClientRect().width) != null ? _drawerRef_current_getBoundingClientRect_width : 0, window.innerWidth);\n const isHorizontalSwipe = direction === 'left' || direction === 'right';\n if (Math.abs(swipeAmount) >= (isHorizontalSwipe ? visibleDrawerWidth : visibleDrawerHeight) * closeThreshold) {\n closeDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, false);\n return;\n }\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n resetDrawer();\n }\n React__default.useEffect(()=>{\n // Trigger enter animation without using CSS animation\n if (isOpen) {\n set(document.documentElement, {\n scrollBehavior: 'auto'\n });\n openTime.current = new Date();\n }\n return ()=>{\n reset(document.documentElement, 'scrollBehavior');\n };\n }, [\n isOpen\n ]);\n function onNestedOpenChange(o) {\n const scale = o ? (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth : 1;\n const initialTranslate = o ? -NESTED_DISPLACEMENT : 0;\n if (nestedOpenChangeTimer.current) {\n window.clearTimeout(nestedOpenChangeTimer.current);\n }\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${initialTranslate}px, 0)` : `scale(${scale}) translate3d(${initialTranslate}px, 0, 0)`\n });\n if (!o && drawerRef.current) {\n nestedOpenChangeTimer.current = setTimeout(()=>{\n const translateValue = getTranslate(drawerRef.current, direction);\n set(drawerRef.current, {\n transition: 'none',\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n }, 500);\n }\n }\n function onNestedDrag(_event, percentageDragged) {\n if (percentageDragged < 0) return;\n const initialScale = (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth;\n const newScale = initialScale + percentageDragged * (1 - initialScale);\n const newTranslate = -NESTED_DISPLACEMENT + percentageDragged * NESTED_DISPLACEMENT;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `scale(${newScale}) translate3d(0, ${newTranslate}px, 0)` : `scale(${newScale}) translate3d(${newTranslate}px, 0, 0)`,\n transition: 'none'\n });\n }\n function onNestedRelease(_event, o) {\n const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;\n const scale = o ? (dim - NESTED_DISPLACEMENT) / dim : 1;\n const translate = o ? -NESTED_DISPLACEMENT : 0;\n if (o) {\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${translate}px, 0)` : `scale(${scale}) translate3d(${translate}px, 0, 0)`\n });\n }\n }\n React__default.useEffect(()=>{\n if (!modal) {\n // Need to do this manually unfortunately\n window.requestAnimationFrame(()=>{\n document.body.style.pointerEvents = 'auto';\n });\n }\n }, [\n modal\n ]);\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Root, {\n defaultOpen: defaultOpen,\n onOpenChange: (open)=>{\n if (!dismissible && !open) return;\n if (open) {\n setHasBeenOpened(true);\n } else {\n closeDrawer(true);\n }\n setIsOpen(open);\n },\n open: isOpen\n }, /*#__PURE__*/ React__default.createElement(DrawerContext.Provider, {\n value: {\n activeSnapPoint,\n snapPoints,\n setActiveSnapPoint,\n drawerRef,\n overlayRef,\n onOpenChange,\n onPress,\n onRelease,\n onDrag,\n dismissible,\n shouldAnimate,\n handleOnly,\n isOpen,\n isDragging,\n shouldFade,\n closeDrawer,\n onNestedDrag,\n onNestedOpenChange,\n onNestedRelease,\n keyboardIsOpen,\n modal,\n snapPointsOffset,\n activeSnapPointIndex,\n direction,\n shouldScaleBackground,\n setBackgroundColorOnScale,\n noBodyStyles,\n container,\n autoFocus\n }\n }, children));\n}\nconst Overlay = /*#__PURE__*/ React__default.forwardRef(function({ ...rest }, ref) {\n const { overlayRef, snapPoints, onRelease, shouldFade, isOpen, modal, shouldAnimate } = useDrawerContext();\n const composedRef = useComposedRefs(ref, overlayRef);\n const hasSnapPoints = snapPoints && snapPoints.length > 0;\n // Overlay is the component that is locking scroll, removing it will unlock the scroll without having to dig into Radix's Dialog library\n if (!modal) {\n return null;\n }\n const onMouseUp = React__default.useCallback((event)=>onRelease(event), [\n onRelease\n ]);\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Overlay, {\n onMouseUp: onMouseUp,\n ref: composedRef,\n \"data-vaul-overlay\": \"\",\n \"data-vaul-snap-points\": isOpen && hasSnapPoints ? 'true' : 'false',\n \"data-vaul-snap-points-overlay\": isOpen && shouldFade ? 'true' : 'false',\n \"data-vaul-animate\": (shouldAnimate == null ? void 0 : shouldAnimate.current) ? 'true' : 'false',\n ...rest\n });\n});\nOverlay.displayName = 'Drawer.Overlay';\nconst Content = /*#__PURE__*/ React__default.forwardRef(function({ onPointerDownOutside, style, onOpenAutoFocus, ...rest }, ref) {\n const { drawerRef, onPress, onRelease, onDrag, keyboardIsOpen, snapPointsOffset, activeSnapPointIndex, modal, isOpen, direction, snapPoints, container, handleOnly, shouldAnimate, autoFocus } = useDrawerContext();\n // Needed to use transition instead of animations\n const [delayedSnapPoints, setDelayedSnapPoints] = React__default.useState(false);\n const composedRef = useComposedRefs(ref, drawerRef);\n const pointerStartRef = React__default.useRef(null);\n const lastKnownPointerEventRef = React__default.useRef(null);\n const wasBeyondThePointRef = React__default.useRef(false);\n const hasSnapPoints = snapPoints && snapPoints.length > 0;\n useScaleBackground();\n const isDeltaInDirection = (delta, direction, threshold = 0)=>{\n if (wasBeyondThePointRef.current) return true;\n const deltaY = Math.abs(delta.y);\n const deltaX = Math.abs(delta.x);\n const isDeltaX = deltaX > deltaY;\n const dFactor = [\n 'bottom',\n 'right'\n ].includes(direction) ? 1 : -1;\n if (direction === 'left' || direction === 'right') {\n const isReverseDirection = delta.x * dFactor < 0;\n if (!isReverseDirection && deltaX >= 0 && deltaX <= threshold) {\n return isDeltaX;\n }\n } else {\n const isReverseDirection = delta.y * dFactor < 0;\n if (!isReverseDirection && deltaY >= 0 && deltaY <= threshold) {\n return !isDeltaX;\n }\n }\n wasBeyondThePointRef.current = true;\n return true;\n };\n React__default.useEffect(()=>{\n if (hasSnapPoints) {\n window.requestAnimationFrame(()=>{\n setDelayedSnapPoints(true);\n });\n }\n }, []);\n function handleOnPointerUp(event) {\n pointerStartRef.current = null;\n wasBeyondThePointRef.current = false;\n onRelease(event);\n }\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Content, {\n \"data-vaul-drawer-direction\": direction,\n \"data-vaul-drawer\": \"\",\n \"data-vaul-delayed-snap-points\": delayedSnapPoints ? 'true' : 'false',\n \"data-vaul-snap-points\": isOpen && hasSnapPoints ? 'true' : 'false',\n \"data-vaul-custom-container\": container ? 'true' : 'false',\n \"data-vaul-animate\": (shouldAnimate == null ? void 0 : shouldAnimate.current) ? 'true' : 'false',\n ...rest,\n ref: composedRef,\n style: snapPointsOffset && snapPointsOffset.length > 0 ? {\n '--snap-point-height': `${snapPointsOffset[activeSnapPointIndex != null ? activeSnapPointIndex : 0]}px`,\n ...style\n } : style,\n onPointerDown: (event)=>{\n if (handleOnly) return;\n rest.onPointerDown == null ? void 0 : rest.onPointerDown.call(rest, event);\n pointerStartRef.current = {\n x: event.pageX,\n y: event.pageY\n };\n onPress(event);\n },\n onOpenAutoFocus: (e)=>{\n onOpenAutoFocus == null ? void 0 : onOpenAutoFocus(e);\n if (!autoFocus) {\n e.preventDefault();\n }\n },\n onPointerDownOutside: (e)=>{\n onPointerDownOutside == null ? void 0 : onPointerDownOutside(e);\n if (!modal || e.defaultPrevented) {\n e.preventDefault();\n return;\n }\n if (keyboardIsOpen.current) {\n keyboardIsOpen.current = false;\n }\n },\n onFocusOutside: (e)=>{\n if (!modal) {\n e.preventDefault();\n return;\n }\n },\n onPointerMove: (event)=>{\n lastKnownPointerEventRef.current = event;\n if (handleOnly) return;\n rest.onPointerMove == null ? void 0 : rest.onPointerMove.call(rest, event);\n if (!pointerStartRef.current) return;\n const yPosition = event.pageY - pointerStartRef.current.y;\n const xPosition = event.pageX - pointerStartRef.current.x;\n const swipeStartThreshold = event.pointerType === 'touch' ? 10 : 2;\n const delta = {\n x: xPosition,\n y: yPosition\n };\n const isAllowedToSwipe = isDeltaInDirection(delta, direction, swipeStartThreshold);\n if (isAllowedToSwipe) onDrag(event);\n else if (Math.abs(xPosition) > swipeStartThreshold || Math.abs(yPosition) > swipeStartThreshold) {\n pointerStartRef.current = null;\n }\n },\n onPointerUp: (event)=>{\n rest.onPointerUp == null ? void 0 : rest.onPointerUp.call(rest, event);\n pointerStartRef.current = null;\n wasBeyondThePointRef.current = false;\n onRelease(event);\n },\n onPointerOut: (event)=>{\n rest.onPointerOut == null ? void 0 : rest.onPointerOut.call(rest, event);\n handleOnPointerUp(lastKnownPointerEventRef.current);\n },\n onContextMenu: (event)=>{\n rest.onContextMenu == null ? void 0 : rest.onContextMenu.call(rest, event);\n if (lastKnownPointerEventRef.current) {\n handleOnPointerUp(lastKnownPointerEventRef.current);\n }\n }\n });\n});\nContent.displayName = 'Drawer.Content';\nconst LONG_HANDLE_PRESS_TIMEOUT = 250;\nconst DOUBLE_TAP_TIMEOUT = 120;\nconst Handle = /*#__PURE__*/ React__default.forwardRef(function({ preventCycle = false, children, ...rest }, ref) {\n const { closeDrawer, isDragging, snapPoints, activeSnapPoint, setActiveSnapPoint, dismissible, handleOnly, isOpen, onPress, onDrag } = useDrawerContext();\n const closeTimeoutIdRef = React__default.useRef(null);\n const shouldCancelInteractionRef = React__default.useRef(false);\n function handleStartCycle() {\n // Stop if this is the second click of a double click\n if (shouldCancelInteractionRef.current) {\n handleCancelInteraction();\n return;\n }\n window.setTimeout(()=>{\n handleCycleSnapPoints();\n }, DOUBLE_TAP_TIMEOUT);\n }\n function handleCycleSnapPoints() {\n // Prevent accidental taps while resizing drawer\n if (isDragging || preventCycle || shouldCancelInteractionRef.current) {\n handleCancelInteraction();\n return;\n }\n // Make sure to clear the timeout id if the user releases the handle before the cancel timeout\n handleCancelInteraction();\n if (!snapPoints || snapPoints.length === 0) {\n if (!dismissible) {\n closeDrawer();\n }\n return;\n }\n const isLastSnapPoint = activeSnapPoint === snapPoints[snapPoints.length - 1];\n if (isLastSnapPoint && dismissible) {\n closeDrawer();\n return;\n }\n const currentSnapIndex = snapPoints.findIndex((point)=>point === activeSnapPoint);\n if (currentSnapIndex === -1) return; // activeSnapPoint not found in snapPoints\n const nextSnapPoint = snapPoints[currentSnapIndex + 1];\n setActiveSnapPoint(nextSnapPoint);\n }\n function handleStartInteraction() {\n closeTimeoutIdRef.current = window.setTimeout(()=>{\n // Cancel click interaction on a long press\n shouldCancelInteractionRef.current = true;\n }, LONG_HANDLE_PRESS_TIMEOUT);\n }\n function handleCancelInteraction() {\n if (closeTimeoutIdRef.current) {\n window.clearTimeout(closeTimeoutIdRef.current);\n }\n shouldCancelInteractionRef.current = false;\n }\n return /*#__PURE__*/ React__default.createElement(\"div\", {\n onClick: handleStartCycle,\n onPointerCancel: handleCancelInteraction,\n onPointerDown: (e)=>{\n if (handleOnly) onPress(e);\n handleStartInteraction();\n },\n onPointerMove: (e)=>{\n if (handleOnly) onDrag(e);\n },\n // onPointerUp is already handled by the content component\n ref: ref,\n \"data-vaul-drawer-visible\": isOpen ? 'true' : 'false',\n \"data-vaul-handle\": \"\",\n \"aria-hidden\": \"true\",\n ...rest\n }, /*#__PURE__*/ React__default.createElement(\"span\", {\n \"data-vaul-handle-hitarea\": \"\",\n \"aria-hidden\": \"true\"\n }, children));\n});\nHandle.displayName = 'Drawer.Handle';\nfunction NestedRoot({ onDrag, onOpenChange, open: nestedIsOpen, ...rest }) {\n const { onNestedDrag, onNestedOpenChange, onNestedRelease } = useDrawerContext();\n if (!onNestedDrag) {\n throw new Error('Drawer.NestedRoot must be placed in another drawer');\n }\n return /*#__PURE__*/ React__default.createElement(Root, {\n nested: true,\n open: nestedIsOpen,\n onClose: ()=>{\n onNestedOpenChange(false);\n },\n onDrag: (e, p)=>{\n onNestedDrag(e, p);\n onDrag == null ? void 0 : onDrag(e, p);\n },\n onOpenChange: (o)=>{\n if (o) {\n onNestedOpenChange(o);\n }\n onOpenChange == null ? void 0 : onOpenChange(o);\n },\n onRelease: onNestedRelease,\n ...rest\n });\n}\nfunction Portal(props) {\n const context = useDrawerContext();\n const { container = context.container, ...portalProps } = props;\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Portal, {\n container: container,\n ...portalProps\n });\n}\nconst Drawer = {\n Root,\n NestedRoot,\n Content,\n Overlay,\n Trigger: DialogPrimitive.Trigger,\n Portal,\n Handle,\n Close: DialogPrimitive.Close,\n Title: DialogPrimitive.Title,\n Description: DialogPrimitive.Description\n};\n\nexport { Content, Drawer, Handle, NestedRoot, Overlay, Portal, Root };\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","'use client';\n\nimport { createContext, createElement, type ReactNode, useContext, useMemo } from 'react';\nimport { LucideProps } from './types';\n\ntype LucideConfig = {\n size: number;\n color: string;\n strokeWidth: number;\n absoluteStrokeWidth: boolean;\n className: string;\n};\n\nconst LucideContext = createContext<LucideProps>({});\n\ntype LucideProviderProps = {\n children: ReactNode;\n} & Partial<LucideConfig>;\n\nexport function LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className,\n}: LucideProviderProps) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className,\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className],\n );\n\n return createElement(LucideContext.Provider, { value }, children);\n}\n\nexport const useLucideContext = () => useContext(LucideContext);\n","'use client';\n\nimport { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\nimport { useLucideContext } from './context';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n { color, size, strokeWidth, absoluteStrokeWidth, className = '', children, iconNode, ...rest },\n ref,\n ) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = 'currentColor',\n className: contextClass = '',\n } = useLucideContext() ?? {};\n\n const calculatedStrokeWidth =\n absoluteStrokeWidth ?? contextAbsoluteStrokeWidth\n ? (Number(strokeWidth ?? contextStrokeWidth) * 24) / Number(size ?? contextSize)\n : strokeWidth ?? contextStrokeWidth;\n\n return createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses('lucide', contextClass, className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',\n key: 'usdka0',\n },\n ],\n];\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon('folder-open', __iconNode);\n\nexport default FolderOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n];\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('image', __iconNode);\n\nexport default Image;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '14sxne' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16', key: '1hlbsb' }],\n ['path', { d: 'M16 16h5v5', key: 'ccwih5' }],\n];\n\n/**\n * @component @name RefreshCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/refresh-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCcw = createLucideIcon('refresh-ccw', __iconNode);\n\nexport default RefreshCcw;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 3v12', key: '1x0j5s' }],\n ['path', { d: 'm17 8-5-5-5 5', key: '7q97r8' }],\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4', key: 'ih7n3h' }],\n];\n\n/**\n * @component @name Upload\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/upload\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Upload = createLucideIcon('upload', __iconNode);\n\nexport default Upload;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","import { forwardRef, useCallback, useEffect, useState } from 'react';\nimport { useTecof } from '../TecofProvider';\nimport type { UploadedFile } from '../../types';\n\n// FilePond Imports\nimport { FilePond, registerPlugin } from 'react-filepond';\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\nimport FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';\nimport FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\n\n// Vaul and Icons\nimport { Drawer } from 'vaul';\nimport { Image as ImageIcon, FolderOpen, RefreshCcw, X, Upload } from 'lucide-react';\n\nregisterPlugin(\n FilePondPluginFileValidateSize,\n FilePondPluginFileValidateType,\n FilePondPluginImageExifOrientation,\n FilePondPluginImagePreview\n);\n\nconst DEFAULT_ACCEPTED_TYPES = [\n 'image/png', 'image/jpeg', 'image/jpg', 'image/webp', 'image/gif',\n 'image/svg+xml', 'image/avif',\n];\n\nconst isImage = (type: string) =>\n ['png', 'jpg', 'jpeg', 'webp', 'gif', 'svg', 'avif'].includes(type?.toLowerCase());\n\n/* ─── Styles ─── */\nconst s = {\n container: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '8px',\n fontFamily: \"'Inter', system-ui, sans-serif\",\n },\n fileItem: {\n display: 'flex',\n alignItems: 'center' as const,\n gap: '12px',\n padding: '8px',\n background: '#ffffff',\n border: '1px solid #e4e4e7',\n borderRadius: '8px',\n },\n fileThumb: {\n width: '44px',\n height: '44px',\n borderRadius: '6px',\n objectFit: 'cover' as const,\n background: '#f4f4f5',\n flexShrink: 0,\n },\n fileIcon: {\n width: '44px',\n height: '44px',\n borderRadius: '6px',\n background: '#f4f4f5',\n display: 'flex',\n alignItems: 'center' as const,\n justifyContent: 'center' as const,\n color: '#71717a',\n flexShrink: 0,\n },\n fileInfo: {\n flex: 1,\n minWidth: 0,\n },\n fileName: {\n fontSize: '13px',\n fontWeight: 500,\n color: '#18181b',\n whiteSpace: 'nowrap' as const,\n overflow: 'hidden' as const,\n textOverflow: 'ellipsis' as const,\n margin: 0,\n },\n fileType: {\n fontSize: '11px',\n color: '#71717a',\n margin: '2px 0 0 0',\n },\n removeBtn: {\n display: 'flex',\n alignItems: 'center' as const,\n justifyContent: 'center' as const,\n width: '28px',\n height: '28px',\n color: '#a1a1aa',\n background: 'none',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer' as const,\n },\n actionBtns: {\n display: 'flex',\n gap: '8px',\n },\n btnSecondary: {\n display: 'flex',\n alignItems: 'center' as const,\n gap: '6px',\n flex: 1,\n justifyContent: 'center' as const,\n padding: '8px',\n fontSize: '13px',\n fontWeight: 500,\n color: '#3f3f46',\n background: '#f4f4f5',\n border: '1px solid #e4e4e7',\n borderRadius: '6px',\n cursor: 'pointer' as const,\n transition: 'background 0.2s',\n },\n drawerOverlay: {\n position: 'fixed' as const,\n inset: 0,\n background: 'rgba(0, 0, 0, 0.4)',\n zIndex: 9999,\n },\n drawerContent: {\n position: 'fixed' as const,\n bottom: 0,\n left: 0,\n right: 0,\n height: '85vh',\n display: 'flex',\n flexDirection: 'column' as const,\n background: '#ffffff',\n borderTopLeftRadius: '16px',\n borderTopRightRadius: '16px',\n zIndex: 10000,\n padding: '16px',\n },\n drawerHeader: {\n display: 'flex',\n justifyContent: 'space-between' as const,\n alignItems: 'center' as const,\n marginBottom: '16px',\n },\n drawerTitle: {\n fontSize: '18px',\n fontWeight: 600,\n margin: 0,\n },\n drawerCloseBtn: {\n background: '#f4f4f5',\n border: 'none',\n borderRadius: '50%',\n width: '32px',\n height: '32px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n },\n galleryGrid: {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(100px, 1fr))',\n gap: '12px',\n overflowY: 'auto' as const,\n paddingBottom: '24px',\n },\n galleryItem: (selected: boolean) => ({\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center' as const,\n padding: '8px',\n background: selected ? '#eff6ff' : '#fafafa',\n border: `2px solid ${selected ? '#3b82f6' : '#e4e4e7'}`,\n borderRadius: '8px',\n cursor: 'pointer' as const,\n transition: 'all 0.15s ease',\n }),\n galleryThumb: {\n width: '100%',\n aspectRatio: '1',\n objectFit: 'cover' as const,\n borderRadius: '4px',\n marginBottom: '8px',\n },\n} as const;\n\n/* ─── Props ─── */\n\nexport interface UploadFieldProps {\n field: any;\n name: string;\n id: string;\n value: UploadedFile[];\n onChange: (value: UploadedFile[]) => void;\n readOnly?: boolean;\n}\n\nexport interface UploadFieldOptions {\n allowMultiple?: boolean;\n maxFiles?: number;\n acceptedTypes?: string[];\n maxFileSize?: string;\n folder?: string;\n label?: string;\n}\n\n/* ─── FileItem Component ─── */\n\nconst FileItemRenderer = ({ file, onRemove, cdnUrl }: { file: UploadedFile; onRemove?: () => void; cdnUrl: string }) => {\n return (\n <div style={s.fileItem}>\n {isImage(file.type) ? (\n <img src={`${cdnUrl}/${file.name}`} alt={file.name} style={s.fileThumb} />\n ) : (\n <div style={s.fileIcon}><ImageIcon size={20} /></div>\n )}\n <div style={s.fileInfo}>\n <p style={s.fileName}>{file.name}</p>\n <p style={s.fileType}>{file.type?.toUpperCase()}</p>\n </div>\n {onRemove && (\n <button type=\"button\" style={s.removeBtn} onClick={onRemove}>\n <X size={16} />\n </button>\n )}\n </div>\n );\n};\n\n/* ─── Main Component ─── */\n\nexport const UploadField = forwardRef<any, UploadFieldProps & UploadFieldOptions>(({\n value = [],\n onChange,\n allowMultiple = true,\n maxFiles = 10,\n acceptedTypes = DEFAULT_ACCEPTED_TYPES,\n maxFileSize = '5MB',\n folder = '/',\n readOnly,\n}, ref) => {\n const { apiUrl, secretKey, apiClient } = useTecof();\n const cdnUrl = apiClient.cdnUrl;\n\n const [filesForPond, setFilesForPond] = useState<any[]>([]);\n const [showPond, setShowPond] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n\n // Gallery State\n const [galleryFiles, setGalleryFiles] = useState<UploadedFile[]>([]);\n const [loading, setLoading] = useState(false);\n const [refreshKey, setRefreshKey] = useState(0);\n\n // Sync initial FilePond files — we don't strictly load them into FilePond if they are already saved,\n // we just show them in the custom UI and show FilePond purely for *new* uploads.\n\n const handlePondProcess = (error: any, file: any) => {\n if (error) return;\n try {\n const fileData = typeof file.serverId === 'string' ? JSON.parse(file.serverId) : file.serverId;\n if (fileData && fileData._id) {\n const updated = allowMultiple ? [...value, fileData] : [fileData];\n onChange(updated);\n // Clear pond after successful upload so it doesn't duplicate UI\n setTimeout(() => {\n setFilesForPond([]);\n setShowPond(false);\n }, 1000);\n }\n } catch (e) {\n console.error('FilePond upload error:', e);\n }\n };\n\n const handleRemove = (idx: number) => {\n const updated = [...value];\n updated.splice(idx, 1);\n onChange(updated);\n };\n\n // ── Drawer Gallery ──\n useEffect(() => {\n if (!drawerOpen) return;\n setLoading(true);\n apiClient.getUploads(1, 100).then((res) => {\n if (res.success && res.data) {\n setGalleryFiles(res.data);\n }\n setLoading(false);\n }).catch(() => setLoading(false));\n }, [drawerOpen, refreshKey, apiClient]);\n\n const toggleGalleryFile = (file: UploadedFile) => {\n if (allowMultiple) {\n const exists = value.some(f => f._id === file._id);\n if (exists) {\n onChange(value.filter(f => f._id !== file._id));\n } else {\n onChange([...value, file]);\n }\n } else {\n onChange([file]);\n setDrawerOpen(false);\n }\n };\n\n const canAddMore = allowMultiple ? value.length < maxFiles : value.length === 0;\n\n return (\n <div style={s.container} ref={ref}>\n\n {/* Selected Files List */}\n {value.length > 0 && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n {value.map((file, idx) => (\n <FileItemRenderer\n key={file._id || idx}\n file={file}\n cdnUrl={cdnUrl}\n onRemove={readOnly ? undefined : () => handleRemove(idx)}\n />\n ))}\n </div>\n )}\n\n {/* Action Buttons */}\n {!readOnly && canAddMore && !showPond && (\n <div style={s.actionBtns}>\n <button type=\"button\" style={s.btnSecondary} onClick={() => setDrawerOpen(true)}>\n <FolderOpen size={16} /> Medya Seç\n </button>\n <button type=\"button\" style={s.btnSecondary} onClick={() => setShowPond(true)}>\n <Upload size={16} /> Yeni Yükle\n </button>\n </div>\n )}\n\n {/* FilePond Uploader */}\n {!readOnly && showPond && (\n <div style={{ marginTop: '8px', position: 'relative' }}>\n <button\n type=\"button\"\n style={{ ...s.removeBtn, position: 'absolute', top: -30, right: 0 }}\n onClick={() => setShowPond(false)}\n >\n <X size={16} />\n </button>\n <FilePond\n files={filesForPond}\n onupdatefiles={setFilesForPond}\n onprocessfile={handlePondProcess}\n allowMultiple={allowMultiple}\n maxFiles={maxFiles - value.length}\n maxFileSize={maxFileSize}\n acceptedFileTypes={acceptedTypes}\n server={{\n process: (fieldName, file, metadata, load, error, progress, abort) => {\n const formData = new FormData();\n formData.append('files', file, file.name);\n\n const controller = new AbortController();\n const url = folder\n ? `${apiUrl}/api/store/upload?folder=${encodeURIComponent(folder)}`\n : `${apiUrl}/api/store/upload`;\n\n fetch(url, {\n method: 'POST',\n headers: {\n 'x-secret-key': secretKey,\n Accept: 'application/json',\n },\n body: formData,\n signal: controller.signal,\n })\n .then(res => res.json())\n .then(res => {\n if (!res.success) throw new Error(res.message);\n const fileData = res.data?.[0];\n if (!fileData) throw new Error('No file returned from server');\n load(JSON.stringify(fileData));\n })\n .catch(() => error('Yükleme hatası'));\n\n return {\n abort: () => {\n controller.abort();\n abort();\n },\n };\n },\n }}\n name=\"files\"\n labelIdle='Sürükleyip bırakın veya <span class=\"filepond--label-action\">Gözatın</span>'\n credits={false}\n />\n </div>\n )}\n\n {/* Vaul Media Drawer */}\n <Drawer.Root open={drawerOpen} onOpenChange={setDrawerOpen}>\n <Drawer.Portal>\n <Drawer.Overlay style={s.drawerOverlay} />\n <Drawer.Content style={s.drawerContent}>\n <div style={s.drawerHeader}>\n <h2 style={s.drawerTitle}>Medya Kütüphanesi</h2>\n <div style={{ display: 'flex', gap: '8px' }}>\n <button\n style={s.drawerCloseBtn}\n onClick={() => setRefreshKey(k => k + 1)}\n disabled={loading}\n >\n <RefreshCcw size={16} />\n </button>\n <button\n style={s.drawerCloseBtn}\n onClick={() => setDrawerOpen(false)}\n >\n <X size={16} />\n </button>\n </div>\n </div>\n\n {loading ? (\n <div style={{ textAlign: 'center', padding: '40px', color: '#a1a1aa' }}>Yükleniyor...</div>\n ) : (\n <div style={s.galleryGrid}>\n {galleryFiles.map((file) => {\n const selected = value.some(v => v._id === file._id);\n return (\n <div\n key={file._id}\n style={s.galleryItem(selected)}\n onClick={() => toggleGalleryFile(file)}\n >\n {isImage(file.type) ? (\n <img src={`${cdnUrl}/${file.name}`} alt={file.name} style={s.galleryThumb} />\n ) : (\n <div style={{ ...s.galleryThumb, display: 'flex', alignItems: 'center', justifyContent: 'center', background: '#f4f4f5' }}>\n <ImageIcon size={24} color=\"#a1a1aa\" />\n </div>\n )}\n <p style={{ ...s.fileName, fontSize: '11px', width: '100%', textAlign: 'center' }}>\n {file.name}\n </p>\n </div>\n );\n })}\n </div>\n )}\n </Drawer.Content>\n </Drawer.Portal>\n </Drawer.Root>\n\n </div>\n );\n});\n\nUploadField.displayName = 'UploadField';\n\n/* ─── Factory Function ─── */\n\nexport const createUploadField = (options: UploadFieldOptions = {}) => {\n const { label, ...fieldOptions } = options;\n return {\n type: 'custom' as const,\n label,\n render: ({ value, onChange, readOnly, field, name, id }: UploadFieldProps) => (\n <UploadField\n field={field}\n name={name}\n id={id}\n value={value || []}\n onChange={onChange}\n readOnly={readOnly}\n {...fieldOptions}\n />\n ),\n };\n};\n\nexport default UploadField;\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _toPrimitive as toPrimitive, _toPropertyKey as toPropertyKey, _unsupportedIterableToArray as unsupportedIterableToArray };\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n}\n\nfunction curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n nextArgs[_key3] = arguments[_key3];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nfunction isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nfunction isEmpty(obj) {\n return !Object.keys(obj).length;\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction validateChanges(initial, changes) {\n if (!isObject(changes)) errorHandler('changeType');\n if (Object.keys(changes).some(function (field) {\n return !hasOwnProperty(initial, field);\n })) errorHandler('changeField');\n return changes;\n}\n\nfunction validateSelector(selector) {\n if (!isFunction(selector)) errorHandler('selectorType');\n}\n\nfunction validateHandler(handler) {\n if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType');\n if (isObject(handler) && Object.values(handler).some(function (_handler) {\n return !isFunction(_handler);\n })) errorHandler('handlersType');\n}\n\nfunction validateInitial(initial) {\n if (!initial) errorHandler('initialIsRequired');\n if (!isObject(initial)) errorHandler('initialType');\n if (isEmpty(initial)) errorHandler('initialContent');\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n initialIsRequired: 'initial state is required',\n initialType: 'initial state should be an object',\n initialContent: 'initial state shouldn\\'t be an empty object',\n handlerType: 'handler should be an object or a function',\n handlersType: 'all handlers should be a functions',\n selectorType: 'selector should be a function',\n changeType: 'provided value of changes should be an object',\n changeField: 'it seams you want to change a field in the state which is not specified in the \"initial\" state',\n \"default\": 'an unknown error accured in `state-local` package'\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n changes: validateChanges,\n selector: validateSelector,\n handler: validateHandler,\n initial: validateInitial\n};\n\nfunction create(initial) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n validators.initial(initial);\n validators.handler(handler);\n var state = {\n current: initial\n };\n var didUpdate = curry(didStateUpdate)(state, handler);\n var update = curry(updateState)(state);\n var validate = curry(validators.changes)(initial);\n var getChanges = curry(extractChanges)(state);\n\n function getState() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) {\n return state;\n };\n validators.selector(selector);\n return selector(state.current);\n }\n\n function setState(causedChanges) {\n compose(didUpdate, update, validate, getChanges)(causedChanges);\n }\n\n return [getState, setState];\n}\n\nfunction extractChanges(state, causedChanges) {\n return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;\n}\n\nfunction updateState(state, changes) {\n state.current = _objectSpread2(_objectSpread2({}, state.current), changes);\n return changes;\n}\n\nfunction didStateUpdate(state, handler, changes) {\n isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) {\n var _handler$field;\n\n return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);\n });\n return changes;\n}\n\nvar index = {\n create: create\n};\n\nexport default index;\n","var config = {\n paths: {\n vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs'\n }\n};\n\nexport { config as default };\n","function curry(fn) {\n return function curried() {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n nextArgs[_key2] = arguments[_key2];\n }\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nexport { curry as default };\n","function isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nexport { isObject as default };\n","import curry from '../utils/curry.js';\nimport isObject from '../utils/isObject.js';\n\n/**\n * validates the configuration object and informs about deprecation\n * @param {Object} config - the configuration object \n * @return {Object} config - the validated configuration object\n */\nfunction validateConfig(config) {\n if (!config) errorHandler('configIsRequired');\n if (!isObject(config)) errorHandler('configType');\n if (config.urls) {\n informAboutDeprecation();\n return {\n paths: {\n vs: config.urls.monacoBase\n }\n };\n }\n return config;\n}\n\n/**\n * logs deprecation message\n */\nfunction informAboutDeprecation() {\n console.warn(errorMessages.deprecation);\n}\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\nvar errorMessages = {\n configIsRequired: 'the configuration object is required',\n configType: 'the configuration object should be an object',\n \"default\": 'an unknown error accured in `@monaco-editor/loader` package',\n deprecation: \"Deprecation warning!\\n You are using deprecated way of configuration.\\n\\n Instead of using\\n monaco.config({ urls: { monacoBase: '...' } })\\n use\\n monaco.config({ paths: { vs: '...' } })\\n\\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\\n \"\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n config: validateConfig\n};\n\nexport { validators as default, errorHandler, errorMessages };\n","var compose = function compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n};\n\nexport { compose as default };\n","import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction merge(target, source) {\n Object.keys(source).forEach(function (key) {\n if (source[key] instanceof Object) {\n if (target[key]) {\n Object.assign(source[key], merge(target[key], source[key]));\n }\n }\n });\n return _objectSpread2(_objectSpread2({}, target), source);\n}\n\nexport { merge as default };\n","// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325\n\nvar CANCELATION_MESSAGE = {\n type: 'cancelation',\n msg: 'operation is manually canceled'\n};\nfunction makeCancelable(promise) {\n var hasCanceled_ = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise.then(function (val) {\n return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val);\n });\n promise[\"catch\"](reject);\n });\n return wrappedPromise.cancel = function () {\n return hasCanceled_ = true;\n }, wrappedPromise;\n}\n\nexport { CANCELATION_MESSAGE, makeCancelable as default };\n","import { slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport state from 'state-local';\nimport config$1 from '../config/index.js';\nimport validators from '../validators/index.js';\nimport compose from '../utils/compose.js';\nimport merge from '../utils/deepMerge.js';\nimport makeCancelable from '../utils/makeCancelable.js';\n\nvar _excluded = [\"monaco\"];\n\n/** the local state of the module */\nvar _state$create = state.create({\n config: config$1,\n isInitialized: false,\n resolve: null,\n reject: null,\n monaco: null\n }),\n _state$create2 = _slicedToArray(_state$create, 2),\n getState = _state$create2[0],\n setState = _state$create2[1];\n\n/**\n * set the loader configuration\n * @param {Object} config - the configuration object\n */\nfunction config(globalConfig) {\n var _validators$config = validators.config(globalConfig),\n monaco = _validators$config.monaco,\n config = _objectWithoutProperties(_validators$config, _excluded);\n setState(function (state) {\n return {\n config: merge(state.config, config),\n monaco: monaco\n };\n });\n}\n\n/**\n * handles the initialization of the monaco-editor\n * @return {Promise} - returns an instance of monaco (with a cancelable promise)\n */\nfunction init() {\n var state = getState(function (_ref) {\n var monaco = _ref.monaco,\n isInitialized = _ref.isInitialized,\n resolve = _ref.resolve;\n return {\n monaco: monaco,\n isInitialized: isInitialized,\n resolve: resolve\n };\n });\n if (!state.isInitialized) {\n setState({\n isInitialized: true\n });\n if (state.monaco) {\n state.resolve(state.monaco);\n return makeCancelable(wrapperPromise);\n }\n if (window.monaco && window.monaco.editor) {\n storeMonacoInstance(window.monaco);\n state.resolve(window.monaco);\n return makeCancelable(wrapperPromise);\n }\n compose(injectScripts, getMonacoLoaderScript)(configureLoader);\n }\n return makeCancelable(wrapperPromise);\n}\n\n/**\n * injects provided scripts into the document.body\n * @param {Object} script - an HTML script element\n * @return {Object} - the injected HTML script element\n */\nfunction injectScripts(script) {\n return document.body.appendChild(script);\n}\n\n/**\n * creates an HTML script element with/without provided src\n * @param {string} [src] - the source path of the script\n * @return {Object} - the created HTML script element\n */\nfunction createScript(src) {\n var script = document.createElement('script');\n return src && (script.src = src), script;\n}\n\n/**\n * creates an HTML script element with the monaco loader src\n * @return {Object} - the created HTML script element\n */\nfunction getMonacoLoaderScript(configureLoader) {\n var state = getState(function (_ref2) {\n var config = _ref2.config,\n reject = _ref2.reject;\n return {\n config: config,\n reject: reject\n };\n });\n var loaderScript = createScript(\"\".concat(state.config.paths.vs, \"/loader.js\"));\n loaderScript.onload = function () {\n return configureLoader();\n };\n loaderScript.onerror = state.reject;\n return loaderScript;\n}\n\n/**\n * configures the monaco loader\n */\nfunction configureLoader() {\n var state = getState(function (_ref3) {\n var config = _ref3.config,\n resolve = _ref3.resolve,\n reject = _ref3.reject;\n return {\n config: config,\n resolve: resolve,\n reject: reject\n };\n });\n var require = window.require;\n require.config(state.config);\n require(['vs/editor/editor.main'], function (loaded) {\n var monaco = loaded.m /* for 0.53 & 0.54 */ || loaded /* for other versions */;\n storeMonacoInstance(monaco);\n state.resolve(monaco);\n }, function (error) {\n state.reject(error);\n });\n}\n\n/**\n * store monaco instance in local state\n */\nfunction storeMonacoInstance(monaco) {\n if (!getState().monaco) {\n setState({\n monaco: monaco\n });\n }\n}\n\n/**\n * internal helper function\n * extracts stored monaco instance\n * @return {Object|null} - the monaco instance\n */\nfunction __getMonacoInstance() {\n return getState(function (_ref4) {\n var monaco = _ref4.monaco;\n return monaco;\n });\n}\nvar wrapperPromise = new Promise(function (resolve, reject) {\n return setState({\n resolve: resolve,\n reject: reject\n });\n});\nvar loader = {\n config: config,\n init: init,\n __getMonacoInstance: __getMonacoInstance\n};\n\nexport { loader as default };\n","import { type CSSProperties } from 'react';\n\nconst styles: Record<string, CSSProperties> = {\n wrapper: {\n display: 'flex',\n position: 'relative',\n textAlign: 'initial',\n },\n fullWidth: {\n width: '100%',\n },\n hide: {\n display: 'none',\n },\n};\n\nexport default styles;\n","import { type CSSProperties } from 'react';\n\nconst styles: Record<string, CSSProperties> = {\n container: {\n display: 'flex',\n height: '100%',\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n};\n\nexport default styles;\n","import React, { type PropsWithChildren } from 'react';\n\nimport styles from './styles';\n\nfunction Loading({ children }: PropsWithChildren) {\n return <div style={styles.container}>{children}</div>;\n}\n\nexport default Loading;\n","import Loading from './Loading';\n\nexport default Loading;\n","import React from 'react';\n\nimport styles from './styles';\nimport Loading from '../Loading';\nimport { type ContainerProps } from './types';\n\n// ** forwardref render functions do not support proptypes or defaultprops **\n// one of the reasons why we use a separate prop for passing ref instead of using forwardref\n\nfunction MonacoContainer({\n width,\n height,\n isEditorReady,\n loading,\n _ref,\n className,\n wrapperProps,\n}: ContainerProps) {\n return (\n <section style={{ ...styles.wrapper, width, height }} {...wrapperProps}>\n {!isEditorReady && <Loading>{loading}</Loading>}\n <div\n ref={_ref}\n style={{ ...styles.fullWidth, ...(!isEditorReady && styles.hide) }}\n className={className}\n />\n </section>\n );\n}\n\nexport default MonacoContainer;\n","import { memo } from 'react';\n\nimport MonacoContainer from './MonacoContainer';\n\nexport default memo(MonacoContainer);\n","import { useEffect, type EffectCallback } from 'react';\n\nfunction useMount(effect: EffectCallback) {\n useEffect(effect, []);\n}\n\nexport default useMount;\n","import { useEffect, useRef, type DependencyList, type EffectCallback } from 'react';\n\nfunction useUpdate(effect: EffectCallback, deps: DependencyList, applyChanges = true) {\n const isInitialMount = useRef(true);\n\n useEffect(\n isInitialMount.current || !applyChanges\n ? () => {\n isInitialMount.current = false;\n }\n : effect,\n deps,\n );\n}\n\nexport default useUpdate;\n","import { type Monaco } from '..';\n\n/**\n * noop is a helper function that does nothing\n * @returns undefined\n */\nfunction noop() {\n /** no-op */\n}\n\n/**\n * getOrCreateModel is a helper function that will return a model if it exists\n * or create a new model if it does not exist.\n * This is useful for when you want to create a model for a file that may or may not exist yet.\n * @param monaco The monaco instance\n * @param value The value of the model\n * @param language The language of the model\n * @param path The path of the model\n * @returns The model that was found or created\n */\nfunction getOrCreateModel(monaco: Monaco, value: string, language: string, path: string) {\n return getModel(monaco, path) || createModel(monaco, value, language, path);\n}\n\n/**\n * getModel is a helper function that will return a model if it exists\n * or return undefined if it does not exist.\n * @param monaco The monaco instance\n * @param path The path of the model\n * @returns The model that was found or undefined\n */\nfunction getModel(monaco: Monaco, path: string) {\n return monaco.editor.getModel(createModelUri(monaco, path));\n}\n\n/**\n * createModel is a helper function that will create a new model\n * @param monaco The monaco instance\n * @param value The value of the model\n * @param language The language of the model\n * @param path The path of the model\n * @returns The model that was created\n */\nfunction createModel(monaco: Monaco, value: string, language?: string, path?: string) {\n return monaco.editor.createModel(\n value,\n language,\n path ? createModelUri(monaco, path) : undefined,\n );\n}\n\n/**\n * createModelUri is a helper function that will create a new model uri\n * @param monaco The monaco instance\n * @param path The path of the model\n * @returns The model uri that was created\n */\nfunction createModelUri(monaco: Monaco, path: string) {\n return monaco.Uri.parse(path);\n}\n\nexport { noop, getOrCreateModel };\n","'use client';\n\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport loader from '@monaco-editor/loader';\n\nimport MonacoContainer from '../MonacoContainer';\nimport useMount from '../hooks/useMount';\nimport useUpdate from '../hooks/useUpdate';\nimport { noop, getOrCreateModel } from '../utils';\nimport { type DiffEditorProps, type MonacoDiffEditor } from './types';\nimport { type Monaco } from '..';\n\nfunction DiffEditor({\n original,\n modified,\n language,\n originalLanguage,\n modifiedLanguage,\n originalModelPath,\n modifiedModelPath,\n keepCurrentOriginalModel = false,\n keepCurrentModifiedModel = false,\n theme = 'light',\n loading = 'Loading...',\n options = {},\n height = '100%',\n width = '100%',\n className,\n wrapperProps = {},\n beforeMount = noop,\n onMount = noop,\n}: DiffEditorProps) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const editorRef = useRef<MonacoDiffEditor | null>(null);\n const monacoRef = useRef<Monaco | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const preventCreation = useRef(false);\n\n useMount(() => {\n const cancelable = loader.init();\n\n cancelable\n .then((monaco) => (monacoRef.current = monaco) && setIsMonacoMounting(false))\n .catch(\n (error) =>\n error?.type !== 'cancelation' && console.error('Monaco initialization: error:', error),\n );\n\n return () => (editorRef.current ? disposeEditor() : cancelable.cancel());\n });\n\n useUpdate(\n () => {\n if (editorRef.current && monacoRef.current) {\n const originalEditor = editorRef.current.getOriginalEditor();\n const model = getOrCreateModel(\n monacoRef.current,\n original || '',\n originalLanguage || language || 'text',\n originalModelPath || '',\n );\n\n if (model !== originalEditor.getModel()) {\n originalEditor.setModel(model);\n }\n }\n },\n [originalModelPath],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n if (editorRef.current && monacoRef.current) {\n const modifiedEditor = editorRef.current.getModifiedEditor();\n const model = getOrCreateModel(\n monacoRef.current,\n modified || '',\n modifiedLanguage || language || 'text',\n modifiedModelPath || '',\n );\n\n if (model !== modifiedEditor.getModel()) {\n modifiedEditor.setModel(model);\n }\n }\n },\n [modifiedModelPath],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const modifiedEditor = editorRef.current!.getModifiedEditor();\n if (modifiedEditor.getOption(monacoRef.current!.editor.EditorOption.readOnly)) {\n modifiedEditor.setValue(modified || '');\n } else {\n if (modified !== modifiedEditor.getValue()) {\n modifiedEditor.executeEdits('', [\n {\n range: modifiedEditor.getModel()!.getFullModelRange(),\n text: modified || '',\n forceMoveMarkers: true,\n },\n ]);\n\n modifiedEditor.pushUndoStop();\n }\n }\n },\n [modified],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.getModel()?.original.setValue(original || '');\n },\n [original],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const { original, modified } = editorRef.current!.getModel()!;\n\n monacoRef.current!.editor.setModelLanguage(original, originalLanguage || language || 'text');\n monacoRef.current!.editor.setModelLanguage(modified, modifiedLanguage || language || 'text');\n },\n [language, originalLanguage, modifiedLanguage],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n monacoRef.current?.editor.setTheme(theme);\n },\n [theme],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.updateOptions(options);\n },\n [options],\n isEditorReady,\n );\n\n const setModels = useCallback(() => {\n if (!monacoRef.current) return;\n beforeMountRef.current(monacoRef.current);\n const originalModel = getOrCreateModel(\n monacoRef.current,\n original || '',\n originalLanguage || language || 'text',\n originalModelPath || '',\n );\n\n const modifiedModel = getOrCreateModel(\n monacoRef.current,\n modified || '',\n modifiedLanguage || language || 'text',\n modifiedModelPath || '',\n );\n\n editorRef.current?.setModel({\n original: originalModel,\n modified: modifiedModel,\n });\n }, [\n language,\n modified,\n modifiedLanguage,\n original,\n originalLanguage,\n originalModelPath,\n modifiedModelPath,\n ]);\n\n const createEditor = useCallback(() => {\n if (!preventCreation.current && containerRef.current) {\n editorRef.current = monacoRef.current!.editor.createDiffEditor(containerRef.current, {\n automaticLayout: true,\n ...options,\n });\n\n setModels();\n\n monacoRef.current?.editor.setTheme(theme);\n\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [options, theme, setModels]);\n\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current!, monacoRef.current!);\n }\n }, [isEditorReady]);\n\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n function disposeEditor() {\n const models = editorRef.current?.getModel();\n\n if (!keepCurrentOriginalModel) {\n models?.original?.dispose();\n }\n\n if (!keepCurrentModifiedModel) {\n models?.modified?.dispose();\n }\n\n editorRef.current?.dispose();\n }\n\n return (\n <MonacoContainer\n width={width}\n height={height}\n isEditorReady={isEditorReady}\n loading={loading}\n _ref={containerRef}\n className={className}\n wrapperProps={wrapperProps}\n />\n );\n}\n\nexport default DiffEditor;\n","import { memo } from 'react';\n\nimport DiffEditor from './DiffEditor';\n\nexport * from './types';\n\nexport default memo(DiffEditor);\n","import { useEffect, useRef } from 'react';\n\nfunction usePrevious<T>(value: T) {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n\nexport default usePrevious;\n","'use client';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport loader from '@monaco-editor/loader';\nimport useMount from '../hooks/useMount';\nimport useUpdate from '../hooks/useUpdate';\nimport usePrevious from '../hooks/usePrevious';\nimport { type IDisposable, type editor } from 'monaco-editor';\nimport { noop, getOrCreateModel } from '../utils';\nimport { type EditorProps } from './types';\nimport { type Monaco } from '..';\nimport MonacoContainer from '../MonacoContainer';\n\nconst viewStates = new Map();\n\nfunction Editor({\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n /* === */\n theme = 'light',\n line,\n loading = 'Loading...',\n options = {},\n overrideServices = {},\n saveViewState = true,\n keepCurrentModel = false,\n /* === */\n width = '100%',\n height = '100%',\n className,\n wrapperProps = {},\n /* === */\n beforeMount = noop,\n onMount = noop,\n onChange,\n onValidate = noop,\n}: EditorProps) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const monacoRef = useRef<Monaco | null>(null);\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const subscriptionRef = useRef<IDisposable>();\n const valueRef = useRef(value);\n const previousPath = usePrevious(path);\n const preventCreation = useRef(false);\n const preventTriggerChangeEvent = useRef<boolean>(false);\n\n useMount(() => {\n const cancelable = loader.init();\n\n cancelable\n .then((monaco) => (monacoRef.current = monaco) && setIsMonacoMounting(false))\n .catch(\n (error) =>\n error?.type !== 'cancelation' && console.error('Monaco initialization: error:', error),\n );\n\n return () => (editorRef.current ? disposeEditor() : cancelable.cancel());\n });\n\n useUpdate(\n () => {\n const model = getOrCreateModel(\n monacoRef.current!,\n defaultValue || value || '',\n defaultLanguage || language || '',\n path || defaultPath || '',\n );\n\n if (model !== editorRef.current?.getModel()) {\n if (saveViewState) viewStates.set(previousPath, editorRef.current?.saveViewState());\n editorRef.current?.setModel(model);\n if (saveViewState) editorRef.current?.restoreViewState(viewStates.get(path));\n }\n },\n [path],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.updateOptions(options);\n },\n [options],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n if (!editorRef.current || value === undefined) return;\n if (editorRef.current.getOption(monacoRef.current!.editor.EditorOption.readOnly)) {\n editorRef.current.setValue(value);\n } else if (value !== editorRef.current.getValue()) {\n preventTriggerChangeEvent.current = true;\n editorRef.current.executeEdits('', [\n {\n range: editorRef.current.getModel()!.getFullModelRange(),\n text: value,\n forceMoveMarkers: true,\n },\n ]);\n\n editorRef.current.pushUndoStop();\n preventTriggerChangeEvent.current = false;\n }\n },\n [value],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const model = editorRef.current?.getModel();\n if (model && language) monacoRef.current?.editor.setModelLanguage(model, language);\n },\n [language],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n // reason for undefined check: https://github.com/suren-atoyan/monaco-react/pull/188\n if (line !== undefined) {\n editorRef.current?.revealLine(line);\n }\n },\n [line],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n monacoRef.current?.editor.setTheme(theme);\n },\n [theme],\n isEditorReady,\n );\n\n const createEditor = useCallback(() => {\n if (!containerRef.current || !monacoRef.current) return;\n if (!preventCreation.current) {\n beforeMountRef.current(monacoRef.current);\n const autoCreatedModelPath = path || defaultPath;\n\n const defaultModel = getOrCreateModel(\n monacoRef.current,\n value || defaultValue || '',\n defaultLanguage || language || '',\n autoCreatedModelPath || '',\n );\n\n editorRef.current = monacoRef.current?.editor.create(\n containerRef.current,\n {\n model: defaultModel,\n automaticLayout: true,\n ...options,\n },\n overrideServices,\n );\n\n saveViewState && editorRef.current.restoreViewState(viewStates.get(autoCreatedModelPath));\n\n monacoRef.current.editor.setTheme(theme);\n\n if (line !== undefined) {\n editorRef.current.revealLine(line);\n }\n\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n options,\n overrideServices,\n saveViewState,\n theme,\n line,\n ]);\n\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current!, monacoRef.current!);\n }\n }, [isEditorReady]);\n\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n // subscription\n // to avoid unnecessary updates (attach - dispose listener) in subscription\n valueRef.current = value;\n\n // onChange\n useEffect(() => {\n if (isEditorReady && onChange) {\n subscriptionRef.current?.dispose();\n subscriptionRef.current = editorRef.current?.onDidChangeModelContent((event) => {\n if (!preventTriggerChangeEvent.current) {\n onChange(editorRef.current!.getValue(), event);\n }\n });\n }\n }, [isEditorReady, onChange]);\n\n // onValidate\n useEffect(() => {\n if (isEditorReady) {\n const changeMarkersListener = monacoRef.current!.editor.onDidChangeMarkers((uris) => {\n const editorUri = editorRef.current!.getModel()?.uri;\n\n if (editorUri) {\n const currentEditorHasMarkerChanges = uris.find((uri) => uri.path === editorUri.path);\n if (currentEditorHasMarkerChanges) {\n const markers = monacoRef.current!.editor.getModelMarkers({\n resource: editorUri,\n });\n onValidate?.(markers);\n }\n }\n });\n\n return () => {\n changeMarkersListener?.dispose();\n };\n }\n return () => {\n // eslint happy\n };\n }, [isEditorReady, onValidate]);\n\n function disposeEditor() {\n subscriptionRef.current?.dispose();\n\n if (keepCurrentModel) {\n saveViewState && viewStates.set(path, editorRef.current!.saveViewState());\n } else {\n editorRef.current!.getModel()?.dispose();\n }\n\n editorRef.current!.dispose();\n }\n\n return (\n <MonacoContainer\n width={width}\n height={height}\n isEditorReady={isEditorReady}\n loading={loading}\n _ref={containerRef}\n className={className}\n wrapperProps={wrapperProps}\n />\n );\n}\n\nexport default Editor;\n","import { memo } from 'react';\n\nimport Editor from './Editor';\n\nexport * from './types';\n\nexport default memo(Editor);\n","import loader from '@monaco-editor/loader';\nexport { loader };\n\nimport DiffEditor from './DiffEditor';\nexport * from './DiffEditor/types';\nexport { DiffEditor };\n\nimport useMonaco from './hooks/useMonaco';\nexport { useMonaco };\n\nimport Editor from './Editor';\nexport * from './Editor/types';\nexport { Editor };\nexport default Editor;\n\n// Monaco\nimport type * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nexport type Monaco = typeof monaco;\n\n// Default themes\nexport type Theme = 'vs-dark' | 'light';\n","import React, { forwardRef, useRef } from 'react';\nimport Editor from '@monaco-editor/react';\n\n/* ─── Props ─── */\n\nexport interface CodeEditorFieldProps {\n field: any;\n name: string;\n id: string;\n value: string;\n onChange: (value: string) => void;\n readOnly?: boolean;\n}\n\nexport interface CodeEditorFieldOptions {\n label?: string;\n defaultLanguage?: string;\n height?: string;\n theme?: string;\n}\n\n/* ─── Styles ─── */\n\nconst s = {\n container: {\n width: '100%',\n fontFamily: \"'Inter', system-ui, sans-serif\",\n border: '1px solid #e4e4e7',\n borderRadius: '8px',\n overflow: 'hidden',\n background: '#ffffff',\n },\n} as const;\n\n/* ─── Component ─── */\n\n/**\n * CodeEditorField — A code editor custom field for Puck.\n * Uses Monaco Editor (@monaco-editor/react).\n */\nexport const CodeEditorField = forwardRef<any, CodeEditorFieldProps & CodeEditorFieldOptions>(({\n value,\n onChange,\n readOnly,\n defaultLanguage = 'html',\n height = '300px',\n theme = 'vs-dark',\n}, ref) => {\n const editorRef = useRef<any>(null);\n\n const handleEditorDidMount = (editor: any) => {\n editorRef.current = editor;\n };\n\n return (\n <div ref={ref} style={s.container}>\n <Editor\n onMount={handleEditorDidMount}\n theme={theme}\n width=\"100%\"\n height={height}\n defaultLanguage={defaultLanguage}\n value={value || ''}\n onChange={(val) => onChange(val || '')}\n options={{\n readOnly,\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n padding: { top: 12, bottom: 12 },\n fontSize: 13,\n wordWrap: 'on',\n }}\n />\n </div>\n );\n});\n\nCodeEditorField.displayName = 'CodeEditorField';\n\n/* ─── Factory Function ─── */\n\n/**\n * Creates a Puck custom field definition for code editing.\n *\n * @example\n * ```ts\n * import { createCodeEditorField } from '@tecof/theme-editor';\n *\n * const config = {\n * components: {\n * CustomHero: {\n * fields: {\n * customHtml: createCodeEditorField({\n * label: 'Özel HTML Kodu',\n * defaultLanguage: 'html',\n * height: '400px',\n * }),\n * },\n * defaultProps: { customHtml: '' },\n * render: ({ customHtml }) => <div dangerouslySetInnerHTML={{ __html: customHtml }} />,\n * },\n * },\n * };\n * ```\n */\nexport const createCodeEditorField = (options: CodeEditorFieldOptions = {}) => {\n const { label, ...fieldOptions } = options;\n\n return {\n type: 'custom' as const,\n label,\n render: ({ value, onChange, readOnly, field, name, id }: CodeEditorFieldProps) => (\n <CodeEditorField\n field={field}\n name={name}\n id={id}\n value={value || ''}\n onChange={onChange}\n readOnly={readOnly}\n {...fieldOptions}\n />\n ),\n };\n};\n\nexport default CodeEditorField;\n","import type { ThemeConfig, HSL } from '../types';\n\n/* ─── Color Converters ─── */\n\nexport function hexToHsl(hex: string): HSL {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return { h: 0, s: 0, l: 0 };\n\n let r = parseInt(result[1], 16) / 255;\n let g = parseInt(result[2], 16) / 255;\n let b = parseInt(result[3], 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const sNorm = s / 100;\n const lNorm = l / 100;\n const a = sNorm * Math.min(lNorm, 1 - lNorm);\n\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n const color = lNorm - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color)\n .toString(16)\n .padStart(2, '0');\n };\n\n return `#${f(0)}${f(8)}${f(4)}`;\n}\n\n/* ─── Color Manipulation ─── */\n\nexport function lighten(hex: string, amount: number): string {\n const { h, s, l } = hexToHsl(hex);\n return hslToHex(h, s, Math.min(100, l + amount));\n}\n\nexport function darken(hex: string, amount: number): string {\n const { h, s, l } = hexToHsl(hex);\n return hslToHex(h, s, Math.max(0, l - amount));\n}\n\n/* ─── CSS Variable Generation ─── */\n\nexport function generateCSSVariables(theme: ThemeConfig): string {\n const lines: string[] = [':root {'];\n\n // Colors\n for (const [key, value] of Object.entries(theme.colors)) {\n const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n lines.push(` --theme-color-${cssKey}: ${value};`);\n }\n\n // Typography\n lines.push(` --theme-font-family: ${theme.typography.fontFamily};`);\n lines.push(` --theme-heading-font-family: ${theme.typography.headingFontFamily};`);\n lines.push(` --theme-font-size-base: ${theme.typography.baseFontSize}px;`);\n lines.push(` --theme-line-height: ${theme.typography.lineHeight};`);\n lines.push(` --theme-font-weight-normal: ${theme.typography.fontWeightNormal};`);\n lines.push(` --theme-font-weight-medium: ${theme.typography.fontWeightMedium};`);\n lines.push(` --theme-font-weight-bold: ${theme.typography.fontWeightBold};`);\n\n for (const [level, scale] of Object.entries(theme.typography.headingScale)) {\n lines.push(` --theme-heading-${level}: ${scale}rem;`);\n }\n\n // Spacing\n lines.push(` --theme-container-max-width: ${theme.spacing.containerMaxWidth}px;`);\n lines.push(` --theme-section-padding-y: ${theme.spacing.sectionPaddingY}px;`);\n lines.push(` --theme-section-padding-x: ${theme.spacing.sectionPaddingX}px;`);\n lines.push(` --theme-component-gap: ${theme.spacing.componentGap}px;`);\n lines.push(` --theme-border-radius: ${theme.spacing.borderRadius}px;`);\n lines.push(` --theme-border-radius-lg: ${theme.spacing.borderRadiusLg}px;`);\n lines.push(` --theme-border-radius-sm: ${theme.spacing.borderRadiusSm}px;`);\n\n // Custom tokens\n if (theme.customTokens) {\n for (const [key, value] of Object.entries(theme.customTokens)) {\n lines.push(` --theme-${key}: ${value};`);\n }\n }\n\n lines.push('}');\n return lines.join('\\n');\n}\n\n/* ─── Default Theme ─── */\n\nexport function getDefaultTheme(): ThemeConfig {\n return {\n colors: {\n primary: '#18181b',\n secondary: '#f4f4f5',\n accent: '#3b82f6',\n background: '#ffffff',\n foreground: '#09090b',\n muted: '#f4f4f5',\n mutedForeground: '#71717a',\n border: '#e4e4e7',\n card: '#ffffff',\n cardForeground: '#09090b',\n destructive: '#ef4444',\n },\n typography: {\n fontFamily: \"'Inter', system-ui, -apple-system, sans-serif\",\n headingFontFamily: \"'Inter', system-ui, -apple-system, sans-serif\",\n baseFontSize: 16,\n lineHeight: 1.6,\n headingScale: {\n h1: 3,\n h2: 2.25,\n h3: 1.875,\n h4: 1.5,\n h5: 1.25,\n h6: 1,\n },\n fontWeightNormal: 400,\n fontWeightMedium: 500,\n fontWeightBold: 700,\n },\n spacing: {\n containerMaxWidth: 1280,\n sectionPaddingY: 80,\n sectionPaddingX: 24,\n componentGap: 24,\n borderRadius: 8,\n borderRadiusLg: 12,\n borderRadiusSm: 4,\n },\n };\n}\n\n/* ─── Deep Merge ─── */\n\nfunction isObject(item: unknown): item is Record<string, unknown> {\n return Boolean(item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeTheme(base: ThemeConfig, overrides: Partial<ThemeConfig>): ThemeConfig {\n const result: ThemeConfig = {\n colors: { ...base.colors, ...(overrides.colors ?? {}) },\n typography: { ...base.typography, ...(overrides.typography ?? {}) },\n spacing: { ...base.spacing, ...(overrides.spacing ?? {}) },\n customTokens: { ...(base.customTokens ?? {}), ...(overrides.customTokens ?? {}) },\n };\n\n // Deep-merge headingScale if provided\n if (overrides.typography?.headingScale) {\n result.typography.headingScale = {\n ...base.typography.headingScale,\n ...overrides.typography.headingScale,\n };\n }\n\n return result;\n}\n"]}
|