@manifest-editor/shell 1.0.0
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/dist/cjs/index.cjs +33 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/esm/index.mjs +11867 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/style.css +1 -0
- package/index.d.ts +1301 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../../node_modules/react/jsx-runtime.js","../../../../src/madoc/use-local-storage.ts","../../../../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../../../../src/shell/ProjectContext/ProjectContext.tsx","../../../../src/shell/DesktopContext/DesktopContext.tsx","../../../../node_modules/strict-uri-encode/index.js","../../../../node_modules/decode-uri-component/index.js","../../../../node_modules/split-on-first/index.js","../../../../node_modules/filter-obj/index.js","../../../../node_modules/query-string/index.js","../../../../src/shell/AppContext/AppContext.tsx","../../../../src/atoms/Button.tsx","../../../../src/shell/AppHeader/AppHeader.styles.ts","../../../../src/shell/PreviewContext/previews/ExternalManifestUrlPreview.ts","../../../../src/shell/PreviewContext/previews/IIIFPreviewService.ts","../../../../node_modules/@tauri-apps/api/tslib.es6-9bc0804d.js","../../../../node_modules/@tauri-apps/api/tauri-fa8f44bd.js","../../../../node_modules/@tauri-apps/api/tauri-7cafdaf8.js","../../../../node_modules/@tauri-apps/api/event-aba177ae.js","../../../../node_modules/@tauri-apps/api/window-39e643b2.js","../../../../node_modules/slugify/slugify.js","../../../../src/shell/PreviewContext/PreviewContext.hooks.ts","../../../../node_modules/immer/dist/immer.esm.js","../../../../src/shell/PreviewContext/PreviewContext.reducer.ts","../../../../src/shell/PreviewContext/PreviewContext.tsx","../../../../src/components/organisms/PreviewButton/PreviewButton.styles.ts","../../../../node_modules/react-accessible-dropdown-menu-hook/dist/use-dropdown-menu.js","../../../../src/icons/DownIcon.tsx","../../../../src/madoc/components/icons/CloseIcon.tsx","../../../../src/components/organisms/PreviewButton/PreviewButton.tsx","../../../../src/atoms/Dropdown.tsx","../../../../src/components/layout/FlexContainer.tsx","../../../../src/atoms/RecentFilesWidget.tsx","../../../../node_modules/@iiif/vault-helpers/dist/esm/index.mjs","../../../../src/atoms/TemplateCard.tsx","../../../../src/icons/AddIcon.tsx","../../../../src/atoms/WidgetHeader.tsx","../../../../src/components/widgets/NewTemplates.tsx","../../../../src/madoc/components/callouts/BaseMessage.tsx","../../../../src/madoc/components/callouts/InfoMessage.tsx","../../../../src/atoms/PaddingComponent.tsx","../../../../src/components/modals/NewManifestModal.tsx","../../../../src/madoc/components/FullScreenEnterIcon.tsx","../../../../src/madoc/components/Modal.tsx","../../../../src/madoc/components/ModalButton.tsx","../../../../src/apps/Shell/ShellOptions.tsx","../../../../src/atoms/ManifestEditorLogo.tsx","../../../../src/shell/AppHeader/components/DraftTitleEditor.tsx","../../../../src/icons/MenuIcon.tsx","../../../../src/shell/AppHeader/components/AppMenu.tsx","../../../../src/shell/AppHeader/AppHeader.tsx","../../../../src/shell/DesktopContext/hooks/useIsDesktop.ts","../../../../src/shell/ConfigContext/ConfigContext.tsx","../../../../src/shell/EditingStack/EditingStack.reducer.ts","../../../../src/editor-api/BaseEditor.ts","../../../../src/editor-api/meta/descriptive.ts","../../../../src/editor-api/BasePropertyEditor.ts","../../../../node_modules/@iiif/vault/dist/actions/esm/index.mjs","../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/uuid/dist/esm-browser/regex.js","../../../../node_modules/uuid/dist/esm-browser/validate.js","../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/uuid/dist/esm-browser/v4.js","../../../../src/editor-api/MetadataEditor.ts","../../../../src/editor-api/RequiredStatementEditor.ts","../../../../src/editor-api/meta/rights.ts","../../../../src/editor-api/RightsStatementEditor.ts","../../../../src/editor-api/NavDateEditor.ts","../../../../src/editor-api/InternationalStringEditor.ts","../../../../src/editor-api/BaseReferenceListEditor.ts","../../../../src/editor-api/DescriptiveEditor.ts","../../../../src/editor-api/PropertyObserver.ts","../../../../src/editor-api/SelfReferenceEditor.ts","../../../../src/editor-api/ReadonlyProperty.ts","../../../../src/editor-api/meta/behavior.ts","../../../../src/editor-api/BehaviorEditor.ts","../../../../src/editor-api/TechnicalPropertiesEditor.ts","../../../../src/editor-api/LinkingEditor.ts","../../../../src/editor-api/StructuralEditor.ts","../../../../src/editor-api/meta/linking.ts","../../../../src/editor-api/meta/structural.ts","../../../../src/editor-api/meta/technical.ts","../../../../src/editor-api/meta/extensions.ts","../../../../src/editor-api/meta/resources.ts","../../../../src/editor-api/AnnotationTargetEditor.ts","../../../../src/editor-api/AnnotationBodyEditor.ts","../../../../src/editor-api/AnnotationEditor.ts","../../../../src/editor-api/NavPlaceEditor.ts","../../../../src/editor-api/ExtensionsEditor.ts","../../../../src/editor-api/EditorInstance.ts","../../../../src/shell/EditingStack/EditingStack.tsx","../../../../src/shell/Layout/Layout.context.tsx","../../../../src/shell/Layout/Layout.styles.ts","../../../../src/icons/StarIcon.tsx","../../../../src/icons/CloseIcon.tsx","../../../../src/icons/BackIcon.tsx","../../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../../../../src/atoms/PaddedSidebarContainer.ts","../../../../src/madoc/components/callouts/ErrorMessage.tsx","../../../../src/madoc/components/callouts/ExperimentalMessage.tsx","../../../../src/madoc/components/icons/ExperimentalIcon.tsx","../../../../src/helpers/limitation.ts","../../../../src/helpers/fix-me.ts","../../../../src/madoc/components/callouts/WarningMessage.tsx","../../../../src/shell/Layout/components/PanelError.tsx","../../../../src/shell/Layout/Layout.helpers.ts","../../../../src/icons/ChangeIcon.tsx","../../../../src/shell/Layout/components/ModularPanel.tsx","../../../../src/shell/Layout/Layout.mobile.tsx","../../../../src/icons/ResetIcon.tsx","../../../../src/shell/Layout/components/HandleControls.tsx","../../../../src/madoc/use-event-handler.ts","../../../../src/madoc/use-resize-layouts.tsx","../../../../node_modules/shallowequal/index.js","../../../../node_modules/use-match-media-hook/dist/bundle.esm.js","../../../../src/madoc/components/icons/Spinner.tsx","../../../../src/_components/ui/GhostBlocks/GhostBlocks.styles.ts","../../../../src/_components/ui/GhostBlocks/GhostBlocks.tsx","../../../../src/shell/Layout/components/MiniEditor.tsx","../../../../src/shell/Layout/Layout.tsx","../../../../src/shell/Layout/Layout.reducer.ts","../../../../src/shell/Layout/Layout.hooks.ts","../../../../node_modules/tiny-use-debounce/dist/index.js","../../../../src/helpers/getManifestNormalized.ts","../../../../src/shell/ProjectContext/helpers/project-from-manifest.ts","../../../../node_modules/@iiif/parser/dist/presentation-2/esm/index.mjs","../../../../src/shell/ProjectContext/helpers/ensure-unique-filename.ts","../../../../src/shell/ProjectContext/helpers/project-from-collection.ts","../../../../src/shell/ProjectContext/ProjectContext.hooks.ts","../../../../node_modules/localforage/dist/localforage.js","../../../../src/shell/ProjectContext/backend/LocalStorageBackend.ts","../../../../src/shell/ProjectContext/storage/AbstractVaultLoader.ts","../../../../src/shell/ProjectContext/storage/WebsocketLoader.ts","../../../../src/shell/ProjectContext/storage/LocalStorageLoader.ts","../../../../node_modules/@iiif/vault/dist/utility/esm/index.mjs","../../../../src/shell/PreviewVault/create-preview-vault.ts","../../../../src/shell/PreviewVault/PreviewVault.tsx","../../../../src/shell/ResourceEditingContext/ResourceEditingContext.tsx","../../../../src/shell/Layout/Layout.context-internal.tsx","../../../../node_modules/@tauri-apps/api/fs-af92a606.js","../../../../node_modules/@tauri-apps/api/os-check-094ffe86.js","../../../../node_modules/@tauri-apps/api/path-bb188e20.js","../../../../src/shell/ProjectContext/ProjectContext.reducer.ts","../../../../src/shell/ProjectContext/ProjectContext.internal.tsx","../../../../src/apps/ManifestEditorLegacy/ManifestEditor.context.tsx","../../../../src/themes/default-theme.ts","../../../../src/atoms/ErrorBoundary.tsx","../../../../src/shell/ShellContext/ShellContext.tsx","../../../../src/shell/TaskBridge/TaskBridge.tsx","../../../../src/helpers/analyse.ts","../../../../src/shell/Universal/UniversalCopyPaste.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport mitt from \"mitt\";\n\nconst lsEmitter = mitt();\n\nexport function useOptionalLocalStorage<T>(key: string, initialValue?: T, disabled?: boolean) {\n const [storedValue, setStoredValue] = useState<T | undefined>(initialValue);\n const [localStorageValue, setLocalStorageValue] = useLocalStorage(key, initialValue);\n\n if (disabled) {\n return [storedValue, setStoredValue] as const;\n }\n return [localStorageValue, setLocalStorageValue] as const;\n}\n\nexport function useLocalStorage<T>(key: string, initialValue?: T) {\n const lastStoredValue = useRef<string>();\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n try {\n if (typeof window === \"undefined\" || typeof window.localStorage === \"undefined\") {\n return initialValue as T;\n }\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n if (item) {\n lastStoredValue.current = item;\n }\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue as T;\n }\n });\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = (value: ((prev: T) => T) | T) => {\n try {\n if (typeof window !== \"undefined\" && typeof window.localStorage !== \"undefined\") {\n // Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n const valueJson = JSON.stringify(valueToStore);\n // Save to local storage\n window.localStorage.setItem(key, valueJson);\n // Store last changed value.\n lastStoredValue.current = valueJson;\n // Emit change for other hooks.\n lsEmitter.emit(`change:${key}`, { valueJson });\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n\n // Detect adjacent hook changes.\n useEffect(() => {\n const listener: any = ({ valueJson }: { valueJson: string | null }) => {\n if (valueJson && valueJson !== lastStoredValue.current) {\n try {\n setStoredValue(JSON.parse(valueJson));\n lastStoredValue.current = valueJson;\n } catch (e) {\n // unknown error.\n }\n }\n };\n\n lsEmitter.on(`change:${key}`, listener);\n\n return () => {\n lsEmitter.off(`change:${key}`, listener);\n };\n }, [key]);\n\n return [storedValue, setValue, lastStoredValue] as const;\n}\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import { createContext, useContext } from \"react\";\nimport { EditorProject, ProjectContext } from \"./ProjectContext.types\";\nimport invariant from \"tiny-invariant\";\n\nexport const ProjectReactContext = createContext<ProjectContext | null>(null);\nexport const ProjectLoadingReactContext = createContext<{ isLoading: boolean; isError: boolean; error?: string }>({\n error: undefined,\n isError: false,\n isLoading: false,\n});\n\nexport function useProjectLoading() {\n return useContext(ProjectLoadingReactContext);\n}\n\nexport function useProjectContext(): ProjectContext {\n const ctx = useContext(ProjectReactContext);\n\n invariant(ctx, \"useProjectContext can only be called from inside <ProjectProvider />\");\n\n return ctx;\n}\n\nexport function useCurrentProject(): EditorProject {\n const current = useProjectContext().current;\n\n invariant(current, \"No current project\");\n\n return current;\n}\n","import { ReactNode } from \"react\";\n\nexport function DesktopContext({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { createContext, ReactNode, SetStateAction, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { MappedApp } from \"@/apps/app-loader\";\nimport { useLocalStorage, useOptionalLocalStorage } from \"@/madoc/use-local-storage\";\nimport invariant from \"tiny-invariant\";\nimport { useProjectContext } from \"../ProjectContext/ProjectContext\";\nimport { DesktopContext } from \"../DesktopContext/DesktopContext\";\nimport qs from \"query-string\";\nimport { EditorProject } from \"@/shell/ProjectContext/ProjectContext.types\";\n\nexport type AppContext = {\n apps: Record<string, MappedApp>;\n currentApp: { id: string; args?: any };\n initialApp: { id: string; args?: any };\n changeApp: (app: { id: string; args?: any }) => void;\n editProject: (project: EditorProject) => void;\n};\n\nexport type AppState = { state: null | any; setState: SetStateAction<any> };\n\nconst AppReactContext = createContext<AppContext | null>(null);\nconst AppStateReactContext = createContext<{ state: null | any; setState: SetStateAction<any> }>({\n state: null,\n setState: () => {\n // no-op\n },\n});\n\nexport function useApps() {\n const ctx = useContext(AppReactContext);\n\n invariant(ctx, \"Hook useApps must be used inside <AppProvider />\");\n\n return ctx;\n}\n\nexport function useAppState<S = any>() {\n return useContext(AppStateReactContext);\n}\n\nexport function AppStateProvider(props: { appId: string; initialValue?: any; args?: any; children: ReactNode }) {\n const { current } = useProjectContext();\n const [state, _setState, stateRef] = useLocalStorage(`app-state/${current?.id}`, props.initialValue || {});\n\n const setState = useCallback((partial: any) => {\n const existing = stateRef.current ? JSON.parse(stateRef.current || \"{}\") : {};\n const partialState = (typeof partial === \"function\" ? partial(existing) : partial) || {};\n\n _setState({\n ...existing,\n ...partialState,\n });\n }, []);\n\n useEffect(() => {\n if (props.args) {\n setState(props.args);\n }\n }, [props.appId]);\n\n const ctx = useMemo(() => ({ state: state || {}, setState }), [setState, state]);\n\n return (\n <AppStateReactContext.Provider value={ctx}>\n {window.__TAURI__ ? <DesktopContext>{props.children}</DesktopContext> : props.children}\n </AppStateReactContext.Provider>\n );\n}\n\nfunction useCurrentApp(initialApp?: { id: string; args?: any }, enableLocalStorage = false) {\n const s = useAppState();\n const [currentApp, changeApp] = useOptionalLocalStorage(\n \"SelectedApplication\",\n initialApp || { id: \"splash\" },\n !enableLocalStorage\n );\n\n useEffect(() => {\n if ((import.meta.env.DEV || import.meta.env.PULL_REQUEST === \"true\") && window) {\n const { app, ...args } = qs.parse(window.location.toString().split(\"?\")[1] || \"\") || {};\n\n if (app) {\n changeApp({ id: app as string, args });\n if (args) {\n s.setState(args);\n }\n }\n }\n }, []);\n\n return [currentApp, changeApp] as const;\n}\n\nexport function AppProvider({\n apps,\n initialApp,\n saveCurrentApp = true,\n children,\n}: {\n apps: Record<string, MappedApp>;\n initialApp?: AppContext[\"currentApp\"];\n saveCurrentApp?: boolean;\n children: ReactNode;\n}) {\n const [currentApp, changeApp] = useCurrentApp(initialApp, saveCurrentApp);\n\n const editProject = (project: EditorProject) => {\n if (project.resource.type === \"Manifest\") {\n changeApp({ id: \"manifest-editor\" });\n }\n if (project.resource.type === \"Collection\") {\n changeApp({ id: \"collection-editor\" });\n }\n };\n\n const ctx = useMemo<AppContext>(\n () => ({\n currentApp: currentApp || { id: \"splash\" },\n initialApp: initialApp || { id: \"splash\" },\n apps,\n changeApp,\n editProject,\n }),\n [initialApp, apps, currentApp]\n );\n\n return <AppReactContext.Provider value={ctx}>{children}</AppReactContext.Provider>;\n}\n","import styled from \"styled-components\";\n\nexport const ButtonReset = styled.button`\n border: none;\n outline: none;\n background-color: transparent;\n margin: 0;\n padding: 0;\n font-size: inherit;\n color: inherit;\n cursor: pointer;\n &:hover {\n color: inherit;\n }\n`;\n\nexport const Button = styled.button<{ $active?: boolean }>`\n padding: 0 ${(props: any) => props.theme.padding.small || \"0.5rem\"};\n color: ${(props: any) => props.theme.color.main || \"none\"};\n background-color: ${(props: any) => props.theme.color.white || \"white\"};\n border-radius: inherit;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n height: 2rem;\n :disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n\n &:hover {\n background: #eee;\n }\n`;\n\nexport const SmallButton = styled(Button)`\n padding: 0.25em ${(props: any) => props.theme.padding.xs || \"0.4em\"};\n height: unset;\n background: none;\n`;\n\nexport const SecondaryButton = styled(Button)`\n {\n padding: 0 ${(props: any) => props.theme.padding.medium || \"1rem\"};\n color: ${(props: any) => props.theme.color.main || \"#347cff;\"};\n background-color: ${(props: any) => props.theme.color.white || \"white\"};\n border: 1px solid ${(props: any) => props.theme.color.main || \"#347cff;\"};\n border-radius: 0.25rem;\n cursor: pointer;\n height: 2rem;\n display: flex;\n align-items: center;\n white-space: nowrap;\n font-size: 0.75rem;\n\n :disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n }\n`;\n\nexport const CalltoButton = styled(Button)`\n padding: 0 ${(props: any) => props.theme.padding.medium || \"1rem\"};\n color: ${(props: any) => props.theme.color.white || \"white\"};\n background-color: ${(props: any) => props.theme.color.main || \"#347cff;\"};\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n justify-content: center;\n display: flex;\n align-items: center;\n &:hover {\n background-color: ${(props: any) => props.theme.color.mainHover || \"#347cff;\"};\n }\n`;\n\nexport const ButtonGroup = styled.div<{ $right?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: ${(props) => (props.$right ? \"flex-end\" : \"flex-start\")};\n`;\n","import styled from \"styled-components\";\nimport { Button, SmallButton } from \"../../atoms/Button\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n height: 3em;\n padding: 0.5em;\n`;\n\nexport const Header = styled.div`\n display: flex;\n padding: 0.25em;\n flex-direction: column;\n`;\n\nexport const IconButton = styled.button`\n height: 1.75em;\n width: 1.75em;\n background: #e9e9e9;\n border-radius: 3px;\n display: flex;\n text-align: center;\n align-items: center;\n font-size: 1.1em;\n border: none;\n justify-content: center;\n\n &:focus {\n background: #e94581;\n color: #fff;\n svg {\n fill: #fff;\n }\n }\n`;\n\nexport const Spacer = styled.div`\n flex: 1;\n`;\n\nexport const Logo = styled.div`\n color: #6e6e6e;\n display: flex;\n align-items: center;\n margin-left: 1em;\n font-weight: bold;\n text-rendering: geometricPrecision;\n letter-spacing: -0.5px;\n user-select: none;\n cursor: pointer;\n margin-right: 0.5em;\n`;\n\nexport const ProjectPreview = styled.div`\n margin: 0 auto;\n padding: 3px;\n background: #f4f4f4;\n border: 1px solid #e0e0e0;\n border-radius: 5px;\n width: 26em;\n display: flex;\n flex-direction: row;\n\n @media (max-width: 450px) {\n display: none;\n }\n`;\n\nexport const Draft = styled.div`\n display: flex;\n flex-direction: row;\n flex: 1;\n padding: 0.28em;\n padding-left: 0.5em;\n align-items: center;\n overflow: hidden;\n`;\n\nexport const DraftsText = styled.div`\n color: #828282;\n padding-right: 1em;\n`;\n\nexport const DraftTitleEdit = styled.form`\n margin: 0;\n padding: 0;\n display: flex;\n flex: 1;\n`;\n\nexport const DraftTitleEditInput = styled.input`\n font-size: 1em;\n flex: 1;\n border: 1px solid #999;\n padding: 0.2em;\n margin: -0.2em 0;\n`;\n\nexport const DraftTitleEditButton = styled(SmallButton)`\n font-size: 1em;\n display: inline-block;\n`;\n\nexport const DraftTitle = styled.div`\n color: #333;\n flex: 1;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n`;\n\nexport const ContextButton = styled.button`\n background: #e7fff4;\n border: 1px solid #c5e3cd;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n border-radius: 4px;\n color: #666666;\n padding: 0.35em 0.7em;\n letter-spacing: -0.42px;\n`;\n","import { EditorProject } from \"../../ProjectContext/ProjectContext.types\";\nimport { Vault } from \"@iiif/vault\";\nimport { Preview } from \"../../ProjectContext/types/Preview\";\nimport { PreviewConfiguration, PreviewHandler } from \"../PreviewContext.types\";\n\nexport class ExternalManifestUrlPreview implements PreviewHandler {\n id: string;\n label: string;\n type = \"external-manifest-preview\";\n focusable = true;\n\n private readonly serviceUrl: string;\n private readonly windows: Record<string, { location: string; window: Window | null }> = {};\n\n constructor({ id, config, label }: { id: string; type?: string; label: string; config: { url: string } }) {\n this.id = id;\n this.label = label;\n this.serviceUrl = config.url;\n }\n\n isPreviewValid(project: EditorProject): boolean {\n const current = this.windows[project.id];\n if (current && current.window && !current.window.closed) {\n return true;\n }\n\n return false;\n }\n\n getRequires(): string[] {\n return [\"readOnlyManifest\"];\n }\n\n getProvides(): string[] {\n return [];\n }\n\n async createPreview(project: EditorProject, vault: Vault, ctx: { readOnlyManifest: string }): Promise<Preview> {\n // @todo change this to be a template, with more features.\n const location = `${this.serviceUrl}`\n .replace(/\\{manifestId}/, ctx.readOnlyManifest)\n .replace(/\\{time}/, `${Date.now()}`);\n const opened = window.open(location, this.id);\n\n this.windows[project.id] = { location, window: opened };\n\n return {\n id: this.id,\n type: \"external-manifest-preview\",\n data: { url: location },\n };\n }\n\n async focus(project: EditorProject) {\n const found = this.windows[project.id];\n\n if (found && found.window) {\n found.window.focus();\n }\n }\n\n async updatePreview(\n project: EditorProject,\n vault: Vault,\n ctx: { readOnlyManifest: string }\n ): Promise<Preview | null> {\n const found = this.windows[project.id];\n\n return this.createPreview(project, vault, ctx);\n }\n\n async deletePreview(id: string): Promise<void> {\n const found = this.windows[id];\n if (found && found.window) {\n found.window.close();\n delete this.windows[id];\n }\n }\n}\n","import { EditorProject } from \"../../ProjectContext/ProjectContext.types\";\nimport { Preview } from \"../../ProjectContext/types/Preview\";\nimport { Vault } from \"@iiif/vault\";\nimport { PreviewConfiguration, PreviewHandler } from \"../PreviewContext.types\";\nimport invariant from \"tiny-invariant\";\n\ntype IIIFPreviewResponse = {\n location: string;\n updateLocation?: string;\n deleteLocation?: string;\n expirationTtl: number;\n};\n\nexport class IIIFPreviewService implements PreviewHandler {\n id: string;\n label: string;\n type = \"iiif-preview-service\";\n focusable = false;\n\n private readonly serviceUrl: string;\n private readonly cache: Record<string, IIIFPreviewResponse & { time: number }> = {};\n\n constructor({ id, config, label }: PreviewConfiguration<{ url: string }>) {\n this.id = id;\n this.label = label;\n this.serviceUrl = config.url;\n }\n\n getRequires(): string[] {\n return [];\n }\n\n getProvides(): string[] {\n return [\"readOnlyManifest\"];\n }\n\n isPreviewValid(project: EditorProject): boolean {\n return !!this.cache[project.id];\n }\n\n async createPreview(project: EditorProject, vault: Vault): Promise<Preview> {\n const manifest = vault.toPresentation3(project.resource);\n const response = await fetch(this.serviceUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Origin: \"*\",\n },\n body: JSON.stringify(manifest),\n });\n\n invariant(response.ok, \"Unknown error creating preview\");\n\n const json = await response.json();\n\n invariant(json.location, \"Missing IIIF location while creating preview\");\n\n this.cache[project.id] = { ...json, time: Date.now() };\n\n return {\n id: this.id,\n type: \"external-manifest-preview\",\n data: {\n readOnlyManifest: `${json.location}/${Date.now()}`,\n },\n };\n }\n\n async focus() {\n // no op.\n }\n\n async updatePreview(project: EditorProject, vault: Vault): Promise<Preview> {\n const cached = this.cache[project.id];\n if (!cached || Date.now() > cached.expirationTtl + cached.time || !cached.updateLocation) {\n return this.createPreview(project, vault);\n }\n\n const updateUrl = cached.updateLocation;\n const manifest = vault.toPresentation3(project.resource);\n\n const response = await fetch(updateUrl, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Origin: \"*\",\n },\n body: JSON.stringify(manifest),\n });\n\n invariant(response.ok, \"Unknown error updating preview\");\n\n const json = await response.json();\n\n invariant(json.location);\n\n if (json.updateLocation) {\n cached.updateLocation = json.updateLocation;\n }\n\n const readOnlyManifest = `${json.location}/${Date.now()}`;\n\n // Make a fetch, fill the cache (preview may not)\n await fetch(readOnlyManifest, {\n cache: \"no-cache\",\n });\n\n return {\n id: this.id,\n type: \"external-manifest-preview\",\n data: {\n readOnlyManifest: `${json.location}/${Date.now()}`,\n },\n };\n }\n\n async deletePreview(id: string): Promise<void> {\n const cached = this.cache[id];\n if (cached && cached.deleteLocation) {\n try {\n await fetch(cached.deleteLocation, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Origin: \"*\",\n },\n });\n } catch (e) {\n // no-op, we tried.\n }\n }\n }\n}\n","var t=function(n,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])})(n,r)};function n(n,r){if(\"function\"!=typeof r&&null!==r)throw new TypeError(\"Class extends value \"+String(r)+\" is not a constructor or null\");function e(){this.constructor=n}t(n,r),n.prototype=null===r?Object.create(r):(e.prototype=r.prototype,new e)}var r=function(){return(r=Object.assign||function(t){for(var n,r=1,e=arguments.length;r<e;r++)for(var o in n=arguments[r])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)};function e(t,n){var r={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&n.indexOf(e)<0&&(r[e]=t[e]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(e=Object.getOwnPropertySymbols(t);o<e.length;o++)n.indexOf(e[o])<0&&Object.prototype.propertyIsEnumerable.call(t,e[o])&&(r[e[o]]=t[e[o]])}return r}function o(t,n,r,e){return new(r||(r=Promise))((function(o,a){function c(t){try{i(e.next(t))}catch(t){a(t)}}function l(t){try{i(e.throw(t))}catch(t){a(t)}}function i(t){var n;t.done?o(t.value):(n=t.value,n instanceof r?n:new r((function(t){t(n)}))).then(c,l)}i((e=e.apply(t,n||[])).next())}))}function a(t,n){var r,e,o,a,c={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(r)throw new TypeError(\"Generator is already executing.\");for(;c;)try{if(r=1,e&&(o=2&a[0]?e.return:a[0]?e.throw||((o=e.return)&&o.call(e),0):e.next)&&!(o=o.call(e,a[1])).done)return o;switch(e=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return c.label++,{value:a[1],done:!1};case 5:c.label++,e=a[1],a=[0];continue;case 7:a=c.ops.pop(),c.trys.pop();continue;default:if(!(o=c.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){c=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){c.label=a[1];break}if(6===a[0]&&c.label<o[1]){c.label=o[1],o=a;break}if(o&&c.label<o[2]){c.label=o[2],c.ops.push(a);break}o[2]&&c.ops.pop(),c.trys.pop();continue}a=n.call(t,c)}catch(t){a=[6,t],e=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}function c(t,n,r){if(r||2===arguments.length)for(var e,o=0,a=n.length;o<a;o++)!e&&o in n||(e||(e=Array.prototype.slice.call(n,0,o)),e[o]=n[o]);return t.concat(e||Array.prototype.slice.call(n))}export{o as _,a,r as b,n as c,e as d,c as e};\n","import{_ as n,a as t,b as e}from\"./tslib.es6-9bc0804d.js\";function o(n,t){void 0===t&&(t=!1);var e=window.crypto.getRandomValues(new Uint32Array(1))[0],o=\"_\".concat(e);return Object.defineProperty(window,o,{value:function(e){return t&&Reflect.deleteProperty(window,o),null==n?void 0:n(e)},writable:!1,configurable:!0}),e}function r(r,c){return void 0===c&&(c={}),n(this,void 0,void 0,(function(){return t(this,(function(n){return[2,new Promise((function(n,t){var i=o((function(t){n(t),Reflect.deleteProperty(window,\"_\".concat(a))}),!0),a=o((function(n){t(n),Reflect.deleteProperty(window,\"_\".concat(i))}),!0);window.__TAURI_IPC__(e({cmd:r,callback:i,error:a},c))}))]}))}))}function c(n,t){void 0===t&&(t=\"asset\");var e=encodeURIComponent(n);return navigator.userAgent.includes(\"Windows\")?\"https://\".concat(t,\".localhost/\").concat(e):\"\".concat(t,\"://\").concat(e)}var i=Object.freeze({__proto__:null,transformCallback:o,invoke:r,convertFileSrc:c});export{i as a,c,r as i,o as t};\n","import{_ as i,a as t}from\"./tslib.es6-9bc0804d.js\";import{i as r}from\"./tauri-fa8f44bd.js\";function o(o){return i(this,void 0,void 0,(function(){return t(this,(function(i){return[2,r(\"tauri\",o)]}))}))}export{o as i};\n","import{_ as t,a as n}from\"./tslib.es6-9bc0804d.js\";import{i}from\"./tauri-7cafdaf8.js\";import{t as e}from\"./tauri-fa8f44bd.js\";function r(e,r){return t(this,void 0,void 0,(function(){return n(this,(function(t){return[2,i({__tauriModule:\"Event\",message:{cmd:\"unlisten\",event:e,eventId:r}})]}))}))}function u(e,r,u){return t(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,i({__tauriModule:\"Event\",message:{cmd:\"emit\",event:e,windowLabel:r,payload:\"string\"==typeof u?u:JSON.stringify(u)}})];case 1:return t.sent(),[2]}}))}))}function o(u,o,s){return t(this,void 0,void 0,(function(){var a=this;return n(this,(function(c){return[2,i({__tauriModule:\"Event\",message:{cmd:\"listen\",event:u,windowLabel:o,handler:e(s)}}).then((function(i){return function(){return t(a,void 0,void 0,(function(){return n(this,(function(t){return[2,r(u,i)]}))}))}}))]}))}))}function s(i,e,u){return t(this,void 0,void 0,(function(){return n(this,(function(t){return[2,o(i,e,(function(t){u(t),r(i,t.id).catch((function(){}))}))]}))}))}export{u as e,o as l,s as o};\n","import{c as t,_ as e,a as i,b as n}from\"./tslib.es6-9bc0804d.js\";import{i as o}from\"./tauri-7cafdaf8.js\";import{l as r,o as a,e as u}from\"./event-aba177ae.js\";var s,d=function(t,e){this.type=\"Logical\",this.width=t,this.height=e},l=function(){function t(t,e){this.type=\"Physical\",this.width=t,this.height=e}return t.prototype.toLogical=function(t){return new d(this.width/t,this.height/t)},t}(),c=function(t,e){this.type=\"Logical\",this.x=t,this.y=e},h=function(){function t(t,e){this.type=\"Physical\",this.x=t,this.y=e}return t.prototype.toLogical=function(t){return new c(this.x/t,this.y/t)},t}();function m(){return new v(window.__TAURI_METADATA__.__currentWindow.label,{skip:!0})}function p(){return window.__TAURI_METADATA__.__windows.map((function(t){return new v(t.label,{skip:!0})}))}!function(t){t[t.Critical=1]=\"Critical\",t[t.Informational=2]=\"Informational\"}(s||(s={}));var f,y=[\"tauri://created\",\"tauri://error\"],g=function(){function t(t){this.label=t,this.listeners=Object.create(null)}return t.prototype.listen=function(t,n){return e(this,void 0,void 0,(function(){var e=this;return i(this,(function(i){return this._handleTauriEvent(t,n)?[2,Promise.resolve((function(){var i=e.listeners[t];i.splice(i.indexOf(n),1)}))]:[2,r(t,this.label,n)]}))}))},t.prototype.once=function(t,n){return e(this,void 0,void 0,(function(){var e=this;return i(this,(function(i){return this._handleTauriEvent(t,n)?[2,Promise.resolve((function(){var i=e.listeners[t];i.splice(i.indexOf(n),1)}))]:[2,a(t,this.label,n)]}))}))},t.prototype.emit=function(t,n){return e(this,void 0,void 0,(function(){var e,o;return i(this,(function(i){if(y.includes(t)){for(e=0,o=this.listeners[t]||[];e<o.length;e++)(0,o[e])({event:t,id:-1,windowLabel:this.label,payload:n});return[2,Promise.resolve()]}return[2,u(t,this.label,n)]}))}))},t.prototype._handleTauriEvent=function(t,e){return!!y.includes(t)&&(t in this.listeners?this.listeners[t].push(e):this.listeners[t]=[e],!0)},t}(),_=function(n){function r(){return null!==n&&n.apply(this,arguments)||this}return t(r,n),r.prototype.scaleFactor=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"scaleFactor\"}}}})]}))}))},r.prototype.innerPosition=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"innerPosition\"}}}}).then((function(t){var e=t.x,i=t.y;return new h(e,i)}))]}))}))},r.prototype.outerPosition=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"outerPosition\"}}}}).then((function(t){var e=t.x,i=t.y;return new h(e,i)}))]}))}))},r.prototype.innerSize=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"innerSize\"}}}}).then((function(t){var e=t.width,i=t.height;return new l(e,i)}))]}))}))},r.prototype.outerSize=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"outerSize\"}}}}).then((function(t){var e=t.width,i=t.height;return new l(e,i)}))]}))}))},r.prototype.isFullscreen=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"isFullscreen\"}}}})]}))}))},r.prototype.isMaximized=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"isMaximized\"}}}})]}))}))},r.prototype.isDecorated=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"isDecorated\"}}}})]}))}))},r.prototype.isResizable=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"isResizable\"}}}})]}))}))},r.prototype.isVisible=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"isVisible\"}}}})]}))}))},r.prototype.theme=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"theme\"}}}})]}))}))},r.prototype.center=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"center\"}}}})]}))}))},r.prototype.requestUserAttention=function(t){return e(this,void 0,void 0,(function(){var e;return i(this,(function(i){return e=null,t&&(e=t===s.Critical?{type:\"Critical\"}:{type:\"Informational\"}),[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"requestUserAttention\",payload:e}}}})]}))}))},r.prototype.setResizable=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setResizable\",payload:t}}}})]}))}))},r.prototype.setTitle=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setTitle\",payload:t}}}})]}))}))},r.prototype.maximize=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"maximize\"}}}})]}))}))},r.prototype.unmaximize=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"unmaximize\"}}}})]}))}))},r.prototype.toggleMaximize=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"toggleMaximize\"}}}})]}))}))},r.prototype.minimize=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"minimize\"}}}})]}))}))},r.prototype.unminimize=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"unminimize\"}}}})]}))}))},r.prototype.show=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"show\"}}}})]}))}))},r.prototype.hide=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"hide\"}}}})]}))}))},r.prototype.close=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"close\"}}}})]}))}))},r.prototype.setDecorations=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setDecorations\",payload:t}}}})]}))}))},r.prototype.setAlwaysOnTop=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setAlwaysOnTop\",payload:t}}}})]}))}))},r.prototype.setSize=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){if(!t||\"Logical\"!==t.type&&\"Physical\"!==t.type)throw new Error(\"the `size` argument must be either a LogicalSize or a PhysicalSize instance\");return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setSize\",payload:{type:t.type,data:{width:t.width,height:t.height}}}}}})]}))}))},r.prototype.setMinSize=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){if(t&&\"Logical\"!==t.type&&\"Physical\"!==t.type)throw new Error(\"the `size` argument must be either a LogicalSize or a PhysicalSize instance\");return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setMinSize\",payload:t?{type:t.type,data:{width:t.width,height:t.height}}:null}}}})]}))}))},r.prototype.setMaxSize=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){if(t&&\"Logical\"!==t.type&&\"Physical\"!==t.type)throw new Error(\"the `size` argument must be either a LogicalSize or a PhysicalSize instance\");return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setMaxSize\",payload:t?{type:t.type,data:{width:t.width,height:t.height}}:null}}}})]}))}))},r.prototype.setPosition=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){if(!t||\"Logical\"!==t.type&&\"Physical\"!==t.type)throw new Error(\"the `position` argument must be either a LogicalPosition or a PhysicalPosition instance\");return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setPosition\",payload:{type:t.type,data:{x:t.x,y:t.y}}}}}})]}))}))},r.prototype.setFullscreen=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setFullscreen\",payload:t}}}})]}))}))},r.prototype.setFocus=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setFocus\"}}}})]}))}))},r.prototype.setIcon=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setIcon\",payload:{icon:\"string\"==typeof t?t:Array.from(t)}}}}})]}))}))},r.prototype.setSkipTaskbar=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setSkipTaskbar\",payload:t}}}})]}))}))},r.prototype.setCursorGrab=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setCursorGrab\",payload:t}}}})]}))}))},r.prototype.setCursorVisible=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setCursorVisible\",payload:t}}}})]}))}))},r.prototype.setCursorIcon=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setCursorIcon\",payload:t}}}})]}))}))},r.prototype.setCursorPosition=function(t){return e(this,void 0,void 0,(function(){return i(this,(function(e){if(!t||\"Logical\"!==t.type&&\"Physical\"!==t.type)throw new Error(\"the `position` argument must be either a LogicalPosition or a PhysicalPosition instance\");return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"setCursorPosition\",payload:{type:t.type,data:{x:t.x,y:t.y}}}}}})]}))}))},r.prototype.startDragging=function(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{label:this.label,cmd:{type:\"startDragging\"}}}})]}))}))},r}(g),v=function(r){function a(t,a){void 0===a&&(a={});var u=r.call(this,t)||this;return(null==a?void 0:a.skip)||o({__tauriModule:\"Window\",message:{cmd:\"createWebview\",data:{options:n({label:t},a)}}}).then((function(){return e(u,void 0,void 0,(function(){return i(this,(function(t){return[2,this.emit(\"tauri://created\")]}))}))})).catch((function(t){return e(u,void 0,void 0,(function(){return i(this,(function(e){return[2,this.emit(\"tauri://error\",t)]}))}))})),u}return t(a,r),a.getByLabel=function(t){return p().some((function(e){return e.label===t}))?new a(t,{skip:!0}):null},a}(_);function b(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{cmd:{type:\"currentMonitor\"}}}})]}))}))}function w(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{cmd:{type:\"primaryMonitor\"}}}})]}))}))}function M(){return e(this,void 0,void 0,(function(){return i(this,(function(t){return[2,o({__tauriModule:\"Window\",message:{cmd:\"manage\",data:{cmd:{type:\"availableMonitors\"}}}})]}))}))}\"__TAURI_METADATA__\"in window?f=new v(window.__TAURI_METADATA__.__currentWindow.label,{skip:!0}):(console.warn('Could not find \"window.__TAURI_METADATA__\". The \"appWindow\" value will reference the \"main\" window label.\\nNote that this is not an issue if running this frontend on a browser instead of a Tauri window.'),f=new v(\"main\",{skip:!0}));var W=Object.freeze({__proto__:null,WebviewWindow:v,WebviewWindowHandle:g,WindowManager:_,getCurrent:m,getAll:p,get appWindow(){return f},LogicalSize:d,PhysicalSize:l,LogicalPosition:c,PhysicalPosition:h,get UserAttentionType(){return s},currentMonitor:b,primaryMonitor:w,availableMonitors:M});export{d as L,l as P,s as U,v as W,g as a,_ as b,p as c,f as d,c as e,h as f,m as g,b as h,M as i,w as p,W as w};\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch] || charMap[ch] || ch;\n if (appendChar === replacement) {\n appendChar = ' ';\n }\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","import { Dispatch, useMemo } from \"react\";\nimport {\n PreviewActions,\n PreviewActionsType,\n PreviewConfiguration,\n PreviewHandler,\n PreviewState,\n} from \"./PreviewContext.types\";\nimport { ExternalManifestUrlPreview } from \"./previews/ExternalManifestUrlPreview\";\nimport { IIIFPreviewService } from \"./previews/IIIFPreviewService\";\nimport { useProjectContext } from \"../ProjectContext/ProjectContext\";\nimport invariant from \"tiny-invariant\";\nimport { useVault } from \"react-iiif-vault\";\nimport { DesktopManifestUrlPreview } from \"./previews/DesktopManifestUrlPreview\";\n\nexport function usePreviewActions(\n state: PreviewState,\n dispatch: Dispatch<PreviewActionsType>,\n handlers: PreviewHandler[]\n): PreviewActions {\n const vault = useVault();\n const projects = useProjectContext();\n const currentProject = projects.current;\n\n const [handlerMap, providesMap] = useMemo(() => {\n const map: Record<string, PreviewHandler> = {};\n const providesMap: Record<string, string> = {};\n for (const handler of handlers) {\n map[handler.id] = handler;\n const provides = handler.getProvides();\n if (provides.length) {\n for (const singleProvides of provides) {\n if (!providesMap[singleProvides]) {\n providesMap[singleProvides] = handler.id;\n }\n }\n }\n }\n return [map, providesMap] as const;\n }, [handlers]);\n\n async function updatePreviews() {\n const selected = state.selected;\n const previews = currentProject?.previews;\n const selectedPreview = previews?.find((p) => p.id === selected);\n if (currentProject && previews && previews.length && selectedPreview) {\n const selectedHandler = handlerMap[selectedPreview.id];\n const requires = selectedHandler.getRequires();\n\n // Build context.\n const context: any = {};\n for (const preview of previews) {\n const fullPreview = handlerMap[preview.id];\n if (fullPreview) {\n const provides = fullPreview.getProvides();\n for (const provide of provides) {\n if (requires.indexOf(provide) !== -1) {\n const newPreview = await fullPreview.updatePreview(currentProject, vault, context);\n if (newPreview) {\n dispatch({ type: \"activatePreview\", payload: newPreview.id });\n Object.assign(context, newPreview.data || {});\n }\n }\n }\n }\n }\n\n // Select\n const handler = handlerMap[selectedPreview.id];\n if (handler) {\n console.log(\"newPreview?\");\n const newPreview = await handler.updatePreview(currentProject, vault, context);\n if (newPreview) {\n projects.actions.setPreview(newPreview);\n } else {\n projects.actions.removePreview(selectedPreview.id);\n await handler.deletePreview(currentProject.id);\n }\n }\n }\n }\n\n async function selectPreview(id: string) {\n const selectedHandler = handlerMap[id];\n if (selectedHandler && currentProject) {\n console.log(\"selectPreview?\");\n await activatePreview(id);\n\n dispatch({ type: \"selectPreview\", payload: id });\n }\n }\n\n function deletePreview(id: string) {\n const selectedHandler = handlerMap[id];\n if (selectedHandler && currentProject) {\n projects.actions.removePreview(id);\n selectedHandler.deletePreview(currentProject.id).then(() => {\n dispatch({ type: \"deletePreview\", payload: id });\n });\n }\n }\n\n async function focusPreview(id: string) {\n console.log(\"focusPreview?\");\n const selectedHandler = handlerMap[id];\n if (handlerMap[id] && currentProject) {\n await selectedHandler.focus(currentProject);\n dispatch({ type: \"focusPreview\", payload: id });\n }\n }\n\n async function activatePreview(id: string) {\n const selectedHandler = handlerMap[id];\n if (selectedHandler && currentProject) {\n const existingPreviewList = currentProject.previews;\n const existingPreview = existingPreviewList.find((p) => p.id === id);\n if (!existingPreview || !selectedHandler.isPreviewValid(currentProject)) {\n const context: any = {};\n const requires = selectedHandler.getRequires();\n // @todo this could be recursive, but not doing that yet.\n for (const requirement of requires) {\n const handlerId = providesMap[requirement];\n const handler = handlerId ? handlerMap[handlerId] : null;\n invariant(handler, `Missing handler for Preview requirement \"${requirement}\"`);\n const existing = existingPreviewList.find((p) => p.id === handlerId);\n if (!existing || !handler.isPreviewValid(currentProject)) {\n const contextualPreview = await handler.createPreview(currentProject, vault, context);\n Object.assign(context, contextualPreview?.data || {});\n projects.actions.setPreview(contextualPreview);\n dispatch({ type: \"activatePreview\", payload: contextualPreview.id });\n } else {\n Object.assign(context, existing?.data || {});\n dispatch({ type: \"activatePreview\", payload: id });\n }\n }\n projects.actions.setPreview(await selectedHandler.createPreview(currentProject, vault, context));\n dispatch({ type: \"activatePreview\", payload: id });\n }\n }\n }\n\n return useMemo(\n () => ({ selectPreview, deletePreview, focusPreview, activatePreview, updatePreviews }),\n // Dispatch has a stable identity.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [handlerMap, currentProject, vault, state.selected]\n );\n}\n\nexport function usePreviewHandlers(configs: PreviewConfiguration[]): PreviewHandler[] {\n // @todo in the future the available classes could come from somewhere else and not hardcoded.\n return useMemo(() => {\n const handlers: PreviewHandler[] = [];\n\n for (const config of configs) {\n switch (config.type) {\n case \"iiif-preview-service\":\n handlers.push(new IIIFPreviewService(config));\n break;\n case \"external-manifest-preview\":\n if (window.__TAURI__) {\n handlers.push(new DesktopManifestUrlPreview(config));\n } else {\n handlers.push(new ExternalManifestUrlPreview(config));\n }\n break;\n }\n }\n return handlers;\n\n // @todo if these ever become configurable, remove this.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import produce, { Draft } from \"immer\";\nimport { PreviewActionsType, PreviewContext, PreviewState } from \"./PreviewContext.types\";\n\nexport const previewContextReducer = produce(function reducer(state: Draft<PreviewState>, action: PreviewActionsType) {\n switch (action.type) {\n case \"focusPreview\": {\n break;\n }\n\n case \"deletePreview\": {\n if (state.selected === action.payload) {\n state.selected = null;\n }\n state.active = state.active.filter((p) => p !== action.payload);\n break;\n }\n\n case \"activatePreview\": {\n if (state.active.indexOf(action.payload) === -1) {\n state.active.push(action.payload);\n }\n break;\n }\n\n case \"selectPreview\": {\n state.selected = action.payload;\n if (state.active.indexOf(action.payload) === -1) {\n state.active.push(action.payload);\n }\n break;\n }\n }\n});\n\nexport function getDefaultPreviewState(): PreviewState {\n return {\n active: [],\n selected: null,\n };\n}\n","import { createContext, memo, ReactNode, useContext, useMemo, useReducer } from \"react\";\nimport { PreviewConfiguration, PreviewContext, PreviewHandler } from \"./PreviewContext.types\";\nimport invariant from \"tiny-invariant\";\nimport { usePreviewActions, usePreviewHandlers } from \"./PreviewContext.hooks\";\nimport { getDefaultPreviewState, previewContextReducer } from \"./PreviewContext.reducer\";\n\nconst PreviewReactContext = createContext<PreviewContext | null>(null);\n\nexport const PreviewProvider = memo(function PreviewProvider({\n children,\n configs = [],\n}: {\n children: ReactNode;\n configs: PreviewConfiguration[];\n}) {\n const handlers = usePreviewHandlers(configs);\n const [state, dispatch] = useReducer(previewContextReducer, undefined, getDefaultPreviewState);\n const actions = usePreviewActions(state, dispatch, handlers);\n const context: PreviewContext = useMemo(\n () => ({ configs, actions, handlers, ...state }),\n [actions, configs, handlers, state]\n );\n\n return <PreviewReactContext.Provider value={context}>{children}</PreviewReactContext.Provider>;\n});\n\nexport function usePreviewContext() {\n const ctx = useContext(PreviewReactContext);\n\n invariant(ctx, \"usePreviewContext() can only be called from inside <PreviewProvider />\");\n\n return ctx;\n}\n","import styled, { css } from \"styled-components\";\nimport { ButtonReset } from \"../../../atoms/Button\";\n\nexport const ButtonContainer = styled.div`\n display: flex;\n position: relative;\n width: 10em;\n`;\n\nconst variation = {\n light: {\n bg: { normal: \"#fff\", hover: \"#f8f5fe\", active: \"#f8f5fe\" },\n border: { main: \"\", divider: \"\" },\n color: \"\",\n },\n salmon: {\n bg: { normal: \"salmon\", hover: \"#ff988e\", active: \"#ff988e\" },\n border: { main: \"salmon\", divider: \"#e37266\" },\n color: \"\",\n },\n};\n\nexport const ButtonMain = styled(ButtonReset)`\n flex: 1;\n padding: 0.6em 0.8em;\n background: salmon;\n color: #fff;\n border-top-left-radius: 5px;\n font-size: 0.875em;\n border-bottom-left-radius: 5px;\n border: 1px solid salmon;\n border-right-width: 0;\n\n &:hover {\n color: #fff;\n background: #ff988e;\n }\n\n &:active {\n background: #ff988e;\n box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);\n }\n`;\n\nexport const ButtonChange = styled(ButtonReset)<{ $open: boolean }>`\n background: salmon;\n border-top-right-radius: 5px;\n border-bottom-right-radius: 5px;\n border: 1px solid salmon;\n border-left: 1px solid #e37266;\n padding: 0.4em;\n color: #fff;\n svg {\n fill: currentColor;\n }\n &:hover {\n color: #fff;\n background: #ff988e;\n }\n\n &:active {\n background: #ff988e;\n box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);\n }\n\n ${(props) =>\n props.$open &&\n css`\n background: #ff988e;\n box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);\n `}\n`;\n\nexport const MenuContainer = styled.div<{ $open: boolean }>`\n position: absolute;\n opacity: 0;\n top: 100%;\n margin-top: 0.3em;\n border-radius: 3px;\n left: -50%;\n width: 150%;\n pointer-events: none;\n box-shadow: 0 4px 15px 0 rgba(0, 0, 0, 0.18), 0 0px 0px 1px rgba(0, 0, 0, 0.15),\n inset 0 0 0 1px rgba(255, 255, 255, 0.2);\n background: #fff;\n overflow: hidden;\n\n ${(props) =>\n props.$open &&\n css`\n opacity: 1;\n pointer-events: visible;\n `}\n`;\n\nexport const MenuItem = styled.div`\n display: flex;\n background: #fff;\n padding: 0.4em;\n align-items: center;\n\n &:hover {\n background: #f9f9f9;\n }\n`;\n\nconst statusMap = {\n available: \"#ddd\",\n configured: \"#e37266\",\n active: \"#4cb235\",\n};\n\nexport const MenuItemStatus = styled.div<{ $status: \"available\" | \"configured\" | \"active\" }>`\n margin: 0.2em 0.5em;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: ${(props) => statusMap[props.$status]};\n`;\n\nexport const MenuItemLabel = styled.div`\n flex: 1;\n font-size: 0.925em;\n padding: 0.2em;\n text-overflow: ellipsis;\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n`;\n\nexport const MenuItemClose = styled.div`\n background: #f9f9f9;\n font-size: 0.8em;\n`;\n\nexport const ButtonEmpty = styled.div`\n color: #999;\n font-size: 0.8em;\n padding: 0.6em 0.8em;\n border: 2px dashed #f9f9f9;\n border-radius: 5px;\n user-select: none;\n cursor: not-allowed;\n`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = require(\"react\");\nfunction useDropdownMenu(itemCount, options) {\n const [isOpen, setIsOpen] = react_1.useState(false);\n const currentFocusIndex = react_1.useRef(null);\n const firstRun = react_1.useRef(true);\n const clickedOpen = react_1.useRef(false);\n const buttonRef = react_1.useRef(null);\n const itemRefs = react_1.useMemo(() => Array.from({ length: itemCount }, () => react_1.createRef()), [itemCount]);\n const isKeyboardEvent = (e) => e.key !== undefined;\n const moveFocus = (itemIndex) => {\n var _a;\n currentFocusIndex.current = itemIndex;\n (_a = itemRefs[itemIndex].current) === null || _a === void 0 ? void 0 : _a.focus();\n };\n react_1.useEffect(() => {\n if (firstRun.current) {\n firstRun.current = false;\n return;\n }\n if (isOpen && !(options === null || options === void 0 ? void 0 : options.disableFocusFirstItemOnClick)) {\n moveFocus(0);\n }\n else if (!isOpen) {\n clickedOpen.current = false;\n }\n }, [isOpen]);\n react_1.useEffect(() => {\n if (!isOpen) {\n return;\n }\n const removalTracker = {\n removed: false,\n };\n const handleEveryClick = (event) => {\n setTimeout(() => {\n if (!(event.target instanceof Element)) {\n return;\n }\n if (event.target.closest('[role=\"menu\"]') instanceof Element) {\n return;\n }\n setIsOpen(false);\n }, 10);\n };\n setTimeout(() => {\n if (removalTracker.removed) {\n return;\n }\n document.addEventListener('click', handleEveryClick);\n }, 1);\n return () => {\n removalTracker.removed = true;\n document.removeEventListener('click', handleEveryClick);\n };\n }, [isOpen]);\n react_1.useEffect(() => {\n const disableArrowScroll = (event) => {\n if (isOpen && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n event.preventDefault();\n }\n };\n document.addEventListener('keydown', disableArrowScroll);\n return () => document.removeEventListener('keydown', disableArrowScroll);\n }, [isOpen]);\n const buttonListener = (e) => {\n if (isKeyboardEvent(e)) {\n const { key } = e;\n if (!['Enter', ' ', 'Tab', 'ArrowDown', 'Escape'].includes(key)) {\n return;\n }\n if ((key === 'Tab' || key === 'ArrowDown') && clickedOpen.current && isOpen) {\n e.preventDefault();\n moveFocus(0);\n }\n if (key === 'Enter' || key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n if (key === 'Escape') {\n e.preventDefault();\n setIsOpen(false);\n }\n }\n else {\n if (options === null || options === void 0 ? void 0 : options.disableFocusFirstItemOnClick) {\n clickedOpen.current = !isOpen;\n }\n setIsOpen(!isOpen);\n }\n };\n const itemListener = (e) => {\n var _a;\n const { key } = e;\n if (['Tab', 'Shift', 'Enter', 'Escape', 'ArrowUp', 'ArrowDown', ' '].includes(key)) {\n let newFocusIndex = currentFocusIndex.current;\n if (key === 'Escape') {\n setIsOpen(false);\n (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n return;\n }\n else if (key === 'Tab') {\n setIsOpen(false);\n return;\n }\n else if (key === 'Enter' || key === ' ') {\n if (!e.currentTarget.href) {\n e.currentTarget.click();\n }\n setIsOpen(false);\n return;\n }\n if (newFocusIndex !== null) {\n if (key === 'ArrowUp') {\n newFocusIndex -= 1;\n }\n else if (key === 'ArrowDown') {\n newFocusIndex += 1;\n }\n if (newFocusIndex > itemRefs.length - 1) {\n newFocusIndex = 0;\n }\n else if (newFocusIndex < 0) {\n newFocusIndex = itemRefs.length - 1;\n }\n }\n if (newFocusIndex !== null) {\n moveFocus(newFocusIndex);\n }\n return;\n }\n if (/[a-zA-Z0-9./<>?;:\"'`!@#$%^&*()\\\\[\\]{}_+=|\\\\-~,]/.test(key)) {\n const index = itemRefs.findIndex((ref) => {\n var _a, _b, _c, _d, _e, _f;\n return ((_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.innerText) === null || _b === void 0 ? void 0 : _b.toLowerCase().startsWith(key.toLowerCase())) ||\n ((_d = (_c = ref.current) === null || _c === void 0 ? void 0 : _c.textContent) === null || _d === void 0 ? void 0 : _d.toLowerCase().startsWith(key.toLowerCase())) ||\n ((_f = (_e = ref.current) === null || _e === void 0 ? void 0 : _e.getAttribute('aria-label')) === null || _f === void 0 ? void 0 : _f.toLowerCase().startsWith(key.toLowerCase()));\n });\n if (index !== -1) {\n moveFocus(index);\n }\n }\n };\n const buttonProps = {\n onKeyDown: buttonListener,\n onClick: buttonListener,\n tabIndex: 0,\n ref: buttonRef,\n role: 'button',\n 'aria-haspopup': true,\n 'aria-expanded': isOpen,\n };\n const itemProps = Array.from({ length: itemCount }, (_ignore, index) => ({\n onKeyDown: itemListener,\n tabIndex: -1,\n role: 'menuitem',\n ref: itemRefs[index],\n }));\n return { buttonProps, itemProps, isOpen, setIsOpen, moveFocus };\n}\nexports.default = useDropdownMenu;\n","import { SVGProps } from \"react\";\n\nexport const DownIcon = ({ rotate = 0, ...props }: SVGProps<SVGSVGElement>) => (\n <svg\n version=\"1.2\"\n xmlns=\"http://www.w3.org/2000/svg\"\n overflow=\"visible\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n style={{\n fill: \"rgba(0, 0, 0, 0.6)\",\n transform: `rotate(${rotate}deg)`,\n transition: \"transform 0.2s\",\n }}\n {...props}\n >\n <path d=\"M8.12 9.29 12 13.17l3.88-3.88a.996.996 0 1 1 1.41 1.41l-4.59 4.59a.996.996 0 0 1-1.41 0L6.7 10.7a.996.996 0 0 1 0-1.41c.39-.38 1.03-.39 1.42 0z\" />\n </svg>\n);\n","import styled, { css } from \"styled-components\";\nimport * as React from \"react\";\n\nexport const CloseIcon = styled((props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" {...props}>\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n </svg>\n))`\n fill: rgba(0, 0, 0, 0.5);\n cursor: pointer;\n &:hover {\n fill: rgba(0, 0, 0, 1);\n }\n ${(props) =>\n props.disabled\n ? css`\n pointer-events: none;\n opacity: 0.6;\n `\n : \"\"}\n\n ${(props) =>\n props.$solid &&\n css`\n fill: #000;\n `}\n`;\n","import { useProjectContext, useProjectLoading } from \"@/shell/ProjectContext/ProjectContext\";\nimport { usePreviewContext } from \"@/shell/PreviewContext/PreviewContext\";\nimport {\n MenuContainer,\n ButtonContainer,\n ButtonChange,\n ButtonMain,\n MenuItem,\n MenuItemClose,\n MenuItemLabel,\n MenuItemStatus,\n ButtonEmpty,\n} from \"./PreviewButton.styles\";\nimport useDropdownMenu from \"react-accessible-dropdown-menu-hook\";\nimport { DownIcon } from \"@/icons/DownIcon\";\nimport { useApps } from \"@/shell\";\nimport { CloseIcon } from \"@/madoc/components/icons/CloseIcon\";\n\nexport function PreviewButton() {\n const { isLoading } = useProjectLoading();\n const { current } = useProjectContext();\n const { currentApp, apps } = useApps();\n const { active, configs, actions, selected } = usePreviewContext();\n const configsToShow = configs.filter((c) => c.type === \"external-manifest-preview\");\n const { isOpen, buttonProps, itemProps } = useDropdownMenu(configsToShow.length);\n\n if (!current || currentApp.id === \"splash\" || isLoading) {\n return null;\n }\n if (configsToShow.length === 0) {\n return <ButtonEmpty>Preview not available</ButtonEmpty>;\n }\n\n return (\n <ButtonContainer>\n <ButtonMain\n onClick={() => {\n if (!selected) {\n actions.selectPreview(configs[0].id);\n }\n actions.updatePreviews();\n }}\n >\n Preview\n </ButtonMain>\n <ButtonChange $open={isOpen} {...buttonProps}>\n <DownIcon />\n </ButtonChange>\n\n <MenuContainer $open={isOpen}>\n {configsToShow.map((config, key) => {\n const inactive = active.indexOf(config.id) === -1;\n return (\n <MenuItem key={config.id} {...(itemProps[key] as any)}>\n <MenuItemStatus $status={inactive ? \"available\" : config.id === selected ? \"active\" : \"configured\"} />\n <MenuItemLabel onClick={() => actions.selectPreview(config.id)}>{config.label}</MenuItemLabel>\n {!inactive ? (\n <MenuItemClose onClick={() => actions.deletePreview(config.id)}>\n <CloseIcon />\n </MenuItemClose>\n ) : null}\n </MenuItem>\n );\n })}\n </MenuContainer>\n </ButtonContainer>\n );\n}\n","import styled, { css } from \"styled-components\";\nimport { Button } from \"./Button\";\n\nexport const Dropdown = styled.div`\n position: relative;\n display: inline-block;\n`;\n\nexport const DropdownContent = styled.div`\n display: flex;\n flex-direction: column;\n position: absolute;\n background-color: ${(props: any) => props.theme.color.white || \"white\"};\n color: ${(props: any) => props.theme.color.black || \" black\"};\n font-size: 0.75rem;\n min-width: 160px;\n box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);\n z-index: 150;\n button {\n &:hover {\n background-color: ${(props: any) => props.theme.color.lightgrey || \"lightgrey\"};\n }\n }\n`;\n\nexport const DropdownItem = styled.button<{ $active?: boolean }>`\n padding: 0 ${(props: any) => props.theme.padding.small || \"0.5rem\"};\n color: ${(props: any) => props.theme.color.main || \"none\"};\n background-color: ${(props: any) => props.theme.color.white || \"white\"};\n border-radius: 0;\n border: none;\n cursor: pointer;\n display: flex;\n padding: 0.65em 1em;\n align-items: center;\n :disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n\n &:hover {\n background-color: ${(props: any) => props.theme.color.lightgrey || \"lightgrey\"};\n }\n\n ${(props) =>\n props.$active &&\n css`\n background: #347cff;\n color: #fff;\n &:hover {\n background: #347cff;\n color: #fff;\n }\n `}\n`;\n\nexport const DropdownMenu = styled.div<{ $open?: boolean; $center?: boolean }>`\n display: none;\n flex-direction: column;\n position: absolute;\n background: #fff;\n color: ${(props: any) => props.theme.color.black || \" black\"};\n font-size: 0.75rem;\n min-width: 190px;\n top: calc(100% + 0.5em);\n box-shadow: 0 4px 15px 0 rgba(0, 0, 0, 0.18), 0 0px 0px 1px rgba(0, 0, 0, 0.15),\n inset 0 0 0 1px rgba(255, 255, 255, 0.2);\n border-radius: 3px;\n z-index: 150;\n overflow: hidden;\n padding-bottom: 3px;\n\n ${Button} {\n &:hover {\n background-color: ${(props: any) => props.theme.color.lightgrey || \"lightgrey\"};\n }\n }\n\n ${(props) =>\n props.$open &&\n css`\n display: flex;\n `}\n`;\n\nexport const DropdownLabel = styled.div`\n color: #999;\n text-transform: uppercase;\n font-weight: 600;\n padding: 0.7em;\n font-size: 0.875em;\n`;\n\nexport const DropdownDivider = styled.div`\n height: 1px;\n margin: 0 0.5em;\n background: #eee;\n`;\n","import styled, { css } from \"styled-components\";\n\nexport const FlexContainerRow = styled.div<{ justify?: string }>`\n display: flex;\n flex-direction: row;\n justify-content: ${(props: any) => props.justify || \"flex-start\"};\n`;\nexport const FlexContainer = styled.div<{ $align?: boolean }>`\n display: flex;\n flex-direction: row;\n ${(props) =>\n props.$align &&\n css`\n align-items: center;\n `}\n`;\n\nexport const FlexContainerColumn = styled.div<{ justify?: string }>`\n display: flex;\n flex-direction: column;\n justify-content: ${(props: any) => props.justify || \"flex-start\"};\n`;\n\nexport const FlexImage = styled.div`\n max-height: 300px;\n flex: 1;\n display: flex;\n justify-content: center;\n background: #f9f9f9;\n margin-bottom: 0.5em;\n img {\n object-fit: contain;\n width: 100%;\n }\n`;\n","import styled from \"styled-components\";\n\nexport const RecentFilesWidget = styled.div`\n min-height: 10rem;\n width: 100%;\n display: flex;\n flex-direction: column;\n box-shadow: ${(props: any) => props.theme.shadows.standard || \"\"};\n padding: ${(props: any) => props.theme.padding.medium || \"2rem\"};\n background: ${(props: any) => props.theme.color.white || \"white\"};\n`;\n\nexport const RecentThumbnails = styled.div`\n width: 100%;\n overflow: auto;\n justify-content: flex-start;\n display: flex;\n`;\n\nexport const RecentManifestCard = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: ${(props: any) => props.theme.padding.xs || \"0.25rem\"};\n`;\n\nexport const RecentLabel = styled.small`\n text-align: center;\n`;\n","const metaState = {};\nconst compatVault = {\n get(nonRef) {\n return nonRef;\n },\n setMetaValue([id, meta, key], value) {\n const oldValue = compatVault.getResourceMeta(id, meta);\n const oldValueItem = oldValue ? oldValue[key] : void 0;\n const newValue = typeof value === \"function\" ? value(oldValueItem) : value;\n metaState[id] = {\n ...metaState[id] || {},\n [meta]: {\n ...(metaState[id] || {})[meta] || {},\n [key]: newValue\n }\n };\n },\n getResourceMeta: (resource, metaKey) => {\n const resourceMeta = metaState[resource];\n if (!resourceMeta) {\n return void 0;\n }\n if (!metaKey) {\n return resourceMeta;\n }\n return resourceMeta[metaKey];\n }\n};\nfunction createEventsHelper(vault = compatVault) {\n return {\n addEventListener(resource, event, listener, scope) {\n if (!resource) {\n return;\n }\n vault.setMetaValue(\n [resource.id, \"eventManager\", event],\n (registeredCallbacks) => {\n const callbacks = registeredCallbacks || [];\n for (const registered of callbacks) {\n if (registered.callback === listener) {\n return callbacks;\n }\n }\n return [...callbacks, { callback: listener, scope }];\n }\n );\n return listener;\n },\n removeEventListener(resource, event, listener) {\n if (!resource) {\n return;\n }\n vault.setMetaValue(\n [resource.id, \"eventManager\", event],\n (registeredCallbacks) => {\n return (registeredCallbacks || []).filter((registeredCallback) => registeredCallback.callback !== listener);\n }\n );\n },\n getListenersAsProps(resourceOrId, scope) {\n const resource = typeof resourceOrId === \"string\" ? { id: resourceOrId } : resourceOrId;\n if (!resource || !resource.id) {\n return {};\n }\n const hooks = vault.getResourceMeta(resource.id, \"eventManager\");\n const props = {};\n if (hooks && resource) {\n for (const hook of Object.keys(hooks)) {\n props[hook] = (e) => {\n const fullResource = vault.get(resource);\n for (const { callback, scope: _scope } of hooks[hook] || []) {\n if (!_scope || scope && _scope.indexOf(scope) !== -1) {\n callback(e, fullResource);\n }\n }\n };\n }\n }\n return props;\n }\n };\n}\nfunction createStylesHelper(vault = compatVault) {\n return {\n applyStyles(resource, scope, styles) {\n const id = typeof resource === \"string\" ? resource : resource.id;\n return vault.setMetaValue([id, \"styles\", scope], styles);\n },\n getAppliedStyles(resource) {\n const id = typeof resource === \"string\" ? resource : resource.id;\n return vault.getResourceMeta(id, \"styles\");\n }\n };\n}\nfunction p(i) {\n return i.endsWith(\"info.json\") ? i : i.endsWith(\"/\") ? `${i}info.json` : `${i}/info.json`;\n}\nconst te = \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\", z = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\", A = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\", ne = \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\", E = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\", b = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\", re = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\", L = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\", M = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\", se = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\", W = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\", j = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\", ae = \"http://iiif.io/api/image/1/level0.json\", oe = \"http://iiif.io/api/image/1/profiles/level0.json\", $ = \"http://iiif.io/api/image/1/level1.json\", C = \"http://iiif.io/api/image/1/profiles/level1.json\", P = \"http://iiif.io/api/image/1/level2.json\", B = \"http://iiif.io/api/image/1/profiles/level2.json\", fe = \"http://iiif.io/api/image/2/level0.json\", le = \"http://iiif.io/api/image/2/profiles/level0.json\", N = \"http://iiif.io/api/image/2/level1.json\", R = \"http://iiif.io/api/image/2/profiles/level1.json\", H = \"http://iiif.io/api/image/2/level2.json\", T = \"http://iiif.io/api/image/2/profiles/level2.json\", he = \"level0\", G = \"level1\", k = \"level2\", ue = \"http://iiif.io/api/image/2/level0\", Q = \"http://iiif.io/api/image/2/level1\", V = \"http://iiif.io/api/image/2/level2\", D = [V, A, b, M, j, P, B, H, T, k], U = [...D, Q, z, E, L, W, $, C, N, R, G], J = [ue, Q, V, te, z, A, ne, E, b, re, L, M, se, W, j, ae, oe, $, C, P, B, fe, le, N, R, H, T, he, G, k], ce = { extraFormats: [\"jpg\"], extraQualities: [\"default\"], extraFeatures: [\"sizeByWhListed\"] }, de = { extraFormats: [\"jpg\"], extraQualities: [\"default\"], extraFeatures: [\"baseUriRedirect\", \"cors\", \"jsonldMediaType\", \"regionByPx\", \"regionSquare\", \"sizeByWhListed\", \"sizeByH\", \"sizeByW\", \"sizeByWh\"] }, ge = { extraFormats: [\"jpg\", \"png\"], extraQualities: [\"default\"], extraFeatures: [\"baseUriRedirect\", \"cors\", \"jsonldMediaType\", \"regionByPct\", \"regionByPx\", \"regionSquare\", \"rotationBy90s\", \"sizeByWhListed\", \"sizeByConfinedWh\", \"sizeByH\", \"sizeByPct\", \"sizeByW\", \"sizeByWh\"] };\nfunction pe(i) {\n return D.indexOf(i) !== -1 ? ge : U.indexOf(i) !== -1 ? de : ce;\n}\nfunction K(i) {\n const e = i ? Array.isArray(i.profile) ? i.profile : [i.profile] : [], t = { extraQualities: [], extraFormats: [], extraFeatures: [] };\n for (let n of e)\n if (typeof n == \"string\" && (n = pe(n)), !!n) {\n if (n.formats)\n for (const r of n.formats)\n t.extraFormats.indexOf(r) === -1 && t.extraFormats.push(r);\n if (n.qualities)\n for (const r of n.qualities)\n t.extraQualities.indexOf(r) === -1 && t.extraQualities.push(r);\n if (n.supports)\n for (const r of n.supports)\n t.extraFeatures.indexOf(r) === -1 && t.extraFeatures.push(r);\n if (n.maxHeight && (t.maxHeight = n.maxHeight), n.maxWidth && (t.maxWidth = n.maxWidth), n.maxArea && (t.maxArea = n.maxArea), n.extraFormats)\n for (const r of n.extraFormats)\n t.extraFormats.indexOf(r) === -1 && t.extraFormats.push(r);\n if (n.extraQualities)\n for (const r of n.extraQualities)\n t.extraQualities.indexOf(r) === -1 && t.extraQualities.push(r);\n if (n.extraFeatures)\n for (const r of n.extraFeatures)\n t.extraFeatures.indexOf(r) === -1 && t.extraFeatures.push(r);\n n.maxHeight && (t.maxHeight = n.maxHeight), n.maxWidth && (t.maxWidth = n.maxWidth), n.maxArea && (t.maxArea = n.maxArea);\n }\n if (i.extraFormats)\n for (const n of i.extraFormats)\n t.extraFormats.indexOf(n) === -1 && t.extraFormats.push(n);\n if (i.extraFeatures)\n for (const n of i.extraFeatures)\n t.extraFeatures.indexOf(n) === -1 && t.extraFeatures.push(n);\n if (i.extraQualities)\n for (const n of i.extraQualities)\n t.extraQualities.indexOf(n) === -1 && t.extraQualities.push(n);\n return t;\n}\nfunction me(i) {\n try {\n if (i === \"full\")\n return { full: true };\n if (i === \"square\")\n return { square: true };\n const e = i.startsWith(\"pct:\"), n = i.substr(e ? 4 : 0).split(\",\").map((r) => parseFloat(r));\n return { x: n[0], y: n[1], w: n[2], h: n[3], percent: e };\n } catch {\n throw new Error(\"Expected 'full', 'square' or 'x,y,w,h'. Found \" + i);\n }\n}\nfunction xe(i) {\n const e = { upscaled: false, max: false, confined: false };\n if (i[0] === \"^\" && (e.upscaled = true, i = i.slice(1)), i === \"max\" || i === \"full\")\n return e.max = true, e.serialiseAsFull = i === \"full\", e;\n if (i[0] === \"!\" && (e.confined = true, i = i.slice(1)), i[0] === \"p\")\n return e.percentScale = parseFloat(i.slice(4)), e;\n const t = i.split(\",\").map((n) => n.trim());\n return t.length && (t[0] !== \"\" && (e.width = parseInt(t[0], 10)), t[1] !== \"\" ? (e.height = parseInt(t[1], 10), e.version = 2) : e.version = 3), e;\n}\nfunction Ie(i) {\n const e = { angle: 0 };\n if (i[0] === \"!\" && (e.mirror = true, i = i.substr(1)), e.angle = parseFloat(i) % 360, Number.isNaN(e.angle))\n throw new Error(`Invalid rotation ${i}`);\n return e;\n}\nfunction ye(i, e = \"\") {\n const t = i.match(/^(([a-zA-Z]+):\\/\\/([^/]+))?((.*)+)/);\n if (!t)\n throw new Error(`Invalid or unknown input ${i}`);\n const n = t[2], r = t[3];\n let s = t[4];\n if (s[0] === \"/\" && (s = s.substr(1)), e.length > 0) {\n if (e[0] === \"/\" && (e = e.substr(1)), e !== s.substr(0, e.length))\n throw new Error(`Path does not start with prefix (path: ${s}, prefix: ${e})`);\n s = s.substr(e.length);\n }\n return { scheme: n, server: r, path: s, prefix: e };\n}\nfunction _e(i, e = \"\") {\n const { path: t, scheme: n, server: r, prefix: s } = ye(i, e), a = t.split(\"/\").reverse(), [o, f, u, l, ...d] = a, g = d.reverse().filter(Boolean).join(\"/\");\n if (a.length === 1 || o === \"\")\n return { type: \"base\", scheme: n, server: r, prefix: s, identifier: g };\n if (o === \"info.json\") {\n const [, ...c] = a;\n return { type: \"info\", scheme: n, server: r, prefix: s, identifier: c.reverse().filter(Boolean).join(\"/\") };\n }\n const m = o.split(\".\");\n return { type: \"image\", scheme: n, server: r, prefix: s, identifier: g, originalPath: t, region: me(l), size: xe(u), rotation: Ie(f), quality: m[0], format: m[1] };\n}\nfunction we(i) {\n const e = _e(p(i.id));\n if (e.type !== \"info\")\n throw new Error(\"Invalid service URL\");\n const t = K(i);\n return { identifier: e.identifier, originalPath: \"\", server: e.server, prefix: e.prefix, scheme: e.scheme, type: \"image\", quality: t.extraQualities.indexOf(\"default\") === -1 ? t.extraQualities[0] : \"default\", region: { full: true }, size: { max: true, upscaled: false, confined: false }, format: \"jpg\", rotation: { angle: 0 } };\n}\nfunction Se(i, e, t) {\n const n = t.length, r = [];\n for (let s = 0; s < n; s++) {\n const o = t[s].width;\n r.push(i / o);\n }\n return r;\n}\nfunction ve(i, e, t) {\n const n = t.length, r = [];\n for (let s = 0; s < n; s++) {\n const a = t[s];\n r.push({ width: Math.floor(i / a), height: Math.floor(e / a) });\n }\n return r;\n}\nfunction h(i) {\n if (i[\"@id\"])\n return i[\"@id\"];\n if (i.id)\n return i.id;\n}\nfunction w(i) {\n if (!i || !i.profile || !h(i))\n return false;\n const e = Array.isArray(i.profile) ? i.profile : [i.profile];\n for (const t of e)\n if (typeof t == \"string\" && J.indexOf(t) !== -1)\n return true;\n return false;\n}\nfunction Fe(i) {\n if (!w(i))\n return false;\n const e = Array.isArray(i.profile) ? i.profile : [i.profile];\n for (const t of e)\n if (typeof t == \"string\") {\n if (U.indexOf(t) !== -1)\n return true;\n } else {\n const n = [...t.supports || [], ...t.extraFeatures || []];\n if (n.indexOf(\"regionByPx\") !== -1 && (n.indexOf(\"sizeByW\") !== -1 || n.indexOf(\"sizeByWh\") !== -1))\n return true;\n }\n return false;\n}\nfunction v(i, e) {\n if (e && e.profile) {\n const t = e.profile;\n if (t) {\n const n = Array.isArray(t) ? t : [t];\n return n.includes(`level${i}`) || n.includes(`http://iiif.io/api/image/2/level${i}.json`) || n.includes(`http://iiif.io/api/image/1/level${i}.json`) || n.includes(`http://iiif.io/api/image/1/profiles/level${i}.json`);\n }\n }\n return false;\n}\nfunction F(i) {\n return w(i) ? v(0, i) ? 0 : v(1, i) ? 1 : v(2, i) ? 2 : null : null;\n}\nfunction X(i) {\n return (i[\"@context\"] ? Array.isArray(i[\"@context\"]) ? i[\"@context\"] : [i[\"@context\"]] : []).indexOf(\"http://iiif.io/api/image/3/context.json\") !== -1;\n}\nfunction Oe(i) {\n if (!Fe(i))\n return [];\n const e = [], t = Array.isArray(i.profile) ? i.profile : [i.profile], n = t.length;\n for (let r = 0; r < n; r++) {\n const s = t[r];\n if (typeof s != \"string\" && (s.maxHeight || s.maxWidth))\n return [{ id: h(i), type: \"variable\", minWidth: 0, minHeight: 0, maxHeight: s.maxHeight || s.maxWidth, maxWidth: s.maxWidth || s.maxHeight, level: F(i), version: i[\"@context\"] === \"http://iiif.io/api/image/3/context.json\" ? 3 : 2 }];\n }\n if (i.tiles) {\n const r = i.tiles.length;\n for (let s = 0; s < r; s++) {\n const a = i.tiles[s];\n (a.height || a.width) && e.push({ id: h(i), type: \"variable\", minHeight: 0, minWidth: 0, maxHeight: a.height || a.width, maxWidth: a.width, level: F(i), version: X(i) ? 3 : 2 });\n }\n }\n return e;\n}\nfunction Y(i) {\n const e = /^.*\\/(full)\\/(((\\d+),(\\d+)?)|max)\\/(\\d+)\\/default\\.(jpg|png|jpeg)$/, t = i.match(e);\n if (t) {\n const n = t[1], r = parseInt(t[4], 10), s = parseInt(t[5], 10), a = t[7];\n if ((n === \"max\" || n === \"full\") && r && s && a)\n return { type: \"fixed\", id: i, height: s, width: r };\n }\n return { type: \"unknown\", id: i };\n}\nfunction ze(i) {\n if (i[\"@type\"])\n return i[\"@type\"];\n if (i.type)\n return i.type;\n}\nfunction Ae(i) {\n if (typeof i == \"string\")\n return Y(i);\n const e = ze(i);\n if (e !== \"Image\" && e !== \"sc:Image\")\n return null;\n const t = i, n = h(t);\n return n ? n && t.width && t.height ? { id: n, type: \"fixed\", width: t.width, height: t.height, unsafe: true } : Y(n) : null;\n}\nfunction Ee(i) {\n return w(i) ? (i && i.sizes ? i.sizes : []).map((e) => ({ id: h(i), type: \"fixed-service\", height: e.height, width: e.width, level: F(i), version: X(i) ? 3 : 2 })) : [];\n}\nfunction q(i) {\n const e = [], t = i.length;\n for (let n = 0; n < t; n++) {\n const r = Ee(i[n]);\n r.length && e.push(...r);\n const s = Oe(i[n]);\n s.length && e.push(...s);\n }\n return e;\n}\nfunction ee(i) {\n const e = i.service ? Array.isArray(i.service) ? i.service : [i.service] : [], t = e.length, n = [];\n for (let r = 0; r < t; r++)\n w(e[r]) && n.push(e[r]);\n return n;\n}\nfunction be(i, e = true, t) {\n const n = [], r = Ae(i);\n if (r === null)\n return n;\n const s = i;\n if (n.push(r), e && s.width && s.height) {\n const a = [], o = ee(s);\n for (const f of o) {\n const u = { id: h(f), width: s.width, height: s.height };\n if (t.canLoadSync(u)) {\n const l = t.loadServiceSync(u);\n l && (l.height || (l.height = s.height), l.width || (l.width = s.width), a.push(...q([l])));\n }\n }\n if (a.length)\n return n.push(...a), n;\n }\n return s.service && n.push(...q(s.service)), n;\n}\nfunction Le({ x: i = 0, y: e = 0, w: t, h: n, full: r, square: s, percent: a }) {\n if (r)\n return \"full\";\n if (s)\n return \"square\";\n if (typeof t > \"u\" || typeof n > \"u\")\n throw new Error(\"RegionParameter: invalid region\");\n const o = `${i},${e},${t},${n}`;\n return a ? `pct:${o}` : o;\n}\nfunction Me({ max: i, percentScale: e, upscaled: t, confined: n, width: r, height: s, serialiseAsFull: a, version: o }) {\n const f = [];\n return t && f.push(\"^\"), i ? (f.push(a ? \"full\" : \"max\"), f.join(\"\")) : (n && f.push(\"!\"), e && f.push(`pct:${e}`), r && f.push(`${r}`), f.push(\",\"), s && o === 3 && f.push(`${s}`), f.join(\"\"));\n}\nfunction We(i) {\n return `${i.mirror ? \"!\" : \"\"}${(i.angle || 0) % 360}`;\n}\nvar Ve = Object.defineProperty, De = Object.defineProperties, Ue = Object.getOwnPropertyDescriptors, je = Object.getOwnPropertySymbols, Je = Object.prototype.hasOwnProperty, Ze = Object.prototype.propertyIsEnumerable, $e = (i, e, t) => e in i ? Ve(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t, x = (i, e) => {\n for (var t in e || (e = {}))\n Je.call(e, t) && $e(i, t, e[t]);\n if (je)\n for (var t of je(e))\n Ze.call(e, t) && $e(i, t, e[t]);\n return i;\n}, I = (i, e) => De(i, Ue(e));\nfunction Ce(i, e) {\n const t = i.prefix.startsWith(\"/\") ? i.prefix.substr(1) : i.prefix, n = `${i.scheme}://${i.server}/${t ? `${t}/` : \"\"}${i.identifier}`;\n if (i.type === \"base\")\n return n;\n if (i.type === \"info\")\n return `${n}/info.json`;\n let { size: r } = i;\n const { region: s, rotation: a, format: o, quality: f } = i;\n if (e) {\n const u = e[\"@context\"] ? Array.isArray(e[\"@context\"]) ? e[\"@context\"] : [e[\"@context\"]] : [], l = u.indexOf(\"http://iiif.io/api/image/2/context.json\") !== -1, d = u.indexOf(\"http://iiif.io/api/image/3/context.json\") !== -1;\n if ((r.width === e.width && !r.height || r.height === e.height && !r.width || r.width === e.width && r.height === e.height) && (r = I(x({}, r), { max: true })), l && (r.max && !r.serialiseAsFull && (r = I(x({}, r), { serialiseAsFull: true })), !r.max && r.width && r.height && (r = I(x({}, r), { height: void 0 })), r = I(x({}, r), { version: 2 })), d) {\n if (r.max && r.serialiseAsFull && (r = I(x({}, r), { serialiseAsFull: false })), r.width && !r.height && e.width && e.height) {\n const g = e.height / e.width;\n r = I(x({}, r), { height: Math.ceil(r.width * g) });\n }\n r = I(x({}, r), { version: 3 });\n }\n }\n return [n, Le(s), Me(r), We(a), `${f}.${o}`].filter(Boolean).join(\"/\");\n}\nfunction O(i, e, t) {\n const n = we({ \"@context\": i.version === 3 ? \"http://iiif.io/api/image/3/context.json\" : \"http://iiif.io/api/image/2/context.json\", id: p(h(i)), profile: i.level === null || typeof i.level > \"u\" ? \"level0\" : `level${i.level}}`, type: i.version === 3 ? \"ImageService3\" : \"ImageService2\" });\n if (n.type !== \"image\")\n throw new Error(\"Invalid service\");\n return n.size.max = false, n.size.width = e, n.size.height = t, { id: Ce(n), type: \"fixed\", width: e, height: t || i.height / (i.width || 1) * e, unsafe: i.width > e };\n}\nfunction y(i) {\n const e = i.replace(/(https?:\\/\\/)?(www.)?/i, \"\");\n return e.indexOf(\"/\") !== -1 ? e.split(\"/\")[0] : e;\n}\nfunction Pe(i, e, t) {\n const n = i.width ? i.width : i.maxWidth;\n return t.height <= i.maxHeight && t.width <= i.maxWidth && t.height >= i.minHeight && t.width >= i.minWidth && (!e || Math.abs(t.width - n) < Math.abs(e.width - n));\n}\nfunction Be(i, e) {\n const t = [], n = Object.assign({ unsafeImageService: false, atAnyCost: true, fallback: true, minHeight: 64, minWidth: 64, maxHeight: 1 / 0, maxWidth: 1 / 0, returnAllOptions: false, preferFixedSize: false, allowUnsafe: false, explain: false, height: 0, width: 0 }, i), r = (l, d = 0) => n.explain ? t.push(new Array(d).fill(0).map((g) => \" \").join(\"\") + l().trim()) : void 0, s = [], a = [];\n let o = null;\n r(() => `Using configuration: ${JSON.stringify(n, null, 2)}`);\n const f = (l, d) => {\n if (r(() => \"Swapping choice\", 3), Pe(n, d, l)) {\n if (n.preferFixedSize && l.unsafe) {\n r(() => `We found an image that was marked as unsafe, but it was the best size. (${l.id})`, 4), a.push(l);\n return;\n }\n n.returnAllOptions && d && a.push(d), r(() => `We found a new image that was the best size. (${l.id})`, 4), o = l;\n } else\n n.returnAllOptions && a.push(l);\n };\n r(() => `The input shows we have ${e.length} list(s) of candidates to choose from.`);\n const u = e.length;\n for (let l = 0; l < u; l++) {\n const d = e[l]();\n r(() => `Candidate group ${l}: ${JSON.stringify(d, null, 2)}`, 1);\n const g = d.length;\n r(() => `Checking candidate list number ${l} and found ${g} potential ways of creating image(s)`, 1);\n for (let m = 0; m < g; m++) {\n const c = d[m];\n if (r(() => `-> Checking candidate ${m}`, 1), c.type === \"unknown\" && n.atAnyCost && (r(() => `We've found an unknown image type, adding this to the \"last resort\" list`, 2), s.push(c)), c.type === \"fixed\" && (c.unsafe ? (r(() => `We've found an unsafe fixed image type, adding this to the \"last resort\" list`, 2), s.push(c)) : (r(() => \"We've found a fixed size image, checking if it matches the request\", 2), f(c, o))), c.type === \"fixed-service\")\n if (n.unsafeImageService) {\n r(() => \"Checking for an image from the tile source, without calculating the right height and width (unsafeImageService)\", 2);\n const S = O(c, n.width, n.height);\n f(S, o);\n } else {\n r(() => \"Checking for an image from the tile source 3\", 2);\n const S = O(c, c.width, c.height);\n f(S, o);\n }\n if (c.type === \"variable\" && c.maxWidth) {\n const S = O({ id: c.id, type: \"fixed-service\", width: c.maxWidth, height: c.maxWidth, level: c.level, version: c.version }, c.maxWidth);\n f(S, o);\n }\n }\n if (o && !n.returnAllOptions) {\n if (o.unsafe || n.allowUnsafe)\n continue;\n r(() => `We found a match in choice list number ${l}, no searching any more`);\n break;\n }\n }\n return n.atAnyCost && a.length === 0 ? (r(() => o ? `We found an image! ${o.id} of type ${o.type}` : 'We found no images, but \"atAnyCost\" is set, so returning that'), { best: o || s[0], fallback: s.slice(1), log: t }) : n.returnAllOptions ? (r(() => \"Returning all options that we have found\"), { best: n.atAnyCost ? o || a[0] || s[0] : o || a[0], fallback: [...a, ...s], log: t }) : (r(() => \"Returning the best image that we found, and a fallback\"), { best: o || a[0] || null, fallback: o ? a : a.slice(1), log: t });\n}\nvar qe = Object.defineProperty, ei = Object.defineProperties, ii = Object.getOwnPropertyDescriptors, Ne = Object.getOwnPropertySymbols, ti = Object.prototype.hasOwnProperty, ni = Object.prototype.propertyIsEnumerable, Re = (i, e, t) => e in i ? qe(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t, ri = (i, e) => {\n for (var t in e || (e = {}))\n ti.call(e, t) && Re(i, t, e[t]);\n if (Ne)\n for (var t of Ne(e))\n ni.call(e, t) && Re(i, t, e[t]);\n return i;\n}, si = (i, e) => ei(i, ii(e));\nfunction He(i, e, t) {\n const n = i > e ? i : e, r = t.length, s = [];\n for (let a = 0; a < r; a++) {\n const o = t[a];\n let f = o.scaleFactors[0], u = n / f;\n const l = [f];\n for (; u >= o.width; )\n f = f * 2, l.push(f), u = u / 2;\n s.push(si(ri({}, o), { scaleFactors: l }));\n }\n return s;\n}\nfunction Te(i, e) {\n if (i.length !== e.length)\n return false;\n if (i.length === 0 && e.length === 0)\n return true;\n const t = i.length;\n let n = true;\n for (let s = 0; s < t; s++) {\n const a = i[s], o = e[s];\n if (a.width !== o.width || a.height !== o.height) {\n n = false;\n break;\n }\n }\n if (n)\n return true;\n let r = 0;\n for (let s = 0; s < t; s++)\n for (let a = 0; a < t; a++)\n if (i[s].width === e[a].width && i[s].height === e[a].height) {\n r++;\n break;\n }\n return r === t;\n}\nfunction Ge(i) {\n return v(0, i);\n}\nvar _ = (i, e, t) => new Promise((n, r) => {\n var s = (f) => {\n try {\n o(t.next(f));\n } catch (u) {\n r(u);\n }\n }, a = (f) => {\n try {\n o(t.throw(f));\n } catch (u) {\n r(u);\n }\n }, o = (f) => f.done ? n(f.value) : Promise.resolve(f.value).then(s, a);\n o((t = t.apply(i, e)).next());\n});\nclass ke {\n constructor() {\n this.config = { verificationsRequired: 1, approximateServices: true, enableFetching: true, disableThrottling: false }, this.fetchingCount = 0, this.imageServices = {}, this.knownImageServers = {};\n }\n setConfig(e) {\n Object.assign(this.config, e);\n }\n sample(e, t, n = true) {\n const r = y(h(e)), s = p(h(e)), a = this.knownImageServers[r];\n return this.imageServices[s] = Object.assign(e, { real: true }), !a && e.tiles && !Ge(e) ? (this.knownImageServers[r] = { verifications: 0, malformed: false, root: r, preLoaded: n, sampledId: h(e), verified: false, server: null, result: { context: e[\"@context\"] || [], sampledProfile: e.profile, resourceServiceRatio: t && e.height ? t.height / e.height : 1, sampledSizes: e.sizes || [], sizeRatios: Se(e.width, e.height, e.sizes || []), sampledTiles: e.tiles || [] } }, true) : this.verify(e);\n }\n preLoad(e, t = true) {\n this.knownImageServers[e.root] = e, t && (this.knownImageServers[e.root].malformed = false, this.knownImageServers[e.root].verifications = this.config.verificationsRequired);\n }\n predict(e, t = false, n = false) {\n const r = e == null ? void 0 : e.source, s = y(h(e)), a = this.knownImageServers[s];\n if (!a || !a.result || !((r == null ? void 0 : r.height) || e.height) || !((r == null ? void 0 : r.width) || e.width) || !n && (a.malformed || a.verifications < this.config.verificationsRequired) || Ge(e.source))\n return null;\n const o = p(h(e));\n return this.imageServices[o] || (this.imageServices[o] = { \"@context\": a.result.context, \"@id\": h(e), id: h(e), protocol: \"http://iiif.io/api/image\", tiles: (r == null ? void 0 : r.tiles) || He(e.width, e.height, a.result.sampledTiles), sizes: (r == null ? void 0 : r.sizes) || ve(Math.round(e.width / a.result.resourceServiceRatio), Math.round(e.height / a.result.resourceServiceRatio), a.result.sizeRatios), profile: (r == null ? void 0 : r.profile) || a.result.sampledProfile, height: (r == null ? void 0 : r.height) || e.height, width: (r == null ? void 0 : r.width) || e.width, real: false }), this.imageServices[o];\n }\n getThumbnailFromResource(e, t) {\n return _(this, arguments, function* (n, r, s = true, a = []) {\n const o = n ? yield this.getImageCandidates(n, s) : [];\n return Be(r, [() => a, () => o]);\n });\n }\n getImageCandidates(e, t = true) {\n return _(this, null, function* () {\n const n = e;\n if (t && n.height && n.width) {\n const r = ee(n);\n for (const s of r) {\n const a = { id: h(s), width: s.width ? s.width : n.width, height: s.height ? s.height : n.height, source: s };\n yield this.loadService(a);\n }\n }\n return be(e, t, this);\n });\n }\n verify(e) {\n return _(this, null, function* () {\n const t = this.predict(e, false, true), n = yield this.fetchService(h(e));\n if (!t)\n return false;\n const r = t.height === n.height && t.width === n.width && t[\"@context\"] === n[\"@context\"] && Te(t.sizes || [], n.sizes || []);\n if (r) {\n const s = y(h(e));\n this.knownImageServers[s].verifications += 1, this.knownImageServers[s].verifications >= this.config.verificationsRequired && (this.knownImageServers[s].verified = true);\n }\n return r;\n });\n }\n canLoadSync(e) {\n const t = typeof e == \"string\" ? e : h(e), n = p(t);\n if (this.imageServices[n])\n return true;\n const r = this.knownImageServers[y(t)];\n return r && !r.malformed && r.verifications >= this.config.verificationsRequired;\n }\n markAsMalformed(e) {\n return _(this, null, function* () {\n return this.knownImageServers[y(h(e))].malformed = true, this.loadService(e, true);\n });\n }\n fetchService(e, t = false) {\n return _(this, null, function* () {\n const n = p(e);\n if (this.imageServices[n] && (!t || this.imageServices[n].real))\n return this.imageServices[n];\n if (!this.config.enableFetching)\n throw new Error(\"Fetching is not enabled\");\n const r = yield this.fetch(n).then((s) => s.json());\n return !r.id && r[\"@id\"] && (r.id = r[\"@id\"]), r.id !== e && (r.id = e, r[\"@id\"] && (r[\"@id\"] = e)), this.imageServices[n] = Object.assign(r, { real: true }), this.imageServices[n];\n });\n }\n fetch(e, t) {\n return _(this, null, function* () {\n return fetch(e, t);\n });\n }\n loadService(e, t = false) {\n return _(this, null, function* () {\n if (!this.config.disableThrottling) {\n let s = true;\n for (; s; )\n if (this.fetchingCount >= this.config.verificationsRequired)\n yield new Promise((a) => setTimeout(a, 500));\n else {\n s = false;\n break;\n }\n }\n const n = this.knownImageServers[y(h(e))];\n if (n && !n.malformed && !t) {\n yield n.result;\n const s = this.loadServiceSync(e);\n if (s)\n return s;\n }\n this.fetchingCount++;\n const r = yield this.fetchService(h(e), t);\n return this.fetchingCount--, r.real && this.sample(r, e), r;\n });\n }\n loadServiceSync(e) {\n const t = p(h(e));\n return this.imageServices[t] ? this.imageServices[t] : this.predict(e);\n }\n}\nnew ke();\nfunction createThumbnailHelper(vault = compatVault, dependencies = {}) {\n const imageServiceLoader = dependencies.imageServiceLoader || new ke();\n async function getBestThumbnailAtSize(input, request, dereference, candidates = [], dimensions) {\n const thumbnailNotFound = () => imageServiceLoader.getThumbnailFromResource(void 0, request, dereference, candidates);\n if (!input) {\n return await imageServiceLoader.getThumbnailFromResource(void 0, request, dereference, candidates);\n }\n if (typeof input === \"string\") {\n const fixed = Ae(input);\n if (fixed) {\n candidates.push(fixed);\n }\n return await imageServiceLoader.getThumbnailFromResource(void 0, request, dereference, candidates);\n }\n const fullInput = vault.get(input, { skipSelfReturn: false });\n if (typeof fullInput === \"string\") {\n return { best: Ae(fullInput), fallback: [], log: [] };\n }\n if (!fullInput) {\n return await thumbnailNotFound();\n }\n const parseThumbnail = async (resource) => {\n if (resource && resource.thumbnail && resource.thumbnail.length) {\n const thumbnail = vault.get(resource.thumbnail[0]);\n const potentialThumbnails = await imageServiceLoader.getImageCandidates(thumbnail, dereference);\n if (potentialThumbnails && potentialThumbnails.length) {\n candidates.push(...potentialThumbnails);\n }\n }\n };\n await parseThumbnail(fullInput);\n switch (fullInput.type) {\n case \"Annotation\": {\n const contentResources = Array.isArray(fullInput.body) ? fullInput.body : [fullInput.body];\n const firstContentResources = vault.get(contentResources[0]);\n if (dimensions && !firstContentResources.width) {\n firstContentResources.width = dimensions.width;\n firstContentResources.height = dimensions.height;\n }\n return await imageServiceLoader.getThumbnailFromResource(\n firstContentResources,\n request,\n dereference,\n candidates\n );\n }\n case \"Canvas\": {\n const canvas = fullInput;\n return getBestThumbnailAtSize(canvas.items[0], request, dereference, candidates, {\n width: canvas.width,\n height: canvas.height\n });\n }\n case \"AnnotationPage\": {\n const annotationPage = fullInput;\n return getBestThumbnailAtSize(annotationPage.items[0], request, dereference, candidates, dimensions);\n }\n case \"Choice\": {\n const choice = fullInput;\n if (!choice.items || choice.items[0]) {\n return await thumbnailNotFound();\n }\n return getBestThumbnailAtSize(choice.items[0], request, dereference, candidates, dimensions);\n }\n case \"Collection\": {\n const collection = fullInput;\n const firstManifest = collection.items[0];\n if (!firstManifest) {\n return await thumbnailNotFound();\n }\n return getBestThumbnailAtSize(firstManifest, request, dereference, candidates, dimensions);\n }\n case \"Manifest\": {\n const manifest = fullInput;\n const firstCanvas = manifest.items[0];\n if (!firstCanvas) {\n return await thumbnailNotFound();\n }\n return getBestThumbnailAtSize(firstCanvas, request, dereference, candidates, dimensions);\n }\n case \"SpecificResource\":\n case \"Image\":\n case \"Dataset\":\n case \"Sound\":\n case \"Text\":\n case \"TextualBody\":\n case \"Video\":\n if (dimensions && !fullInput.width) {\n fullInput.width = dimensions.width;\n fullInput.height = dimensions.height;\n }\n return imageServiceLoader.getThumbnailFromResource(fullInput, request, dereference, candidates);\n }\n return await thumbnailNotFound();\n }\n return {\n getBestThumbnailAtSize\n };\n}\nfunction getClosestLanguage(i18nLanguage, languages, i18nLanguages = [], strictFallback = false) {\n if (!i18nLanguage || !languages || languages.length === 0) {\n return void 0;\n }\n if (languages.length === 1) {\n return languages[0];\n }\n if (languages.indexOf(i18nLanguage) !== -1) {\n return i18nLanguage;\n }\n const root = i18nLanguage.indexOf(\"-\") !== -1 ? i18nLanguage.slice(0, i18nLanguage.indexOf(\"-\")) : null;\n if (root && languages.indexOf(root) !== -1) {\n return root;\n }\n for (const lang of i18nLanguages) {\n if (languages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n if (!strictFallback) {\n const inverseRoot = languages.map((l) => l.indexOf(\"-\") !== -1 ? l.slice(0, l.indexOf(\"-\")) : null);\n const inverseIdx = inverseRoot.indexOf(i18nLanguage);\n if (inverseIdx !== -1) {\n return languages[inverseIdx];\n }\n for (const lang of i18nLanguages) {\n const root2 = lang.indexOf(\"-\") !== -1 ? lang.slice(0, lang.indexOf(\"-\")) : null;\n const inverseIdx2 = root2 ? languages.indexOf(root2) : -1;\n if (inverseIdx2 !== -1) {\n return languages[inverseIdx2];\n }\n }\n }\n if (languages.indexOf(\"none\") !== -1) {\n return \"none\";\n }\n if (languages.indexOf(\"@none\") !== -1) {\n return \"@none\";\n }\n return languages[0];\n}\nfunction buildLocaleString(inputText, i18nLanguage, options = {}) {\n const { strictFallback = false, defaultText = \"\", separator = \"\\n\", fallbackLanguages = [], closest } = options;\n const languages = Object.keys(inputText || {});\n const language = closest ? i18nLanguage : getClosestLanguage(i18nLanguage, languages, fallbackLanguages, strictFallback);\n if (!inputText) {\n return defaultText;\n }\n if (typeof inputText === \"string\") {\n return inputText;\n }\n const candidateText = language ? inputText[language] : void 0;\n if (candidateText) {\n if (typeof candidateText === \"string\") {\n return candidateText;\n }\n return candidateText.join(separator);\n }\n return \"\";\n}\nfunction getValue(inputText, options = {}) {\n return buildLocaleString(inputText, typeof navigator !== \"undefined\" ? navigator.language : void 0, options);\n}\nvar _slicedToArray = function() {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e2 = void 0;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i)\n break;\n }\n } catch (err) {\n _d = true;\n _e2 = err;\n } finally {\n try {\n if (!_n && _i[\"return\"])\n _i[\"return\"]();\n } finally {\n if (_d)\n throw _e2;\n }\n }\n return _arr;\n }\n return function(arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\nvar TAU = Math.PI * 2;\nvar mapToEllipse = function mapToEllipse2(_ref, rx, ry, cosphi, sinphi, centerx, centery) {\n var x2 = _ref.x, y2 = _ref.y;\n x2 *= rx;\n y2 *= ry;\n var xp = cosphi * x2 - sinphi * y2;\n var yp = sinphi * x2 + cosphi * y2;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function approxUnitArc2(ang1, ang2) {\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\nvar vectorAngle = function vectorAngle2(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function getArcCenter2(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function arcToBezier2(_ref2) {\n var px = _ref2.px, py = _ref2.py, cx = _ref2.cx, cy = _ref2.cy, rx = _ref2.rx, ry = _ref2.ry, _ref2$xAxisRotation = _ref2.xAxisRotation, xAxisRotation = _ref2$xAxisRotation === void 0 ? 0 : _ref2$xAxisRotation, _ref2$largeArcFlag = _ref2.largeArcFlag, largeArcFlag = _ref2$largeArcFlag === void 0 ? 0 : _ref2$largeArcFlag, _ref2$sweepFlag = _ref2.sweepFlag, sweepFlag = _ref2$sweepFlag === void 0 ? 0 : _ref2$sweepFlag;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _getArcCenter = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp), _getArcCenter2 = _slicedToArray(_getArcCenter, 4), centerx = _getArcCenter2[0], centery = _getArcCenter2[1], ang1 = _getArcCenter2[2], ang2 = _getArcCenter2[3];\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1 - ratio) < 1e-7) {\n ratio = 1;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function(curve) {\n var _mapToEllipse = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery), x1 = _mapToEllipse.x, y1 = _mapToEllipse.y;\n var _mapToEllipse2 = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery), x2 = _mapToEllipse2.x, y2 = _mapToEllipse2.y;\n var _mapToEllipse3 = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery), x3 = _mapToEllipse3.x, y3 = _mapToEllipse3.y;\n return { x1, y1, x2, y2, x: x3, y: y3 };\n });\n};\nvar parseSvgPath = parse;\nvar length = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 };\nvar segment = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\nfunction parse(path) {\n var data = [];\n path.replace(segment, function(_2, command, args) {\n var type = command.toLowerCase();\n args = parseValues(args);\n if (type == \"m\" && args.length > 2) {\n data.push([command].concat(args.splice(0, 2)));\n type = \"l\";\n command = command == \"m\" ? \"l\" : \"L\";\n }\n while (true) {\n if (args.length == length[type]) {\n args.unshift(command);\n return data.push(args);\n }\n if (args.length < length[type])\n throw new Error(\"malformed path data\");\n data.push([command].concat(args.splice(0, length[type])));\n }\n });\n return data;\n}\nvar number = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\nfunction parseValues(args) {\n var numbers = args.match(number);\n return numbers ? numbers.map(Number) : [];\n}\nvar absSvgPath = absolutize;\nfunction absolutize(path) {\n var startX = 0;\n var startY = 0;\n var x2 = 0;\n var y2 = 0;\n return path.map(function(seg) {\n seg = seg.slice();\n var type = seg[0];\n var command = type.toUpperCase();\n if (type != command) {\n seg[0] = command;\n switch (type) {\n case \"a\":\n seg[6] += x2;\n seg[7] += y2;\n break;\n case \"v\":\n seg[1] += y2;\n break;\n case \"h\":\n seg[1] += x2;\n break;\n default:\n for (var i = 1; i < seg.length; ) {\n seg[i++] += x2;\n seg[i++] += y2;\n }\n }\n }\n switch (command) {\n case \"Z\":\n x2 = startX;\n y2 = startY;\n break;\n case \"H\":\n x2 = seg[1];\n break;\n case \"V\":\n y2 = seg[1];\n break;\n case \"M\":\n x2 = startX = seg[1];\n y2 = startY = seg[2];\n break;\n default:\n x2 = seg[seg.length - 2];\n y2 = seg[seg.length - 1];\n }\n return seg;\n });\n}\nfunction parseAndNormalizeSvgPath(path) {\n const parsed = parseSvgPath(path);\n const absolute = absSvgPath(parsed);\n let prevCmd;\n let startX = 0;\n let startY = 0;\n let bezierX = 0;\n let bezierY = 0;\n let quadX;\n let quadY;\n let x2 = 0;\n let y2 = 0;\n const out = [];\n for (let i = 0; i < absolute.length; i++) {\n let seg = absolute[i];\n const cmd = seg[0];\n switch (cmd) {\n case \"M\":\n startX = seg[1];\n startY = seg[2];\n break;\n case \"H\":\n seg = [\"L\", seg[1], startY];\n break;\n case \"V\":\n seg = [\"L\", startX, seg[1]];\n break;\n case \"S\":\n {\n let cx = x2;\n let cy = y2;\n if (prevCmd === \"C\" || prevCmd == \"S\") {\n cx += cx - bezierX;\n cy += cy - bezierY;\n }\n seg = [\"C\", cx, cy, seg[1], seg[2], seg[3], seg[4]];\n }\n break;\n case \"T\":\n if (prevCmd === \"Q\" || prevCmd == \"T\") {\n quadX = x2 * 2 - quadX;\n quadY = y2 * 2 - quadY;\n } else {\n quadX = x2;\n quadY = y2;\n }\n seg = [\"Q\", quadX, quadY, seg[1], seg[2]];\n break;\n case \"Q\":\n quadX = seg[1];\n quadY = seg[2];\n break;\n case \"A\":\n {\n const curves = arcToBezier({\n px: x2,\n py: y2,\n cx: seg[6],\n cy: seg[7],\n rx: seg[1],\n ry: seg[2],\n xAxisRotation: seg[3],\n largeArcFlag: seg[4],\n sweepFlag: seg[5]\n });\n if (!curves.length) {\n continue;\n }\n for (const [j2, curve] of curves.entries()) {\n seg = [\"C\", curve.x1, curve.y1, curve.x2, curve.y2, curve.x, curve.y];\n if (j2 < curves.length - 1) {\n out.push(seg);\n }\n }\n seg = seg;\n }\n break;\n case \"Z\":\n seg = [\"L\", startX, startY];\n break;\n }\n prevCmd = cmd;\n x2 = seg[seg.length - 2];\n y2 = seg[seg.length - 1];\n if ([\"C\", \"Q\", \"A\"].indexOf(cmd) > -1) {\n bezierX = seg[seg.length - 4];\n bezierY = seg[seg.length - 3];\n } else {\n bezierX = x2;\n bezierY = y2;\n }\n out.push(seg);\n }\n return out;\n}\n/** Code to \"flatten\" quadratic and cubic Bézier curves to polylines.\n *\n * All code in this module is based on JavaScript code by Raph Levien, published on his blog at\n * https://raphlinus.github.io/.\n * I merely changed the structure a bit, removed some unneeded parts and added some comments and type hints.\n *\n * Flattening of quadratic Bézier curves:\n * - Article: https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html\n * - Code: https://github.com/raphlinus/raphlinus.github.io/blob/master/_posts/2019-12-23-flatten-quadbez.md?plain=1#L73-L212\n *\n * Flattening of cubic Bézier curves: https://levien.com/tmp/flatten.html\n *\n * Note that the code in this module has a different license than the rest of the package,\n * due to the inclusion of Apache-licensed third party code.\n *\n * @license\n * Copyright 2022 Johannes Baiter <johannes.baiter@gmail.com>\n * Copyright 2019, 2022 Raph Levien <raph.levien@gmail.com>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction flattenQuadraticBezier(start, control, end, tolerance = 1) {\n return new QuadraticBezier(start, control, end).subdivide(tolerance);\n}\nfunction flattenCubicBezier(start, startControl, end, endControl, tolerance = 1) {\n return new CubicBezier(\n new Float64Array([start.x, start.y, startControl.x, startControl.y, end.x, end.y, endControl.x, endControl.y])\n ).subdivide(tolerance);\n}\nfunction hypot2(p2) {\n return p2.x * p2.x + p2.y * p2.y;\n}\nfunction approx_myint(x2) {\n const d = 0.67;\n return x2 / (1 - d + Math.pow(Math.pow(d, 4) + 0.25 * x2 * x2, 0.25));\n}\nfunction approx_inv_myint(x2) {\n const b2 = 0.39;\n return x2 * (1 - b2 + Math.sqrt(b2 * b2 + 0.25 * x2 * x2));\n}\nclass QuadraticBezier {\n constructor(start, control, end) {\n this.start = start;\n this.control = control;\n this.end = end;\n }\n eval(t) {\n const mt = 1 - t;\n return {\n x: this.start.x * mt * mt + 2 * this.control.x * mt * t + this.end.x * t * t,\n y: this.start.y * mt * mt + 2 * this.control.y * mt * t + this.end.y * t * t\n };\n }\n mapToBasic() {\n const { x: x0, y: y0 } = this.start;\n const { x: x1, y: y1 } = this.control;\n const { x: x2, y: y2 } = this.end;\n const ddx = 2 * x1 - x0 - x2;\n const ddy = 2 * y1 - y0 - y2;\n const u0 = (x1 - x0) * ddx + (y1 - y0) * ddy;\n const u2 = (x2 - x1) * ddx + (y2 - y1) * ddy;\n const cross = (x2 - x0) * ddy - (y2 - y0) * ddx;\n const paramX0 = u0 / cross;\n const paramX2 = u2 / cross;\n const scale = Math.abs(cross) / (Math.hypot(ddx, ddy) * Math.abs(paramX2 - paramX0));\n return { x0, x2, scale, cross };\n }\n subdivide(tolerance) {\n const params = this.mapToBasic();\n const a0 = approx_myint(params.x0);\n const a2 = approx_myint(params.x2);\n const count = 0.5 * Math.abs(a2 - a0) * Math.sqrt(params.scale / tolerance);\n const n = Math.ceil(count);\n const u0 = approx_inv_myint(a0);\n const u2 = approx_inv_myint(a2);\n const tValues = [0];\n for (let i = 1; i < n; i++) {\n const u = approx_inv_myint(a0 + (a2 - a0) * i / n);\n const t = (u - u0) / (u2 - u0);\n tValues.push(t);\n }\n tValues.push(1);\n return tValues.map((t) => this.eval(t));\n }\n}\nclass CubicBezier {\n constructor(coords) {\n this.c = coords;\n }\n weightsum(c0, c1, c2, c3) {\n const x2 = c0 * this.c[0] + c1 * this.c[2] + c2 * this.c[4] + c3 * this.c[6];\n const y2 = c0 * this.c[1] + c1 * this.c[3] + c2 * this.c[5] + c3 * this.c[7];\n return { x: x2, y: y2 };\n }\n eval(t) {\n const mt = 1 - t;\n const c0 = mt * mt * mt;\n const c1 = 3 * mt * mt * t;\n const c2 = 3 * mt * t * t;\n const c3 = t * t * t;\n return this.weightsum(c0, c1, c2, c3);\n }\n deriv(t) {\n const mt = 1 - t;\n const c0 = -3 * mt * mt;\n const c3 = 3 * t * t;\n const c1 = -6 * t * mt - c0;\n const c2 = 6 * t * mt - c3;\n return this.weightsum(c0, c1, c2, c3);\n }\n midpoint_quadbez() {\n const p1 = this.weightsum(-0.25, 0.75, 0.75, -0.25);\n return new QuadraticBezier({ x: this.c[0], y: this.c[1] }, p1, { x: this.c[6], y: this.c[7] });\n }\n subsegment(t0, t1) {\n const c = new Float64Array(8);\n const p0 = this.eval(t0);\n const p3 = this.eval(t1);\n c[0] = p0.x;\n c[1] = p0.y;\n const scale = (t1 - t0) / 3;\n const d1 = this.deriv(t0);\n c[2] = p0.x + scale * d1.x;\n c[3] = p0.y + scale * d1.y;\n const d2 = this.deriv(t1);\n c[4] = p3.x - scale * d2.x;\n c[5] = p3.y - scale * d2.y;\n c[6] = p3.x;\n c[7] = p3.y;\n return new CubicBezier(c);\n }\n subdivide(tol) {\n const tol1 = 0.1 * tol;\n const tol2 = tol - tol1;\n const sqrt_tol2 = Math.sqrt(tol2);\n const err2 = hypot2(this.weightsum(1, -3, 3, -1));\n const n_quads = Math.ceil(Math.pow(err2 / (432 * tol1 * tol1), 1 / 6));\n const quads = [];\n let sum = 0;\n for (let i2 = 0; i2 < n_quads; i2++) {\n const t0 = i2 / n_quads;\n const t1 = (i2 + 1) / n_quads;\n const quad = this.subsegment(t0, t1).midpoint_quadbez();\n const params = quad.mapToBasic();\n const a0 = approx_myint(params.x0);\n const a2 = approx_myint(params.x2);\n const scale = Math.sqrt(params.scale);\n let val2 = Math.abs(a2 - a0) * scale;\n if (Math.sign(params.x0) != Math.sign(params.x2)) {\n const xmin = sqrt_tol2 / scale;\n const cusp_val = sqrt_tol2 * Math.abs(a2 - a0) / approx_myint(xmin);\n val2 = Math.max(val2, cusp_val);\n }\n quads.push({\n quad,\n a0,\n a2,\n val: val2\n });\n sum += val2;\n }\n const count = 0.5 * sum / sqrt_tol2;\n const n = Math.ceil(count);\n const result = [{ x: this.c[0], y: this.c[1] }];\n let val = 0;\n let i = 0;\n for (let j2 = 1; j2 < n; j2++) {\n const target = sum * j2 / n;\n while (val + quads[i].val < target) {\n val += quads[i].val;\n i++;\n }\n const a0 = quads[i].a0;\n const a2 = quads[i].a2;\n const u0 = approx_inv_myint(a0);\n const u2 = approx_inv_myint(a2);\n const a = a0 + (a2 - a0) * (target - val) / quads[i].val;\n const u = approx_inv_myint(a);\n const t = (u - u0) / (u2 - u0);\n result.push(quads[i].quad.eval(t));\n }\n result.push({ x: this.c[6], y: this.c[7] });\n return result;\n }\n}\nconst BOX_SELECTOR = /&?(xywh=)?(pixel:|percent:|pct:)?([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?),([0-9]+(?:\\.[0-9]+)?)/;\nconst TEMPORAL_SELECTOR = /&?(t=)(npt:)?([0-9]+(.[0-9]+)?)?(,([0-9]+(.[0-9]+)?))?/;\nconst RGBA_COLOR = /^rgba\\((\\d+),(\\d+),(\\d+),([0-9.]+)\\)$/;\nfunction parseSelector(source, {\n domParser,\n svgPreprocessor,\n iiifRenderingHints\n} = {}) {\n var _a, _b;\n if (Array.isArray(source)) {\n return resolveHints(\n source.reduce(\n (data, nextSource) => {\n const {\n selector,\n selectors,\n iiifRenderingHints: newIiifRenderingHints\n } = parseSelector(nextSource, { domParser, svgPreprocessor, iiifRenderingHints });\n if (selector) {\n if (!data.selector) {\n data.selector = selector;\n }\n data.selectors.push(...selectors);\n }\n if (newIiifRenderingHints) {\n data.iiifRenderingHints = data.iiifRenderingHints || { type: \"ImageApiSelector\" };\n Object.assign(data.iiifRenderingHints, newIiifRenderingHints);\n }\n return data;\n },\n {\n selector: null,\n selectors: [],\n iiifRenderingHints\n }\n )\n );\n }\n if (!source) {\n return resolveHints({\n selector: null,\n selectors: [],\n iiifRenderingHints\n });\n }\n if (typeof source === \"string\") {\n const [id, fragment] = source.split(\"#\");\n if (!fragment) {\n return resolveHints({\n selector: null,\n selectors: [],\n iiifRenderingHints\n });\n }\n return parseSelector(\n { type: \"FragmentSelector\", value: fragment },\n { svgPreprocessor, iiifRenderingHints, domParser }\n );\n }\n if (source.type) {\n if (source.type === \"PointSelector\" && (source.t || source.t === 0)) {\n const selector = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: source.t\n }\n };\n return resolveHints({\n selector,\n selectors: [selector],\n iiifRenderingHints\n });\n }\n }\n if (isImageApiSelector(source)) {\n const selectors = [];\n if (source.region) {\n const parsedRegion = parseSelector(\n { type: \"FragmentSelector\", value: \"xywh=\" + source.region },\n { domParser, svgPreprocessor, iiifRenderingHints }\n );\n selectors.push(...parsedRegion.selectors);\n }\n return resolveHints({\n selector: selectors[0],\n selectors,\n iiifRenderingHints: iiifRenderingHints ? { ...iiifRenderingHints, ...source } : source\n });\n }\n if (source.type === \"FragmentSelector\") {\n const matchBoxSelector = BOX_SELECTOR.exec(source.value);\n if (matchBoxSelector) {\n const selector = {\n type: \"BoxSelector\",\n spatial: {\n unit: matchBoxSelector[2] === \"percent:\" || matchBoxSelector[2] === \"pct:\" ? \"percent\" : \"pixel\",\n x: parseFloat(matchBoxSelector[3]),\n y: parseFloat(matchBoxSelector[4]),\n width: parseFloat(matchBoxSelector[5]),\n height: parseFloat(matchBoxSelector[6])\n }\n };\n return resolveHints({\n selector,\n selectors: [selector],\n iiifRenderingHints\n });\n }\n const matchTimeSelector = source.value.match(TEMPORAL_SELECTOR);\n if (matchTimeSelector) {\n const selector = {\n type: \"TemporalSelector\",\n temporal: {\n startTime: matchTimeSelector[4] ? parseFloat(matchTimeSelector[4]) : 0,\n endTime: matchTimeSelector[7] ? parseFloat(matchTimeSelector[7]) : void 0\n }\n };\n return resolveHints({\n selector,\n selectors: [selector],\n iiifRenderingHints\n });\n }\n return resolveHints({\n selector: null,\n selectors: [],\n iiifRenderingHints\n });\n }\n if (source.type === \"SvgSelector\" && \"value\" in source) {\n if (!domParser) {\n if (typeof window !== \"undefined\") {\n domParser = new window.DOMParser();\n } else {\n console.warn(\n \"No DOMParser available, cannot parse SVG selector, `points`, `spatial` and `style` will be unavailable and the SVG will not be normalized.\"\n );\n }\n }\n let points = [];\n let rect;\n let style;\n let svg = (_a = svgPreprocessor == null ? void 0 : svgPreprocessor(source.value)) != null ? _a : source.value;\n let svgShape;\n if (domParser) {\n const svgElement = domParser.parseFromString(source.value, \"image/svg+xml\").querySelector(\"svg\");\n if (!svgElement) {\n console.warn(`Illegal SVG selector: ${source.value}`);\n return resolveHints({\n selector: null,\n selectors: [],\n iiifRenderingHints\n });\n }\n const selectorElem = getSelectorElement(svgElement);\n if (selectorElem) {\n points = selectorElem.points;\n svgShape = selectorElem.shapeType;\n rect = [\n Math.min(...points.map((p2) => p2[0])),\n Math.min(...points.map((p2) => p2[1])),\n Math.max(...points.map((p2) => p2[0])),\n Math.max(...points.map((p2) => p2[1]))\n ];\n ({ style, svg } = (_b = extractStyles(selectorElem.element)) != null ? _b : { svg });\n }\n }\n const sel = {\n type: \"SvgSelector\",\n svg,\n svgShape,\n style,\n points: points.length ? points : void 0,\n spatial: rect ? { unit: \"pixel\", x: rect[0], y: rect[1], width: rect[2] - rect[0], height: rect[3] - rect[1] } : void 0\n };\n return resolveHints({\n selector: sel,\n selectors: [sel],\n iiifRenderingHints\n });\n }\n return resolveHints({\n selector: null,\n selectors: [],\n iiifRenderingHints\n });\n}\nfunction getShapeTypeFromPath(svgPath) {\n const cmdFrequencies = svgPath.map((seg) => seg[0]).reduce(\n (acc, cmd) => {\n acc[cmd] += 1;\n return acc;\n },\n { C: 0, Q: 0, L: 0, M: 0 }\n );\n const cmdTypes = new Set(svgPath.map((seg) => seg[0]));\n if (cmdFrequencies.C > 0 || cmdFrequencies.Q > 0) {\n return \"path\";\n }\n if (cmdFrequencies.L > 0 && (cmdTypes.size === 1 || cmdTypes.size === 2 && cmdTypes.has(\"M\"))) {\n if (cmdFrequencies.L === 4) {\n return \"rect\";\n }\n const lastSeg = svgPath.slice(-1)[0];\n if (svgPath[0][0] === \"M\" && lastSeg[0] === \"L\" && lastSeg[1] == svgPath[0][1] && lastSeg[2] === svgPath[0][2] || lastSeg[1] === 0 && lastSeg[2] === 0) {\n return \"polygon\";\n } else {\n return \"polyline\";\n }\n }\n return \"path\";\n}\nfunction getSelectorElement(svgElem) {\n var _a, _b, _c, _d, _e2, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;\n for (const element of Array.from(svgElem.children)) {\n switch (element == null ? void 0 : element.tagName.toLowerCase()) {\n case \"g\":\n {\n const res = getSelectorElement(element);\n if (res) {\n return res;\n }\n }\n continue;\n case \"path\": {\n const p2 = element.getAttribute(\"d\");\n if (!p2) {\n continue;\n }\n const normalized = parseAndNormalizeSvgPath(p2);\n return { element, points: pathToPoints(normalized), shapeType: getShapeTypeFromPath(normalized) };\n }\n case \"circle\": {\n const cx = parseFloat((_a = element.getAttribute(\"cx\")) != null ? _a : \"0\");\n const cy = parseFloat((_b = element.getAttribute(\"cy\")) != null ? _b : \"0\");\n const r = parseFloat((_c = element.getAttribute(\"r\")) != null ? _c : \"0\");\n if (!r) {\n continue;\n }\n const points = [];\n for (let angle = 0; angle <= 360; angle += 12) {\n const rad = angle * Math.PI / 180;\n points.push([cx + r * Math.cos(rad), cy + r * Math.sin(rad)]);\n }\n return { element, points, shapeType: \"circle\" };\n }\n case \"ellipse\": {\n const cx = parseFloat((_d = element.getAttribute(\"cx\")) != null ? _d : \"0\");\n const cy = parseFloat((_e2 = element.getAttribute(\"cy\")) != null ? _e2 : \"0\");\n const rx = parseFloat((_f = element.getAttribute(\"rx\")) != null ? _f : \"0\");\n const ry = parseFloat((_g = element.getAttribute(\"ry\")) != null ? _g : \"0\");\n if (!rx && !ry) {\n continue;\n }\n const points = [];\n for (let angle = 0; angle <= 360; angle += 12) {\n const t = Math.tan(angle / 360 * Math.PI);\n const px = rx * (1 - t ** 2) / (1 + t ** 2);\n const py = ry * 2 * t / (1 + t ** 2);\n points.push([cx + px, cy + py]);\n }\n return { element, points, shapeType: \"ellipse\" };\n }\n case \"line\": {\n const x0 = parseFloat((_h = element.getAttribute(\"x0\")) != null ? _h : \"0\");\n const y0 = parseFloat((_i = element.getAttribute(\"y0\")) != null ? _i : \"0\");\n const x1 = parseFloat((_j = element.getAttribute(\"x1\")) != null ? _j : \"0\");\n const y1 = parseFloat((_k = element.getAttribute(\"y1\")) != null ? _k : \"0\");\n if (x0 === x1 && y0 === y1) {\n continue;\n }\n return {\n element,\n points: [\n [x0, y0],\n [x1, y1]\n ],\n shapeType: \"polyline\"\n };\n }\n case \"polygon\":\n case \"polyline\": {\n const points = (_m = (_l = element.getAttribute(\"points\")) == null ? void 0 : _l.split(\" \").map((ps) => ps.split(\",\").map(parseFloat))) != null ? _m : [];\n if (!points.length) {\n continue;\n }\n let shapeType = \"polyline\";\n if (element.tagName.toLowerCase() === \"polygon\") {\n points.push(points[0]);\n shapeType = \"polygon\";\n }\n return { element, points, shapeType };\n }\n case \"rect\": {\n const x2 = parseFloat((_n = element.getAttribute(\"x\")) != null ? _n : \"0\");\n const y2 = parseFloat((_o = element.getAttribute(\"y\")) != null ? _o : \"0\");\n const width = parseFloat((_p = element.getAttribute(\"width\")) != null ? _p : \"0\");\n const height = parseFloat((_q = element.getAttribute(\"height\")) != null ? _q : \"0\");\n if (!width || !height) {\n continue;\n }\n return {\n element,\n points: [\n [x2, y2],\n [x2 + width, y2],\n [x2 + width, y2 + height],\n [x2, y2 + height],\n [x2, y2]\n ],\n shapeType: \"rect\"\n };\n }\n default:\n continue;\n }\n }\n return null;\n}\nfunction pathToPoints(normalizedPath) {\n var _a;\n const out = [];\n for (let i = 0; i < normalizedPath.length; i++) {\n const startPoint = (_a = out[out.length - 1]) != null ? _a : [0, 0];\n const seg = normalizedPath[i];\n switch (seg[0]) {\n case \"M\":\n case \"L\":\n out.push([seg[1], seg[2]]);\n continue;\n case \"C\":\n out.push(\n ...flattenCubicBezier(\n { x: startPoint[0], y: startPoint[1] },\n { x: seg[1], y: seg[2] },\n { x: seg[3], y: seg[4] },\n { x: seg[5], y: seg[6] }\n ).map((p2) => [p2.x, p2.y]).slice(1)\n );\n continue;\n case \"Q\":\n out.push(\n ...flattenQuadraticBezier(\n { x: startPoint[0], y: startPoint[1] },\n { x: seg[1], y: seg[2] },\n { x: seg[3], y: seg[4] }\n ).map((p2) => [p2.x, p2.y]).slice(1)\n );\n continue;\n }\n }\n return out;\n}\nfunction extractStyles(selectorElement) {\n const style = {};\n if (selectorElement.hasAttribute(\"fill\")) {\n style.fill = selectorElement.getAttribute(\"fill\");\n selectorElement.removeAttribute(\"fill\");\n } else if (selectorElement.style.fill) {\n style.fill = selectorElement.style.fill;\n }\n if (style.fill) {\n const rgbaMatch = RGBA_COLOR.exec(style.fill);\n if (rgbaMatch) {\n style.fillOpacity = parseFloat(rgbaMatch[4]);\n style.fill = `rgb(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]})`;\n }\n }\n if (selectorElement.hasAttribute(\"fill-opacity\")) {\n style.fillOpacity = parseFloat(selectorElement.getAttribute(\"fill-opacity\"));\n selectorElement.removeAttribute(\"fill-opacity\");\n } else if (selectorElement.style.fillOpacity) {\n style.fillOpacity = parseFloat(selectorElement.style.fillOpacity);\n }\n if (selectorElement.hasAttribute(\"stroke\")) {\n style.stroke = selectorElement.getAttribute(\"stroke\");\n selectorElement.removeAttribute(\"stroke\");\n } else if (selectorElement.style.stroke) {\n style.stroke = selectorElement.style.stroke;\n }\n if (style.stroke) {\n const rgbaMatch = RGBA_COLOR.exec(style.stroke);\n if (rgbaMatch) {\n style.strokeOpacity = parseFloat(rgbaMatch[4]);\n style.stroke = `rgb(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]})`;\n }\n }\n if (selectorElement.hasAttribute(\"stroke-opacity\")) {\n style.strokeOpacity = parseFloat(selectorElement.getAttribute(\"stroke-opacity\"));\n selectorElement.removeAttribute(\"stroke-opacity\");\n } else if (selectorElement.style.strokeOpacity) {\n style.strokeOpacity = parseFloat(selectorElement.style.strokeOpacity);\n }\n if (selectorElement.hasAttribute(\"stroke-width\")) {\n style.strokeWidth = selectorElement.getAttribute(\"stroke-width\");\n selectorElement.removeAttribute(\"stroke-width\");\n } else if (selectorElement.style.strokeWidth) {\n style.strokeWidth = selectorElement.style.strokeWidth;\n }\n if (selectorElement.hasAttribute(\"stroke-dasharray\")) {\n style.strokeDasharray = selectorElement.getAttribute(\"stroke-dasharray\");\n selectorElement.removeAttribute(\"stroke-dasharray\");\n } else if (selectorElement.style.strokeDasharray) {\n style.strokeDasharray = selectorElement.style.strokeDasharray;\n }\n let rootElem = selectorElement;\n while (rootElem.tagName.toLowerCase() !== \"svg\") {\n rootElem = rootElem.parentElement;\n if (rootElem === null) {\n throw new Error(\"Could not find root SVG element\");\n }\n }\n return { svg: rootElem.outerHTML, style: Object.keys(style).length > 0 ? style : void 0 };\n}\nfunction isImageApiSelector(t) {\n return !!t && t.type === \"iiif:ImageApiSelector\" && t.type === \"iiif:ImageApiSelector\";\n}\nfunction resolveHints(supported) {\n if (supported.iiifRenderingHints) {\n const source = supported.iiifRenderingHints;\n if (source.rotation) {\n const parsedRotation = parseRotation(source.rotation);\n if (parsedRotation) {\n if (supported.selectors.length) {\n for (const selector of supported.selectors) {\n selector.rotation = parsedRotation;\n }\n } else {\n supported.selectors.push({\n type: \"RotationSelector\",\n rotation: parsedRotation\n });\n }\n }\n }\n } else {\n delete supported.iiifRenderingHints;\n }\n return supported;\n}\nfunction parseRotation(input) {\n let num = parseFloat(input);\n if (num && input.startsWith(\"!\")) {\n num = 360 - num;\n }\n if (num) {\n num = num % 360;\n }\n if (num !== num) {\n return 0;\n }\n return num || 0;\n}\nfunction expandTarget(target, options = {}) {\n if (Array.isArray(target)) {\n return expandTarget(target[0]);\n }\n if (typeof target === \"string\") {\n const [id, fragment] = target.split(\"#\");\n if (!fragment) {\n return {\n type: \"SpecificResource\",\n source: { id, type: options.typeMap && options.typeMap[id] || \"Unknown\" },\n selector: null,\n selectors: []\n };\n }\n return expandTarget({\n type: \"SpecificResource\",\n source: { id, type: \"Unknown\" },\n selector: {\n type: \"FragmentSelector\",\n value: fragment\n }\n });\n }\n if (target.type === \"Choice\" || target.type === \"List\" || target.type === \"Composite\" || target.type === \"Independents\") {\n return expandTarget(target.items[0]);\n }\n if (target.type === \"SpecificResource\") {\n if (target.source.type === \"Canvas\" && target.source.partOf && typeof target.source.partOf === \"string\") {\n target.source.partOf = [\n {\n id: target.source.partOf,\n type: \"Manifest\"\n }\n ];\n }\n const { selector, selectors } = target.selector ? parseSelector(target.selector, options) : { selector: null, selectors: [] };\n return {\n type: \"SpecificResource\",\n source: target.source,\n selector,\n selectors\n };\n }\n if (target.id) {\n if (target.type === \"Canvas\" && target.partOf && typeof target.partOf === \"string\") {\n target.partOf = [\n {\n id: target.partOf,\n type: \"Manifest\"\n }\n ];\n }\n const [id, fragment] = target.id.split(\"#\");\n if (!fragment) {\n return {\n type: \"SpecificResource\",\n source: {\n ...target,\n id\n },\n selector: null,\n selectors: []\n };\n }\n return expandTarget({\n type: \"SpecificResource\",\n source: {\n ...target,\n id\n },\n selector: {\n type: \"FragmentSelector\",\n value: fragment\n }\n });\n }\n return {\n type: \"SpecificResource\",\n source: target,\n selector: null,\n selectors: []\n };\n}\nfunction validateContentState(annotation, strict = false) {\n if (typeof annotation === \"string\") {\n if (annotation.startsWith(\"{\")) {\n try {\n const parsed = JSON.parse(annotation);\n return validateContentState(parsed);\n } catch (err) {\n return [false, { reason: \"Invalid JSON\" }];\n }\n }\n return [true];\n }\n if (Array.isArray(annotation)) {\n for (const anno of annotation) {\n const [valid, reason] = validateContentState(anno);\n if (!valid && reason) {\n return [valid, reason];\n }\n }\n return [true];\n }\n if (annotation.type === \"Annotation\") {\n return [true];\n }\n if (strict && annotation.type === \"Canvas\" && !annotation.partOf) {\n return [false, { reason: \"Canvas without partOf cannot be loaded\" }];\n }\n return [true];\n}\nfunction serialiseContentState(annotation) {\n return encodeContentState(typeof annotation === \"string\" ? annotation : JSON.stringify(annotation));\n}\nfunction parseContentState(state, asyncOrFetcher) {\n state = state.trim();\n if (state[0] === \"{\") {\n return asyncOrFetcher ? Promise.resolve(JSON.parse(state)) : JSON.parse(state);\n }\n if (state.startsWith(\"http\")) {\n if (!asyncOrFetcher) {\n throw new Error(\"Cannot fetch remote fetch with async=false in parseContentState\");\n }\n return fetch(state).then((r) => r.json());\n }\n return parseContentState(decodeContentState(state), asyncOrFetcher);\n}\nfunction encodeContentState(state) {\n const uriEncoded = encodeURIComponent(state);\n const base64 = typeof btoa === \"undefined\" ? Buffer.from(uriEncoded, \"utf-8\").toString(\"base64\") : btoa(uriEncoded);\n const base64url = base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n return base64url.replace(/=/g, \"\");\n}\nfunction decodeContentState(encodedContentState) {\n const base64url = restorePadding(encodedContentState);\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const base64Decoded = typeof atob === \"undefined\" ? Buffer.from(base64, \"base64\").toString(\"utf-8\") : atob(base64);\n return decodeURIComponent(base64Decoded).trim();\n}\nfunction restorePadding(s) {\n const pad = s.length % 4;\n if (pad === 1) {\n throw new Error(\"InvalidLengthError: Input base64url string is the wrong length to determine padding\");\n }\n return s + (pad ? \"====\".slice(0, 4 - pad) : \"\");\n}\nfunction normaliseContentState(state) {\n if (!state) {\n throw new Error(\"Content state is empty\");\n }\n if (!Array.isArray(state)) {\n state = [state];\n }\n let annoId = \"vault://virtual-annotation/\" + new Date().getTime();\n const targets = [];\n for (const source of state) {\n if (typeof source === \"string\") {\n throw new Error(\"Content state is a [String] type and cannot be inferred\");\n }\n if (source.type === \"Annotation\") {\n annoId = source.id;\n if (Array.isArray(source.motivation)) {\n for (const singleMotivation of source.motivation) {\n }\n }\n if (Array.isArray(source.target)) {\n for (const target2 of source.target) {\n const expanded = expandTarget(target2);\n targets.push(expanded);\n }\n } else {\n const expanded = expandTarget(source.target);\n targets.push(expanded);\n }\n continue;\n }\n const target = expandTarget(source);\n targets.push(target);\n }\n return {\n id: annoId,\n type: \"Annotation\",\n motivation: [\"contentState\", ...state.motivation || []],\n target: targets,\n extensions: {}\n };\n}\nfunction parseSpecificResource(resource) {\n if (resource.type === \"SpecificResource\") {\n return [resource.source, { selector: resource.selector }];\n }\n return [resource, { selector: null }];\n}\nfunction createPaintingAnnotationsHelper(vault = compatVault) {\n function getAllPaintingAnnotations(canvasOrId) {\n const canvas = canvasOrId ? typeof canvasOrId === \"string\" ? vault.get(canvasOrId) : canvasOrId : null;\n if (!canvas) {\n return [];\n }\n const annotationPages = vault.get(canvas.items, { parent: canvas });\n const flatAnnotations = [];\n for (const page of annotationPages) {\n flatAnnotations.push(...vault.get(page.items, { parent: page }));\n }\n return flatAnnotations;\n }\n function getPaintables(paintingAnnotationsOrCanvas, enabledChoices = []) {\n const paintingAnnotations = Array.isArray(paintingAnnotationsOrCanvas) ? paintingAnnotationsOrCanvas : getAllPaintingAnnotations(paintingAnnotationsOrCanvas);\n const types = [];\n let choice = null;\n const items = [];\n for (const annotation of paintingAnnotations) {\n if (annotation.type !== \"Annotation\") {\n throw new Error(`getPaintables() accept either a canvas or list of annotations`);\n }\n const references = Array.from(Array.isArray(annotation.body) ? annotation.body : [annotation.body]);\n for (const reference of references) {\n const [ref, { selector }] = parseSpecificResource(reference);\n const body = vault.get(ref);\n const type = (body.type || \"unknown\").toLowerCase();\n if (type === \"choice\") {\n const nestedBodies = vault.get(body.items, { parent: body.id });\n const selected = enabledChoices.length ? enabledChoices.map((cid) => nestedBodies.find((b2) => b2.id === cid)).filter(Boolean) : [nestedBodies[0]];\n if (selected.length === 0) {\n selected.push(nestedBodies[0]);\n }\n choice = {\n type: \"single-choice\",\n items: nestedBodies.map((b2) => ({\n id: b2.id,\n label: b2.label,\n selected: selected.indexOf(b2) !== -1\n })),\n label: ref.label\n };\n references.push(...selected);\n continue;\n }\n if (types.indexOf(type) === -1) {\n types.push(type);\n }\n items.push({\n type,\n annotationId: annotation.id,\n resource: body,\n target: annotation.target,\n selector\n });\n }\n }\n return {\n types,\n items,\n choice\n };\n }\n function extractChoices(paintingAnnotationsOrCanvas) {\n const { choice } = getPaintables(paintingAnnotationsOrCanvas);\n return choice;\n }\n return {\n getAllPaintingAnnotations,\n getPaintables,\n extractChoices\n };\n}\nfunction unwrapObject(object) {\n if (Array.isArray(object)) {\n return object.map((o) => unwrapObject(o));\n }\n if (!object || !object.type) {\n return object;\n }\n return { id: object.id, type: object.type };\n}\nfunction wrapObject(object, vault, reactive = false) {\n return vault.wrapObject(object);\n}\nfunction createObjectsHelper(vault) {\n return {\n get(id, reactive = false) {\n return vault.getObject(id, { reactive });\n },\n async load(id, json) {\n return vault.loadObject(id, json);\n },\n async loadManifest(id, json) {\n return vault.loadManifestObject(id, json);\n },\n async loadCollection(id, json) {\n return vault.loadCollectionObject(id, json);\n },\n wrapObject(objectType) {\n return vault.wrapObject(vault.get(objectType, { skipSelfReturn: false }));\n },\n isWrapped(object) {\n return vault.isWrapped(object);\n }\n };\n}\nfunction createRangeHelper(vault = compatVault) {\n return {\n findFirstCanvasFromRange: (range) => findFirstCanvasFromRange(vault, range),\n findAllCanvasesInRange: (range) => findAllCanvasesInRange(vault, range),\n findManifestSelectedRange: (manifest, canvasId) => findManifestSelectedRange(vault, manifest, canvasId),\n findSelectedRange: (range, canvasId) => findSelectedRange(vault, range, canvasId)\n };\n}\nfunction findFirstCanvasFromRange(vault, range) {\n var _a;\n for (const inner of range.items) {\n if (inner.type === \"SpecificResource\") {\n if (((_a = inner.source) == null ? void 0 : _a.type) === \"Canvas\") {\n return inner.source;\n }\n }\n if (inner.type === \"Range\") {\n const found = findFirstCanvasFromRange(vault, vault.get(inner));\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\nfunction findAllCanvasesInRange(vault, range) {\n var _a;\n const found = [];\n for (const inner of range.items) {\n if (inner.type === \"SpecificResource\") {\n if (((_a = inner.source) == null ? void 0 : _a.type) === \"Canvas\") {\n if (inner.source.id.indexOf(\"#\") !== -1) {\n found.push({ id: inner.source.id.split(\"#\")[0], type: \"Canvas\" });\n } else {\n found.push(inner.source);\n }\n }\n }\n if (inner.type === \"Range\") {\n found.push(...findAllCanvasesInRange(vault, vault.get(inner)));\n }\n }\n return found;\n}\nfunction findManifestSelectedRange(vault, manifest, canvasId) {\n for (const range of manifest.structures) {\n const found = findSelectedRange(vault, vault.get(range), canvasId);\n if (found) {\n return found;\n }\n }\n return null;\n}\nfunction findSelectedRange(vault, range, canvasId) {\n for (const inner of range.items) {\n if (inner.type === \"SpecificResource\" && inner.source === canvasId) {\n return range;\n }\n if (inner.type === \"Range\") {\n const found = findSelectedRange(vault, vault.get(inner), canvasId);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\nfunction createSequenceHelper(vault = compatVault) {\n return {\n getVisibleCanvasesFromCanvasId: (manifestOrRange, canvasId, preventPaged = false) => getVisibleCanvasesFromCanvasId(vault, manifestOrRange, canvasId, preventPaged),\n getManifestSequence: (manifestOrRange, options = {}) => getManifestSequence(vault, manifestOrRange, options)\n };\n}\nfunction getVisibleCanvasesFromCanvasId(vault = compatVault, manifestOrRange, canvasId, preventPaged = false) {\n const behavior = manifestOrRange.behavior || [];\n const fullCanvas = canvasId ? vault.get(canvasId) : null;\n if (!fullCanvas) {\n return [];\n }\n const canvasBehavior = fullCanvas.behavior || [];\n const isPaged = preventPaged ? false : behavior.includes(\"paged\");\n const isContinuous = isPaged ? false : behavior.includes(\"continuous\");\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes(\"individuals\");\n const isCanvasFacingPages = canvasBehavior.includes(\"facing-pages\");\n const isCanvasNonPaged = canvasBehavior.includes(\"non-paged\");\n if (isCanvasFacingPages || isCanvasNonPaged || isIndividuals || preventPaged) {\n return [{ id: fullCanvas.id, type: \"Canvas\" }];\n }\n const [manifestItems, ordering] = getManifestSequence(vault, manifestOrRange);\n if (isContinuous) {\n return manifestItems;\n }\n const canvasIndex = manifestItems.findIndex((r) => r.id === canvasId);\n if (canvasIndex === -1) {\n return [];\n }\n for (const indexes of ordering) {\n if (indexes.includes(canvasIndex)) {\n return indexes.map((index) => manifestItems[index]);\n }\n }\n return [{ id: fullCanvas.id, type: \"Canvas\" }];\n}\nfunction getManifestSequence(vault = compatVault, manifestOrRange, { disablePaging, skipNonPaged } = {}) {\n const behavior = manifestOrRange.behavior || [];\n const isPaged = behavior.includes(\"paged\");\n const isContinuous = isPaged ? false : behavior.includes(\"continuous\");\n const isIndividuals = isPaged || isContinuous ? false : behavior.includes(\"individuals\");\n const manifestItems = manifestOrRange.type === \"Manifest\" ? manifestOrRange.items : findAllCanvasesInRange(vault, manifestOrRange);\n if (isContinuous) {\n return [manifestItems, [manifestItems.map((_2, index) => index)]];\n }\n if (isIndividuals || !isPaged || disablePaging) {\n return [manifestItems, manifestItems.map((_2, index) => [index])];\n }\n const ordering = [];\n let currentOrdering = [];\n const flush = () => {\n if (currentOrdering.length) {\n ordering.push([...currentOrdering]);\n currentOrdering = [];\n }\n };\n let offset = 0;\n let flushNextPaged = false;\n for (let i = 0; i < manifestItems.length; i++) {\n const canvas = vault.get(manifestItems[i]);\n const canvasBehavior = canvas.behavior || [];\n if (canvasBehavior.includes(\"non-paged\")) {\n if (i === offset) {\n offset++;\n }\n if (!skipNonPaged) {\n flush();\n ordering.push([i]);\n flush();\n }\n continue;\n }\n if (i === offset || canvasBehavior.includes(\"facing-pages\")) {\n if (currentOrdering.length) {\n flushNextPaged = true;\n }\n flush();\n ordering.push([i]);\n flush();\n continue;\n }\n currentOrdering.push(i);\n if (flushNextPaged) {\n flush();\n flushNextPaged = false;\n continue;\n }\n if (currentOrdering.length > 1) {\n flush();\n }\n }\n if (currentOrdering.length) {\n flush();\n }\n return [manifestItems, ordering];\n}\nexport { buildLocaleString, createEventsHelper, createObjectsHelper, createPaintingAnnotationsHelper, createRangeHelper, createSequenceHelper, createStylesHelper, createThumbnailHelper, decodeContentState, encodeContentState, expandTarget, findAllCanvasesInRange, findFirstCanvasFromRange, findManifestSelectedRange, findSelectedRange, getClosestLanguage, getManifestSequence, getValue, getVisibleCanvasesFromCanvasId, isImageApiSelector, normaliseContentState, parseContentState, parseRotation, parseSelector, parseSpecificResource, serialiseContentState, unwrapObject, validateContentState, wrapObject };\n//# sourceMappingURL=index.mjs.map\n","import styled from \"styled-components\";\nimport { FlexContainerColumn } from \"../components/layout/FlexContainer\";\n\nexport const TemplateCardContainer = styled(FlexContainerColumn)`\n align-items: center;\n max-width: 10rem;\n height: fit-content;\n color: grey;\n font-size: 0.75rem;\n`;\n\nexport const TemplateCardNew = styled.div`\n align-items: center;\n justify-content: center;\n display: flex;\n height: 8rem;\n width: 6.25rem;\n border-radius: 2px;\n border: 2px solid ${(props: any) => props.theme.color.mediumgrey || \"grey\"};\n padding: ${(props: any) => props.theme.padding.xs || \"0.25rem\"};\n`;\n\nexport const TemplateCardPlaceholder = styled.div`\n height: 100%;\n width: 100%;\n background-color: ${(props: any) => props.theme.color.mediumgrey || \"grey\"};\n border-radius: 2px;\n`;\n","export const AddIcon: React.FC<{\n inline?: boolean;\n height?: number;\n className?: string;\n color?: string;\n}> = ({ className, inline, height = 16, color = \"black\" }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height={`${height}px`}\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill={color}\n style={{ verticalAlign: inline ? \"bottom\" : undefined }}\n className={className}\n >\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n);\n","import styled from \"styled-components\";\n\nexport const WidgetHeader = styled.h4`\n padding: ${(props: any) => props.theme.padding.medium || \"1rem\"};\n margin: unset;\n`;\n","import { RecentFilesWidget, RecentLabel, RecentThumbnails } from \"../../atoms/RecentFilesWidget\";\nimport { getValue } from \"@iiif/vault-helpers\";\nimport * as IIIFVault from \"@iiif/vault\";\nimport { useEffect, useState } from \"react\";\nimport { TemplateCardContainer, TemplateCardNew, TemplateCardPlaceholder } from \"../../atoms/TemplateCard\";\nimport { AddIcon } from \"../../icons/AddIcon\";\nimport { WidgetHeader } from \"../../atoms/WidgetHeader\";\n\ntype NewTemplates = {\n newTemplates: any[] | undefined;\n changeManifest: (id: string) => void;\n};\n\nconst TemplateCard: React.FC<{\n manifestUrl: string;\n changeManifest: (id: string) => void;\n}> = ({ manifestUrl, changeManifest }) => {\n const vault = new IIIFVault.Vault();\n\n const [manifest, setManifest] = useState<any>();\n\n useEffect(() => {\n const waitData = async () => {\n const data = await vault.loadManifest(manifestUrl || \"\");\n setManifest(data);\n };\n waitData();\n }, [manifestUrl]);\n\n return (\n <TemplateCardContainer onClick={() => changeManifest(window.location.href + manifest.id)}>\n <TemplateCardNew>\n {getValue(manifest?.label) === \"Blank Manifest\" ? <AddIcon /> : <TemplateCardPlaceholder />}\n </TemplateCardNew>\n <RecentLabel>{getValue(manifest?.label)}</RecentLabel>\n </TemplateCardContainer>\n );\n};\n\nexport const NewTemplates: React.FC<NewTemplates> = ({ newTemplates, changeManifest }) => {\n return (\n <RecentFilesWidget>\n <WidgetHeader>Start from template</WidgetHeader>\n\n <RecentThumbnails>\n {newTemplates &&\n // @ts-ignore\n newTemplates?.items.map((manifest) => {\n return (\n <TemplateCard\n key={manifest.id}\n manifestUrl={window.location.href + manifest.id}\n changeManifest={changeManifest}\n />\n );\n })}\n </RecentThumbnails>\n </RecentFilesWidget>\n );\n};\n","import styled, { css } from \"styled-components\";\n\nexport const BaseMessage = styled.div<{ $small?: boolean; $wide?: boolean; $margin?: boolean; $banner?: boolean }>`\n background: #000;\n color: #fff;\n width: 100%;\n padding: 0.5em 1em;\n line-height: 1.9em;\n display: flex;\n\n a {\n color: #fff;\n }\n\n svg {\n fill: #fff;\n margin: 0 0.5em;\n vertical-align: text-bottom;\n }\n\n ${(props) =>\n props.$small &&\n css`\n font-size: 0.75em;\n padding: 0.25em 0.5em;\n line-height: 1.6em;\n `}\n\n ${(props) =>\n props.$wide &&\n css`\n margin-left: -2em;\n margin-right: -2em;\n width: auto;\n svg {\n height: 0.8em;\n vertical-align: baseline;\n }\n `}\n\n ${(props) =>\n props.$margin &&\n css`\n margin-bottom: 1em;\n `}\n\n ${(props) =>\n props.$banner &&\n css`\n border-radius: 5px;\n box-shadow: 0 3px 15px 0 rgb(0 0 0 / 16%);\n `}\n`;\n","import styled from \"styled-components\";\nimport { BaseMessage } from \"./BaseMessage\";\n\nexport const InfoMessage = styled(BaseMessage)`\n background: #5476e9;\n color: #fff;\n`;\n","import styled from \"styled-components\";\nexport const PaddingComponentLarge = styled.div`\n padding: ${(props: any) => props.theme.padding.large || \"2rem\"};\n`;\n\nexport const PaddingComponentMedium = styled.div`\n padding: ${(props: any) => props.theme.padding.medium || \"1rem\"};\n`;\n\nexport const PaddingComponentSmall = styled.div`\n padding: ${(props: any) => props.theme.padding.small || \"0.5rem\"};\n`;\n","import { NewTemplates } from \"../widgets/NewTemplates\";\nimport { useProjectCreators } from \"@/shell\";\nimport { useConfig } from \"@/shell\";\nimport { Button } from \"@/atoms/Button\";\nimport { InfoMessage } from \"@/madoc/components/callouts/InfoMessage\";\nimport { useProjectContext } from \"@/shell\";\nimport { useApps } from \"@/shell\";\nimport { PaddingComponentMedium } from \"@/atoms/PaddingComponent\";\n\nexport const NewManifestModal: React.FC<{\n close: any;\n}> = ({ close }) => {\n const { newTemplates } = useConfig();\n const { changeApp } = useApps();\n const { createProjectFromManifestId } = useProjectCreators();\n const { current: currentProject } = useProjectContext();\n\n return (\n <>\n <NewTemplates\n changeManifest={(id: string) => {\n createProjectFromManifestId(id).then(() => {\n close();\n });\n }}\n newTemplates={newTemplates as any}\n />\n <PaddingComponentMedium />\n {currentProject ? (\n <InfoMessage $banner>\n {currentProject.name}{\" \"}\n <Button style={{ marginLeft: 20 }} onClick={() => changeApp({ id: \"manifest-editor\" })}>\n Continue editing\n </Button>\n </InfoMessage>\n ) : null}\n </>\n );\n};\n","import * as React from \"react\";\n\nexport function FullScreenEnterIcon(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"1em\" width=\"1em\" {...props}>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\" />\n </svg>\n );\n}\n","import styled, { css } from \"styled-components\";\nimport { FullScreenEnterIcon } from \"./FullScreenEnterIcon\";\nimport { CloseIcon } from \"./icons/CloseIcon\";\n\nexport const ModalBackground = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 500;\n background: rgba(0, 0, 0, 0.2);\n`;\n\nexport const ModalContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 501;\n display: flex;\n`;\n\nconst sizes = {\n sm: {\n maxWidth: \"600px\",\n },\n md: {\n maxWidth: \"800px\",\n },\n lg: {\n maxWidth: \"1000px\",\n },\n};\n\nexport const InnerModalContainer = styled.div<{ size?: keyof typeof sizes; $expanded?: boolean }>`\n max-width: ${(props) => (props.$expanded ? \"100%\" : sizes[props.size || \"sm\"].maxWidth)};\n width: 100%;\n min-height: 250px;\n height: auto;\n display: flex;\n margin: 8em auto auto;\n padding: 0;\n flex-direction: column;\n max-height: 80vh;\n border-radius: 5px;\n overflow: hidden;\n box-shadow: 4px 0 40px 0 rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(0, 0, 0, 0.2);\n\n ${(props) =>\n props.$expanded &&\n css`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n border-radius: 0;\n box-shadow: none;\n margin: 0;\n max-height: none;\n ${ModalBody} {\n flex: 1 1 0px;\n }\n `}\n`;\n\nexport const ModalHeader = styled.div`\n //background: #ec5681;\n /* background: #5197d8;\n color: #fff; */\n color: #000;\n background: #fff;\n width: 100%;\n padding: 1em;\n display: flex;\n`;\n\nexport const ModalHeaderTitle = styled.div`\n color: inherit;\n font-size: 1.2em;\n flex: 1 1 0px;\n`;\n\nexport const ModalCloseIcon = styled(CloseIcon)`\n fill: rgba(0, 0, 0, 0.5);\n cursor: pointer;\n &:hover {\n fill: rgba(0, 0, 0, 1);\n }\n`;\n\nexport const ModalResizeIcon = styled(FullScreenEnterIcon)`\n fill: rgba(0, 0, 0, 0.5);\n cursor: pointer;\n font-size: 1.2em;\n margin-right: 1em;\n &:hover {\n fill: rgba(0, 0, 0, 1);\n }\n`;\n\nexport const ModalBody = styled.div`\n background: #fff;\n padding: 1em;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 230px;\n`;\n\nexport const ModalFooter = styled.div<{ $footerAlignRight?: boolean }>`\n background: #eee;\n width: 100%;\n color: #fff;\n padding: 1em;\n display: flex;\n ${(props) =>\n props.$footerAlignRight &&\n css`\n flex-direction: row-reverse;\n `}\n`;\n","import React, { ReactElement, ReactNode, useLayoutEffect, useRef, useState } from \"react\";\nimport {\n InnerModalContainer,\n ModalBackground,\n ModalBody,\n ModalCloseIcon,\n ModalContainer,\n ModalFooter,\n ModalHeader,\n ModalHeaderTitle,\n ModalResizeIcon,\n} from \"./Modal\";\nimport { createPortal } from \"react-dom\";\n\nexport const ModalButton: React.FC<{\n ref?: any;\n title: string;\n button?: boolean;\n as?: any;\n onClose?: () => void;\n onOpen?: () => void;\n render: (opts: { close: () => void }) => JSX.Element | null;\n renderFooter?: (opts: { close: () => void }) => JSX.Element;\n className?: string;\n autoHeight?: boolean;\n footerAlignRight?: boolean;\n modalSize?: \"lg\" | \"md\" | \"sm\";\n disabled?: boolean;\n openByDefault?: boolean;\n style?: any;\n\n onKeyDown?: (e: React.KeyboardEvent<HTMLAnchorElement>) => void;\n tabIndex?: number;\n role?: string;\n $disabled?: boolean;\n children?: ReactNode;\n}> = React.forwardRef(function ModalButton(\n {\n as,\n className,\n disabled,\n button,\n title,\n render,\n renderFooter,\n onClose,\n onOpen,\n modalSize,\n autoHeight,\n footerAlignRight,\n children,\n openByDefault = false,\n style,\n onKeyDown,\n tabIndex,\n role,\n },\n ref\n) {\n const portalEl = useRef<HTMLElement>();\n const [ready, setIsReady] = useState(false);\n const [expanded, setIsExpanded] = useState(false);\n const containerRef = useRef<any>();\n\n useLayoutEffect(() => {\n const element = document.createElement(\"div\");\n document.body.appendChild(element);\n portalEl.current = element;\n\n if (openByDefault) {\n setIsReady(true);\n }\n\n return () => {\n portalEl.current = undefined;\n document.body.removeChild(element);\n };\n }, []);\n\n const closeModal = () => {\n setIsReady(false);\n setIsExpanded(false);\n if (onClose) {\n onClose();\n }\n };\n\n const Component = as ? as : button ? \"button\" : \"span\";\n\n return (\n <>\n {ready && portalEl.current\n ? createPortal(\n <>\n <ModalBackground />\n <ModalContainer\n ref={containerRef}\n onClick={(e) => {\n if (e.target !== containerRef.current) {\n return;\n }\n closeModal();\n }}\n >\n <InnerModalContainer $expanded={expanded} size={modalSize} data-cy=\"modal\">\n <ModalHeader>\n <ModalHeaderTitle>{title}</ModalHeaderTitle>\n <ModalResizeIcon onClick={() => setIsExpanded((e) => !e)} />\n <ModalCloseIcon onClick={closeModal} />\n </ModalHeader>\n <ModalBody>{render({ close: closeModal })}</ModalBody>\n {renderFooter ? (\n <ModalFooter $footerAlignRight={footerAlignRight}>\n {renderFooter({ close: closeModal })}\n </ModalFooter>\n ) : null}\n </InnerModalContainer>\n </ModalContainer>\n </>,\n portalEl.current\n )\n : null}\n <Component\n onKeyDown={onKeyDown}\n tabIndex={tabIndex}\n role={role}\n ref={ref}\n className={className}\n disabled={disabled}\n onClick={() => {\n setIsReady(true);\n if (onOpen) {\n onOpen();\n }\n }}\n style={style}\n >\n {children}\n </Component>\n </>\n );\n});\n","import { useState } from \"react\";\nimport { Button } from \"@/atoms/Button\";\nimport { Dropdown, DropdownContent } from \"@/atoms/Dropdown\";\nimport { FlexContainer } from \"@/components/layout/FlexContainer\";\nimport { NewManifestModal } from \"@/components/modals/NewManifestModal\";\nimport { useApps, useLayoutActions } from \"@/shell\";\nimport { ModalButton } from \"@/madoc/components/ModalButton\";\nimport { ExportToJson } from \"@/components/widgets/ExportToJSON\";\n\nexport const ShellOptions: React.FC<{}> = () => {\n const { changeApp } = useApps();\n const actions = useLayoutActions();\n\n const [fileOpen, setFileOpen] = useState(false);\n const [helpOpen, setHelpOpen] = useState(false);\n\n return (\n <>\n <FlexContainer>\n <Dropdown onMouseLeave={() => setFileOpen(false)}>\n <Button aria-label=\"open file menu\" onClick={() => setFileOpen(!fileOpen)}>\n File\n </Button>\n <div style={fileOpen ? { opacity: 1, pointerEvents: \"visible\" } : { visibility: \"hidden\", opacity: 0 }}>\n <DropdownContent onMouseLeave={() => setFileOpen(false)}>\n <ModalButton\n as={Button}\n aria-label=\"Start a new manifest\"\n title=\"Start a new Manifest\"\n modalSize=\"lg\"\n onOpen={() => setFileOpen(false)}\n render={(props) => <NewManifestModal {...props} />}\n >\n New\n </ModalButton>\n <Button\n onClick={() => {\n setFileOpen(false);\n changeApp({ id: \"splash\" });\n }}\n aria-label=\"Load an existing manifest\"\n title=\"Load an existing manifest\"\n color={\"#6b6b6b\"}\n >\n Open\n </Button>\n\n <Button\n onClick={() => {\n actions.open({ id: \"export\", stacked: true });\n }}\n aria-label=\"Export to JSON\"\n title=\"Export to JSON\"\n color={\"#6b6b6b\"}\n >\n Export\n </Button>\n </DropdownContent>\n </div>\n </Dropdown>\n <Dropdown onMouseLeave={() => setHelpOpen(false)}>\n <Button aria-label=\"Help menu\" onClick={() => setHelpOpen(!helpOpen)}>\n Help\n </Button>\n {helpOpen && (\n <DropdownContent>\n <Button\n aria-label=\"About\"\n onClick={() => {\n setHelpOpen(!helpOpen);\n changeApp({ id: \"about\" });\n }}\n >\n About\n </Button>\n </DropdownContent>\n )}\n </Dropdown>\n </FlexContainer>\n </>\n );\n};\n","import * as React from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const ManifestEditorLogo = (props: SVGProps<SVGSVGElement>) => {\n return (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 206 27\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"me-logo\"\n {...props}\n >\n <g fill=\"none\">\n <path\n d=\"M62.558 5.41v14.873h-2.983v-9.675l-3.985 9.675h-2.26l-4.006-9.675v9.675H46.34V5.41h3.388l4.73 11.06L59.19 5.41zm2.173 8.928c0-1.194.238-2.252.714-3.176.476-.923 1.123-1.633 1.94-2.13.816-.498 1.73-.746 2.738-.746.88 0 1.651.177 2.312.532.66.355 1.19.803 1.588 1.343V8.477h3.004v11.806h-3.004v-1.726c-.384.554-.913 1.012-1.588 1.374-.675.363-1.453.544-2.334.544-.994 0-1.9-.256-2.717-.767-.816-.512-1.463-1.233-1.939-2.163-.476-.93-.714-2-.714-3.207Zm9.292.042c0-.724-.143-1.346-.427-1.864a3.005 3.005 0 0 0-1.15-1.194 3.076 3.076 0 0 0-1.556-.415c-.554 0-1.066.135-1.534.405-.47.27-.85.664-1.14 1.182-.292.519-.437 1.133-.437 1.844 0 .71.145 1.331.437 1.864.29.533.674.941 1.15 1.226.476.284.984.426 1.524.426.554 0 1.073-.139 1.556-.416a3.005 3.005 0 0 0 1.15-1.193c.284-.519.427-1.14.427-1.865Zm12.466-6.073c1.406 0 2.543.444 3.41 1.332.866.888 1.3 2.127 1.3 3.718v6.926h-2.984v-6.52c0-.938-.234-1.66-.703-2.164-.47-.504-1.108-.756-1.918-.756-.824 0-1.474.252-1.95.756-.476.505-.714 1.226-.714 2.163v6.521h-2.983V8.477h2.983v1.47a4.121 4.121 0 0 1 1.524-1.203 4.713 4.713 0 0 1 2.035-.437Zm9.057-1.237c-.526 0-.963-.166-1.311-.5a1.657 1.657 0 0 1-.522-1.247c0-.497.174-.912.522-1.246.348-.334.785-.5 1.31-.5.526 0 .963.166 1.311.5.348.334.522.75.522 1.246 0 .498-.174.913-.522 1.247-.348.334-.785.5-1.31.5Zm1.47 1.407v11.806h-2.983V8.477h2.983Zm8.354 2.451h-2.068v9.355h-3.026v-9.355h-1.342v-2.45h1.342V7.88c0-1.45.412-2.515 1.236-3.197.824-.682 2.067-1.001 3.73-.959V6.24c-.725-.014-1.23.106-1.513.362-.284.256-.427.718-.427 1.385v.49h2.068v2.451Zm12.913 3.197c0 .426-.028.81-.085 1.15h-8.63c.07.853.369 1.52.895 2.003.525.483 1.172.725 1.939.725 1.108 0 1.896-.476 2.365-1.428h3.218c-.34 1.137-.994 2.07-1.96 2.802-.967.732-2.153 1.098-3.56 1.098-1.136 0-2.155-.252-3.057-.757a5.325 5.325 0 0 1-2.11-2.141c-.504-.924-.756-1.99-.756-3.197 0-1.222.248-2.294.745-3.218a5.204 5.204 0 0 1 2.089-2.13c.895-.498 1.925-.746 3.09-.746 1.122 0 2.127.241 3.015.724a5.1 5.1 0 0 1 2.067 2.057c.49.887.735 1.907.735 3.058Zm-3.09-.853c-.014-.767-.29-1.381-.83-1.843-.54-.462-1.201-.693-1.982-.693-.74 0-1.36.224-1.865.671-.504.448-.813 1.07-.927 1.865h5.604Zm9.782 7.203c-.966 0-1.833-.174-2.6-.522-.767-.348-1.375-.82-1.822-1.417a3.591 3.591 0 0 1-.735-1.982h3.004c.057.454.281.83.672 1.13.39.298.877.447 1.46.447.568 0 1.012-.114 1.331-.341.32-.227.48-.519.48-.874 0-.383-.196-.671-.586-.863-.391-.192-1.012-.401-1.865-.629-.88-.213-1.602-.433-2.163-.66a3.755 3.755 0 0 1-1.449-1.044c-.405-.47-.607-1.101-.607-1.897 0-.653.188-1.25.564-1.79.377-.54.917-.966 1.62-1.279.703-.312 1.53-.468 2.483-.468 1.406 0 2.528.351 3.367 1.054.838.704 1.3 1.652 1.385 2.845h-2.856c-.042-.469-.238-.841-.586-1.118-.348-.277-.813-.416-1.396-.416-.54 0-.955.1-1.246.298a.951.951 0 0 0-.437.831c0 .398.199.7.597.906.397.206 1.015.416 1.854.629.852.213 1.555.433 2.11.66a3.727 3.727 0 0 1 1.438 1.055c.405.476.614 1.105.628 1.886 0 .682-.188 1.293-.564 1.833-.377.54-.917.962-1.62 1.268-.703.305-1.524.458-2.461.458Zm10.569-9.547v5.711c0 .398.096.686.288.863.192.178.515.267.97.267h1.385v2.514h-1.875c-2.515 0-3.772-1.222-3.772-3.665v-5.69h-1.407v-2.45h1.407v-2.92h3.004v2.92h2.643v2.45h-2.643Zm12.851-3.111v3.73h5.007v2.364h-5.007v3.943h5.647v2.43h-8.631V5.386h8.63v2.43zm7.585 6.521c0-1.194.239-2.252.715-3.176.476-.923 1.126-1.633 1.95-2.13.824-.498 1.74-.746 2.749-.746.767 0 1.498.167 2.194.5.697.334 1.25.778 1.663 1.332V4.514h3.026v15.77h-3.026v-1.748c-.37.582-.888 1.051-1.556 1.406s-1.442.533-2.323.533a5.07 5.07 0 0 1-2.727-.767c-.824-.512-1.474-1.233-1.95-2.163-.476-.93-.714-2-.714-3.207Zm9.292.042c0-.724-.142-1.346-.426-1.864a3.005 3.005 0 0 0-1.151-1.194 3.076 3.076 0 0 0-1.556-.415 3.02 3.02 0 0 0-1.534.405c-.469.27-.849.664-1.14 1.182-.291.519-.437 1.133-.437 1.844 0 .71.146 1.331.437 1.864.291.533.675.941 1.15 1.226a2.93 2.93 0 0 0 1.524.426c.554 0 1.073-.139 1.556-.416a3.005 3.005 0 0 0 1.15-1.193c.285-.519.427-1.14.427-1.865Zm7.438-7.31c-.527 0-.963-.166-1.311-.5a1.657 1.657 0 0 1-.523-1.247c0-.497.174-.912.523-1.246.348-.334.784-.5 1.31-.5s.963.166 1.31.5c.349.334.523.75.523 1.246 0 .498-.174.913-.522 1.247-.348.334-.785.5-1.31.5Zm1.47 1.407v11.806h-2.984V8.477h2.984Zm6.414 2.451v5.711c0 .398.096.686.287.863.192.178.515.267.97.267h1.385v2.514h-1.875c-2.515 0-3.772-1.222-3.772-3.665v-5.69h-1.406v-2.45h1.406v-2.92h3.005v2.92h2.642v2.45h-2.642Zm10.036 9.547c-1.136 0-2.159-.252-3.068-.757a5.447 5.447 0 0 1-2.141-2.141c-.519-.924-.778-1.99-.778-3.197s.266-2.273.799-3.196a5.553 5.553 0 0 1 2.184-2.142c.924-.504 1.954-.756 3.09-.756 1.137 0 2.167.252 3.09.756a5.553 5.553 0 0 1 2.184 2.142c.533.923.8 1.989.8 3.196 0 1.208-.274 2.273-.821 3.197a5.681 5.681 0 0 1-2.216 2.141c-.93.505-1.971.757-3.122.757Zm0-2.6a3.1 3.1 0 0 0 1.524-.394c.476-.263.856-.657 1.14-1.183.285-.526.427-1.165.427-1.918 0-1.122-.295-1.985-.885-2.589a2.907 2.907 0 0 0-2.163-.906c-.852 0-1.566.302-2.141.906-.576.604-.863 1.467-.863 2.59 0 1.122.28 1.985.841 2.588.562.604 1.268.906 2.12.906Zm11.338-7.565a4.194 4.194 0 0 1 1.502-1.47c.618-.356 1.325-.533 2.12-.533v3.132h-.788c-.938 0-1.644.22-2.12.661-.476.44-.714 1.208-.714 2.302v5.881h-2.984V8.477h2.984v1.833Z\"\n fill=\"#000\"\n />\n <path fill=\"#E94581\" className=\"me-logo-1\" d=\"M0 13.343 13.343 0l13.343 13.343-13.343 13.343z\" />\n <path fill=\"#E94581\" className=\"me-logo-2\" d=\"M12.137 13.346 25.48.003l13.343 13.343L25.48 26.69z\" />\n <path fill=\"#C63E75\" className=\"me-logo-3\" d=\"m12.104 13.348 7.311-7.311 7.312 7.311-7.312 7.312z\" />\n </g>\n </svg>\n );\n};\n","import {\n Draft,\n DraftsText,\n DraftTitle,\n DraftTitleEdit,\n DraftTitleEditButton,\n DraftTitleEditInput,\n} from \"../AppHeader.styles\";\nimport { FormEvent, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { useProjectContext } from \"../../ProjectContext/ProjectContext\";\n\nexport function DraftTitleEditor() {\n const { actions } = useProjectContext();\n const [editingTitle, setIsEditingTitle] = useState(false);\n const { current } = useProjectContext();\n\n return (\n <Draft>\n <DraftsText>Drafts</DraftsText>\n {current ? (\n <>\n {editingTitle ? (\n <DraftTitleEdit\n onSubmit={(e: FormEvent<HTMLFormElement>) => {\n const form = new FormData(e.target as any);\n const data = Object.fromEntries(form.entries());\n actions.updateDetails(data as any);\n setIsEditingTitle(false);\n }}\n >\n <DraftTitleEditInput id=\"project-title\" defaultValue={current.name} name=\"name\" />\n <DraftTitleEditButton>Save</DraftTitleEditButton>\n </DraftTitleEdit>\n ) : (\n <DraftTitle\n onClick={() => {\n flushSync(() => {\n setIsEditingTitle(true);\n });\n document.getElementById(\"project-title\")?.focus();\n }}\n >\n {current.name || \"Untitled project\"}\n </DraftTitle>\n )}\n </>\n ) : null}\n </Draft>\n );\n}\n","export const MenuIcon: React.FC = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1rem\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </svg>\n);\n","import { IconButton } from \"../AppHeader.styles\";\nimport { MenuIcon } from \"../../../icons/MenuIcon\";\nimport { Dropdown, DropdownDivider, DropdownLabel, DropdownMenu } from \"../../../atoms/Dropdown\";\nimport { Button } from \"../../../atoms/Button\";\nimport { useProjectContext } from \"../../ProjectContext/ProjectContext\";\nimport { useLocalStorage } from \"../../../madoc/use-local-storage\";\nimport { useApps } from \"../../AppContext/AppContext\";\nimport { MappedApp } from \"../../../apps/app-loader\";\nimport useDropdownMenu from \"react-accessible-dropdown-menu-hook\";\n\nexport function AppMenu(props: { hideMenu?: boolean }) {\n const { current: currentProject } = useProjectContext();\n const [isMenuHidden, setIsMenuHidden] = useLocalStorage(\"menu-hidden\");\n const { apps, changeApp } = useApps();\n const type = currentProject?.resource.type;\n const filteredApps = Object.values(apps).filter((app: MappedApp) => {\n if (app.metadata.project && app.metadata.projectType !== type) {\n return false;\n }\n\n if (!currentProject && app.metadata.project) {\n return false;\n }\n\n if (app.metadata.type === \"launcher\") {\n return false;\n }\n\n if (app.metadata.dev && import.meta.env.PROD) {\n try {\n if (import.meta.env.PULL_REQUEST === \"true\") {\n return true;\n }\n } catch (e) {\n return false;\n }\n\n return false;\n }\n\n return true;\n });\n const { itemProps, buttonProps, isOpen, setIsOpen } = useDropdownMenu(filteredApps.length + 1);\n\n return (\n <Dropdown>\n <IconButton {...buttonProps}>\n <MenuIcon />\n </IconButton>\n <DropdownMenu $open={isOpen}>\n <DropdownLabel>Apps</DropdownLabel>\n <DropdownDivider />\n {filteredApps.map((app, key) => (\n <Button\n key={app.metadata.id}\n {...(itemProps[key] as any)}\n onClick={() => {\n changeApp({ id: app.metadata.id });\n setIsOpen(false);\n }}\n >\n {app.metadata.title}\n </Button>\n ))}\n {props.hideMenu ? null : (\n <>\n <DropdownLabel>Quick Settings</DropdownLabel>\n <DropdownDivider />\n <Button {...(itemProps[filteredApps.length + 0] as any)} onClick={() => setIsMenuHidden(!isMenuHidden)}>\n {isMenuHidden ? \"Show menu\" : \"Hide menu\"}\n </Button>\n </>\n )}\n </DropdownMenu>\n </Dropdown>\n );\n}\n","import { Logo, Container, ProjectPreview, Header } from \"./AppHeader.styles\";\nimport { useApps } from \"@/shell\";\nimport { PreviewButton } from \"@/components/organisms/PreviewButton/PreviewButton\";\nimport { ShellOptions } from \"@/apps/Shell/ShellOptions\";\nimport { ManifestEditorLogo } from \"@/atoms/ManifestEditorLogo\";\nimport { useLocalStorage } from \"@/madoc/use-local-storage\";\nimport { DraftTitleEditor } from \"./components/DraftTitleEditor\";\nimport { AppMenu } from \"./components/AppMenu\";\nimport { memo } from \"react\";\n\ninterface AppHeaderProps {\n onClickLogo?: () => void;\n}\n\nexport const AppHeader = memo(function AppHeader(props: AppHeaderProps) {\n const [isMenuHidden] = useLocalStorage(\"menu-hidden\");\n const { changeApp, initialApp, currentApp, apps } = useApps();\n const app = apps[currentApp?.id];\n\n return (\n <Header>\n <Container>\n <AppMenu />\n\n <Logo onClick={props.onClickLogo || (() => changeApp(initialApp))}>\n <ManifestEditorLogo height={27} width={200} />\n </Logo>\n\n {app && app.metadata.drafts === false ? null : (\n <ProjectPreview>\n <DraftTitleEditor />\n {/*<ContextButton>{state.canvasId ? \"Canvas\" : \"Manifest\"}</ContextButton>*/}\n </ProjectPreview>\n )}\n\n <PreviewButton />\n\n {/*<IconButton>•</IconButton>*/}\n </Container>\n {!isMenuHidden ? <ShellOptions /> : null}\n </Header>\n );\n});\n","export function useIsDesktop() {\n return !!window.__TAURI__;\n}\n","import { PreviewConfiguration } from \"../PreviewContext/PreviewContext.types\";\nimport { createContext, ReactNode, useContext, useMemo } from \"react\";\nimport { Collection } from \"@iiif/presentation-3\";\n\nexport interface Config {\n previews: PreviewConfiguration[];\n defaultLanguages: string[];\n behaviorPresets: string[];\n newTemplates: Collection | null;\n}\n\nconst ConfigReactContext = createContext<Config>(null as any);\n\nexport function useConfig() {\n return useContext(ConfigReactContext);\n}\n\nexport function ConfigProvider({ children, config }: { children: ReactNode; config?: Partial<Config> }) {\n const resolvedConfig: Config = useMemo(\n () => ({\n previews: [],\n behaviorPresets: [\n \"auto-advance\",\n \"no-auto-advance\",\n \"repeat\",\n \"no-repeat\",\n \"unordered\",\n \"individuals\",\n \"continuous\",\n \"paged\",\n \"non-paged\",\n \"facing-pages\",\n \"multi-part\",\n \"together\",\n \"sequence\",\n \"thumbnail-nav\",\n \"no-nav\",\n \"hidden\",\n ],\n defaultLanguages: [\"en\", \"none\"],\n newTemplates: null,\n ...(config || {}),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n return <ConfigReactContext.Provider value={resolvedConfig}>{children}</ConfigReactContext.Provider>;\n}\n","import { EditingStackActionCreators, EditingStackState } from \"@/shell/EditingStack/EditingStack.types\";\nimport { toRef } from \"@iiif/parser\";\n\nexport function editingStackReducer(state: EditingStackState, action: EditingStackActionCreators): EditingStackState {\n switch (action.type) {\n case \"edit\": {\n if (state.current?.resource.source.id === action.payload.resource?.resource.source.id) {\n return {\n ...state,\n current: action.payload.resource,\n };\n }\n\n return {\n ...state,\n current: action.payload.resource,\n stack: action.payload.reset ? [] : state.current ? [state.current, ...state.stack] : state.stack,\n };\n }\n case \"syncRemoval\": {\n const item = toRef(action.payload.resource.resource);\n if (!item) {\n return state;\n }\n const found = state.stack.find((r) => toRef(r.resource)?.id === item.id);\n\n if (!found) {\n return state;\n }\n\n const newCurrent = state.current?.resource.id === item.id ? null : state.current;\n const newStack = filterStack(\n state.stack.filter((r) => toRef(r.resource)?.id !== item.id),\n newCurrent\n );\n\n return {\n ...state,\n stack: newStack,\n current: newCurrent,\n };\n }\n case \"updateCurrent\": {\n return {\n ...state,\n current: action.payload.resource,\n };\n }\n\n case \"back\": {\n const newCurrent = state.stack[0];\n return {\n ...state,\n stack: state.stack.slice(1),\n current: newCurrent,\n };\n }\n\n case \"close\": {\n return {\n ...state,\n stack: [], // @todo maybe not right?\n current: null,\n };\n }\n\n case \"create\": {\n if (action.payload.resource === null) {\n return { ...state, create: null };\n }\n\n return {\n ...state,\n create: action.payload as any,\n };\n }\n }\n\n return state;\n}\n\nfunction filterStack(\n newStackWithDuplicates: EditingStackState[\"stack\"],\n current: EditingStackState[\"current\"]\n): EditingStackState[\"stack\"] {\n const newStack = [];\n let prev = null;\n for (const stackItem of newStackWithDuplicates) {\n if (prev?.resource.id === stackItem.resource.id) {\n continue;\n }\n newStack.push(stackItem);\n prev = stackItem;\n }\n\n if (prev && prev.resource.id === current?.resource.id) {\n return newStack.slice(0, newStack.length - 1);\n }\n\n return newStack;\n}\n","import { Vault } from \"@iiif/vault\";\nimport { EditorConfig } from \"./types\";\nimport { Reference } from \"@iiif/presentation-3\";\n\nexport class BaseEditor<T> {\n protected config: EditorConfig;\n constructor(config: EditorConfig) {\n if (!config.validators) {\n config.validators = [];\n }\n\n this.config = config;\n }\n\n protected entity(): T {\n const ref = this.ref();\n return this.config.vault.get(ref, { skipSelfReturn: false });\n }\n\n protected ref(): Reference {\n return this.config.reference;\n }\n\n protected getId(): string {\n const ref = this.ref();\n return ref.id;\n }\n\n protected getType(): string {\n const ref = this.ref();\n return ref.type;\n }\n\n focusId() {\n // @todo maybe need to change this in the future to make it more human-y based on config.\n return `${this.getId()}_${this.getType()}`;\n }\n\n protected _observe(\n selector: (resource: T, context: any, vault: Vault) => any,\n cb: (selected: any, resource: T, context: any) => void,\n skipInitial = true\n ) {\n return this.config.vault.subscribe(\n () => selector(this.entity(), this.config.context, this.config.vault),\n (selected) => {\n cb(selected, this.entity(), this.config.context);\n },\n skipInitial\n );\n }\n}\n","import { DescriptiveProperties } from \"@iiif/presentation-3\";\n\nconst required: DescriptiveMap = {\n Collection: [\"label\"],\n Manifest: [\"label\"],\n Canvas: [],\n Annotation: [],\n AnnotationPage: [],\n Range: [],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [\"label\"],\n} as const;\n\nconst recommended: DescriptiveMap = {\n Collection: [\"metadata\", \"summary\", \"provider\", \"thumbnail\"],\n Manifest: [\"metadata\", \"summary\", \"provider\", \"thumbnail\"],\n Canvas: [\"label\"],\n Annotation: [],\n AnnotationPage: [],\n Range: [\"label\"],\n AnnotationCollection: [\"label\"],\n ContentResource: [\"label\"],\n Agent: [],\n} as const;\n\nconst optional: DescriptiveMap = {\n Collection: [\"requiredStatement\", \"rights\", \"navDate\", \"placeholderCanvas\", \"accompanyingCanvas\"],\n Manifest: [\"requiredStatement\", \"rights\", \"navDate\", \"placeholderCanvas\", \"accompanyingCanvas\"],\n Canvas: [\n \"metadata\",\n \"summary\",\n \"requiredStatement\",\n \"rights\",\n \"navDate\",\n \"provider\",\n \"thumbnail\",\n \"placeholderCanvas\",\n \"accompanyingCanvas\",\n ],\n Annotation: [\"label\", \"metadata\", \"summary\", \"requiredStatement\", \"rights\", \"provider\", \"thumbnail\"],\n AnnotationPage: [\"label\", \"metadata\", \"summary\", \"requiredStatement\", \"rights\", \"provider\", \"thumbnail\"],\n Range: [\n \"metadata\",\n \"summary\",\n \"requiredStatement\",\n \"rights\",\n \"navDate\",\n \"provider\",\n \"thumbnail\",\n \"placeholderCanvas\",\n \"accompanyingCanvas\",\n ],\n AnnotationCollection: [\"metadata\", \"summary\", \"requiredStatement\", \"rights\", \"provider\", \"thumbnail\"],\n ContentResource: [\"label\", \"metadata\", \"summary\", \"requiredStatement\", \"rights\", \"provider\", \"thumbnail\"],\n Agent: [],\n} as const;\n\nconst notAllowed: DescriptiveMap = {\n Collection: [\"language\"],\n Manifest: [\"language\"],\n Canvas: [\"language\"],\n Annotation: [\"navDate\", \"language\", \"placeholderCanvas\", \"accompanyingCanvas\"],\n AnnotationPage: [\"navDate\", \"language\", \"placeholderCanvas\", \"accompanyingCanvas\"],\n Range: [\"language\"],\n AnnotationCollection: [\"navDate\", \"placeholderCanvas\", \"accompanyingCanvas\"],\n ContentResource: [\"navDate\", \"placeholderCanvas\", \"accompanyingCanvas\"],\n Agent: [\n \"provider\",\n \"language\",\n \"metadata\",\n \"summary\",\n \"thumbnail\",\n \"requiredStatement\",\n \"rights\",\n \"navDate\",\n \"placeholderCanvas\",\n \"accompanyingCanvas\",\n ],\n} as const;\n\ntype DescriptiveMap = Record<\n | \"Collection\"\n | \"Manifest\"\n | \"Canvas\"\n | \"Annotation\"\n | \"AnnotationPage\"\n | \"Range\"\n | \"AnnotationCollection\"\n | \"ContentResource\"\n | \"Agent\",\n readonly (keyof DescriptiveProperties)[]\n>;\n\nconst all: readonly (keyof DescriptiveProperties)[] = [\n \"label\",\n \"summary\",\n \"metadata\",\n \"requiredStatement\",\n \"rights\",\n \"navDate\",\n \"language\",\n \"thumbnail\",\n \"provider\",\n \"placeholderCanvas\",\n \"accompanyingCanvas\",\n];\n\nexport const descriptiveProperties = {\n all,\n required,\n recommended,\n optional,\n notAllowed,\n} as const;\n","import { BaseEditor } from \"./BaseEditor\";\nimport { descriptiveProperties } from \"./meta/descriptive\";\nimport { EditorConfig } from \"./types\";\n\nexport class BasePropertyEditor<Entity, T> extends BaseEditor<Entity> {\n protected property: string;\n constructor(config: EditorConfig, property: string) {\n super(config);\n this.property = property as any;\n }\n\n observe(cb: (selected: T, resource: Entity, context: any) => void, skipInitial = true) {\n this._observe((entity) => entity && (entity as any)[this.property], cb, skipInitial);\n }\n\n focusId() {\n return `${super.focusId()}_${this.property}`;\n }\n\n containerId() {\n return `container_${super.focusId()}_${this.property}`;\n }\n\n getContainerProps() {\n return { \"data-property\": this.property, \"data-resource-id\": this.getId(), \"data-resource-type\": this.getType() };\n }\n\n isRequired() {\n const type = this.getType();\n const required = descriptiveProperties.required[type as unknown as \"Manifest\"] || [];\n return required.indexOf(this.property as any) !== -1;\n }\n\n isRecommended() {\n const type = this.getType();\n const recommended = descriptiveProperties.recommended[type as unknown as \"Manifest\"] || [];\n return recommended.indexOf(this.property as any) !== -1;\n }\n\n isNotAllowed() {\n const type = this.getType();\n const notAllowed = descriptiveProperties.notAllowed[type as unknown as \"Manifest\"] || [];\n return notAllowed.indexOf(this.property as any) !== -1;\n }\n\n isOptional(orRecommended = false) {\n const type = this.getType();\n const optional = descriptiveProperties.optional[type as unknown as \"Manifest\"] || [];\n if (!optional && orRecommended) {\n return this.isRecommended();\n }\n return optional.indexOf(this.property as any) !== -1;\n }\n\n validate() {\n const validators = this.config.validators;\n const entity = this.entity() as any;\n const type = entity?.type;\n const response = {\n isError: false,\n isWarning: false,\n warnings: [] as string[],\n errors: [] as string[],\n };\n if (entity && type && validators.length) {\n if (type) {\n for (const validator of validators) {\n if (validator.types.includes(type) && validator.properties.includes(this.property)) {\n try {\n const isValid = validator.valid(entity, this.config.vault, this.config.context);\n if (!isValid) {\n if (validator.error) {\n response.isError = true;\n response.errors.push(validator.message);\n } else if (validator.warning) {\n response.isWarning = true;\n response.warnings.push(validator.message);\n }\n }\n } catch (e) {\n response.isWarning = true;\n response.warnings.push(`Validation error: ${e || \"unknown\"}`);\n }\n }\n }\n }\n }\n return response;\n }\n\n getWithoutTracking(): T {\n const entity: any = this.entity();\n return (entity && entity[this.property]) as any;\n }\n\n get(): T {\n this.config.tracker.track(this.property);\n return this.getWithoutTracking();\n }\n\n set(value: T) {\n this.config.vault.modifyEntityField(this.config.reference as any, this.property, value);\n }\n}\n","const createAction = function createAction2(type) {\n return function() {\n const base = { type, getType: () => type, toString: () => type };\n return (payload, meta) => ({\n ...base,\n ...payload !== void 0 && { payload },\n ...meta !== void 0 && { meta }\n });\n };\n};\nconst IMPORT_ENTITIES = \"@iiif/IMPORT_ENTITIES\";\nconst MODIFY_ENTITY_FIELD = \"@iiif/MODIFY_ENTITY_FIELD\";\nconst REORDER_ENTITY_FIELD = \"@iiif/REORDER_ENTITY_FIELD\";\nconst ADD_REFERENCE = \"@iiif/ADD_REFERENCE\";\nconst UPDATE_REFERENCE = \"@iiif/UPDATE_REFERENCE\";\nconst REMOVE_REFERENCE = \"@iiif/REMOVE_REFERENCE\";\nconst ADD_METADATA = \"@iiif/ADD_METADATA\";\nconst REMOVE_METADATA = \"@iiif/REMOVE_METADATA\";\nconst UPDATE_METADATA = \"@iiif/UPDATE_METADATA\";\nconst REORDER_METADATA = \"@iiif/REORDER_METADATA\";\nconst importEntities = createAction(IMPORT_ENTITIES)();\nconst modifyEntityField = createAction(MODIFY_ENTITY_FIELD)();\nconst reorderEntityField = createAction(REORDER_ENTITY_FIELD)();\nconst addReference = createAction(ADD_REFERENCE)();\nconst removeReference = createAction(REMOVE_REFERENCE)();\nconst updateReference = createAction(UPDATE_REFERENCE)();\nconst addMetadata = createAction(ADD_METADATA)();\nconst updateMetadata = createAction(UPDATE_METADATA)();\nconst removeMetadata = createAction(REMOVE_METADATA)();\nconst reorderMetadata = createAction(REORDER_METADATA)();\nconst entityActions = {\n importEntities,\n modifyEntityField,\n reorderEntityField,\n addReference,\n removeReference,\n updateReference,\n addMetadata,\n removeMetadata,\n updateMetadata,\n reorderMetadata\n};\nconst ADD_MAPPING = \"@iiif/ADD_MAPPING\";\nconst ADD_MAPPINGS = \"@iiif/ADD_MAPPINGS\";\nconst addMapping = createAction(ADD_MAPPING)();\nconst addMappings = createAction(ADD_MAPPINGS)();\nconst mappingActions = { addMapping, addMappings };\nconst SET_META_VALUE = \"@iiif/SET_META_VALUE\";\nconst SET_META_VALUE_DYNAMIC = \"@iiif/SET_META_VALUE_DYNAMIC\";\nconst UNSET_META_VALUE = \"@iiif/UNSET_META_VALUE\";\nconst setMetaValue = createAction(SET_META_VALUE)();\nconst setMetaValueDynamic = createAction(SET_META_VALUE_DYNAMIC)();\nconst unsetMetaValue = createAction(UNSET_META_VALUE)();\nconst metaActions = {\n setMetaValue,\n setMetaValueDynamic,\n unsetMetaValue\n};\nconst RESOURCE_ERROR = \"RESOURCE_ERROR\";\nconst RESOURCE_LOADING = \"RESOURCE_LOADING\";\nconst RESOURCE_READY = \"RESOURCE_READY\";\nconst REQUEST_RESOURCE = \"@iiif/REQUEST_RESOURCE\";\nconst REQUEST_ERROR = \"@iiif/REQUEST_ERROR\";\nconst REQUEST_MISMATCH = \"@iiif/REQUEST_MISMATCH\";\nconst REQUEST_COMPLETE = \"@iiif/REQUEST_COMPLETE\";\nconst REQUEST_OFFLINE_RESOURCE = \"@iiif/REQUEST_OFFLINE_RESOURCE\";\nconst requestResource = createAction(REQUEST_RESOURCE)();\nconst requestError = createAction(REQUEST_ERROR)();\nconst requestMismatch = createAction(REQUEST_MISMATCH)();\nconst requestComplete = createAction(REQUEST_COMPLETE)();\nconst requestOfflineResource = createAction(REQUEST_OFFLINE_RESOURCE)();\nconst requestActions = {\n requestResource,\n requestError,\n requestMismatch,\n requestComplete,\n requestOfflineResource\n};\nconst BATCH_ACTIONS = \"@iiif/BATCH\";\nconst BATCH_IMPORT = \"@iiif/BATCH_IMPORT\";\nconst batchActions = createAction(BATCH_ACTIONS)();\nconst batchImport = createAction(BATCH_IMPORT)();\nexport {\n ADD_MAPPING,\n ADD_MAPPINGS,\n ADD_METADATA,\n ADD_REFERENCE,\n BATCH_ACTIONS,\n BATCH_IMPORT,\n IMPORT_ENTITIES,\n MODIFY_ENTITY_FIELD,\n REMOVE_METADATA,\n REMOVE_REFERENCE,\n REORDER_ENTITY_FIELD,\n REORDER_METADATA,\n REQUEST_COMPLETE,\n REQUEST_ERROR,\n REQUEST_MISMATCH,\n REQUEST_OFFLINE_RESOURCE,\n REQUEST_RESOURCE,\n RESOURCE_ERROR,\n RESOURCE_LOADING,\n RESOURCE_READY,\n SET_META_VALUE,\n SET_META_VALUE_DYNAMIC,\n UNSET_META_VALUE,\n UPDATE_METADATA,\n UPDATE_REFERENCE,\n addMapping,\n addMappings,\n addMetadata,\n addReference,\n batchActions,\n batchImport,\n entityActions,\n importEntities,\n mappingActions,\n metaActions,\n modifyEntityField,\n removeMetadata,\n removeReference,\n reorderEntityField,\n reorderMetadata,\n requestActions,\n requestComplete,\n requestError,\n requestMismatch,\n requestOfflineResource,\n requestResource,\n updateMetadata,\n updateReference\n};\n//# sourceMappingURL=index.mjs.map\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import {\n DescriptiveProperties,\n InternationalString,\n MetadataItem,\n Reference,\n SpecificResource,\n} from \"@iiif/presentation-3\";\nimport { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { EditorConfig } from \"./types\";\nimport { entityActions } from \"@iiif/vault/actions\";\nimport { v4 } from \"uuid\";\n\nexport class MetadataEditor<T> extends BasePropertyEditor<T, MetadataItem[]> {\n protected cachedList: MetadataItem[] | undefined;\n protected cachedSortableList: Array<{ id: string } & MetadataItem> = [];\n protected idCache = new Map();\n constructor(config: EditorConfig) {\n super(config, \"metadata\");\n }\n\n protected _getId(resource: any) {\n if (this.idCache.has(resource)) {\n return this.idCache.get(resource);\n }\n const newId = v4();\n this.idCache.set(resource, newId);\n return newId;\n }\n\n getSortable() {\n const fresh = this.get();\n if (this.cachedList !== fresh) {\n this.cachedSortableList = (fresh || []).map((item: any) => {\n if (item.id) {\n return item;\n }\n return { id: this._getId(item), ...item };\n });\n }\n\n return this.cachedSortableList;\n }\n\n add(label: InternationalString, value: InternationalString, beforeIndex?: number) {\n const ref = this.ref();\n this.config.vault.dispatch(\n entityActions.addMetadata({\n id: ref.id,\n label,\n value,\n type: ref.type as any,\n beforeIndex,\n })\n );\n }\n\n update(atIndex: number, label: InternationalString, value: InternationalString) {\n const ref = this.ref();\n this.config.vault.dispatch(\n entityActions.updateMetadata({\n id: ref.id,\n label,\n value,\n type: ref.type as any,\n atIndex,\n })\n );\n }\n\n deleteAtIndex(atIndex: number) {\n const ref = this.ref();\n this.config.vault.dispatch(\n entityActions.removeMetadata({\n id: ref.id,\n type: ref.type as any,\n atIndex,\n })\n );\n }\n\n moveToStart(index: number) {\n this.reorder(index, 0);\n }\n moveToEnd(index: number) {\n const len = this.getWithoutTracking().length;\n this.reorder(index, len);\n }\n\n reorder(startIndex: number, endIndex: number) {\n const ref = this.ref();\n this.config.vault.dispatch(\n entityActions.reorderMetadata({\n id: ref.id,\n type: ref.type as any,\n startIndex,\n endIndex,\n })\n );\n }\n}\n","import { DescriptiveProperties, InternationalString, MetadataItem } from \"@iiif/presentation-3\";\nimport { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { EditorConfig } from \"./types\";\n\nexport class RequiredStatementEditor<T> extends BasePropertyEditor<T, DescriptiveProperties[\"requiredStatement\"]> {\n constructor(config: EditorConfig) {\n super(config, \"requiredStatement\");\n }\n\n updateLabel(text: string | InternationalString) {\n const current = this.getWithoutTracking();\n\n const newValue: MetadataItem = {\n value: { none: [\"\"] },\n ...(current || {}),\n label: typeof text === \"string\" ? { none: [text] } : text,\n };\n\n this.set(newValue);\n }\n\n update(text: InternationalString) {\n const current = this.getWithoutTracking();\n\n const newValue: MetadataItem = {\n label: { none: [\"\"] },\n ...(current || {}),\n value: typeof text === \"string\" ? { none: [text] } : text,\n };\n\n this.set(newValue);\n }\n}\n","type CCDefinition = {\n label: string;\n shortLabel: string;\n description: string;\n icon: string;\n value: string;\n url: string;\n legal: string;\n};\n\nconst CC0 = \"http://creativecommons.org/publicdomain/zero/1.0/\";\nconst CC_BY = \"http://creativecommons.org/licenses/by/4.0/\";\nconst CC_BY_SA = \"http://creativecommons.org/licenses/by-sa/4.0/\";\nconst CC_BY_ND = \"http://creativecommons.org/licenses/by-nd/4.0/\";\nconst CC_BY_NC = \"http://creativecommons.org/licenses/by-nc/4.0/\";\nconst CC_BY_NC_SA = \"http://creativecommons.org/licenses/by-nc-sa/4.0/\";\nconst CC_BY_NC_ND = \"http://creativecommons.org/licenses/by-nc-nd/4.0/\";\n\nexport const allRights = [CC0, CC_BY, CC_BY_SA, CC_BY_ND, CC_BY_NC, CC_BY_NC_SA, CC_BY_NC_ND];\n\nexport const creativeCommons: CCDefinition[] = [\n {\n label: \"Public Domain\",\n shortLabel: \"CC0\",\n description:\n \"The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.\",\n icon: \"https://licensebuttons.net/p/zero/1.0/88x31.png\",\n value: CC0,\n url: \"https://creativecommons.org/publicdomain/zero/1.0/\",\n legal: \"https://creativecommons.org/publicdomain/zero/1.0/legalcode\",\n },\n {\n label: \"Attribution\",\n shortLabel: \"CC BY\",\n description:\n \"This license lets others distribute, remix, adapt, and build upon your work, even commercially, as long as they credit you for the original creation. This is the most accommodating of licenses offered. Recommended for maximum dissemination and use of licensed materials.\",\n icon: \"https://licensebuttons.net/l/by/3.0/88x31.png\",\n value: CC_BY,\n url: \"https://creativecommons.org/licenses/by/4.0/\",\n legal: \"http://creativecommons.org/licenses/by/4.0/legalcode\",\n },\n {\n label: \"Attribution-ShareAlike\",\n shortLabel: \"CC BY-SA\",\n description:\n \"This license lets others remix, adapt, and build upon your work even for commercial purposes, as long as they credit you and license their new creations under the identical terms. This license is often compared to “copyleft” free and open source software licenses. All new works based on yours will carry the same license, so any derivatives will also allow commercial use. This is the license used by Wikipedia, and is recommended for materials that would benefit from incorporating content from Wikipedia and similarly licensed projects.\",\n icon: \"https://licensebuttons.net/l/by-sa/3.0/88x31.png\",\n value: CC_BY_SA,\n url: \"https://creativecommons.org/licenses/by-sa/4.0/\",\n legal: \"http://creativecommons.org/licenses/by-sa/4.0/legalcode\",\n },\n {\n label: \"Attribution-NoDerivs\",\n shortLabel: \"CC BY-ND\",\n description:\n \"This license lets others reuse the work for any purpose, including commercially; however, it cannot be shared with others in adapted form, and credit must be provided to you.\",\n icon: \"https://licensebuttons.net/l/by-nd/3.0/88x31.png\",\n value: CC_BY_ND,\n url: \"https://creativecommons.org/licenses/by-nd/4.0/\",\n legal: \"http://creativecommons.org/licenses/by-nd/4.0/legalcode\",\n },\n {\n label: \"Attribution-NonCommercial\",\n shortLabel: \"CC BY-NC\",\n description:\n \"This license lets others remix, adapt, and build upon your work non-commercially, and although their new works must also acknowledge you and be non-commercial, they don’t have to license their derivative works on the same terms.\",\n icon: \"https://licensebuttons.net/l/by-nc/3.0/88x31.png\",\n value: CC_BY_NC,\n url: \"https://creativecommons.org/licenses/by-nc/4.0/\",\n legal: \"http://creativecommons.org/licenses/by-nc/4.0/legalcode\",\n },\n {\n label: \"Attribution-NonCommercial-ShareAlike\",\n shortLabel: \"CC BY-NC-SA\",\n description:\n \"This license lets others remix, adapt, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.\",\n icon: \"https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png\",\n value: CC_BY_NC_SA,\n url: \"https://creativecommons.org/licenses/by-nc-sa/4.0/\",\n legal: \"http://creativecommons.org/licenses/by-nc-sa/4.0/legalcode\",\n },\n {\n label: \"Attribution-NonCommercial-NoDerivs\",\n shortLabel: \"CC BY-NC-ND\",\n description:\n \"This license is the most restrictive of our six main licenses, only allowing others to download your works and share them with others as long as they credit you, but they can’t change them in any way or use them commercially.\",\n icon: \"https://licensebuttons.net/l/by-nc-nd/3.0/88x31.png\",\n value: CC_BY_NC_ND,\n url: \"https://creativecommons.org/licenses/by-nc-nd/4.0/\",\n legal: \"http://creativecommons.org/licenses/by-nc-nd/4.0/legalcode\",\n },\n];\n","import { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { creativeCommons } from \"./meta/rights\";\nimport { EditorConfig } from \"./types\";\n\nexport class RightsStatementEditor<T> extends BasePropertyEditor<T, string> {\n constructor(config: EditorConfig) {\n super(config, \"rights\");\n }\n\n getClean() {\n let value = this.get();\n if (value) {\n value.replace(/https/, \"http\");\n if (!value.endsWith(\"/\")) {\n value += \"/\";\n }\n }\n return value;\n }\n\n getDefinition() {\n const value = this.getClean();\n return creativeCommons.find((v) => v.value === value) || null;\n }\n\n getIcon() {\n const definition = this.getDefinition();\n if (definition) {\n return definition.icon;\n }\n }\n\n getOptions() {\n return creativeCommons;\n }\n}\n","import { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { EditorConfig } from \"./types\";\n\nexport class NavDateEditor<T> extends BasePropertyEditor<T, string | null> {\n constructor(config: EditorConfig) {\n super(config, \"navDate\");\n }\n\n setDate(date: Date | null) {\n if (!date) {\n this.set(null);\n return;\n }\n this.set(date.toISOString());\n }\n\n getDate() {\n const date = this.get();\n if (date) {\n return new Date(date);\n }\n return null;\n }\n\n modifyAsDate(fn: (date: Date) => void) {\n const date = this.getWithoutTracking();\n const dateTime = date ? new Date(date) : new Date();\n\n fn(dateTime);\n\n this.setDate(dateTime);\n }\n}\n","import { InternationalString } from \"@iiif/presentation-3\";\nimport { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { EditorConfig } from \"./types\";\n\nexport class InternationalStringEditor<Entity> extends BasePropertyEditor<Entity, InternationalString> {\n constructor(config: EditorConfig, property: string) {\n super(config, property);\n }\n}\n","import { Reference, SpecificResource } from \"@iiif/presentation-3\";\nimport { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { EditorConfig } from \"./types\";\nimport { entityActions } from \"@iiif/vault/actions\";\nimport { v4 } from \"uuid\";\n\nexport class BaseReferenceListEditor<Entity, T> extends BasePropertyEditor<Entity, T[]> {\n protected cachedList: T[] | undefined;\n protected cachedSortableList: Array<Reference | ({ id: string } & SpecificResource)> | undefined;\n protected idCache = new Map();\n constructor(config: EditorConfig, property: string) {\n super(config, property);\n }\n\n focusId() {\n return `${super.focusId()}_${this.property}_list`;\n }\n\n protected _getId(resource: any) {\n if (this.idCache.has(resource)) {\n return this.idCache.get(resource);\n }\n const newId = v4();\n this.idCache.set(resource, newId);\n return newId;\n }\n\n getSortable() {\n const fresh = this.get();\n if (this.cachedList !== fresh) {\n this.cachedSortableList = (fresh || []).map((item: any) => {\n if (item.id) {\n return item;\n }\n return { id: this._getId(item), ...item };\n });\n }\n\n return this.cachedSortableList;\n }\n\n get(): T[] {\n this.config.tracker.track(this.property);\n const entity: any = this.entity();\n return (entity && entity[this.property]) as any;\n }\n\n set() {\n throw new Error(\"Cannot set directly\");\n }\n\n moveToStart(index: number) {\n this.config.vault.dispatch(\n entityActions.reorderEntityField({\n id: this.getId(),\n type: this.getType() as any,\n startIndex: index,\n endIndex: 0,\n key: this.property,\n })\n );\n }\n\n moveToEnd(index: number) {\n const list = this.getWithoutTracking();\n this.config.vault.dispatch(\n entityActions.reorderEntityField({\n id: this.getId(),\n type: this.getType() as any,\n startIndex: index,\n endIndex: list.length,\n key: this.property,\n })\n );\n }\n\n deleteAtIndex(index: number) {\n const list = this.getWithoutTracking();\n const toRemove = list[index];\n if (toRemove) {\n this.config.vault.dispatch(\n entityActions.removeReference({\n id: this.getId(),\n type: this.getType() as any,\n key: this.property,\n reference: toRemove,\n index: index,\n })\n );\n }\n }\n\n addAfter(index: number, reference: Reference | SpecificResource) {\n this.config.vault.dispatch(\n entityActions.addReference({\n id: this.getId(),\n type: this.getType() as any,\n key: this.property,\n reference,\n index: index,\n })\n );\n }\n\n addBefore(index: number, reference: Reference | SpecificResource) {\n this.config.vault.dispatch(\n entityActions.addReference({\n id: this.getId(),\n type: this.getType() as any,\n key: this.property,\n reference,\n index: index - 1,\n })\n );\n }\n\n add(reference: Reference | SpecificResource) {\n this.config.vault.dispatch(\n entityActions.addReference({\n id: this.getId(),\n type: this.getType() as any,\n key: this.property,\n reference,\n })\n );\n }\n\n reorder(startIndex: number, endIndex: number) {\n console.log(\"reoder\", {\n id: this.getId(),\n type: this.getType() as any,\n startIndex,\n endIndex,\n key: this.property,\n });\n this.config.vault.dispatch(\n entityActions.reorderEntityField({\n id: this.getId(),\n type: this.getType() as any,\n startIndex,\n endIndex,\n key: this.property,\n })\n );\n }\n\n moveUpBy(index: number, steps: number) {\n this.config.vault.dispatch(\n entityActions.reorderEntityField({\n id: this.getId(),\n type: this.getType() as any,\n startIndex: index,\n endIndex: Math.max(0, index - steps),\n key: this.property,\n })\n );\n }\n\n moveDownBy(index: number, steps: number) {\n const list = this.getWithoutTracking();\n this.config.vault.dispatch(\n entityActions.reorderEntityField({\n id: this.getId(),\n type: this.getType() as any,\n startIndex: index,\n // Maybe not +1\n endIndex: Math.min(list.length + 1, index + steps),\n key: this.property,\n })\n );\n }\n\n private duplicate(index: number) {\n // @todo Only duplicates the reference.\n if (true as boolean) {\n throw new Error(\"Not implemented\");\n }\n\n const list = this.getWithoutTracking();\n const item = list[index];\n if (item) {\n this.config.vault.dispatch(\n entityActions.addReference({\n id: this.getId(),\n type: this.getType() as any,\n reference: { ...item },\n index: index + 1,\n key: this.property,\n })\n );\n }\n }\n\n updateReference(index: number, item: Reference | SpecificResource) {\n this.config.vault.dispatch(\n entityActions.updateReference({\n id: this.getId(),\n type: this.getType() as any,\n reference: item,\n index: index,\n key: this.property,\n })\n );\n }\n\n private batchInsertAtIndex(indexes: number[], atOldIndex: number) {\n let oldIndex = atOldIndex;\n while (oldIndex !== -1 && indexes.indexOf(oldIndex) !== -1) {\n oldIndex--;\n }\n\n const list = this.getWithoutTracking();\n const beforeElement = oldIndex === -1 ? undefined : list[oldIndex];\n\n throw new Error(\"Not yet implemented\");\n\n // @todo this needs more thought.\n // 0. If atOldIndex is in indexes - count down until it's not\n // 1. find the resource that should act as the \"before\" (CAN'T DO THIS IN BATCH)\n // 2. remove all references\n // 3. re-add them at index (incrementing by one)\n }\n}\n","import { DescriptiveProperties, Reference } from \"@iiif/presentation-3\";\nimport { BaseEditor } from \"./BaseEditor\";\nimport { EditorConfig } from \"./types\";\nimport { MetadataEditor } from \"./MetadataEditor\";\nimport { RequiredStatementEditor } from \"./RequiredStatementEditor\";\nimport { RightsStatementEditor } from \"./RightsStatementEditor\";\nimport { NavDateEditor } from \"./NavDateEditor\";\nimport { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { InternationalStringEditor } from \"./InternationalStringEditor\";\nimport { BaseReferenceListEditor } from \"@/editor-api/BaseReferenceListEditor\";\n\nexport class DescriptiveEditor<T extends Partial<DescriptiveProperties>> extends BaseEditor<T> {\n label: InternationalStringEditor<T>;\n summary: InternationalStringEditor<T>;\n metadata: MetadataEditor<T>;\n requiredStatement: RequiredStatementEditor<T>;\n rights: RightsStatementEditor<T>;\n navDate: NavDateEditor<T>;\n language: BasePropertyEditor<T, string[]>;\n thumbnail: BaseReferenceListEditor<T, Reference<\"ContentResource\">>;\n provider: BasePropertyEditor<T, Reference<\"Agent\">[]>;\n placeholderCanvas: BasePropertyEditor<T, Reference<\"Canvas\">>;\n accompanyingCanvas: BasePropertyEditor<T, Reference<\"Canvas\">>;\n value: BasePropertyEditor<T, any>;\n\n constructor(config: EditorConfig) {\n super(config);\n\n this.label = new InternationalStringEditor(config, \"label\");\n this.metadata = new MetadataEditor(config);\n this.summary = new InternationalStringEditor(config, \"summary\");\n this.requiredStatement = new RequiredStatementEditor(config);\n this.rights = new RightsStatementEditor(config);\n this.navDate = new NavDateEditor(config);\n this.language = new BasePropertyEditor(config, \"language\");\n\n this.thumbnail = new BaseReferenceListEditor<T, Reference<\"ContentResource\">>(config, \"thumbnail\");\n this.provider = new BasePropertyEditor(config, \"provider\");\n this.placeholderCanvas = new BasePropertyEditor(config, \"placeholderCanvas\");\n this.accompanyingCanvas = new BasePropertyEditor(config, \"accompanyingCanvas\");\n // @todo maybe move this..\n this.value = new BasePropertyEditor<T, any>(config, \"value\");\n }\n}\n","import { Vault } from \"@iiif/vault\";\nimport { TrackerState } from \"./types\";\n\nexport class PropertyObserver implements TrackerState {\n observed: string[];\n vault: Vault;\n entity: any;\n key = \"\";\n\n constructor(vault: Vault, entity: any) {\n this.vault = vault;\n this.observed = [];\n this.entity = entity;\n }\n\n subscribe(cb: (entity: any) => void) {\n return this.vault.subscribe(() => this.vault.get(this.entity), cb, true);\n }\n\n start(onChange: () => void) {\n let lastEntity = this.vault.get(this.entity);\n let lastProps: any[] = [];\n\n return this.vault.subscribe(\n () => {\n const entity = this.vault.get(this.entity);\n if (entity === lastEntity) {\n return lastProps;\n }\n lastEntity = entity;\n const props = [];\n for (const prop of this.observed) {\n props.push(prop);\n const value = entity[prop];\n if (Array.isArray(value)) {\n props.push(...value);\n } else {\n props.push(value);\n }\n }\n lastProps = props;\n return props;\n },\n onChange as any,\n true\n );\n }\n\n track(key: string): void {\n if (!this.observed.includes(key)) {\n this.observed.push(key);\n }\n }\n\n reset(): void {\n this.observed = [];\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { BaseReferenceListEditor } from \"./BaseReferenceListEditor\";\nimport { EditorConfig, TrackerState } from \"./types\";\nimport { Reference, SpecificResource } from \"@iiif/presentation-3\";\n\nconst emptyTracker: TrackerState = {\n key: \"\",\n observed: [],\n reset() {},\n start() {\n return () => void 0;\n },\n subscribe() {\n return () => void 0;\n },\n track() {},\n};\n\nexport class SelfReferenceEditor<T> {\n index: number;\n private editor: BaseReferenceListEditor<T, any>;\n config: EditorConfig;\n\n constructor(config: EditorConfig) {\n invariant(config.context.parent, \"Parent is required\");\n invariant(typeof config.context.index !== \"undefined\", \"Parent index is required\");\n invariant(config.context.parentProperty, \"Parent is required\");\n this.editor = new BaseReferenceListEditor(\n {\n ...config,\n reference: config.context.parent,\n tracker: emptyTracker,\n context: { resource: { type: \"SpecificResource\", source: config.context.parent } },\n },\n config.context.parentProperty\n );\n this.config = config;\n this.index = config.context.index;\n }\n\n getSelector() {\n const resource = this.config.context.resource;\n if (resource.selector) {\n return resource.selector;\n }\n return null;\n }\n\n updateReference(reference: Reference | SpecificResource) {\n this.editor.updateReference(this.index, reference);\n }\n\n moveToStart() {\n this.editor.moveToStart(this.index);\n this.index = 0;\n }\n\n moveToEnd() {\n this.editor.moveToEnd(this.index);\n this.index = this.editor.getWithoutTracking().length - 1;\n }\n\n moveUpBy(steps: number) {\n this.editor.moveUpBy(this.index, steps);\n this.index = Math.max(0, this.index - steps);\n }\n\n moveDownBy(steps: number) {\n this.editor.moveDownBy(this.index, steps);\n this.index = Math.min(this.editor.getWithoutTracking().length + 1, this.index + steps);\n }\n\n removeFromParent() {\n this.editor.deleteAtIndex(this.index);\n }\n\n addAfter(reference: Reference | SpecificResource) {\n this.editor.addAfter(this.index, reference);\n }\n\n addBefore(reference: Reference | SpecificResource) {\n this.editor.addBefore(this.index, reference);\n this.index++;\n }\n}\n","import { BasePropertyEditor } from \"./BasePropertyEditor\";\n\nexport class ReadonlyProperty<T, Prop> extends BasePropertyEditor<T, Prop> {\n set() {\n throw new Error(\"Read only\");\n }\n}\n","import { BehaviorChoice } from \"@/_components/editors/BehaviorEditor/BehaviorEditor.types\";\n\nconst autoAdvance = [\"auto-advance\", \"no-auto-advance\"] as const;\n\nconst repeat = [\"repeat\", \"no-repeat\"] as const;\n\nconst manifestOrdering = [\"unordered\", \"individuals\", \"continuous\", \"paged\"] as const;\n\nconst canvasOrdering = [\"facing-pages\", \"paged\", \"non-paged\"] as const;\n\nconst collection = [\"multi-part\", \"together\"] as const;\n\nconst range = [\"sequence\", \"thumbnail-nav\", \"no-nav\"] as const;\n\nconst hidden = [\"hidden\"] as const;\n\nconst collectionOrdering = manifestOrdering;\n\nconst rangeOrdering = manifestOrdering;\n\nexport const behaviors = {\n autoAdvance,\n repeat,\n manifestOrdering,\n collectionOrdering,\n rangeOrdering,\n canvasOrdering,\n collection,\n range,\n hidden,\n};\n\nexport const supportedBehaviorGroups = {\n Collection: [collectionOrdering, collection, repeat, autoAdvance],\n Manifest: [manifestOrdering, repeat, autoAdvance],\n Canvas: [canvasOrdering, autoAdvance],\n Annotation: [hidden],\n AnnotationPage: [hidden],\n Range: [rangeOrdering, range, autoAdvance],\n AnnotationCollection: [hidden],\n ContentResource: [hidden],\n};\n\nfunction mapToItem(i: string) {\n return { label: { none: [i] }, value: i };\n}\n\nconst autoAdvanceConfig: BehaviorChoice = {\n id: \"@iiif/auto-advance\",\n label: { en: [\"Auto-advance\"] },\n type: \"choice\",\n addNone: true,\n items: autoAdvance.map(mapToItem),\n};\n\nconst repeatConfig: BehaviorChoice = {\n id: \"@iiif/repeat\",\n label: { en: [\"Repeat\"] },\n type: \"choice\",\n addNone: true,\n items: repeat.map(mapToItem),\n};\n\nconst manifestOrderingConfig: BehaviorChoice = {\n id: \"@iiif/manifest-ordering\",\n label: { en: [\"Manifest ordering\"] },\n type: \"choice\",\n addNone: true,\n items: manifestOrdering.map(mapToItem),\n};\n\nconst canvasOrderingConfig: BehaviorChoice = {\n id: \"@iiif/canvas-ordering\",\n label: { en: [\"Canvas ordering\"] },\n type: \"choice\",\n addNone: true,\n items: canvasOrdering.map(mapToItem),\n};\n\nconst collectionConfig: BehaviorChoice = {\n id: \"@iiif/range\",\n label: { en: [\"Collection\"] },\n type: \"choice\",\n addNone: true,\n items: collection.map(mapToItem),\n};\n\nconst rangeConfig: BehaviorChoice = {\n id: \"@iiif/range\",\n label: { en: [\"Range\"] },\n type: \"choice\",\n addNone: true,\n items: range.map(mapToItem),\n};\n\nconst collectionOrderingConfig: BehaviorChoice = {\n id: \"@iiif/collection-ordering\",\n label: { en: [\"Collection ordering\"] },\n type: \"choice\",\n addNone: true,\n items: collectionOrdering.map(mapToItem),\n};\n\nconst rangeOrderingConfig: BehaviorChoice = {\n id: \"@iiif/range-ordering\",\n label: { en: [\"Range ordering\"] },\n type: \"choice\",\n addNone: true,\n items: rangeOrdering.map(mapToItem),\n};\n\nconst hiddenConfig: BehaviorChoice = {\n id: \"@iiif/range-hidden\",\n label: { en: [\"Visibility\"] },\n type: \"choice\",\n addNone: true,\n items: hidden.map(mapToItem),\n};\n\nexport const supportedBehaviorConfig = {\n Collection: [collectionOrderingConfig, collectionConfig, repeatConfig, autoAdvanceConfig],\n Manifest: [manifestOrderingConfig, repeatConfig, autoAdvanceConfig],\n Canvas: [canvasOrderingConfig, autoAdvanceConfig],\n Annotation: [hiddenConfig],\n AnnotationPage: [hiddenConfig],\n Range: [rangeOrderingConfig, rangeConfig, autoAdvanceConfig],\n AnnotationCollection: [hiddenConfig],\n ContentResource: [hiddenConfig],\n};\n","import { BehaviorChoice } from \"@/_components/editors/BehaviorEditor/BehaviorEditor.types\";\nimport { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { supportedBehaviorConfig } from \"./meta/behavior\";\nimport { EditorConfig } from \"./types\";\n\nexport class BehaviorEditor<T> extends BasePropertyEditor<T, string[]> {\n constructor(config: EditorConfig) {\n super(config, \"behavior\");\n }\n\n getSupported(): BehaviorChoice[] {\n return supportedBehaviorConfig[this.getType() as \"Manifest\"] || [];\n }\n}\n","import { SpecificationTimeMode, TechnicalProperties, ViewingDirection } from \"@iiif/presentation-3\";\nimport { BaseEditor } from \"./BaseEditor\";\nimport { EditorConfig } from \"./types\";\nimport { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { ReadonlyProperty } from \"./ReadonlyProperty\";\nimport { BehaviorEditor } from \"./BehaviorEditor\";\n\nexport class TechnicalEditor<T extends Partial<TechnicalProperties>> extends BaseEditor<T> {\n id: ReadonlyProperty<T, string>;\n type: string;\n mediaType: BasePropertyEditor<T, string>;\n format: BasePropertyEditor<T, string>;\n profile: BasePropertyEditor<T, string>;\n height: BasePropertyEditor<T, number>;\n width: BasePropertyEditor<T, number>;\n duration: BasePropertyEditor<T, number>;\n viewingDirection: BasePropertyEditor<T, ViewingDirection>;\n behavior: BehaviorEditor<T>;\n timeMode: BasePropertyEditor<T, SpecificationTimeMode | string | null>;\n motivation: BasePropertyEditor<T, string | null>;\n\n constructor(config: EditorConfig) {\n super(config);\n\n this.id = new ReadonlyProperty(config, \"id\");\n this.type = this.entity().type || config.reference.type;\n this.mediaType = new BasePropertyEditor(config, \"type\");\n\n this.format = new BasePropertyEditor(config, \"format\");\n this.profile = new BasePropertyEditor(config, \"profile\");\n this.height = new BasePropertyEditor(config, \"height\");\n this.width = new BasePropertyEditor(config, \"width\");\n this.duration = new BasePropertyEditor(config, \"duration\");\n this.viewingDirection = new BasePropertyEditor(config, \"viewingDirection\");\n this.behavior = new BehaviorEditor(config);\n this.timeMode = new BasePropertyEditor(config, \"timeMode\");\n this.motivation = new BasePropertyEditor(config, \"motivation\");\n }\n}\n","import { LinkingProperties, Reference, Service } from \"@iiif/presentation-3\";\nimport { BaseEditor } from \"./BaseEditor\";\nimport { EditorConfig } from \"./types\";\nimport { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { BaseReferenceListEditor } from \"./BaseReferenceListEditor\";\n\nexport class LinkingEditor<T extends Partial<LinkingProperties>> extends BaseEditor<T> {\n seeAlso: BaseReferenceListEditor<T, Reference<\"ContentResource\">>;\n service: BaseReferenceListEditor<T, Service>;\n services: BaseReferenceListEditor<T, Service>;\n rendering: BaseReferenceListEditor<T, Reference<\"ContentResource\">>;\n partOf: BaseReferenceListEditor<\n T,\n Reference<\"ContentResource\"> | Reference<\"Canvas\"> | Reference<\"AnnotationCollection\">\n >;\n start: BasePropertyEditor<T, Reference<\"Canvas\"> | null>;\n supplementary: BaseReferenceListEditor<T, Reference<\"ContentResource\">>;\n homepage: BaseReferenceListEditor<T, Reference<\"ContentResource\">>;\n logo: BaseReferenceListEditor<T, Reference<\"ContentResource\">>;\n\n constructor(config: EditorConfig) {\n super(config);\n\n // @todo these could use custom editors.\n this.seeAlso = new BaseReferenceListEditor(config, \"seeAlso\");\n this.service = new BaseReferenceListEditor(config, \"service\");\n this.services = new BaseReferenceListEditor(config, \"services\");\n this.rendering = new BaseReferenceListEditor(config, \"rendering\");\n this.partOf = new BaseReferenceListEditor(config, \"partOf\");\n this.start = new BasePropertyEditor(config, \"start\");\n this.supplementary = new BaseReferenceListEditor(config, \"supplementary\");\n this.homepage = new BaseReferenceListEditor(config, \"homepage\");\n this.logo = new BaseReferenceListEditor(config, \"logo\");\n }\n}\n","import { Reference, StructuralProperties } from \"@iiif/presentation-3\";\nimport { BaseEditor } from \"./BaseEditor\";\nimport { EditorConfig } from \"./types\";\nimport { BaseReferenceListEditor } from \"./BaseReferenceListEditor\";\n\nexport class StructuralEditor<T extends Partial<StructuralProperties<any>>> extends BaseEditor<T> {\n items: BaseReferenceListEditor<T, Reference>;\n annotations: BaseReferenceListEditor<T, Reference<\"AnnotationPage\">>;\n structures: BaseReferenceListEditor<T, Reference<\"Range\">>;\n\n constructor(config: EditorConfig) {\n super(config);\n\n // @todo these could use custom editors.\n this.items = new BaseReferenceListEditor(config, \"items\");\n this.annotations = new BaseReferenceListEditor(config, \"annotations\");\n this.structures = new BaseReferenceListEditor(config, \"structures\");\n }\n}\n","import { LinkingProperties } from \"@iiif/presentation-3\";\n\nconst required: LinkingMap = {\n Collection: [],\n Manifest: [],\n Canvas: [],\n Annotation: [],\n AnnotationPage: [],\n Range: [],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [],\n} as const;\n\nconst recommended: LinkingMap = {\n Collection: [],\n Manifest: [],\n Canvas: [],\n Annotation: [],\n AnnotationPage: [],\n Range: [],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [\"homepage\", \"logo\"],\n} as const;\n\nconst optional: LinkingMap = {\n Collection: [\"seeAlso\", \"service\", \"homepage\", \"rendering\", \"partOf\", \"services\"],\n Manifest: [\"seeAlso\", \"service\", \"homepage\", \"rendering\", \"partOf\", \"start\", \"services\"],\n Canvas: [\"seeAlso\", \"service\", \"homepage\", \"rendering\", \"partOf\"],\n Annotation: [\"seeAlso\", \"service\", \"homepage\", \"rendering\", \"partOf\"],\n AnnotationPage: [\"seeAlso\", \"service\", \"homepage\", \"rendering\", \"partOf\"],\n Range: [\"seeAlso\", \"service\", \"homepage\", \"rendering\", \"partOf\", \"start\", \"supplementary\"],\n AnnotationCollection: [\"seeAlso\", \"service\", \"homepage\", \"rendering\", \"partOf\"],\n ContentResource: [\"seeAlso\", \"service\", \"homepage\", \"rendering\", \"partOf\"],\n Agent: [\"seeAlso\"],\n} as const;\n\nconst notAllowed: LinkingMap = {\n Collection: [\"supplementary\", \"logo\"],\n Manifest: [\"supplementary\", \"logo\"],\n Canvas: [\"start\", \"supplementary\", \"services\", \"logo\"],\n Annotation: [\"start\", \"supplementary\", \"services\", \"logo\"],\n AnnotationPage: [\"start\", \"supplementary\", \"services\", \"logo\"],\n Range: [\"services\", \"logo\"],\n AnnotationCollection: [\"start\", \"supplementary\", \"services\", \"logo\"],\n ContentResource: [\"start\", \"supplementary\", \"services\", \"logo\"],\n Agent: [\"service\", \"homepage\", \"rendering\", \"partOf\", \"services\", \"start\", \"supplementary\"],\n} as const;\n\ntype LinkingMap = Record<\n | \"Collection\"\n | \"Manifest\"\n | \"Canvas\"\n | \"Annotation\"\n | \"AnnotationPage\"\n | \"Range\"\n | \"AnnotationCollection\"\n | \"ContentResource\"\n | \"Agent\",\n readonly (keyof LinkingProperties)[]\n>;\n\nconst all: readonly (keyof LinkingProperties)[] = [\n \"seeAlso\",\n \"service\",\n \"services\",\n \"rendering\",\n \"partOf\",\n \"start\",\n \"supplementary\",\n \"homepage\",\n \"logo\",\n] as const;\n\nexport const linkingProperties = {\n all,\n required,\n recommended,\n optional,\n notAllowed,\n} as const;\n","import { StructuralProperties } from \"@iiif/presentation-3\";\n\nconst required: StructuralMap = {\n Collection: [\"items\"],\n Manifest: [\"items\"],\n Canvas: [],\n Annotation: [],\n AnnotationPage: [],\n Range: [],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [],\n} as const;\n\nconst recommended: StructuralMap = {\n Collection: [],\n Manifest: [],\n Canvas: [\"items\"],\n Annotation: [],\n AnnotationPage: [\"items\"],\n Range: [],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [],\n} as const;\n\nconst optional: StructuralMap = {\n Collection: [\"annotations\"],\n Manifest: [\"structures\", \"annotations\"],\n Canvas: [\"annotations\"],\n Annotation: [],\n AnnotationPage: [],\n Range: [\"annotations\"],\n AnnotationCollection: [],\n ContentResource: [\"annotations\"],\n Agent: [],\n} as const;\n\nconst notAllowed: StructuralMap = {\n Collection: [\"structures\"],\n Manifest: [],\n Canvas: [\"structures\"],\n Annotation: [\"items\", \"structures\", \"annotations\"],\n AnnotationPage: [\"structures\", \"annotations\"],\n Range: [\"structures\"],\n AnnotationCollection: [\n // Leaving this out, as it's technically valid - just not withing a Presentation 3 context.\n // \"items\",\n \"structures\",\n \"annotations\",\n ],\n ContentResource: [\"items\", \"structures\"],\n Agent: [\"items\", \"structures\", \"annotations\"],\n} as const;\n\ntype StructuralMap = Record<\n | \"Collection\"\n | \"Manifest\"\n | \"Canvas\"\n | \"Annotation\"\n | \"AnnotationPage\"\n | \"Range\"\n | \"AnnotationCollection\"\n | \"ContentResource\"\n | \"Agent\",\n readonly (keyof StructuralProperties<unknown>)[]\n>;\n\nconst all: readonly (keyof StructuralProperties<unknown>)[] = [\"annotations\", \"items\", \"structures\"] as const;\n\nexport const structuralProperties = {\n all,\n required,\n recommended,\n optional,\n notAllowed,\n} as const;\n","import { TechnicalProperties } from \"@iiif/presentation-3\";\n\nconst required: TechnicalMap = {\n Collection: [\"id\", \"type\"],\n Manifest: [\"id\", \"type\"],\n Canvas: [\"id\", \"type\"],\n Annotation: [\"id\", \"type\"],\n AnnotationPage: [\"id\", \"type\"],\n Range: [\"id\", \"type\"],\n AnnotationCollection: [\"id\", \"type\"],\n ContentResource: [\"id\", \"type\"],\n Agent: [\"id\", \"type\"],\n} as const;\n\nconst recommended: TechnicalMap = {\n Collection: [],\n Manifest: [],\n Canvas: [],\n Annotation: [],\n AnnotationPage: [],\n Range: [],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [],\n} as const;\n\nconst optional: TechnicalMap = {\n Collection: [\"viewingDirection\", \"behavior\"],\n Manifest: [\"viewingDirection\", \"behavior\"],\n Canvas: [\"height\", \"width\", \"duration\", \"behavior\"],\n Annotation: [\"behavior\", \"timeMode\"],\n AnnotationPage: [\"behavior\"],\n Range: [\"viewingDirection\", \"behavior\"],\n AnnotationCollection: [\"behavior\"],\n ContentResource: [\"format\", \"height\", \"width\", \"duration\", \"behavior\"],\n Agent: [],\n} as const;\n\nconst annotationOnly = [\"motivation\"] as const;\n\nconst notAllowed: TechnicalMap = {\n Collection: [\"format\", \"profile\", \"height\", \"width\", \"duration\", \"timeMode\", ...annotationOnly],\n Manifest: [\"format\", \"profile\", \"height\", \"width\", \"duration\", \"timeMode\", ...annotationOnly],\n Canvas: [\"format\", \"profile\", \"viewingDirection\", \"timeMode\", ...annotationOnly],\n Annotation: [\"format\", \"profile\", \"height\", \"width\", \"duration\", \"viewingDirection\"],\n AnnotationPage: [\n \"format\",\n \"profile\",\n \"height\",\n \"width\",\n \"duration\",\n \"viewingDirection\",\n \"timeMode\",\n ...annotationOnly,\n ],\n Range: [\"format\", \"profile\", \"height\", \"width\", \"duration\", \"timeMode\", ...annotationOnly],\n AnnotationCollection: [\n \"format\",\n \"profile\",\n \"height\",\n \"width\",\n \"duration\",\n \"viewingDirection\",\n \"timeMode\",\n ...annotationOnly,\n ],\n ContentResource: [\"viewingDirection\", \"timeMode\", ...annotationOnly],\n Agent: [\n \"viewingDirection\",\n \"format\",\n \"profile\",\n \"height\",\n \"width\",\n \"duration\",\n \"timeMode\",\n \"behavior\",\n ...annotationOnly,\n ],\n} as const;\n\ntype TechnicalMap = Record<\n | \"Collection\"\n | \"Manifest\"\n | \"Canvas\"\n | \"Annotation\"\n | \"AnnotationPage\"\n | \"Range\"\n | \"AnnotationCollection\"\n | \"ContentResource\"\n | \"Agent\",\n readonly (keyof TechnicalProperties)[]\n>;\n\nconst all: readonly (keyof TechnicalProperties)[] = [\n \"id\",\n \"type\",\n \"format\",\n \"profile\",\n \"height\",\n \"width\",\n \"duration\",\n \"viewingDirection\",\n \"behavior\",\n \"timeMode\",\n \"motivation\",\n] as const;\n\nexport const technicalProperties = {\n all,\n required,\n recommended,\n optional,\n notAllowed,\n} as const;\n","import { NavPlaceExtension, TextGranularityExtension } from \"@iiif/presentation-3\";\n\nexport type ExtensionProperties = TextGranularityExtension & NavPlaceExtension;\n\nconst required: ExtensionsMap = {\n Collection: [],\n Manifest: [],\n Canvas: [],\n Annotation: [],\n AnnotationPage: [],\n Range: [],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [],\n} as const;\n\nconst recommended: ExtensionsMap = {\n Collection: [],\n Manifest: [],\n Canvas: [],\n Annotation: [],\n AnnotationPage: [],\n Range: [],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [],\n} as const;\n\nconst optional: ExtensionsMap = {\n Collection: [\"navPlace\"],\n Manifest: [\"navPlace\"],\n Canvas: [\"navPlace\"],\n Annotation: [\"textGranularity\"],\n AnnotationPage: [],\n Range: [\"navPlace\"],\n AnnotationCollection: [],\n ContentResource: [],\n Agent: [],\n} as const;\n\nconst notAllowed: ExtensionsMap = {\n Collection: [\"textGranularity\"],\n Manifest: [\"textGranularity\"],\n Canvas: [\"textGranularity\"],\n Annotation: [\"navPlace\"],\n AnnotationPage: [\"textGranularity\", \"navPlace\"],\n Range: [\"textGranularity\"],\n AnnotationCollection: [\"textGranularity\", \"navPlace\"],\n ContentResource: [\"textGranularity\", \"navPlace\"],\n Agent: [\"textGranularity\", \"navPlace\"],\n} as const;\n\ntype ExtensionsMap = Record<\n | \"Collection\"\n | \"Manifest\"\n | \"Canvas\"\n | \"Annotation\"\n | \"AnnotationPage\"\n | \"Range\"\n | \"AnnotationCollection\"\n | \"ContentResource\"\n | \"Agent\",\n readonly (keyof ExtensionProperties)[]\n>;\n\nconst all: readonly (keyof ExtensionProperties)[] = [\"navPlace\", \"textGranularity\"];\n\nexport const extensionProperties = {\n all,\n required,\n recommended,\n optional,\n notAllowed,\n} as const;\n","import { descriptiveProperties } from \"./descriptive\";\nimport { linkingProperties } from \"./linking\";\nimport { structuralProperties } from \"./structural\";\nimport { technicalProperties } from \"./technical\";\nimport { extensionProperties } from \"./extensions\";\n\nconst all = [\n \"Collection\",\n \"Manifest\",\n \"Canvas\",\n \"Annotation\",\n \"AnnotationPage\",\n \"Range\",\n \"AnnotationCollection\",\n \"ContentResource\",\n \"Agent\",\n];\n\nfunction getSupported(type: string) {\n const required = [\n ...(technicalProperties.required[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(descriptiveProperties.required[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(linkingProperties.required[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(structuralProperties.required[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(extensionProperties.required[(type || \"ContentResource\") as \"Manifest\"] || []),\n ];\n const recommended = [\n ...(technicalProperties.recommended[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(descriptiveProperties.recommended[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(linkingProperties.recommended[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(structuralProperties.recommended[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(extensionProperties.recommended[(type || \"ContentResource\") as \"Manifest\"] || []),\n ];\n const notAllowed = [\n ...(technicalProperties.notAllowed[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(descriptiveProperties.notAllowed[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(linkingProperties.notAllowed[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(structuralProperties.notAllowed[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(extensionProperties.notAllowed[(type || \"ContentResource\") as \"Manifest\"] || []),\n ];\n const optional = [\n ...(technicalProperties.optional[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(descriptiveProperties.optional[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(linkingProperties.optional[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(structuralProperties.optional[(type || \"ContentResource\") as \"Manifest\"] || []),\n ...(extensionProperties.optional[(type || \"ContentResource\") as \"Manifest\"] || []),\n ];\n\n const allowed = [...required, ...recommended, ...optional];\n\n const all = [...allowed, ...notAllowed];\n\n return { all, allowed, required, recommended, notAllowed, optional };\n}\n\nconst Collection = getSupported(\"Collection\");\nconst Manifest = getSupported(\"Manifest\");\nconst Canvas = getSupported(\"Canvas\");\nconst Annotation = getSupported(\"Annotation\");\nconst AnnotationPage = getSupported(\"AnnotationPage\");\nconst Range = getSupported(\"Range\");\nconst AnnotationCollection = getSupported(\"AnnotationCollection\");\nconst ContentResource = getSupported(\"ContentResource\");\nconst Agent = getSupported(\"Agent\");\n\nexport const resources = {\n all,\n getSupported,\n supported: {\n Collection,\n Manifest,\n Canvas,\n Annotation,\n AnnotationPage,\n Range,\n AnnotationCollection,\n ContentResource,\n Agent,\n },\n};\n","import { BasePropertyEditor } from \"@/editor-api/BasePropertyEditor\";\nimport { AnnotationNormalized } from \"@iiif/presentation-3-normalized\";\nimport { SpecificResource } from \"@iiif/presentation-3\";\nimport { EditorConfig } from \"@/editor-api/types\";\nimport { parseSelector } from \"@iiif/vault-helpers\";\n\nexport class AnnotationTargetEditor extends BasePropertyEditor<AnnotationNormalized, SpecificResource> {\n constructor(config: EditorConfig) {\n super(config, \"target\");\n }\n\n getSourceId() {\n const { source } = this.get() || {};\n return source?.id;\n }\n\n removeSelector() {\n const existing = this.getWithoutTracking();\n this.set({\n ...existing,\n selector: undefined,\n });\n }\n\n getParsedSelector() {\n const resource = this.get();\n if (resource.selector) {\n return parseSelector(resource.selector)?.selector;\n }\n return null;\n }\n\n setPosition(position: { x: number; y: number; width: number; height: number }) {\n const existing = this.getWithoutTracking();\n if (existing && existing.source) {\n this.set({\n ...existing,\n selector: {\n type: \"FragmentSelector\",\n value: `xywh=${[~~position.x, ~~position.y, ~~position.width, ~~position.height].join(\",\")}`,\n },\n });\n }\n }\n}\n","import { AnnotationNormalized } from \"@iiif/presentation-3-normalized\";\nimport { BaseReferenceListEditor } from \"@/editor-api/BaseReferenceListEditor\";\nimport { Reference, SpecificResource } from \"@iiif/presentation-3\";\nimport { EditorConfig } from \"@/editor-api/types\";\nimport invariant from \"tiny-invariant\";\nimport { toRef } from \"@iiif/parser\";\n\nexport class AnnotationBodyEditor extends BaseReferenceListEditor<\n AnnotationNormalized,\n Reference<\"ContentResource\"> | SpecificResource\n> {\n constructor(config: EditorConfig) {\n super(config, \"body\");\n }\n\n isSpatial() {\n if (!this.hasBody()) {\n return false;\n }\n try {\n const bodyRef = this.getFirst();\n const body = this.config.vault.get(bodyRef);\n const ref = toRef(body);\n return ref?.type === \"Video\" || ref?.type === \"Image\";\n } catch (err) {\n return false;\n }\n }\n\n hasBody() {\n const all = this.get();\n return !!all[0];\n }\n\n getFirst() {\n const all = this.get();\n invariant(all[0], \"Body not found\");\n return all[0];\n }\n\n getFirstOrNone() {\n const all = this.get();\n\n if (!all) {\n return undefined;\n }\n\n return all[0] || undefined;\n }\n}\n","import { BaseEditor } from \"@/editor-api/BaseEditor\";\nimport { AnnotationNormalized } from \"@iiif/presentation-3-normalized\";\nimport { EditorConfig } from \"@/editor-api/types\";\nimport { AnnotationTargetEditor } from \"@/editor-api/AnnotationTargetEditor\";\nimport { AnnotationBodyEditor } from \"@/editor-api/AnnotationBodyEditor\";\n\nexport class AnnotationEditor extends BaseEditor<AnnotationNormalized> {\n target: AnnotationTargetEditor;\n body: AnnotationBodyEditor;\n constructor(config: EditorConfig) {\n super(config);\n\n this.target = new AnnotationTargetEditor(config);\n this.body = new AnnotationBodyEditor(config);\n }\n}\n","import { BasePropertyEditor } from \"./BasePropertyEditor\";\nimport { EditorConfig } from \"./types\";\nimport { NavPlaceExtension } from \"@iiif/presentation-3\";\n\nexport class NavPlaceEditor<T> extends BasePropertyEditor<T, NavPlaceExtension[\"navPlace\"]> {\n constructor(config: EditorConfig) {\n super(config, \"navPlace\");\n }\n}\n","import { NavPlaceExtension, TextGranularityExtension } from \"@iiif/presentation-3\";\nimport { BaseEditor } from \"@/editor-api/BaseEditor\";\nimport { EditorConfig } from \"@/editor-api/types\";\nimport { NavPlaceEditor } from \"@/editor-api/NavPlaceEditor\";\nimport { BasePropertyEditor } from \"@/editor-api/BasePropertyEditor\";\n\nexport class ExtensionsEditor<T extends Partial<NavPlaceExtension & TextGranularityExtension>> extends BaseEditor<T> {\n navPlace: NavPlaceEditor<T>;\n textGranularity: BasePropertyEditor<T, TextGranularityExtension[\"textGranularity\"]>;\n constructor(config: EditorConfig) {\n super(config);\n\n this.navPlace = new NavPlaceEditor(config);\n this.textGranularity = new BasePropertyEditor(config, \"textGranularity\");\n }\n}\n","import {\n DescriptiveProperties,\n LinkingProperties,\n NavPlaceExtension,\n Reference,\n StructuralProperties,\n TechnicalProperties,\n TextGranularityExtension,\n} from \"@iiif/presentation-3\";\nimport { BaseEditor } from \"./BaseEditor\";\nimport { DescriptiveEditor } from \"./DescriptiveEditor\";\nimport { EditorConfig, EntityValidationResponse, TrackerState } from \"./types\";\nimport { PropertyObserver } from \"./PropertyObserver\";\nimport { SelfReferenceEditor } from \"./SelfReferenceEditor\";\nimport { TechnicalEditor } from \"./TechnicalPropertiesEditor\";\nimport { MetadataEditor } from \"./MetadataEditor\";\nimport { LinkingEditor } from \"./LinkingEditor\";\nimport { StructuralEditor } from \"./StructuralEditor\";\nimport { Vault } from \"@iiif/vault\";\nimport { resources } from \"./meta/resources\";\nimport { AnnotationEditor } from \"@/editor-api/AnnotationEditor\";\nimport { HAS_PART, PART_OF } from \"@iiif/parser\";\nimport { ExtensionsEditor } from \"@/editor-api/ExtensionsEditor\";\n\nexport class EditorInstance<\n T extends Partial<DescriptiveProperties> &\n Partial<TechnicalProperties> &\n Partial<LinkingProperties> &\n Partial<StructuralProperties<unknown>> &\n Partial<NavPlaceExtension & TextGranularityExtension>\n> extends BaseEditor<T> {\n technical: TechnicalEditor<T>;\n descriptive: DescriptiveEditor<T>;\n metadata: MetadataEditor<T>;\n linking: LinkingEditor<T>;\n structural: StructuralEditor<T>;\n annotation!: AnnotationEditor;\n extensions!: ExtensionsEditor<T>;\n required: (keyof T)[];\n recommended: (keyof T)[];\n notAllowed: string[];\n optional: (keyof T)[];\n allowed: (keyof T)[];\n isMultiple: boolean;\n context?: SelfReferenceEditor<T>;\n observe: TrackerState;\n\n constructor(_config: { vault: Vault; reference: Reference } & Partial<EditorConfig>) {\n const config: EditorConfig = _config as any;\n config.context = config.context || {};\n config.context.resource = config.context.resource || { type: \"SpecificResource\", source: config.reference };\n\n config.tracker = config.tracker || new PropertyObserver(config.vault, config.reference);\n super(config);\n this.observe = config.tracker;\n\n this.technical = new TechnicalEditor(config);\n this.descriptive = new DescriptiveEditor(config);\n this.metadata = this.descriptive.metadata;\n this.linking = new LinkingEditor(config);\n this.structural = new StructuralEditor(config);\n this.extensions = new ExtensionsEditor(config);\n\n // Not yet supported.\n this.isMultiple = false;\n\n if (config.context.parent && config.context.parentProperty && typeof config.context.index !== \"undefined\") {\n // @todo still some questions about this one, and keeping the context updated.\n // Very likely to cause unexpected behavior, we NEED to track it and update it.\n this.context = new SelfReferenceEditor(config);\n }\n\n const type = this.getType() as any;\n\n if (type === \"Annotation\") {\n this.annotation = new AnnotationEditor(config);\n }\n\n const meta = resources.supported[type as \"Manifest\"] || resources.getSupported(type);\n\n this.required = meta.required;\n this.recommended = meta.recommended;\n this.notAllowed = meta.notAllowed;\n this.allowed = meta.allowed;\n this.optional = meta.optional;\n }\n\n getPartOf(): string | null {\n const item = this.config.vault.get(this.ref());\n if (item && item[HAS_PART]) {\n const found = item[HAS_PART][0];\n if (found) {\n return found[PART_OF] || null;\n }\n }\n return null;\n }\n\n ref() {\n return this.config.reference;\n }\n\n validate() {\n const validators = this.config.validators;\n const entity = this.entity() as any;\n const type = entity?.type;\n const response: EntityValidationResponse = {\n isError: false,\n isWarning: false,\n problems: [],\n };\n if (entity && type && validators.length) {\n if (type) {\n for (const validator of validators) {\n if (validator.types.includes(type)) {\n try {\n const isValid = validator.valid(entity, this.config.vault, this.config.context);\n if (!isValid) {\n if (validator.error) {\n response.isError = true;\n } else if (validator.warning) {\n response.isWarning = true;\n }\n response.problems.push({\n isError: validator.error || false,\n isWarning: validator.warning || false,\n message: validator.message,\n properties: validator.properties,\n });\n }\n } catch (e) {\n response.isWarning = true;\n response.problems.push({\n isWarning: true,\n isError: false,\n message: `Validation error: ${e || \"unknown\"}`,\n properties: validator.properties,\n });\n }\n }\n }\n }\n }\n return response;\n }\n}\n","import { createContext, useCallback, useContext, useEffect, useMemo, useReducer } from \"react\";\nimport { EditableResource, EditingStackActions, EditingStackState } from \"@/shell/EditingStack/EditingStack.types\";\nimport { editingStackReducer } from \"@/shell/EditingStack/EditingStack.reducer\";\nimport { EditorInstance } from \"@/editor-api/EditorInstance\";\nimport invariant from \"tiny-invariant\";\nimport { useManifest, useResourceContext, useVault } from \"react-iiif-vault\";\nimport { Reference, SpecificResource } from \"@iiif/presentation-3\";\nimport { toRef } from \"@iiif/parser\";\nimport { current } from \"immer\";\nimport { useProjectContext } from \"@/shell/ProjectContext/ProjectContext\";\nimport { startViewTransition } from \"@/helpers/start-view-transition\";\nimport { flushSync } from \"react-dom\";\n\nconst defaultState: EditingStackState = { stack: [], current: null, create: null };\nconst EditingStackContext = createContext<EditingStackState>(defaultState);\nconst EditingStackActionsContext = createContext<EditingStackActions>({\n edit() {},\n close() {},\n back() {},\n updateCurrent() {},\n create() {\n return () => {};\n },\n});\n\nconst EditorContext = createContext<EditorInstance<any> | null>(null);\n\nexport function useEditingStack() {\n return useContext(EditingStackActionsContext);\n}\n\nexport function useEditingResource() {\n return useContext(EditingStackContext).current;\n}\n\nexport function useEditingResourceStack() {\n return useContext(EditingStackContext).stack;\n}\n\nexport function useCreatingResource() {\n return useContext(EditingStackContext).create;\n}\n\nexport function useManifestEditor() {\n const { manifest } = useResourceContext();\n const vault = useVault();\n const [key, invalidate] = useReducer((i: number) => i + 1, 0);\n\n invariant(manifest, \"Manifest not found\");\n\n const editor = useMemo(() => {\n return new EditorInstance({\n reference: { id: manifest, type: \"Manifest\" },\n vault,\n });\n }, [manifest, vault]);\n\n useEffect(() => {\n return editor.observe.start(invalidate);\n }, [editor]);\n\n editor.observe.key = `${key}`;\n editor.observe.reset();\n\n return editor;\n}\n\nexport function useCollectionEditor() {\n const { collection } = useResourceContext();\n const vault = useVault();\n const [key, invalidate] = useReducer((i: number) => i + 1, 0);\n\n invariant(collection, \"Collection not found\");\n\n const editor = useMemo(() => {\n return new EditorInstance({\n reference: { id: collection, type: \"Collection\" },\n vault,\n });\n }, [collection, vault]);\n\n useEffect(() => {\n return editor.observe.start(invalidate);\n }, [editor]);\n\n editor.observe.key = `${key}`;\n editor.observe.reset();\n\n return editor;\n}\n\nexport function useGenericEditor(\n ref: Reference<any> | SpecificResource | undefined,\n ctx: { parent?: Reference; parentProperty?: string; index?: number } = {}\n) {\n const vault = useVault();\n const [key, invalidate] = useReducer((i: number) => i + 1, 0);\n\n invariant(ref, \"Resource not found\");\n\n const editor = useMemo(() => {\n return new EditorInstance({\n reference: toRef(ref) as any,\n vault,\n context: { resource: ref, parent: ctx.parent, index: ctx.index, parentProperty: ctx.parentProperty },\n });\n }, [ref, vault]);\n\n useEffect(() => {\n return editor.observe.start(invalidate);\n }, [editor]);\n\n editor.observe.key = `${key}`;\n editor.observe.reset();\n\n return editor;\n}\n\nexport function useAnnotationPageEditor() {\n const { annotationPage } = useResourceContext();\n\n invariant(annotationPage, \"Annotation page not found\");\n\n return useGenericEditor({ id: annotationPage, type: \"AnnotationPage\" });\n}\n\nexport function useEditor() {\n const resource = useEditingResource();\n const vault = useVault();\n const [key, invalidate] = useReducer((i: number) => i + 1, 0);\n\n invariant(resource, \"No resource selected\");\n\n const editor = useMemo(() => {\n return new EditorInstance({\n reference: resource.resource.source || resource.resource,\n vault,\n });\n }, [resource, vault]);\n\n useEffect(() => {\n return editor.observe.start(invalidate);\n }, [editor]);\n\n editor.observe.key = `${key}`;\n editor.observe.reset();\n\n return editor;\n}\n\nexport function EditingStack(props: { children?: any }) {\n const vault = useVault();\n const [state, _dispatch] = useReducer(editingStackReducer, defaultState);\n\n const dispatch = useCallback((action: any) => {\n (() => flushSync(() => _dispatch(action)))();\n }, []);\n\n useEffect(() => {\n return vault.on(\"@iiif/REMOVE_REFERENCE\", (payload: any) => {\n const action = payload.action;\n const parent = { id: action.payload.id, type: action.payload.type };\n const resource = action.payload.reference;\n _dispatch({ type: \"syncRemoval\", payload: { resource: { parent, resource } } });\n });\n }, [vault]);\n\n const edit = useCallback(\n (resource: EditableResource, reset = false) => dispatch({ type: \"edit\", payload: { resource, reset } }),\n []\n );\n\n const updateCurrent = useCallback(\n (resource: EditableResource) => dispatch({ type: \"updateCurrent\", payload: { resource } }),\n []\n );\n\n const close = useCallback(() => dispatch({ type: \"close\" }), []);\n\n const back = useCallback(() => dispatch({ type: \"back\" }), []);\n\n const create = useCallback<EditingStackActions[\"create\"]>((resource, options) => {\n dispatch({ type: \"create\", payload: { resource, options } });\n\n // Returns function when complete.\n return () => {\n dispatch({ type: \"create\", payload: { resource: null } });\n };\n }, []);\n\n const actions: EditingStackActions = useMemo(() => {\n return { edit, updateCurrent, close, back, create };\n }, []);\n\n const { current } = useProjectContext();\n\n return (\n <EditingStackActionsContext.Provider value={actions} key={current?.id}>\n <EditingStackContext.Provider value={state}>{props.children}</EditingStackContext.Provider>\n </EditingStackActionsContext.Provider>\n );\n}\n","import { createContext, useContext, useMemo } from \"react\";\nimport { LayoutActions, LayoutProviderProps, LayoutState } from \"./Layout.types\";\nexport const LayoutPropsReactContext = createContext<LayoutProviderProps & { loading?: true }>(null as any);\nexport const LayoutActionsReactContext = createContext<LayoutActions>(null as any);\nexport const LayoutStateReactContext = createContext<LayoutState>(null as any);\n\nexport function useLayoutState() {\n return useContext(LayoutStateReactContext);\n}\n\nexport function useLayoutActions() {\n return useContext(LayoutActionsReactContext);\n}\n\nexport function useAvailableLayouts() {\n return useContext(LayoutPropsReactContext);\n}\n\nexport function useLayoutProvider(): LayoutProviderProps & {\n loading?: true;\n actions: LayoutActions;\n state: LayoutState;\n} {\n const available = useContext(LayoutPropsReactContext);\n const actions = useContext(LayoutActionsReactContext);\n const state = useContext(LayoutStateReactContext);\n\n return useMemo(() => {\n return { actions, state, ...available };\n\n // The actions have a fully stable identity.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [available, state]);\n}\n","import styled, { css, keyframes } from \"styled-components\";\nimport { MenuPositions } from \"./Layout.types\";\nimport { TransitionStatus } from \"react-transition-group\";\n\nexport const OuterWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n`;\n\nexport const Header = styled.header`\n //box-shadow: 0 3px 2px 0 rgba(0, 0, 0, 0.04), 0 1px 0 0 rgba(0, 0, 0, 0.17);\n z-index: 200;\n`;\n\nexport const Footer = styled.div`\n background: #fff;\n`;\n\nexport const Main = styled.div`\n display: flex;\n flex: 1 1 0;\n min-height: 0;\n`;\n\nexport const LeftPanel = styled.div<{ $state?: TransitionStatus; $width: string; $motion?: boolean }>`\n background: #fff;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n max-width: 720px;\n align-items: flex-end;\n\n ${(props) =>\n props.$motion\n ? css`\n transition: max-width 400ms;\n `\n : \"\"}\n\n ${(props) => {\n switch (props.$state) {\n case \"entering\":\n return css`\n max-width: ${props.$width};\n `;\n case \"exiting\":\n return css`\n max-width: 0;\n `;\n case \"unmounted\":\n case \"exited\":\n return css`\n max-width: 0;\n `;\n }\n }}\n`;\n\nexport const CenterPanel = styled.div`\n flex: 1 1 0;\n background: #e3e7f0;\n // background: #efefef;\n box-shadow: inset 0 3px 2px 0 rgba(0, 0, 0, 0.04), inset 0 1px 0 0 rgba(0, 0, 0, 0.14);\n padding-top: 1px;\n // background: linear-gradient(0deg, rgba(251, 242, 237, 1) 0%, rgba(240, 229, 245, 1) 50%, rgba(236, 245, 255, 1) 100%);\n\n min-width: 320px;\n display: flex;\n\n min-height: 0;\n overflow: hidden;\n\n > * {\n min-width: 0;\n }\n`;\n\nexport const RightPanel = styled.div<{ $state?: TransitionStatus; $width: string; $motion?: boolean }>`\n background: #fff;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n max-width: 720px;\n\n ${(props) => (props.$motion ? \"transition: max-width 400ms;\" : \"\")}\n\n ${(props) => {\n switch (props.$state) {\n case \"entering\":\n return css`\n max-width: ${props.$width};\n `;\n case \"exiting\":\n return css`\n max-width: 0;\n `;\n case \"unmounted\":\n case \"exited\":\n return css`\n max-width: 0;\n `;\n }\n }}\n`;\n\nexport const PanelContainer = styled.div<{ $menu?: MenuPositions }>`\n display: flex;\n flex: 1;\n height: 100%;\n min-width: 50px;\n transition: min-width 400ms;\n overflow: hidden;\n\n ${(props) => {\n switch (props.$menu) {\n case \"top\":\n return css`\n flex-direction: column;\n ${PanelMenu} {\n flex-direction: column;\n }\n `;\n case \"left\":\n return css`\n flex-direction: row;\n ${PanelMenu} {\n flex-direction: row;\n }\n `;\n default:\n case \"bottom\":\n return css`\n flex-direction: column-reverse;\n ${PanelMenu} {\n flex-direction: column;\n }\n `;\n case \"right\":\n return css`\n flex-direction: row-reverse;\n ${PanelMenu} {\n flex-direction: row;\n }\n `;\n }\n }}\n`;\n\nexport const PanelMenu = styled.div<{ $position: \"bottom\" | \"top\" | \"left\" | \"right\"; $open: boolean }>`\n display: flex;\n box-shadow: 0 -3px 2px 0 rgba(0, 0, 0, 0.04), 0 -1px 0 0 rgba(0, 0, 0, 0.17);\n\n ${(props) =>\n !props.$open && (props.$position === \"top\" || props.$position === \"bottom\")\n ? css`\n display: none;\n `\n : \"\"}\n`;\n\nexport const PanelContent = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n`;\n","import * as React from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const StarIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" width=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\" />\n </svg>\n);\n","export const CloseIcon: React.FC<{\n inline?: boolean;\n height?: number;\n className?: string;\n}> = ({ height = 16 }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height={height} viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </svg>\n);\n","export const BackIcon: React.FC = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1rem\" viewBox=\"0 0 24 24\" width=\"1rem\" fill=\"#000000\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n </svg>\n);\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport * as React from 'react';\n\nvar changedArray = function changedArray(a, b) {\n if (a === void 0) {\n a = [];\n }\n\n if (b === void 0) {\n b = [];\n }\n\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\n\nvar initialState = {\n error: null\n};\n\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.state = initialState;\n\n _this.resetErrorBoundary = function () {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.props.onReset == null ? void 0 : (_this$props = _this.props).onReset.apply(_this$props, args);\n\n _this.reset();\n };\n\n return _this;\n }\n\n ErrorBoundary.getDerivedStateFromError = function getDerivedStateFromError(error) {\n return {\n error: error\n };\n };\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.reset = function reset() {\n this.setState(initialState);\n };\n\n _proto.componentDidCatch = function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n\n (_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n\n if (error !== null && prevState.error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) == null ? void 0 : _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n };\n\n _proto.render = function render() {\n var error = this.state.error;\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n\n if ( /*#__PURE__*/React.isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/React.createElement(FallbackComponent, _props);\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nfunction withErrorBoundary(Component, errorBoundaryProps) {\n var Wrapped = function Wrapped(props) {\n return /*#__PURE__*/React.createElement(ErrorBoundary, errorBoundaryProps, /*#__PURE__*/React.createElement(Component, props));\n }; // Format for display in DevTools\n\n\n var name = Component.displayName || Component.name || 'Unknown';\n Wrapped.displayName = \"withErrorBoundary(\" + name + \")\";\n return Wrapped;\n}\n\nfunction useErrorHandler(givenError) {\n var _React$useState = React.useState(null),\n error = _React$useState[0],\n setError = _React$useState[1];\n\n if (givenError != null) throw givenError;\n if (error != null) throw error;\n return setError;\n}\n/*\neslint\n @typescript-eslint/sort-type-union-intersection-members: \"off\",\n @typescript-eslint/no-throw-literal: \"off\",\n @typescript-eslint/prefer-nullish-coalescing: \"off\"\n*/\n\nexport { ErrorBoundary, useErrorHandler, withErrorBoundary };\n","import styled from \"styled-components\";\n\nexport const PaddedSidebarContainer = styled.div`\n padding: 0 0.7em;\n margin: 0.7em 0;\n flex: 1;\n overflow: visible;\n`;\n","import styled from \"styled-components\";\nimport { BaseMessage } from \"./BaseMessage\";\n\nexport const ErrorMessage = styled(BaseMessage)`\n background: #c74158;\n color: #fff;\n`;\n","import styled from \"styled-components\";\nimport { BaseMessage } from \"./BaseMessage\";\n\nexport const ExperimentalMessage = styled(BaseMessage)`\n background: #8a52f5;\n color: #fff;\n`;\n","import * as React from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const ExperimentalIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" width=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n fill=\"currentColor\"\n d=\"M7 20h4c0 1.1-.9 2-2 2s-2-.9-2-2zm-2-1h8v-2H5v2zm11.5-9.5c0 3.82-2.66 5.86-3.77 6.5H5.27c-1.11-.64-3.77-2.68-3.77-6.5C1.5 5.36 4.86 2 9 2s7.5 3.36 7.5 7.5zm4.87-2.13L20 8l1.37.63L22 10l.63-1.37L24 8l-1.37-.63L22 6l-.63 1.37zM19 6l.94-2.06L22 3l-2.06-.94L19 0l-.94 2.06L16 3l2.06.94L19 6z\"\n />\n </svg>\n);\n","export class LimitationError extends Error {}\n\nexport function limitation(condition: any, message?: string | (() => string)): asserts condition {\n if (!condition) {\n throw new LimitationError(message ? (typeof message === \"string\" ? message : message()) : \"\");\n }\n}\n","export class FixMeError extends Error {\n fix: () => void | Promise<void>;\n constructor(message: string, fix: () => void | Promise<void>) {\n super(message);\n this.fix = fix;\n }\n}\n\nexport function fixMe(\n condition: any,\n message: string | (() => string),\n fix: () => void | Promise<void>\n): asserts condition {\n if (!condition) {\n throw new FixMeError(message ? (typeof message === \"string\" ? message : message()) : \"\", fix);\n }\n}\n","import styled from \"styled-components\";\nimport { BaseMessage } from \"./BaseMessage\";\n\nexport const WarningMessage = styled(BaseMessage)`\n background: #e89d3b;\n color: #fff;\n`;\n","import { PaddedSidebarContainer } from \"../../../atoms/PaddedSidebarContainer\";\nimport { ErrorMessage } from \"../../../madoc/components/callouts/ErrorMessage\";\nimport { Button, CalltoButton } from \"../../../atoms/Button\";\nimport { ExperimentalMessage } from \"../../../madoc/components/callouts/ExperimentalMessage\";\nimport { ExperimentalIcon } from \"../../../madoc/components/icons/ExperimentalIcon\";\nimport { LimitationError } from \"../../../helpers/limitation\";\nimport { FixMeError } from \"@/helpers/fix-me\";\nimport { useState } from \"react\";\nimport { WarningMessage } from \"@/madoc/components/callouts/WarningMessage\";\n\nexport function PanelError(props: { error: Error; resetErrorBoundary: () => void }) {\n let error = props.error.toString();\n const [isFixing, setIsFixing] = useState(false);\n\n if (props.error instanceof FixMeError) {\n const errorObject = props.error;\n\n return (\n <PaddedSidebarContainer>\n <WarningMessage $banner>\n <ExperimentalIcon style={{ fontSize: \"2.2em\", margin: \"0 0.3em 0 0\" }} />\n <div>\n <h4 style={{ margin: 0 }}>There is a fixable error</h4>\n <p>{errorObject.message}</p>\n <Button\n disabled={isFixing}\n onClick={async () => {\n setIsFixing(true);\n await errorObject.fix();\n props.resetErrorBoundary();\n setIsFixing(false);\n }}\n >\n Fix error\n </Button>\n </div>\n </WarningMessage>\n </PaddedSidebarContainer>\n );\n }\n\n if (props.error instanceof LimitationError) {\n error = props.error.message;\n\n return (\n <PaddedSidebarContainer>\n <ExperimentalMessage $banner>\n <ExperimentalIcon style={{ fontSize: \"2.2em\", margin: \"0 0.3em 0 0\" }} />\n <div>\n <h4 style={{ margin: 0 }}>The manifest editor is still in development</h4>\n <p>{error}</p>\n </div>\n </ExperimentalMessage>\n </PaddedSidebarContainer>\n );\n }\n\n return (\n <PaddedSidebarContainer>\n <ErrorMessage $margin>{error}</ErrorMessage>\n <CalltoButton onClick={props.resetErrorBoundary}>Try again</CalltoButton>\n </PaddedSidebarContainer>\n );\n}\n","import { PinnablePanelState } from \"./Layout.types\";\nimport { createElement, ReactNode } from \"react\";\n\nexport function isPinnableState(t: unknown): t is PinnablePanelState {\n return t && (t as any).pinnable;\n}\n\nexport function panelSizing({\n initial,\n\n fallback,\n options = {},\n}: {\n initial?: number;\n fallback: number;\n options?: { minWidth?: number; maxWidth?: number };\n}) {\n // panel min width\n // panel max width\n // default width\n // fallback width\n return Math.max(options.minWidth || 0, Math.min(options.maxWidth || Infinity, initial || fallback));\n}\n\nexport function renderHelper(htmlOrReact: string | ReactNode): ReactNode {\n if (typeof htmlOrReact === \"string\") {\n return createElement(\"div\", { dangerouslySetInnerHTML: { __html: htmlOrReact } });\n }\n return htmlOrReact;\n}\n","import * as React from \"react\";\nimport { SVGProps } from \"react\";\n\nexport function ChangeIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" height=\"1em\" width=\"1em\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M12 7.77 18.39 18H5.61L12 7.77M12 4 2 20h20L12 4z\" fill=\"currentColor\" />\n </svg>\n );\n}\n","import { TransitionStatus } from \"react-transition-group\";\nimport { LayoutPanel, PanelActions, PanelState, PinnablePanelActions, PinnablePanelState } from \"../Layout.types\";\nimport styled, { css } from \"styled-components\";\nimport { StarIcon } from \"@/icons/StarIcon\";\nimport { CloseIcon } from \"@/icons/CloseIcon\";\nimport { BackIcon } from \"@/icons/BackIcon\";\nimport { useLayoutProvider } from \"@/shell/Layout/Layout.context\";\nimport { useAppState } from \"@/shell/AppContext/AppContext\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { PanelError } from \"./PanelError\";\nimport { renderHelper } from \"../Layout.helpers\";\nimport { ReactVaultContext } from \"react-iiif-vault\";\nimport { DropdownDivider, DropdownLabel, DropdownMenu, Dropdown, DropdownItem } from \"@/atoms/Dropdown\";\nimport useDropdownMenu from \"react-accessible-dropdown-menu-hook\";\nimport { ChangeIcon } from \"@/icons/ChangeIcon\";\n\ninterface ModularPanelProps {\n panel?: LayoutPanel;\n isLeft?: boolean;\n state: PinnablePanelState | PanelState;\n actions: PanelActions;\n pinActions?: PinnablePanelActions;\n transition?: TransitionStatus;\n close?: () => void;\n available?: LayoutPanel[];\n style?: any;\n}\n\nconst LayoutTitleReactContext = createContext<(title: string) => void>(null as any);\n\nexport function useSetCustomTitle() {\n return useContext(LayoutTitleReactContext);\n}\n\nconst ModularPanelWrapper = styled.div<{ $floating?: boolean; $state?: TransitionStatus; $flipped?: boolean }>`\n display: flex;\n flex-direction: column;\n position: relative;\n height: 100%;\n overflow: hidden;\n transition: transform 300ms;\n\n &[data-floating=\"true\"] {\n margin: 10px;\n border-radius: 5px;\n overflow: hidden;\n background: #fff;\n }\n\n &[data-state=\"entering\"],\n &[data-state=\"entered\"] {\n transform: translateX(0);\n }\n\n &[data-state=\"exiting\"],\n &[data-state=\"exited\"] {\n transform: translateX(100%);\n }\n\n &[data-state=\"exiting\"][data-flipped=\"true\"],\n &[data-state=\"exited\"][data-flipped=\"true\"] {\n transform: translateX(0);\n }\n\n &[data-state=\"exiting\"][data-flipped=\"false\"],\n &[data-state=\"exited\"][data-flipped=\"false\"] {\n transform: translateX(100%);\n }\n\n &[data-state=\"entering\"][data-flipped=\"true\"],\n &[data-state=\"entered\"][data-flipped=\"true\"] {\n transform: translateX(0);\n }\n\n &[data-state=\"entering\"][data-flipped=\"false\"],\n &[data-state=\"entered\"][data-flipped=\"false\"] {\n transform: translateX(100%);\n }\n\n &[data-state=\"unmounted\"] {\n transform: translateX(100%);\n }\n`;\n\nexport const ModularPanelHeader = styled.div<{ $tabs?: boolean; $error?: boolean }>`\n background: #fff;\n display: flex;\n height: 2.8em;\n z-index: 2;\n\n &[data-tabs=\"true\"] {\n box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.17);\n }\n\n &[data-tabs=\"false\"] {\n box-shadow: inset 0 -1px 0 0 rgba(0, 0, 0, 0.17), inset 0 1px 0 0 rgba(0, 0, 0, 0.17);\n }\n\n &[data-error=\"true\"] {\n color: #b61717;\n background: #ffc2d2;\n box-shadow: inset 0 -5px 10px 0 rgba(255, 255, 255, 0.5);\n }\n`;\n\nexport const ModulePanelButton = styled.button`\n border: none;\n background: transparent;\n padding: 0 0.4em;\n margin: 0.3em;\n border-radius: 3px;\n &:hover {\n background: #eee;\n }\n svg {\n font-size: 1.2em;\n }\n`;\n\nconst ModulePanelSpacer = styled.div`\n flex: 1 1 0px;\n`;\n\nconst ModularPanelLabel = styled.h2`\n font-size: 0.875em;\n flex: 1 1 0px;\n padding-left: 1em;\n text-align: center;\n`;\n\nconst ModularPanelContent = styled.div`\n flex: 1 1 0px;\n display: flex;\n\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n\n > * {\n min-width: 0;\n }\n`;\n\nexport function ModularPanel({\n panel,\n state,\n actions,\n isLeft,\n pinActions = actions as any,\n transition,\n close,\n available = [],\n style,\n}: ModularPanelProps) {\n const vault = useContext(ReactVaultContext) || null;\n const [didError, setDidError] = useState(false);\n const appState = useAppState();\n const layout = useLayoutProvider();\n const { tabs, pinnable, hideHeader } = panel?.options || {};\n const resetKeys = [appState.state.canvasId, panel?.id];\n const switchablePanels = useMemo(() => {\n return (available || []).filter((p) => !p.requiresState);\n }, [available]);\n const { itemProps, isOpen, setIsOpen } = useDropdownMenu(switchablePanels.length);\n const [customTitle, setCustomTitle] = useState(\"\");\n const setCustomTitleRef = useRef<(title: string) => void | undefined>();\n\n useEffect(() => setDidError(false), resetKeys);\n\n useEffect(() => setCustomTitle(\"\"), [panel]);\n\n useEffect(() => {\n setCustomTitleRef.current = setCustomTitle;\n return () => {\n setCustomTitleRef.current = undefined;\n };\n }, []);\n\n const _setCustomTitle = useCallback((title: string) => {\n if (setCustomTitleRef.current) {\n setCustomTitleRef.current(title);\n }\n }, []);\n\n const backAction = useCallback(\n (e?: React.MouseEvent) => {\n const originalCallback = panel\n ? state.stack.length\n ? actions.popStack\n : panel.backAction\n ? () => panel && panel.backAction && panel.backAction(state, { ...layout, current: actions }, appState)\n : null\n : null;\n\n if (e && (!originalCallback || e.metaKey) && switchablePanels.length) {\n e.preventDefault();\n setIsOpen(true);\n } else {\n originalCallback && originalCallback();\n }\n },\n [actions, appState, layout, panel, setIsOpen, state, switchablePanels.length]\n );\n\n const menuHandler = (newPanel: LayoutPanel) => {\n actions.change({\n id: newPanel.id,\n state: newPanel.defaultState,\n stacked: !!(state.stack.length || panel?.backAction),\n });\n };\n\n if (!panel || !state.current) {\n return null;\n }\n\n const backButton =\n panel.backAction || state.stack.length ? (\n <ModulePanelButton onClick={backAction}>\n <BackIcon />\n </ModulePanelButton>\n ) : switchablePanels.length ? (\n <ModulePanelButton onClick={backAction}>\n <ChangeIcon style={{ color: \"#999\" }} />\n </ModulePanelButton>\n ) : null;\n\n const closeButton = (\n <ModulePanelButton onClick={close || actions.close}>\n <CloseIcon />\n </ModulePanelButton>\n );\n\n return (\n <LayoutTitleReactContext.Provider value={_setCustomTitle}>\n <ModularPanelWrapper data-state={transition} data-flipped={isLeft} style={style}>\n <ModularPanelHeader data-tabs={!!tabs} data-error={didError}>\n <Dropdown style={{ display: \"flex\", height: \"100%\" }}>\n {panel.renderBackAction ? panel.renderBackAction({ backAction, fallback: backButton }) : backButton}\n {switchablePanels.length ? (\n <DropdownMenu $open={isOpen} style={{ left: \"0.5em\" }}>\n <DropdownLabel>All panels</DropdownLabel>\n <DropdownDivider />\n {switchablePanels.map((newPanel, i) => (\n <DropdownItem\n key={i}\n {...(itemProps as any)[i]}\n onClick={() => menuHandler(newPanel)}\n $active={panel.id === newPanel.id}\n >\n {newPanel.label}\n </DropdownItem>\n ))}\n </DropdownMenu>\n ) : null}\n </Dropdown>\n\n {customTitle ? (\n <ModularPanelLabel>{customTitle}</ModularPanelLabel>\n ) : hideHeader ? (\n <ModulePanelSpacer />\n ) : (\n <ModularPanelLabel>{panel.label}</ModularPanelLabel>\n )}\n {pinnable ? (\n (state as PinnablePanelState).pinned ? (\n <ModulePanelButton onClick={pinActions.unpin}>\n <StarIcon fill=\"orange\" />\n </ModulePanelButton>\n ) : (\n <ModulePanelButton onClick={() => pinActions.pin({ id: panel.id, state: state.state })}>\n <StarIcon fill=\"#ddd\" />\n </ModulePanelButton>\n )\n ) : null}\n {panel.renderCloseAction\n ? panel.renderCloseAction({ closeAction: close || actions.close, fallback: closeButton })\n : closeButton}\n </ModularPanelHeader>\n <ModularPanelContent>\n <ErrorBoundary\n onResetKeysChange={() => setDidError(false)}\n onError={() => setDidError(true)}\n FallbackComponent={PanelError}\n resetKeys={resetKeys}\n onReset={() => setDidError(false)}\n >\n {renderHelper(\n panel.render(\n state.state || panel.defaultState || {},\n { ...layout, current: actions, vault: vault as any, transition },\n appState\n )\n )}\n </ErrorBoundary>\n </ModularPanelContent>\n </ModularPanelWrapper>\n </LayoutTitleReactContext.Provider>\n );\n}\n","import styled, { css } from \"styled-components\";\nimport { ModularPanelHeader } from \"@/shell/Layout/components/ModularPanel\";\n\nexport const Container = styled.div`\n position: relative;\n display: flex;\n flex: 1;\n overflow: hidden;\n flex-direction: column;\n`;\n\nexport const CenterPanel = styled.div`\n flex: 1;\n position: relative;\n z-index: 7;\n`;\n\nexport const MobileBar = styled.div`\n display: flex;\n justify-content: space-around;\n width: 100%;\n background: #fff;\n border-top: 1px solid #cbcbcb;\n padding: 0.5em;\n height: 3.4rem;\n`;\n\nexport const LeftBarButton = styled.button`\n //background: red;\n padding: 0.5em 1em;\n width: 32%;\n\n border-radius: 5px;\n border: none;\n background: #ffffff;\n`;\n\nexport const PreviewBarButton = styled.button`\n padding: 0.5em 1em;\n width: 32%;\n\n border-radius: 5px;\n\n background: #5e59c2;\n border: 1px solid rgba(0, 0, 0, 0.21);\n color: #ffffff;\n`;\n\nexport const DrawerContainer = styled.div`\n position: relative;\n width: 32%;\n margin: 0 0.75em;\n z-index: 9;\n`;\n\nexport const DrawerButton = styled.button`\n padding: 0.4em 1em 0.65em;\n position: absolute;\n width: 100%;\n bottom: 1em;\n background: #ffffff;\n box-shadow: 0 3px 18px 0 rgba(0, 0, 0, 0.04);\n border-radius: 5px;\n border: 1px solid #979797;\n letter-spacing: -0.46px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n svg {\n display: block;\n margin: auto;\n font-size: 1.8em;\n }\n`;\n\nexport const DrawerBody = styled.div<{ $open?: boolean }>`\n background: #fff;\n display: flex;\n position: absolute;\n transform: translateY(100%);\n overflow-y: auto;\n left: 0;\n right: 0;\n top: 7em;\n z-index: 10;\n box-shadow: 0 -5px 15px 0 rgba(0, 0, 0, 0), 0 -3px 5px 0 rgba(0, 0, 0, 0);\n bottom: 0;\n transition: 0.3s transform ease-in-out, 0.3s box-shadow;\n ${(props) =>\n props.$open &&\n css`\n box-shadow: 0 -5px 15px 0 rgba(0, 0, 0, 0.1), 0 -3px 5px 0 rgba(0, 0, 0, 0.1);\n transform: translateY(0);\n `}\n\n ${ModularPanelHeader} {\n box-shadow: none;\n padding-left: 0.5em;\n padding-right: 0.5em;\n font-size: 1.1em;\n }\n`;\n\nexport const LeftPanel = styled.div<{ $open?: boolean }>`\n position: absolute;\n transform: translateX(-100%);\n background: #fff;\n left: 0;\n top: 0;\n bottom: 0;\n z-index: 10;\n overflow-y: auto;\n transition: 0.5s transform;\n ${(props) =>\n props.$open &&\n css`\n transform: translateX(0);\n `}\n`;\n\nexport const Lightbox = styled.div<{ $open?: boolean }>`\n background: rgba(0, 0, 0, 0.4);\n pointer-events: none;\n position: absolute;\n z-index: 8;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n opacity: 0;\n transition: opacity 0.5s;\n\n ${(props) =>\n props.$open &&\n css`\n pointer-events: visible;\n opacity: 1;\n `}\n`;\n","import * as React from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const ResetIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" width=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8zM6 13c0-1.65.67-3.15 1.76-4.24L6.34 7.34A8.014 8.014 0 0 0 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91z\" />\n </svg>\n);\n","import styled, { css } from \"styled-components\";\nimport { CloseIcon } from \"../../../icons/CloseIcon\";\nimport { PanelActions } from \"../Layout.types\";\nimport { forwardRef } from \"react\";\nimport { ResetIcon } from \"../../../icons/ResetIcon\";\nimport { DownIcon } from \"../../../icons/DownIcon\";\nimport { ButtonReset } from \"../../../atoms/Button\";\nimport { TransitionStatus } from \"react-transition-group\";\n\nexport const HandleContainer = styled.div`\n position: relative;\n width: 1px;\n background: rgba(0, 0, 0, 0.2);\n z-index: 50;\n`;\n\nconst HandleControl = styled(ButtonReset)`\n transition: opacity 300ms, transform 300ms;\n margin-block-start: 0.2em;\n margin-block-end: 0.2em;\n user-select: none;\n opacity: 0;\n transform: scaleY(70%);\n &:focus {\n outline: 2px solid salmon;\n }\n`;\n\nconst ResizeHandle = styled(HandleControl)`\n position: relative;\n background: #fff;\n height: 40px;\n width: 15px;\n border-radius: 3px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\n user-select: none;\n`;\n\nconst IconControl = styled(HandleControl)`\n background: #fff;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\n cursor: default;\n\n svg {\n fill: #9999;\n }\n`;\n\nconst OpenControl = styled(HandleControl)<{ $dir: \"left\" | \"right\" }>`\n position: relative;\n display: flex;\n opacity: 1;\n background: #fff;\n height: 55px;\n pointer-events: visible;\n width: 21px;\n margin-bottom: auto;\n margin-top: 4.5em;\n cursor: pointer;\n border-radius: ${(props) => (props.$dir === \"right\" ? \"5px 0 0 5px\" : \"0 5px 5px 0\")};\n\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.2);\n transform: scaleX(100%);\n transform-origin: ${(props) => (props.$dir === \"right\" ? \"right\" : \"left\")};\n\n &:hover {\n background: #f9f9f9;\n transform: scaleX(125%);\n }\n\n svg {\n font-size: 1.5em;\n }\n`;\n\nconst InnerHandleContainer = styled.div<{ $open: boolean; $dir: \"left\" | \"right\" }>`\n background: rgba(0, 0, 0, 0);\n position: absolute;\n width: 21px;\n left: ${(props) => (props.$open ? \"-10px\" : props.$dir === \"left\" ? 0 : \"-20px\")};\n top: 0;\n bottom: 0;\n z-index: 50; // This will always be quite high.\n transition: background-color 300ms, transform 300ms;\n transform: scaleX(70%);\n\n cursor: ${(props) => (props.$open ? \"col-resize\" : \"pointer\")};\n\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n &:hover {\n transform: scaleX(100%);\n background: rgba(0, 0, 0, 0.1);\n ${HandleControl} {\n transform: scaleX(100%);\n opacity: 1;\n }\n }\n`;\n\nconst UnscaledContainer = styled.div<{ $open: boolean; $dir: \"left\" | \"right\" }>`\n background: rgba(0, 0, 0, 0);\n position: absolute;\n pointer-events: none;\n width: 21px;\n left: ${(props) => (props.$open ? \"-10px\" : props.$dir === \"left\" ? 0 : \"-20px\")};\n top: 0;\n bottom: 0;\n z-index: 51; // This will always be quite high.\n`;\n\nexport const HandleControls = forwardRef<\n HTMLDivElement,\n {\n dir: \"left\" | \"right\";\n open: boolean;\n actions: PanelActions;\n transition?: TransitionStatus;\n reset?: () => void;\n }\n>(function HandleControls({ dir, open, actions, reset }, ref) {\n return (\n <HandleContainer onClick={() => actions.open()}>\n <UnscaledContainer $open={open} $dir={dir}>\n {!open ? (\n <OpenControl\n $dir={dir}\n onClick={(e) => {\n e.stopPropagation();\n actions.open();\n }}\n >\n <DownIcon rotate={dir === \"right\" ? 90 : 270} />\n </OpenControl>\n ) : null}\n </UnscaledContainer>\n <InnerHandleContainer ref={ref} $open={open} $dir={dir}>\n {open ? (\n <IconControl\n onClick={(e) => {\n e.stopPropagation();\n actions.close();\n }}\n >\n <CloseIcon />\n </IconControl>\n ) : null}\n {reset && open ? (\n <IconControl\n onClick={(e) => {\n e.stopPropagation();\n reset();\n }}\n >\n <ResetIcon />\n </IconControl>\n ) : null}\n {open ? <ResizeHandle /> : null}\n </InnerHandleContainer>\n </HandleContainer>\n );\n});\n","import { useLayoutEffect } from \"react\";\n\nexport function useEventHandler(ref: any, name: string, callback: (e: any) => void, deps: any[] = []) {\n useLayoutEffect(() => {\n const current = ref.current;\n if (current) {\n current.addEventListener(name, callback);\n\n return () => {\n current.removeEventListener(name, callback);\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [name, ...deps]);\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { useEventHandler } from \"./use-event-handler\";\nimport { useLocalStorage } from \"./use-local-storage\";\nimport { panelSizing } from \"@/shell/Layout/Layout.helpers\";\n\nfunction distance(x1: number, y1: number, x2: number, y2: number) {\n return Math.sqrt(Math.pow(Math.abs(x2 - x1), 2) + Math.pow(Math.abs(y2 - y1), 2));\n}\n\nfunction getMaxWidthPct(container: number, defaultMaxWidthPct: number, maxWidthPct?: number, maxWidthPixel?: number) {\n if (maxWidthPct) {\n return maxWidthPct;\n }\n\n if (maxWidthPixel) {\n return maxWidthPixel / container;\n }\n\n return defaultMaxWidthPct;\n}\n\nexport function useResizeLayout(\n name: string,\n options: {\n left?: boolean;\n widthA?: any;\n widthB?: any;\n maxWidthPx?: number;\n maxWidthPct?: number;\n minWidthPx?: number;\n minWidthPct?: number;\n onDragEnd?: () => void;\n loading?: boolean;\n } = {}\n) {\n const container = useRef<HTMLDivElement | null>(null);\n const resizableDiv = useRef<HTMLDivElement | null>(null);\n const otherDiv = useRef<HTMLDivElement | null>(null);\n const resizer = useRef<HTMLDivElement | null>(null);\n const newPct = useRef(0.5);\n const [isDragging, setIsDragging] = useState(false);\n const isEventDragging = useRef(false);\n const isEventTimeout = useRef<number>(0);\n const startPos = useRef({ x: 0, y: 0 });\n const [{ widthA, widthB }, setWidths] = useLocalStorage(`resize-layout/${name}`, {\n widthA: \"auto\",\n widthB: `${panelSizing({\n initial: options.widthA,\n fallback: 320,\n options: { minWidth: options.minWidthPx, maxWidth: options.maxWidthPx },\n })}px`,\n });\n const { loading = false } = options;\n\n useEventHandler(\n resizer,\n \"mousedown\",\n (e) => {\n startPos.current.x = e.pageX;\n startPos.current.y = e.pageY;\n if (isEventTimeout.current) {\n clearTimeout(isEventTimeout.current);\n isEventTimeout.current = 0;\n }\n isEventTimeout.current = setTimeout(() => {\n setIsDragging(true);\n isEventDragging.current = true;\n }, 350) as any;\n },\n [loading]\n );\n\n useEventHandler(\n { current: typeof window !== \"undefined\" ? window : undefined },\n \"mouseup\",\n () => {\n const current = container.current;\n if (current && isEventDragging.current) {\n const { x, width } = current.getBoundingClientRect();\n\n const maxWidthPct = getMaxWidthPct(width, 0.8, options.maxWidthPct, options.maxWidthPx) * width;\n const minWidthPct = getMaxWidthPct(width, 0.2, options.minWidthPct, options.minWidthPx) * width;\n\n if (options.left) {\n const newWidthB = newPct.current * width;\n\n setWidths({\n widthA: `${(1 - newPct.current) * width}`,\n widthB: `${newWidthB > maxWidthPct ? maxWidthPct : newWidthB < minWidthPct ? minWidthPct : newWidthB}px`,\n });\n } else {\n const newWidthA = 1 - newPct.current * width;\n\n setWidths({\n widthA: `${newWidthA > maxWidthPct ? maxWidthPct : newWidthA < minWidthPct ? minWidthPct : newWidthA}px`,\n widthB: `${newPct.current * width}px`,\n });\n }\n\n setIsDragging(false);\n isEventDragging.current = false;\n if (options.onDragEnd) {\n options.onDragEnd();\n }\n }\n\n clearTimeout(isEventTimeout.current);\n isEventTimeout.current = 0;\n },\n [loading]\n );\n\n useEventHandler(\n container,\n \"mousemove\",\n (e) => {\n if (!isEventDragging.current && isEventTimeout.current) {\n if (distance(startPos.current.x, startPos.current.y, e.pageX, e.pageY) > 20) {\n setIsDragging(true);\n isEventDragging.current = true;\n clearTimeout(isEventTimeout.current);\n isEventTimeout.current = 0;\n }\n }\n\n if (isEventDragging.current && resizableDiv.current) {\n const current = container.current;\n if (current) {\n const { x, width } = current.getBoundingClientRect();\n\n const isLeft = options.left || false;\n\n const maxWidthPct = getMaxWidthPct(width, 0.8, options.maxWidthPct, options.maxWidthPx);\n const minWidthPct = getMaxWidthPct(width, 0.2, options.minWidthPct, options.minWidthPx);\n\n newPct.current = (width + x - e.pageX - 5) / width;\n if (isLeft) {\n newPct.current = 1 - newPct.current;\n }\n newPct.current = newPct.current < minWidthPct ? minWidthPct : newPct.current;\n newPct.current = newPct.current > maxWidthPct ? maxWidthPct : newPct.current;\n\n resizableDiv.current.style.width = `${newPct.current * width}px`;\n }\n }\n },\n [isDragging, loading]\n );\n\n return {\n refs: {\n container,\n resizer,\n resizableDiv,\n otherDiv,\n },\n setWidths,\n isDragging,\n widthA,\n widthB,\n };\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","import { useState, useLayoutEffect } from 'react';\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nfunction useMatchMedia(queries) {\n var defaultValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var initialValues = defaultValues.length ? defaultValues : Array(queries.length).fill(false);\n if (typeof window === 'undefined') return initialValues;\n var mediaQueryLists = queries.map(function (q) {\n return window.matchMedia(q);\n });\n\n var getValue = function getValue() {\n // Return the value for the given queries\n var matchedQueries = mediaQueryLists.map(function (mql) {\n return mql.matches;\n });\n return matchedQueries;\n }; // State and setter for matched value\n\n\n var _useState = useState(getValue),\n _useState2 = _slicedToArray(_useState, 2),\n value = _useState2[0],\n setValue = _useState2[1];\n\n useLayoutEffect(function () {\n // Event listener callback\n // Note: By defining getValue outside of useEffect we ensure that it has ...\n // ... current values of hook args (as this hook only runs on mount/dismount).\n var handler = function handler() {\n return setValue(getValue);\n }; // Set a listener for each media query with above handler as callback.\n\n\n mediaQueryLists.forEach(function (mql) {\n return mql.addListener(handler);\n }); // Remove listeners on cleanup\n\n return function () {\n return mediaQueryLists.forEach(function (mql) {\n return mql.removeListener(handler);\n });\n };\n }, []);\n return value;\n}\n\nexport default useMatchMedia;\n","import * as React from \"react\";\n\nexport function Spinner(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\" {...props}>\n <g transform=\"translate(2 2)\" strokeWidth={5} fill=\"none\" fillRule=\"evenodd\">\n <circle strokeOpacity={0.5} cx={18} cy={18} r={18} />\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </svg>\n );\n}\n","import { scss as css } from \"@acab/ecsstatic\";\n\nexport const ghostLoadingBlock = css`\n &[data-header=\"true\"] {\n box-shadow: inset 0 -1px 0 0 rgba(0, 0, 0, 0.17), inset 0 1px 0 0 rgba(0, 0, 0, 0.17);\n }\n\n display: block;\n width: 100%;\n height: 2.8em;\n margin-bottom: 1em;\n background-color: #e4e7f0;\n animation: ghost-loading 2s infinite ease-in-out;\n @keyframes ghost-loading {\n 0% {\n opacity: 0.4;\n }\n 50% {\n opacity: 0.8;\n }\n 100% {\n opacity: 0.4;\n }\n }\n`;\n\nexport const ghostBlockList = css`\n padding: 1em;\n display: flex;\n flex-direction: column;\n`;\n","import { ghostLoadingBlock, ghostBlockList } from \"./GhostBlocks.styles\";\nexport function GhostBlocks() {\n return (\n <>\n <div data-header=\"true\" className={ghostLoadingBlock} />\n <div className={ghostBlockList}>\n <div className={ghostLoadingBlock} />\n <div className={ghostLoadingBlock} />\n <div className={ghostLoadingBlock} />\n <div className={ghostLoadingBlock} />\n </div>\n </>\n );\n}\n","import { LayoutProps, useEditingStack } from \"@/shell\";\nimport { ReactNode, useEffect } from \"react\";\n\nexport function MiniEditor(props: LayoutProps[\"miniEditor\"] & { children: ReactNode }) {\n const { edit } = useEditingStack();\n\n useEffect(() => {\n if (props.resource) {\n edit(props.resource);\n }\n }, [props.resource]);\n\n return <div>{props.children}</div>;\n}\n","import { LayoutProps } from \"./Layout.types\";\nimport { useLayoutProvider } from \"./Layout.context\";\nimport { memo, useContext, useEffect, useLayoutEffect } from \"react\";\nimport * as L from \"./Layout.styles\";\nimport * as M from \"./Layout.mobile\";\nimport { ModularPanel } from \"./components/ModularPanel\";\nimport { HandleControls } from \"./components/HandleControls\";\nimport { useResizeLayout } from \"@/madoc/use-resize-layouts\";\nimport equal from \"shallowequal\";\nimport { useAppState, useProjectLoading } from \"@/shell\";\nimport { panelSizing, renderHelper } from \"./Layout.helpers\";\nimport { ReactVaultContext } from \"react-iiif-vault\";\nimport { Transition, TransitionStatus } from \"react-transition-group\";\nimport useMatchMedia from \"use-match-media-hook\";\nimport { DownIcon } from \"@/icons/DownIcon\";\nimport { Spinner } from \"@/madoc/components/icons/Spinner\";\nimport { GhostBlocks } from \"@/_components/ui/GhostBlocks/GhostBlocks\";\nimport { MiniEditor } from \"@/shell/Layout/components/MiniEditor\";\n\nexport const Layout = memo(function Layout(props: LayoutProps) {\n const status = useProjectLoading();\n const layout = useLayoutProvider();\n const appState = useAppState();\n const { vault: _vault } = useContext(ReactVaultContext);\n const vault = _vault || undefined;\n const { loading, state, leftPanels, centerPanels, rightPanels, actions } = layout;\n const leftPanel = leftPanels.find((panel) => panel.id === state.leftPanel.current);\n const rightPanel = rightPanels.find((panel) => panel.id === state.rightPanel.current);\n const centerPanel = centerPanels.find((panel) => panel.id === state.centerPanel.current);\n const enableMotion = true;\n const pinnedRightPanel = state.pinnedRightPanel.pinned\n ? rightPanels.find((panel) => panel.id === state.pinnedRightPanel.current)\n : undefined;\n const [mobile] = useMatchMedia([\"(max-width: 1020px)\"]);\n\n // Resizers\n const leftPanelResizer = useResizeLayout(`left-panel/${leftPanel?.id}`, {\n left: true,\n minWidthPx: leftPanel?.options?.minWidth || 200,\n maxWidthPx: leftPanel?.options?.maxWidth || 720,\n loading,\n });\n const rightPanelResizer = useResizeLayout(`right-panel/${rightPanel?.id}`, {\n left: false,\n minWidthPx: rightPanel?.options?.minWidth || 320,\n maxWidthPx: rightPanel?.options?.maxWidth || 720,\n loading,\n });\n\n const isProjectLoading = status.isLoading && props.isProject;\n\n // Pinned state\n const showRightPanel =\n rightPanel &&\n (pinnedRightPanel?.id !== rightPanel.id || !equal(state.pinnedRightPanel.state, state.rightPanel.state));\n const resetLeftPanel =\n leftPanelResizer.widthB !== \"auto\"\n ? () =>\n leftPanelResizer.setWidths({\n widthA: \"auto\",\n widthB: panelSizing({\n options: leftPanel?.options,\n fallback: 320,\n }),\n } as any)\n : undefined;\n const resetRightPanel =\n rightPanelResizer.widthB !== \"auto\"\n ? () =>\n rightPanelResizer.setWidths({\n widthA: \"auto\",\n widthB: panelSizing({\n options: rightPanel?.options,\n fallback: 320,\n }),\n } as any)\n : undefined;\n\n useEffect(() => {\n // @todo to enable dynamic layouts, we need this effect to run IF the props change.\n actions.setAvailable(props);\n props.rightPanels.length && actions.rightPanel.change({ id: props.rightPanels[0].id });\n props.leftPanels.length && actions.leftPanel.change({ id: props.leftPanels[0].id });\n props.centerPanels.length && actions.centerPanel.change({ id: props.centerPanels[0].id });\n\n // actions are stable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useLayoutEffect(() => {\n if (mobile && state.leftPanel.open && state.rightPanel.open) {\n actions.leftPanel.close();\n actions.rightPanel.close();\n }\n }, [mobile]);\n\n useLayoutEffect(() => {\n if (centerPanel && centerPanel.onMount) {\n return centerPanel.onMount(\n state.centerPanel.state || centerPanel.defaultState || {},\n { ...layout, current: actions.centerPanel, vault: vault as any },\n appState\n );\n }\n }, [state.centerPanel.current]);\n\n if (loading) {\n // It will render as soon as possible, downside of hoisting the layout provider\n // Unlikely this will be hit because of flushSync, but best to check.\n return null;\n }\n\n // Build our panels here.\n\n const renderLeftPanel = (transition?: TransitionStatus) => (\n <L.PanelContainer\n $menu={props.leftPanelMenuPosition || \"bottom\"}\n ref={leftPanelResizer.refs.resizableDiv}\n className={transition && enableMotion ? `transition transition-${transition}` : \"\"}\n style={{\n width: state.leftPanel.open || transition !== \"exited\" ? leftPanelResizer.widthB : undefined,\n minWidth: leftPanel?.options?.minWidth,\n }}\n >\n {isProjectLoading ? (\n <L.PanelContent>\n <GhostBlocks />\n </L.PanelContent>\n ) : (\n <>\n {props.leftPanelMenu ? (\n <L.PanelMenu\n $open={state.leftPanel.open && transition !== \"exited\"}\n $position={props.leftPanelMenuPosition || \"bottom\"}\n >\n {props.leftPanelMenu}\n </L.PanelMenu>\n ) : null}\n <L.PanelContent>\n {state.leftPanel.open || transition !== \"exited\" ? (\n <>\n {leftPanel ? (\n <ModularPanel\n isLeft\n transition={transition}\n panel={leftPanel}\n state={state.leftPanel}\n actions={actions.leftPanel}\n available={leftPanels}\n />\n ) : null}\n </>\n ) : null}\n </L.PanelContent>\n </>\n )}\n </L.PanelContainer>\n );\n\n const renderCenterPanel = () => (\n <L.PanelContainer $menu={props.centerPanelMenuPosition || \"top\"}>\n {props.centerPanelMenu ? (\n <L.PanelMenu $open={state.centerPanel.open} $position={props.centerPanelMenuPosition || \"top\"}>\n {props.centerPanelMenu}\n </L.PanelMenu>\n ) : null}\n <L.PanelContent>\n {isProjectLoading ? (\n <div style={{ display: \"flex\", flex: 1, justifyContent: \"center\", alignItems: \"center\" }}>\n <Spinner stroke=\"rgba(0,0,0,.3)\" fontSize={\"2em\"} />\n </div>\n ) : state.centerPanel.open ? (\n centerPanel ? (\n renderHelper(\n centerPanel.render(\n state.centerPanel.state || centerPanel.defaultState || {},\n { ...layout, current: actions.centerPanel, vault: vault },\n appState\n )\n )\n ) : null\n ) : null}\n </L.PanelContent>\n </L.PanelContainer>\n );\n\n const renderRightPanel = (transition?: TransitionStatus) => (\n <L.PanelContainer\n $menu={props.rightPanelMenuPosition || \"bottom\"}\n ref={rightPanelResizer.refs.resizableDiv}\n className={transition && enableMotion ? `transition transition-${transition}` : \"\"}\n style={{\n width: state.rightPanel.open || transition !== \"exited\" ? rightPanelResizer.widthB : undefined,\n minWidth: rightPanel?.options?.minWidth,\n }}\n >\n {isProjectLoading ? (\n <L.PanelContent>\n <GhostBlocks />\n </L.PanelContent>\n ) : (\n <>\n {props.rightPanelMenu ? (\n <L.PanelMenu $open={state.rightPanel.open} $position={props.rightPanelMenuPosition || \"bottom\"}>\n {props.rightPanelMenu}\n </L.PanelMenu>\n ) : null}\n <L.PanelContent>\n {state.rightPanel.open || transition !== \"exited\" ? (\n <>\n {showRightPanel ? (\n <ModularPanel\n panel={rightPanel}\n state={state.rightPanel}\n actions={actions.rightPanel}\n pinActions={actions.pinnedRightPanel}\n available={rightPanels}\n />\n ) : null}\n\n {pinnedRightPanel ? (\n <ModularPanel\n panel={pinnedRightPanel}\n state={state.pinnedRightPanel}\n actions={actions.pinnedRightPanel}\n close={actions.rightPanel.close}\n />\n ) : null}\n </>\n ) : null}\n </L.PanelContent>\n </>\n )}\n </L.PanelContainer>\n );\n\n if (props.miniEditor) {\n return <MiniEditor {...props.miniEditor}>{renderRightPanel()}</MiniEditor>;\n }\n\n if (mobile) {\n return (\n <L.OuterWrapper>\n {props.hideHeader ? null : (\n <L.Header>\n {props.header || null}\n {props.menu ? <menu>{props.menu}</menu> : null}\n </L.Header>\n )}\n <L.Main>\n <M.Container>\n <M.CenterPanel>{renderCenterPanel()}</M.CenterPanel>\n <M.MobileBar>\n {props.leftPanels.length > 0 ? (\n <M.LeftBarButton onClick={actions.leftPanel.toggle}>{leftPanel?.label}</M.LeftBarButton>\n ) : null}\n {props.rightPanels.length > 0 ? (\n <M.DrawerContainer>\n <M.DrawerButton onClick={actions.rightPanel.toggle}>\n <DownIcon rotate={180} />\n {rightPanel?.label}\n </M.DrawerButton>\n </M.DrawerContainer>\n ) : null}\n <M.PreviewBarButton>Preview</M.PreviewBarButton>\n </M.MobileBar>\n {props.rightPanels.length > 0 ? (\n <M.DrawerBody $open={state.rightPanel.open}>{renderRightPanel()}</M.DrawerBody>\n ) : null}\n {props.leftPanels.length > 0 ? (\n <M.LeftPanel $open={state.leftPanel.open}>{renderLeftPanel()}</M.LeftPanel>\n ) : null}\n {props.leftPanels.length > 0 || props.rightPanels.length > 0 ? (\n <M.Lightbox\n $open={state.leftPanel.open || state.rightPanel.open}\n onClick={() => {\n actions.leftPanel.close();\n actions.rightPanel.close();\n }}\n />\n ) : null}\n </M.Container>\n </L.Main>\n </L.OuterWrapper>\n );\n }\n\n // This is a big ol' work in progress.\n return (\n <L.OuterWrapper className={props.className}>\n {props.hideHeader ? null : (\n <L.Header>\n {props.header || null}\n {props.menu ? <menu>{props.menu}</menu> : null}\n </L.Header>\n )}\n <L.Main\n ref={(div) => {\n leftPanelResizer.refs.container.current = div;\n rightPanelResizer.refs.container.current = div;\n }}\n >\n {props.leftPanels.length > 0 ? (\n <Transition in={state.leftPanel.open} timeout={enableMotion ? 400 : 0} unmountOnExit={false}>\n {(transition) => (\n <>\n <L.LeftPanel $width={leftPanelResizer.widthB} $state={transition} $motion={enableMotion}>\n {renderLeftPanel(transition)}\n </L.LeftPanel>\n <HandleControls\n ref={leftPanelResizer.refs.resizer}\n reset={resetLeftPanel}\n dir=\"left\"\n transition={transition}\n open={state.leftPanel.open || transition !== \"exited\"}\n actions={actions.leftPanel}\n />\n </>\n )}\n </Transition>\n ) : null}\n <L.CenterPanel>{renderCenterPanel()}</L.CenterPanel>\n {props.rightPanels.length > 0 ? (\n <Transition in={state.rightPanel.open} timeout={enableMotion ? 400 : 0} unmountOnExit={false}>\n {(transition) => (\n <>\n <HandleControls\n ref={rightPanelResizer.refs.resizer}\n dir=\"right\"\n reset={resetRightPanel}\n open={state.rightPanel.open}\n actions={actions.rightPanel}\n />\n <L.RightPanel $width={rightPanelResizer.widthB} $state={transition} $motion={enableMotion}>\n {renderRightPanel(transition)}\n </L.RightPanel>\n </>\n )}\n </Transition>\n ) : null}\n </L.Main>\n <L.Footer>{props.footer || null}</L.Footer>\n </L.OuterWrapper>\n );\n});\n","import produce, { Draft, original } from \"immer\";\nimport { LayoutState, PanelActionType, PanelState, PinnablePanelState } from \"./Layout.types\";\nimport { isPinnableState } from \"./Layout.helpers\";\n\nfunction pushStack<T>(\n state: Draft<PinnablePanelState | PanelState>,\n action: T extends { payload: { stacked?: boolean; unique?: boolean } } ? T : never\n) {\n if (action.payload && action.payload.stacked) {\n if (state.current) {\n const latest = state.stack[state.stack.length - 1];\n if (latest && latest.id === state.current) {\n return;\n }\n\n if (action.payload.unique) {\n state.stack = state.stack.filter((i) => i.id !== state.current);\n }\n\n state.stack.push({\n id: state.current,\n state: state.state ? { ...original(state.state) } : {},\n });\n }\n } else {\n state.stack = [];\n }\n}\n\nfunction panelReducer(state: Draft<PinnablePanelState | PanelState>, action: PanelActionType) {\n switch (action.type) {\n case \"popStack\": {\n if (state.stack.length) {\n const latest = state.stack[state.stack.length - 1];\n if (latest) {\n state.current = latest.id;\n state.state = latest.state;\n }\n state.stack = state.stack.slice(0, -1);\n }\n break;\n }\n\n case \"change\": {\n if (action.payload.id !== state.current) {\n pushStack(state, action);\n }\n state.state = action.payload.state;\n state.current = action.payload.id;\n break;\n }\n case \"close\": {\n state.open = false;\n break;\n }\n case \"open\": {\n state.open = true;\n if (action.payload) {\n if (action.payload.id !== state.current) {\n pushStack<any>(state, action);\n }\n state.state = action.payload.state;\n state.current = action.payload.id;\n }\n break;\n }\n case \"toggle\": {\n state.open = !state.open;\n break;\n }\n case \"maximise\": {\n state.minimised = false;\n if (action.payload) {\n state.state = action.payload.state;\n state.current = action.payload.id;\n }\n break;\n }\n case \"minimise\": {\n state.minimised = true;\n break;\n }\n case \"setCustomWidth\": {\n state.customWidth = action.payload;\n break;\n }\n case \"resetSize\": {\n state.customWidth = undefined;\n }\n }\n\n if (isPinnableState(state)) {\n switch (action.type) {\n case \"pin\": {\n state.pinned = true;\n state.state = action.payload.state;\n state.current = action.payload.id;\n break;\n }\n case \"unpin\": {\n state.pinned = false;\n state.state = undefined;\n break;\n }\n }\n }\n}\n\nexport const layoutReducer = produce<LayoutState, [PanelActionType]>((state, action: PanelActionType) => {\n switch (action.panel) {\n case \"centerPanel\": {\n panelReducer(state.centerPanel, action);\n break;\n }\n case \"leftPanel\": {\n panelReducer(state.leftPanel, action);\n break;\n }\n case \"rightPanel\": {\n panelReducer(state.rightPanel, action);\n break;\n }\n case \"pinnedRightPanel\": {\n panelReducer(state.pinnedRightPanel, action);\n break;\n }\n }\n});\n\nexport function getDefaultPanelState(): PanelState {\n return {\n customWidth: undefined,\n minimised: false,\n open: true,\n current: null,\n state: null,\n stack: [],\n };\n}\n\nexport function getDefaultLayoutState(): LayoutState {\n return {\n leftPanel: getDefaultPanelState(),\n centerPanel: getDefaultPanelState(),\n rightPanel: getDefaultPanelState(),\n pinnedRightPanel: {\n ...getDefaultPanelState(),\n pinnable: true,\n pinned: false,\n },\n };\n}\n","import { LayoutState, PanelActions, PanelActionType, PinnablePanelActions } from \"./Layout.types\";\nimport { Dispatch, useMemo } from \"react\";\nexport function usePanelActions(\n panel: keyof LayoutState,\n dispatch: Dispatch<PanelActionType>\n): PanelActions | PinnablePanelActions {\n function popStack() {\n dispatch({ type: \"popStack\", panel, payload: undefined });\n }\n function change(payload: { id: string; state?: any; stacked?: boolean }) {\n // flushSync(() => {\n dispatch({ type: \"change\", panel, payload });\n // });\n }\n function open(payload?: { id: string; state?: any; stacked?: boolean }) {\n // flushSync(() => {\n dispatch({ type: \"open\", panel, payload });\n // });\n }\n function close() {\n dispatch({ type: \"close\", panel, payload: undefined });\n }\n function toggle() {\n dispatch({ type: \"toggle\", panel, payload: undefined });\n }\n function minimise() {\n dispatch({ type: \"minimise\", panel, payload: undefined });\n }\n function maximise(payload?: { id: string; state?: any }) {\n dispatch({ type: \"maximise\", panel, payload });\n }\n function setCustomWidth(payload: number) {\n dispatch({ type: \"setCustomWidth\", panel, payload });\n }\n function resetSize() {\n dispatch({ type: \"resetSize\", panel, payload: undefined });\n }\n function pin(payload: { id: string; state?: any }) {\n dispatch({ type: \"pin\", panel, payload });\n }\n function unpin() {\n dispatch({ type: \"unpin\", panel, payload: undefined });\n }\n\n return useMemo(\n () => ({\n popStack,\n change,\n open,\n close,\n toggle,\n minimise,\n maximise,\n setCustomWidth,\n resetSize,\n pin,\n unpin,\n }),\n // Dispatch is stable here.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n}\n","import{useMemo as n,useRef as t,useLayoutEffect as e}from\"react\";import{unstable_batchedUpdates as l}from\"react-dom\";function u(u){return function(r,...o){const c=function(n){const l=t(n);return e((()=>{l.current=n})),l}(r);return n((()=>u(((...n)=>{l((()=>{c.current(...n)}))}),...o)),[c,...o])}}const r=n=>\"number\"==typeof n,o=u(((n,t)=>{let e=null;const l=()=>{r(e)&&(clearTimeout(e),e=null)},u=(...u)=>{l(),e=window.setTimeout((()=>{n.apply(null,u),e=null}),t)};return u.cancel=l,u})),c=u(((n,t)=>{let e=null;const l=(...l)=>{r(e)||(e=window.setTimeout((()=>{n.apply(null,l),e=null}),t))};return l.cancel=()=>{r(e)&&(clearTimeout(e),e=null)},l}));export{u as createDebounceHook,o as useDebounce,o as useDebouncedCallback,c as useThrottle,c as useThrottledCallback};\n","import { ManifestNormalized } from \"@iiif/presentation-3-normalized\";\n\nexport async function getManifestNomalized(id: string): Promise<ManifestNormalized | undefined> {\n let responseData: ManifestNormalized | undefined = undefined;\n try {\n await fetch(id)\n .then((response) => {\n return response.json().catch((err) => {\n console.error(`'${err}' happened!`);\n });\n })\n .then((data) => {\n responseData = { ...data };\n });\n } catch (error) {\n console.log(error);\n }\n return responseData;\n}\n","import { Manifest } from \"@iiif/presentation-3\";\nimport { getValue } from \"@iiif/vault-helpers\";\nimport slugify from \"slugify\";\nimport { v4 } from \"uuid\";\nimport { EditorProject } from \"../ProjectContext.types\";\nimport { ManifestStorage } from \"../types/Storage\";\n\nexport function projectFromManifest(manifest: Manifest, details: Partial<EditorProject> = {}): EditorProject {\n const name = getValue(manifest.label) || \"Untitled manifest\";\n\n return {\n id: `manifest-editor://project/${v4()}`,\n filename: slugify(name, { lower: true }),\n name,\n metadata: {\n created: Date.now(),\n modified: Date.now(),\n },\n resource: {\n id: manifest.id,\n type: \"Manifest\",\n },\n publications: [],\n previews: [],\n settings: {},\n storage: {\n type: \"manifest-storage\",\n data: manifest,\n } as ManifestStorage,\n ...details,\n };\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst types = [\n \"sc:Collection\",\n \"sc:Manifest\",\n \"sc:Canvas\",\n \"sc:AnnotationList\",\n \"oa:Annotation\",\n \"sc:Range\",\n \"sc:Layer\",\n \"sc:Sequence\",\n \"oa:Choice\",\n \"Service\",\n \"ContentResource\"\n];\nfunction identifyResource(resource) {\n if (typeof resource === \"undefined\" || resource === null) {\n throw new Error(\"Null or undefined is not a valid entity.\");\n }\n if (Array.isArray(resource)) {\n throw new Error(\"Array is not a valid entity\");\n }\n if (typeof resource !== \"object\") {\n throw new Error(`${typeof resource} is not a valid entity`);\n }\n if (typeof resource[\"@type\"] === \"string\") {\n const hasType = types.indexOf(resource[\"@type\"]);\n if (hasType !== -1) {\n return types[hasType];\n }\n }\n if (resource.profile) {\n return \"Service\";\n }\n if (resource.format) {\n return \"ContentResource\";\n }\n if (resource[\"@type\"]) {\n return \"ContentResource\";\n }\n throw new Error(\"Resource type is not known\");\n}\nclass Traverse {\n constructor(traversals, options = {}) {\n __publicField(this, \"traversals\");\n __publicField(this, \"options\");\n this.traversals = {\n collection: [],\n manifest: [],\n canvas: [],\n annotationList: [],\n sequence: [],\n annotation: [],\n contentResource: [],\n choice: [],\n range: [],\n service: [],\n layer: [],\n ...traversals\n };\n this.options = {\n convertPropsToArray: true,\n mergeMemberProperties: true,\n allowUndefinedReturn: false,\n ...options\n };\n }\n static all(traversal) {\n return new Traverse({\n collection: [traversal],\n manifest: [traversal],\n canvas: [traversal],\n annotationList: [traversal],\n sequence: [traversal],\n annotation: [traversal],\n contentResource: [traversal],\n choice: [traversal],\n range: [traversal],\n service: [traversal],\n layer: [traversal]\n });\n }\n traverseCollection(collection) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(collection))),\n this.traversals.collection\n );\n }\n traverseCollectionItems(collection) {\n if (this.options.mergeMemberProperties) {\n const members = [\n ...(collection.manifests || []).map((manifest) => {\n if (typeof manifest === \"string\") {\n return { \"@id\": manifest, \"@type\": \"sc:Manifest\" };\n }\n return manifest;\n }),\n ...(collection.collections || []).map((subCollection) => {\n if (typeof subCollection === \"string\") {\n return { \"@id\": subCollection, \"@type\": \"sc:Collection\" };\n }\n return subCollection;\n }),\n ...collection.members || []\n ];\n delete collection.collections;\n delete collection.manifests;\n collection.members = members;\n }\n if (collection.manifests) {\n collection.manifests = collection.manifests.map(\n (manifest) => this.traverseManifest(\n typeof manifest === \"string\" ? { \"@id\": manifest, \"@type\": \"sc:Manifest\" } : manifest\n )\n );\n }\n if (collection.collections) {\n collection.collections = collection.collections.map(\n (subCollection) => this.traverseCollection(\n typeof subCollection === \"string\" ? { \"@id\": subCollection, \"@type\": \"sc:Collection\" } : subCollection\n )\n );\n }\n if (collection.members) {\n collection.members = collection.members.map((member) => {\n if (typeof member === \"string\") {\n return member;\n }\n return this.traverseUnknown(member);\n });\n }\n return collection;\n }\n traverseManifest(manifest) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(manifest))),\n this.traversals.manifest\n );\n }\n traverseManifestItems(manifest) {\n if (manifest.sequences) {\n manifest.sequences = manifest.sequences.map((sequence) => this.traverseSequence(sequence));\n }\n if (manifest.structures) {\n manifest.structures = manifest.structures.map((structure) => this.traverseRange(structure));\n }\n return manifest;\n }\n traverseSequence(sequence) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(sequence))),\n this.traversals.sequence\n );\n }\n traverseSequenceItems(sequence) {\n if (sequence.canvases) {\n sequence.canvases = sequence.canvases.map((canvas) => this.traverseCanvas(canvas));\n }\n return sequence;\n }\n traverseCanvas(canvas) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(canvas))),\n this.traversals.canvas\n );\n }\n traverseCanvasItems(canvas) {\n if (canvas.images) {\n canvas.images = canvas.images.map((image) => this.traverseAnnotation(image));\n }\n if (canvas.otherContent) {\n canvas.otherContent = canvas.otherContent.map((annotationList) => this.traverseAnnotationList(annotationList));\n }\n return canvas;\n }\n traverseRange(range) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(range))),\n this.traversals.range\n );\n }\n traverseRangeItems(range) {\n if (this.options.mergeMemberProperties) {\n const members = [\n ...(range.ranges || []).map((innerRange) => {\n if (typeof innerRange === \"string\") {\n return { \"@id\": innerRange, \"@type\": \"sc:Range\" };\n }\n return innerRange;\n }),\n ...(range.canvases || []).map((canvas) => {\n if (typeof canvas === \"string\") {\n return { \"@id\": canvas, \"@type\": \"sc:Canvas\" };\n }\n return canvas;\n }),\n ...range.members || []\n ];\n delete range.ranges;\n delete range.canvases;\n range.members = members.length ? members.map((member) => this.traverseUnknown(member)) : void 0;\n }\n return range;\n }\n traverseAnnotationList(annotationList) {\n const list = typeof annotationList === \"string\" ? { \"@id\": annotationList, \"@type\": \"sc:AnnotationList\" } : annotationList;\n return this.traverseType(\n this.traverseDescriptive(this.traverseAnnotationListItems(list)),\n this.traversals.annotationList\n );\n }\n traverseAnnotationListItems(annotationList) {\n if (annotationList.resources) {\n annotationList.resources = annotationList.resources.map((annotation) => this.traverseAnnotation(annotation));\n }\n return annotationList;\n }\n traverseAnnotation(annotation) {\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(annotation))),\n this.traversals.annotation\n );\n }\n traverseAnnotationItems(annotation) {\n if (annotation.resource) {\n if (Array.isArray(annotation.resource)) {\n annotation.resource = annotation.resource.map(\n (res) => this.traverseContentResource(res)\n );\n } else {\n annotation.resource = this.traverseContentResource(annotation.resource);\n }\n }\n if (annotation.on)\n ;\n return annotation;\n }\n traverseLayer(layer) {\n return this.traverseType(this.traverseLinking(this.traverseLayerItems(layer)), this.traversals.layer);\n }\n traverseLayerItems(layer) {\n if (layer.otherContent) {\n layer.otherContent = layer.otherContent.map((annotationList) => this.traverseAnnotationList(annotationList));\n }\n return layer;\n }\n traverseChoice(choice) {\n return this.traverseType(this.traverseChoiceItems(choice), this.traversals.choice);\n }\n traverseChoiceItems(choice) {\n if (choice.default && choice.default !== \"rdf:nil\") {\n choice.default = this.traverseContentResource(choice.default);\n }\n if (choice.item && choice.item !== \"rdf:nil\") {\n choice.item = choice.item.map((item) => this.traverseContentResource(item));\n }\n return choice;\n }\n traverseService(service) {\n return this.traverseType(this.traverseLinking(service), this.traversals.service);\n }\n traverseContentResource(contentResource) {\n if (contentResource[\"@type\"] === \"oa:Choice\") {\n return this.traverseChoice(contentResource);\n }\n return this.traverseType(\n this.traverseDescriptive(this.traverseLinking(contentResource)),\n this.traversals.contentResource\n );\n }\n traverseUnknown(item) {\n if (!item[\"@type\"] || typeof item === \"string\") {\n return item;\n }\n switch (identifyResource(item)) {\n case \"sc:Collection\":\n return this.traverseCollection(item);\n case \"sc:Manifest\":\n return this.traverseManifest(item);\n case \"sc:Canvas\":\n return this.traverseCanvas(item);\n case \"sc:Sequence\":\n return this.traverseSequence(item);\n case \"sc:Range\":\n return this.traverseRange(item);\n case \"oa:Annotation\":\n return this.traverseAnnotation(item);\n case \"sc:AnnotationList\":\n return this.traverseAnnotationList(item);\n case \"sc:Layer\":\n return this.traverseLayer(item);\n case \"Service\":\n return this.traverseService(item);\n case \"oa:Choice\":\n return this.traverseChoice(item);\n case \"ContentResource\":\n return this.traverseContentResource(item);\n }\n if (item.profile) {\n return this.traverseService(item);\n }\n return item;\n }\n traverseImageResource(contentResource) {\n const wasArray = Array.isArray(contentResource);\n const resourceList = Array.isArray(contentResource) ? contentResource : [contentResource];\n const newResourceList = [];\n for (const singleResource of resourceList) {\n if (typeof singleResource === \"string\") {\n newResourceList.push(\n this.traverseContentResource({\n \"@id\": singleResource,\n \"@type\": \"dctypes:Image\"\n })\n );\n } else {\n newResourceList.push(this.traverseContentResource(singleResource));\n }\n }\n if (!wasArray && !this.options.convertPropsToArray) {\n return newResourceList[0];\n }\n return newResourceList;\n }\n traverseDescriptive(resource) {\n if (resource.thumbnail) {\n resource.thumbnail = this.traverseImageResource(resource.thumbnail);\n }\n if (resource.logo) {\n resource.logo = this.traverseImageResource(resource.logo);\n }\n return resource;\n }\n traverseOneOrMoreServices(allServices) {\n const wasArray = Array.isArray(allServices);\n const services = Array.isArray(allServices) ? allServices : [allServices];\n const newServices = [];\n for (const service of services) {\n newServices.push(this.traverseService(service));\n }\n if (!wasArray && !this.options.convertPropsToArray) {\n return newServices[0];\n }\n return newServices;\n }\n traverseLinking(resource) {\n if (resource.related) {\n resource.related = this.traverseOneOrManyType(resource.related, this.traversals.contentResource);\n }\n if (resource.rendering) {\n resource.rendering = this.traverseOneOrManyType(resource.rendering, this.traversals.contentResource);\n }\n if (resource.service) {\n resource.service = this.traverseOneOrMoreServices(resource.service);\n }\n if (resource.seeAlso) {\n resource.seeAlso = this.traverseOneOrManyType(resource.seeAlso, this.traversals.contentResource);\n }\n if (resource.within) {\n if (typeof resource.within === \"string\")\n ;\n else {\n resource.within = this.traverseOneOrManyType(\n resource.within,\n this.traversals.contentResource\n );\n }\n }\n if (resource.startCanvas) {\n if (typeof resource.startCanvas === \"string\") {\n resource.startCanvas = this.traverseType(\n { \"@id\": resource.startCanvas, \"@type\": \"sc:Canvas\" },\n this.traversals.canvas\n );\n } else if (resource.startCanvas) {\n this.traverseType(resource.startCanvas, this.traversals.canvas);\n }\n }\n if (resource.contentLayer) {\n if (typeof resource.contentLayer === \"string\") {\n resource.contentLayer = this.traverseLayer({\n \"@id\": resource.contentLayer,\n \"@type\": \"sc:Layer\"\n });\n } else {\n resource.contentLayer = this.traverseLayer(resource.contentLayer);\n }\n }\n return resource;\n }\n traverseOneOrManyType(object, traversals) {\n if (!Array.isArray(object)) {\n if (this.options.convertPropsToArray) {\n object = [object];\n } else {\n return this.traverseType(object, traversals);\n }\n }\n return object.map((singleObj) => this.traverseType(singleObj, traversals));\n }\n traverseType(object, traversals) {\n return traversals.reduce((acc, traversal) => {\n const returnValue = traversal(acc);\n if (typeof returnValue === \"undefined\" && !this.options.allowUndefinedReturn) {\n return acc;\n }\n return returnValue;\n }, object);\n }\n}\nconst STANFORD_IIIF_IMAGE_COMPLIANCE_0 = \"http://library.stanford.edu/iiif/image-api/compliance.html#level0\";\nconst STANFORD_IIIF_IMAGE_COMPLIANCE_1 = \"http://library.stanford.edu/iiif/image-api/compliance.html#level1\";\nconst STANFORD_IIIF_IMAGE_COMPLIANCE_2 = \"http://library.stanford.edu/iiif/image-api/compliance.html#level2\";\nconst STANFORD_IIIF_IMAGE_CONFORMANCE_0 = \"http://library.stanford.edu/iiif/image-api/conformance.html#level0\";\nconst STANFORD_IIIF_IMAGE_CONFORMANCE_1 = \"http://library.stanford.edu/iiif/image-api/conformance.html#level1\";\nconst STANFORD_IIIF_IMAGE_CONFORMANCE_2 = \"http://library.stanford.edu/iiif/image-api/conformance.html#level2\";\nconst STANFORD_IIIF_1_IMAGE_COMPLIANCE_0 = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0\";\nconst STANFORD_IIIF_1_IMAGE_COMPLIANCE_1 = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1\";\nconst STANFORD_IIIF_1_IMAGE_COMPLIANCE_2 = \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\";\nconst STANFORD_IIIF_1_IMAGE_CONFORMANCE_0 = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0\";\nconst STANFORD_IIIF_1_IMAGE_CONFORMANCE_1 = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1\";\nconst STANFORD_IIIF_1_IMAGE_CONFORMANCE_2 = \"http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2\";\nconst IIIF_1_IMAGE_LEVEL_0 = \"http://iiif.io/api/image/1/level0.json\";\nconst IIIF_1_IMAGE_LEVEL_0_PROFILE = \"http://iiif.io/api/image/1/profiles/level0.json\";\nconst IIIF_1_IMAGE_LEVEL_1 = \"http://iiif.io/api/image/1/level1.json\";\nconst IIIF_1_IMAGE_LEVEL_1_PROFILE = \"http://iiif.io/api/image/1/profiles/level1.json\";\nconst IIIF_1_IMAGE_LEVEL_2 = \"http://iiif.io/api/image/1/level2.json\";\nconst IIIF_1_IMAGE_LEVEL_2_PROFILE = \"http://iiif.io/api/image/1/profiles/level2.json\";\nconst IIIF_2_IMAGE_LEVEL_0 = \"http://iiif.io/api/image/2/level0.json\";\nconst IIIF_2_IMAGE_LEVEL_0_PROFILE = \"http://iiif.io/api/image/2/profiles/level0.json\";\nconst IIIF_2_IMAGE_LEVEL_1 = \"http://iiif.io/api/image/2/level1.json\";\nconst IIIF_2_IMAGE_LEVEL_1_PROFILE = \"http://iiif.io/api/image/2/profiles/level1.json\";\nconst IIIF_2_IMAGE_LEVEL_2 = \"http://iiif.io/api/image/2/level2.json\";\nconst IIIF_2_IMAGE_LEVEL_2_PROFILE = \"http://iiif.io/api/image/2/profiles/level2.json\";\nconst IIIF_3_IMAGE_LEVEL_0 = \"level0\";\nconst IIIF_3_IMAGE_LEVEL_1 = \"level1\";\nconst IIIF_3_IMAGE_LEVEL_2 = \"level2\";\nconst IIIF_2_IMAGE_LEVEL_0_NO_JSON = \"http://iiif.io/api/image/2/level0\";\nconst IIIF_2_IMAGE_LEVEL_1_NO_JSON = \"http://iiif.io/api/image/2/level1\";\nconst IIIF_2_IMAGE_LEVEL_2_NO_JSON = \"http://iiif.io/api/image/2/level2\";\nconst level1Support = [\n IIIF_2_IMAGE_LEVEL_1_NO_JSON,\n IIIF_2_IMAGE_LEVEL_2_NO_JSON,\n STANFORD_IIIF_IMAGE_COMPLIANCE_1,\n STANFORD_IIIF_IMAGE_COMPLIANCE_2,\n STANFORD_IIIF_IMAGE_CONFORMANCE_1,\n STANFORD_IIIF_IMAGE_CONFORMANCE_2,\n STANFORD_IIIF_1_IMAGE_COMPLIANCE_1,\n STANFORD_IIIF_1_IMAGE_COMPLIANCE_2,\n STANFORD_IIIF_1_IMAGE_CONFORMANCE_1,\n STANFORD_IIIF_1_IMAGE_CONFORMANCE_2,\n IIIF_1_IMAGE_LEVEL_1,\n IIIF_1_IMAGE_LEVEL_1_PROFILE,\n IIIF_1_IMAGE_LEVEL_2,\n IIIF_1_IMAGE_LEVEL_2_PROFILE,\n IIIF_2_IMAGE_LEVEL_1,\n IIIF_2_IMAGE_LEVEL_1_PROFILE,\n IIIF_2_IMAGE_LEVEL_2,\n IIIF_2_IMAGE_LEVEL_2_PROFILE,\n IIIF_3_IMAGE_LEVEL_1,\n IIIF_3_IMAGE_LEVEL_2\n];\nconst imageServiceProfiles = [\n IIIF_2_IMAGE_LEVEL_0_NO_JSON,\n IIIF_2_IMAGE_LEVEL_1_NO_JSON,\n IIIF_2_IMAGE_LEVEL_2_NO_JSON,\n STANFORD_IIIF_IMAGE_COMPLIANCE_0,\n STANFORD_IIIF_IMAGE_COMPLIANCE_1,\n STANFORD_IIIF_IMAGE_COMPLIANCE_2,\n STANFORD_IIIF_IMAGE_CONFORMANCE_0,\n STANFORD_IIIF_IMAGE_CONFORMANCE_1,\n STANFORD_IIIF_IMAGE_CONFORMANCE_2,\n STANFORD_IIIF_1_IMAGE_COMPLIANCE_0,\n STANFORD_IIIF_1_IMAGE_COMPLIANCE_1,\n STANFORD_IIIF_1_IMAGE_COMPLIANCE_2,\n STANFORD_IIIF_1_IMAGE_CONFORMANCE_0,\n STANFORD_IIIF_1_IMAGE_CONFORMANCE_1,\n STANFORD_IIIF_1_IMAGE_CONFORMANCE_2,\n IIIF_1_IMAGE_LEVEL_0,\n IIIF_1_IMAGE_LEVEL_0_PROFILE,\n IIIF_1_IMAGE_LEVEL_1,\n IIIF_1_IMAGE_LEVEL_1_PROFILE,\n IIIF_1_IMAGE_LEVEL_2,\n IIIF_1_IMAGE_LEVEL_2_PROFILE,\n IIIF_2_IMAGE_LEVEL_0,\n IIIF_2_IMAGE_LEVEL_0_PROFILE,\n IIIF_2_IMAGE_LEVEL_1,\n IIIF_2_IMAGE_LEVEL_1_PROFILE,\n IIIF_2_IMAGE_LEVEL_2,\n IIIF_2_IMAGE_LEVEL_2_PROFILE,\n IIIF_3_IMAGE_LEVEL_0,\n IIIF_3_IMAGE_LEVEL_1,\n IIIF_3_IMAGE_LEVEL_2\n];\nfunction ensureArray(maybeArray) {\n if (Array.isArray(maybeArray)) {\n return maybeArray;\n }\n return maybeArray ? [maybeArray] : [];\n}\nfunction removeUndefinedProperties(obj) {\n for (const prop in obj) {\n if (typeof obj[prop] === \"undefined\" || obj[prop] === null) {\n delete obj[prop];\n }\n }\n return obj;\n}\nconst configuration = {\n attributionLabel: \"Attribution\",\n lang: \"none\",\n providerId: \"http://example.org/provider\",\n providerName: \"Unknown\"\n};\nfunction convertLanguageMapping(inputLangProperty, defaultLang = \"none\") {\n if (!inputLangProperty) {\n return {};\n }\n const arrayOfValues = Array.isArray(inputLangProperty) ? inputLangProperty : [inputLangProperty];\n const languageMap = {};\n for (const language of arrayOfValues) {\n if (typeof language === \"string\") {\n languageMap[defaultLang] = languageMap[defaultLang] ? languageMap[defaultLang] : [];\n languageMap[defaultLang].push(language || \"\");\n continue;\n }\n if (!language[\"@language\"]) {\n languageMap[defaultLang] = languageMap[defaultLang] ? languageMap[defaultLang] : [];\n languageMap[defaultLang].push(language[\"@value\"] || \"\");\n continue;\n }\n const lang = language[\"@language\"];\n languageMap[lang] = languageMap[lang] ? languageMap[lang] : [];\n languageMap[lang].push(language[\"@value\"] || \"\");\n }\n return languageMap;\n}\nfunction getProfile(profile) {\n if (Array.isArray(profile)) {\n return getProfile(profile.find((s) => typeof s === \"string\"));\n }\n if (imageServiceProfiles.indexOf(profile) !== -1) {\n return \"level2\";\n }\n if (level1Support.indexOf(profile) !== -1) {\n return \"level1\";\n }\n if (typeof profile !== \"string\") {\n return void 0;\n }\n return profile;\n}\nfunction getTypeFromContext(inputContexts) {\n const contexts = Array.isArray(inputContexts) ? inputContexts : [inputContexts];\n for (const context of contexts) {\n switch (context) {\n case \"http://iiif.io/api/image/2/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2\":\n return \"ImageService2\";\n case \"http://iiif.io/api/image/1/context.json\":\n case \"http://library.stanford.edu/iiif/image-api/1.1/context.json\":\n return \"ImageService1\";\n case \"http://iiif.io/api/annex/openannotation/context.json\":\n return \"ImageApiSelector\";\n }\n }\n return void 0;\n}\nfunction getTypeFromProfile(inputProfile) {\n switch (inputProfile) {\n case \"http://iiif.io/api/image/2/level0.json\":\n case \"http://iiif.io/api/image/2/level1.json\":\n case \"http://iiif.io/api/image/2/level2.json\":\n return \"ImageService2\";\n case \"http://iiif.io/api/auth/1/kiosk\":\n case \"http://iiif.io/api/auth/1/login\":\n case \"http://iiif.io/api/auth/1/clickthrough\":\n case \"http://iiif.io/api/auth/1/external\":\n case \"http://iiif.io/api/auth/0/kiosk\":\n case \"http://iiif.io/api/auth/0/login\":\n case \"http://iiif.io/api/auth/0/clickthrough\":\n case \"http://iiif.io/api/auth/0/external\":\n return \"AuthCookieService1\";\n case \"http://iiif.io/api/auth/1/token\":\n case \"http://iiif.io/api/auth/0/token\":\n return \"AuthTokenService1\";\n case \"http://iiif.io/api/auth/1/logout\":\n case \"http://iiif.io/api/auth/0/logout\":\n return \"AuthLogoutService1\";\n case \"http://iiif.io/api/search/1/search\":\n case \"http://iiif.io/api/search/0/search\":\n return \"SearchService1\";\n case \"http://iiif.io/api/search/1/autocomplete\":\n case \"http://iiif.io/api/search/0/autocomplete\":\n return \"AutoCompleteService1\";\n }\n return void 0;\n}\nfunction removePrefix(str) {\n for (const prefix of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"]) {\n if (str.startsWith(`${prefix}:`)) {\n return str.slice(prefix.length + 1);\n }\n }\n return str;\n}\nconst knownTypes = [\"Collection\", \"Manifest\", \"Annotation\", \"AnnotationPage\", \"Range\", \"Service\"];\nfunction getNewType(resource) {\n const id = resource[\"@id\"] || resource.id;\n let oldType = resource[\"@type\"] || resource.type;\n const profile = resource.profile || void 0;\n const context = resource[\"@context\"] || void 0;\n if (profile) {\n const possibleType = getTypeFromProfile(profile);\n if (possibleType) {\n return possibleType;\n }\n }\n if (context) {\n const possibleType = getTypeFromContext(context);\n if (possibleType) {\n return possibleType;\n }\n }\n if (oldType) {\n if (Array.isArray(oldType)) {\n if (oldType.indexOf(\"oa:CssStylesheet\") !== -1) {\n return \"CssStylesheet\";\n }\n if (oldType.indexOf(\"cnt:ContentAsText\") !== -1) {\n return \"TextualBody\";\n }\n oldType = oldType[0];\n }\n for (const prefix of [\"sc\", \"oa\", \"dcterms\", \"dctypes\", \"iiif\"]) {\n if (oldType.startsWith(`${prefix}:`)) {\n oldType = oldType.slice(prefix.length + 1);\n break;\n }\n }\n switch (oldType) {\n case \"Layer\":\n return \"AnnotationCollection\";\n case \"AnnotationList\":\n return \"AnnotationPage\";\n case \"cnt:ContentAsText\":\n return \"TextualBody\";\n }\n }\n if (oldType && knownTypes.indexOf(oldType) !== -1) {\n return oldType;\n }\n if (resource.format) {\n if (resource.format.startsWith(\"image/\")) {\n return \"Image\";\n }\n if (resource.format.startsWith(\"text/\")) {\n return \"Text\";\n }\n if (resource.format === \"application/pdf\") {\n return \"Text\";\n }\n if (resource.format.startsWith(\"application/\")) {\n return \"Dataset\";\n }\n }\n if (id && (id.endsWith(\".jpg\") || id.endsWith(\".png\") || id.endsWith(\".jpeg\"))) {\n return \"Image\";\n }\n if (!oldType) {\n return \"unknown\";\n }\n return oldType;\n}\nconst licenseRegex = /http(s)?:\\/\\/(creativecommons.org|rightsstatements.org)[^\"'\\\\<\\n]+/gm;\nfunction extractLicense(license) {\n const matches = license.match(licenseRegex);\n if (matches) {\n return matches[0];\n }\n return license;\n}\nfunction fixLicense(license, licenseLabel = \"Rights/License\", lang = \"none\") {\n let rights = null;\n const metadata = [];\n const licenseList = Array.isArray(license) ? license : [license];\n for (const rawLicense of licenseList) {\n const singleLicense = rawLicense ? extractLicense(rawLicense) : void 0;\n if (singleLicense && (singleLicense.indexOf(\"creativecommons.org\") !== -1 || singleLicense.indexOf(\"rightsstatements.org\") !== -1)) {\n if (singleLicense.startsWith(\"https://\")) {\n rights = `http://${singleLicense.slice(8)}`;\n } else {\n rights = singleLicense;\n }\n continue;\n }\n if (singleLicense) {\n metadata.push({\n label: { [lang]: [licenseLabel] },\n value: { [lang]: [singleLicense] }\n });\n }\n }\n return [rights, metadata];\n}\nconst removeContexts = [\n \"http://iiif.io/api/presentation/2/context.json\",\n \"http://iiif.io/api/image/2/context.json\",\n \"http://iiif.io/api/image/1/context.json\",\n \"http://library.stanford.edu/iiif/image-api/1.1/context.json\",\n \"http://iiif.io/api/search/1/context.json\",\n \"http://iiif.io/api/search/0/context.json\",\n \"http://iiif.io/api/auth/1/context.json\",\n \"http://iiif.io/api/auth/0/context.json\",\n \"http://iiif.io/api/annex/openannotation/context.json\"\n];\nfunction fixContext(inputContext) {\n if (inputContext) {\n const contexts = Array.isArray(inputContext) ? inputContext : [inputContext];\n const newContexts = [];\n for (const context of contexts) {\n if (context === \"http://iiif.io/api/presentation/2/context.json\") {\n newContexts.push(\"http://iiif.io/api/presentation/3/context.json\");\n }\n if (removeContexts.indexOf(context) !== -1) {\n continue;\n }\n newContexts.push(context);\n }\n if (contexts.length) {\n return newContexts.length === 1 ? newContexts[0] : newContexts;\n }\n }\n return void 0;\n}\nfunction convertMetadata(metadata) {\n if (!metadata) {\n return [];\n }\n return metadata.map((item) => {\n return {\n label: convertLanguageMapping(item.label),\n value: convertLanguageMapping(item.value)\n };\n });\n}\nlet mintedIdCounter = 0;\nfunction mintNewIdFromResource(resource, subresource) {\n const origId = encodeURI(resource.id || resource[\"@id\"] || \"\").trim();\n if (origId && subresource) {\n return `${origId}/${subresource}`;\n }\n if (origId) {\n return origId;\n }\n mintedIdCounter++;\n return `http://example.org/${resource[\"@type\"]}${subresource ? `/${subresource}` : \"\"}/${mintedIdCounter}`;\n}\nfunction technicalProperties(resource) {\n const allBehaviours = [...resource.behavior || []];\n if (resource.viewingHint) {\n allBehaviours.push(resource.viewingHint);\n }\n let motivation;\n if (Array.isArray(resource.motivation)) {\n motivation = resource.motivation.map(removePrefix);\n } else if (resource.motivation) {\n motivation = removePrefix(resource.motivation);\n }\n return {\n \"@context\": resource[\"@context\"] ? fixContext(resource[\"@context\"]) : void 0,\n id: (resource[\"@id\"] || mintNewIdFromResource(resource)).trim(),\n type: getNewType(resource),\n behavior: allBehaviours.length ? allBehaviours : void 0,\n height: resource.height ? resource.height : void 0,\n width: resource.width ? resource.width : void 0,\n motivation,\n viewingDirection: resource.viewingDirection,\n profile: resource.profile,\n format: resource.format ? resource.format : void 0,\n duration: void 0,\n timeMode: void 0\n };\n}\nfunction descriptiveProperties(resource) {\n const [rights, extraMetadata] = fixLicense(resource.license);\n const allMetadata = [...resource.metadata ? convertMetadata(resource.metadata) : [], ...extraMetadata];\n return {\n rights,\n metadata: allMetadata.length ? allMetadata : void 0,\n label: resource.label ? convertLanguageMapping(resource.label) : void 0,\n requiredStatement: resource.attribution ? {\n label: convertLanguageMapping(configuration.attributionLabel),\n value: convertLanguageMapping(resource.attribution)\n } : void 0,\n navDate: resource.navDate,\n summary: resource.description ? convertLanguageMapping(resource.description) : void 0,\n thumbnail: resource.thumbnail\n };\n}\nfunction parseWithin(resource) {\n if (!resource.within) {\n return void 0;\n }\n const withinProperties = Array.isArray(resource.within) ? resource.within : [resource.within];\n const returnPartOf = [];\n for (const within of withinProperties) {\n if (typeof within === \"string\") {\n if (within) {\n switch (resource[\"@type\"]) {\n case \"sc:Manifest\":\n returnPartOf.push({ id: within, type: \"Collection\" });\n break;\n }\n }\n } else if (within[\"@id\"]) {\n returnPartOf.push({\n id: within[\"@id\"],\n type: getNewType(within)\n });\n } else\n ;\n }\n return returnPartOf.length ? returnPartOf : void 0;\n}\nfunction linkingProperties(resource) {\n const related = resource.related ? Array.isArray(resource.related) ? resource.related : [resource.related] : [];\n const layer = resource.contentLayer;\n return {\n provider: resource.logo || related.length ? [\n {\n id: configuration.providerId,\n type: \"Agent\",\n homepage: related.length ? [related[0]] : void 0,\n logo: resource.logo ? Array.isArray(resource.logo) ? resource.logo : [resource.logo] : void 0,\n label: convertLanguageMapping(configuration.providerName)\n }\n ] : void 0,\n partOf: parseWithin(resource),\n rendering: resource.rendering,\n seeAlso: resource.seeAlso,\n start: resource.startCanvas,\n service: resource.service ? ensureArray(resource.service) : void 0,\n supplementary: layer ? [layer] : void 0\n };\n}\nfunction embeddedContentProperties(resource) {\n return {\n chars: resource.chars,\n format: resource.format ? resource.format : void 0,\n language: resource.language\n };\n}\nfunction upgradeCollection(collection) {\n return removeUndefinedProperties({\n ...technicalProperties(collection),\n ...descriptiveProperties(collection),\n ...linkingProperties(collection),\n items: collection.members\n });\n}\nfunction upgradeManifest(manifest) {\n const allCanvases = [];\n const behavior = [];\n let start = void 0;\n for (const sequence of manifest.sequences || []) {\n if (sequence.canvases.length) {\n allCanvases.push(...sequence.canvases);\n }\n if (sequence.behavior) {\n behavior.push(...sequence.behavior);\n }\n if (sequence.startCanvas) {\n start = sequence.startCanvas;\n }\n }\n const technical = technicalProperties(manifest);\n if (behavior.length) {\n if (technical.behavior) {\n technical.behavior.push(...behavior);\n } else {\n technical.behavior = behavior;\n }\n }\n return removeUndefinedProperties({\n ...technical,\n ...descriptiveProperties(manifest),\n ...linkingProperties(manifest),\n start,\n items: allCanvases,\n structures: manifest.structures\n });\n}\nfunction upgradeCanvas(canvas) {\n return removeUndefinedProperties({\n ...technicalProperties(canvas),\n ...descriptiveProperties(canvas),\n ...linkingProperties(canvas),\n annotations: canvas.otherContent && canvas.otherContent.length ? canvas.otherContent : void 0,\n items: canvas.images && canvas.images.length ? [\n {\n id: mintNewIdFromResource(canvas, \"annotation-page\"),\n type: \"AnnotationPage\",\n items: canvas.images\n }\n ] : void 0\n });\n}\nfunction upgradeAnnotationList(annotationPage) {\n return removeUndefinedProperties({\n ...technicalProperties(annotationPage),\n ...descriptiveProperties(annotationPage),\n ...linkingProperties(annotationPage),\n items: annotationPage.resources && annotationPage.resources.length ? annotationPage.resources : void 0\n });\n}\nfunction upgradeSequence(sequence) {\n if (!sequence.canvases || sequence.canvases.length === 0) {\n return {\n canvases: [],\n behavior: []\n };\n }\n return {\n canvases: sequence.canvases,\n behavior: sequence.viewingHint ? [sequence.viewingHint] : [],\n startCanvas: sequence.startCanvas\n };\n}\nfunction upgradeAnnotation(annotation) {\n function upgradeTarget(target) {\n if (Array.isArray(target)) {\n if (target.length > 1) {\n return { type: \"List\", items: target.map(upgradeTarget) };\n }\n target = target[0];\n }\n if (typeof target === \"string\") {\n return encodeURI(target).trim();\n } else if (\"@type\" in target) {\n let source;\n if (typeof target.full === \"string\") {\n source = target.full;\n } else if (target.full[\"@type\"] === \"dctypes:Image\") {\n source = { id: target.full[\"@id\"], type: \"Image\" };\n } else if (target.full[\"@type\"] === \"sc:Canvas\") {\n source = { id: target.full[\"@id\"], type: \"Canvas\" };\n } else {\n throw new Error(`Unsupported source type on annotation: ${target.full[\"@type\"]}`);\n }\n return {\n type: \"SpecificResource\",\n source,\n selector: upgradeSelector(target.selector)\n };\n } else {\n return encodeURI(target[\"@id\"]).trim();\n }\n }\n return removeUndefinedProperties({\n ...technicalProperties(annotation),\n ...descriptiveProperties(annotation),\n ...linkingProperties(annotation),\n target: upgradeTarget(annotation.on),\n body: Array.isArray(annotation.resource) ? annotation.resource.map(upgradeContentResource) : upgradeContentResource(annotation.resource)\n });\n}\nfunction upgradeContentResource(inputContentResource) {\n const contentResource = inputContentResource;\n return removeUndefinedProperties({\n ...technicalProperties(contentResource),\n ...descriptiveProperties(contentResource),\n ...linkingProperties(contentResource),\n ...embeddedContentProperties(contentResource)\n });\n}\nfunction upgradeChoice(choice) {\n const items = [];\n if (choice.default && choice.default !== \"rdf:nil\") {\n items.push(choice.default);\n }\n if (choice.item && choice.item !== \"rdf:nil\") {\n items.push(...choice.item);\n }\n return {\n ...technicalProperties(choice),\n ...descriptiveProperties(choice),\n items\n };\n}\nfunction upgradeRange(range) {\n return removeUndefinedProperties({\n ...technicalProperties(range),\n ...descriptiveProperties(range),\n ...linkingProperties(range),\n items: range.members\n });\n}\nfunction upgradeService(service) {\n const { \"@id\": id, \"@type\": type, \"@context\": context, profile, ...additionalProps } = service;\n const newService = {};\n if (id) {\n newService[\"@id\"] = id;\n }\n newService[\"@type\"] = getNewType(service);\n if (newService[\"@type\"] === \"unknown\") {\n if (context && context.length) {\n newService[\"@context\"] = context;\n }\n newService[\"@type\"] = \"Service\";\n }\n if (profile) {\n newService.profile = getProfile(profile);\n }\n return removeUndefinedProperties({\n ...newService,\n ...additionalProps\n });\n}\nfunction upgradeLayer(layer) {\n return removeUndefinedProperties({\n ...technicalProperties(layer),\n ...descriptiveProperties(layer),\n ...linkingProperties(layer)\n });\n}\nconst presentation2to3 = new Traverse({\n collection: [upgradeCollection],\n manifest: [upgradeManifest],\n canvas: [upgradeCanvas],\n annotationList: [upgradeAnnotationList],\n sequence: [upgradeSequence],\n annotation: [upgradeAnnotation],\n contentResource: [upgradeContentResource],\n choice: [upgradeChoice],\n range: [upgradeRange],\n service: [upgradeService],\n layer: [upgradeLayer]\n});\nfunction convertPresentation2(entity) {\n if (entity && entity[\"@context\"] && (entity[\"@context\"] === \"http://iiif.io/api/presentation/2/context.json\" || entity[\"@context\"].indexOf(\"http://iiif.io/api/presentation/2/context.json\") !== -1 || entity[\"@context\"] === \"http://www.shared-canvas.org/ns/context.json\") || entity[\"@context\"] === \"http://iiif.io/api/image/2/context.json\") {\n return presentation2to3.traverseUnknown(entity);\n }\n return entity;\n}\nfunction upgradeSelector(selector) {\n const isSvgSelector = (Array.isArray(selector[\"@type\"]) && selector[\"@type\"].includes(\"oa:SvgSelector\") || selector[\"@type\"] == \"oa:SvgSelector\") && (\"chars\" in selector || \"value\" in selector);\n if (isSvgSelector) {\n return {\n type: \"SvgSelector\",\n value: \"chars\" in selector ? selector.chars : selector.value\n };\n }\n if (selector[\"@type\"] === \"oa:FragmentSelector\") {\n return {\n type: \"FragmentSelector\",\n value: selector.value\n };\n }\n if (selector[\"@type\"] === \"oa:Choice\") {\n return [\n upgradeSelector(selector.default),\n ...(Array.isArray(selector.item) ? selector.item : [selector.item]).map(\n upgradeSelector\n )\n ];\n }\n if (selector[\"@type\"] == \"iiif:ImageApiSelector\") {\n return {\n type: \"ImageApiSelector\",\n region: \"region\" in selector ? selector.region : void 0,\n rotation: \"rotation\" in selector ? selector.rotation : void 0\n };\n }\n throw new Error(`Unsupported selector type: ${selector[\"@type\"]}`);\n}\nexport {\n Traverse,\n convertLanguageMapping,\n convertPresentation2,\n getProfile,\n getTypeFromContext,\n identifyResource,\n presentation2to3,\n types\n};\n//# sourceMappingURL=index.mjs.map\n","import { EditorProject } from \"../ProjectContext.types\";\nimport slugify from \"slugify\";\n\nexport function ensureUniqueFilename(project: EditorProject, existing: EditorProject[]) {\n const filenames = existing.map((project) => project.filename);\n\n const name = (project.name || project.filename || \"Untitled project\").toLowerCase();\n\n if (project.filename && filenames.indexOf(project.filename) !== -1) {\n // duplicate.\n project.filename = undefined;\n }\n\n if (!project.filename) {\n let counter = 0;\n while (!project.filename) {\n // Create filename.\n const potentialFilename = `${slugify(name, { lower: true })}${counter ? ` (${counter})` : \"\"}`;\n if (filenames.indexOf(potentialFilename) === -1) {\n project.filename = potentialFilename;\n project.name = `${project.name} (${counter})`;\n break;\n }\n\n counter++;\n }\n }\n\n console.log({ project, filenames });\n}\n","import { Collection } from \"@iiif/presentation-3\";\nimport { EditorProject } from \"@/shell/ProjectContext/ProjectContext.types\";\nimport { getValue } from \"@iiif/vault-helpers\";\nimport { v4 } from \"uuid\";\nimport slugify from \"slugify\";\nimport { CollectionStorage } from \"@/shell/ProjectContext/types/Storage\";\n\nexport function projectFromCollection(collection: Collection, details: Partial<EditorProject> = {}): EditorProject {\n const name = getValue(collection.label) || \"Untitled collection\";\n\n return {\n id: `manifest-editor://project/${v4()}`,\n filename: slugify(name, { lower: true }),\n name,\n metadata: {\n created: Date.now(),\n modified: Date.now(),\n },\n resource: {\n id: collection.id,\n type: \"Collection\",\n },\n publications: [],\n previews: [],\n settings: {},\n storage: {\n type: \"collection-storage\",\n data: collection,\n } as CollectionStorage,\n ...details,\n };\n}\n","import { Dispatch, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n EditorProject,\n ProjectActionsType,\n ProjectBackend,\n ProjectContext,\n ProjectsLoadingStatus,\n ProjectState,\n ProjectStorage,\n} from \"./ProjectContext.types\";\nimport { Publication } from \"./types/Publication\";\nimport { Storage } from \"./types/Storage\";\nimport shallowEqual from \"shallowequal\";\nimport { useDebounce } from \"tiny-use-debounce\";\nimport { Preview } from \"./types/Preview\";\nimport { getManifestNomalized } from \"../../helpers/getManifestNormalized\";\nimport { projectFromManifest } from \"./helpers/project-from-manifest\";\nimport { convertPresentation2 } from \"@iiif/parser/presentation-2\";\nimport { useProjectContext } from \"./ProjectContext\";\nimport { useApps } from \"../AppContext/AppContext\";\nimport { v4 } from \"uuid\";\nimport { ensureUniqueFilename } from \"./helpers/ensure-unique-filename\";\nimport { once } from \"@tauri-apps/api/event\";\nimport { projectFromCollection } from \"@/shell/ProjectContext/helpers/project-from-collection\";\nimport { ClientVault } from \"@/npm/client-vault\";\n\nexport function useProjectActionsWithBackend(\n dispatch: Dispatch<ProjectActionsType>,\n backend: ProjectBackend,\n storage: ProjectStorage<any>\n) {\n async function createProject(payload: EditorProject) {\n const allProjects = await backend.getAllProjects(true);\n\n const project = { ...payload }; // avoid readonly payload.\n\n ensureUniqueFilename(project, allProjects);\n\n if (!storage.canCreate()) {\n throw new Error(\"Cannot create project with this storage backend\");\n }\n\n const backendStorage = await storage.create(project, project.storage.data);\n const createdProject = { ...project, storage: backendStorage };\n await backend.createProject(createdProject);\n\n dispatch({ type: \"createProject\", payload: createdProject });\n\n switchProject(project.id);\n }\n function deleteProject(payload: string) {\n if (backend.canDelete()) {\n dispatch({ type: \"deleteProject\", payload });\n\n backend.deleteProject(payload).then(() => {\n // @todo notification?\n console.log(\"Loader: project deleted\");\n });\n }\n }\n function switchProject(payload: string) {\n dispatch({ type: \"switchProject\", payload });\n backend.setLastProject(payload).then(() => {\n // probably nothing.\n });\n }\n function deselectProject(payload: string) {\n dispatch({ type: \"deselectProject\", payload });\n }\n function forkProject(payload: { id: string; name: string; filename?: string }) {\n dispatch({ type: \"forkProject\", payload });\n throw new Error(\"Not implemented yet\");\n }\n function setLoadingStatus(payload: ProjectsLoadingStatus) {\n dispatch({ type: \"setLoadingStatus\", payload });\n }\n function saveProject(project: EditorProject) {\n console.log(\"trying to save project...\");\n dispatch({ type: \"saveProject\", payload: project });\n\n Promise.all([\n //\n backend.updateProject(project),\n storage.saveStorage(project.storage),\n ]).then(() => {\n // @todo notification?\n console.log(\"Loader: project saved\");\n });\n }\n function updateDetails(payload: { name: string; filename?: string }) {\n dispatch({ type: \"updateDetails\", payload });\n }\n function createPublication(payload: Publication) {\n dispatch({ type: \"createPublication\", payload });\n }\n function updatePublication(payload: Publication) {\n dispatch({ type: \"updatePublication\", payload });\n }\n function removePublication(payload: string) {\n dispatch({ type: \"removePublication\", payload });\n }\n function updateSettings(payload: EditorProject[\"settings\"]) {\n dispatch({ type: \"updateSettings\", payload });\n }\n function updateThumbnail(payload: string) {\n dispatch({ type: \"updateThumbnail\", payload });\n }\n function updateStorage(payload: Storage) {\n dispatch({ type: \"updateStorage\", payload });\n }\n function load(payload: ProjectState) {\n dispatch({ type: \"load\", payload });\n }\n\n function setPreview(publication: Preview) {\n dispatch({ type: \"setPreview\", payload: publication });\n }\n function removePreview(id: string) {\n dispatch({ type: \"removePreview\", payload: id });\n }\n\n return useMemo(\n () => ({\n createProject,\n deleteProject,\n switchProject,\n deselectProject,\n forkProject,\n saveProject,\n setLoadingStatus,\n load,\n updateDetails,\n createPublication,\n updatePublication,\n removePublication,\n updateSettings,\n updateThumbnail,\n updateStorage,\n setPreview,\n removePreview,\n }),\n // Dispatch always stable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n}\n\nexport function useProjectBackend({ actions, current }: ProjectContext, backend: ProjectBackend) {\n useEffect(() => {\n actions.setLoadingStatus({ loading: true, lastLoaded: 0, loaded: false });\n backend.getAllProjects().then(async (allProjects) => {\n const lastId = await backend.getLastProject();\n const lastValid = allProjects.find((s) => s.id === lastId);\n\n actions.load({\n allProjects: allProjects,\n current: lastValid || null,\n loadingStatus: {\n loaded: true,\n loading: false,\n lastLoaded: Date.now(),\n },\n });\n });\n // this is fine.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\nexport function useProjectLoader<T extends Storage = any>(\n { actions, current }: ProjectContext,\n storage: ProjectStorage<T>\n) {\n const currentRef = useRef<EditorProject | null>(null);\n const [ready, setIsReady] = useState(false);\n const [error, setError] = useState(\"\");\n const saveChanges = useCallback(() => {\n const project = currentRef.current;\n if (project) {\n storage.saveStorage(project.storage).then(() => {\n const newStorage = storage.getBackendStorage(project);\n if (!shallowEqual(newStorage, project.storage)) {\n actions.saveProject({\n ...project,\n storage: newStorage,\n });\n }\n });\n }\n }, [actions, storage]);\n const debounceSaveChanges = useDebounce(saveChanges, storage.saveInterval);\n const currentId = current?.id;\n\n useEffect(() => {\n currentRef.current = current;\n }, [current]);\n\n // The loader is responsible for creating Vault instances.\n // In the future this Vault instance could be remote and \"clever\"\n // Offering collaboration or similar features.\n const { vault, promise } = useMemo(() => {\n if (current) {\n const [vault, promise] = storage.createVaultInstance(current);\n return {\n vault,\n promise,\n };\n }\n\n return { vault: null, promise: null };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [storage, currentId]);\n\n useEffect(() => {\n const currentStorage = storage;\n const currentProject = current;\n const currentVault = vault;\n return () => {\n if (currentVault && currentProject) {\n currentStorage.closeVaultInstance(currentProject, currentVault);\n } else if (currentVault instanceof ClientVault) {\n currentVault.ws.close();\n }\n };\n }, [storage, current, vault]);\n\n // If the vault takes some time to load from an external source we might have\n // some time to wait. This will listen to the \"Vault is ready\" promise.\n useEffect(() => {\n setIsReady(false);\n let cancelled = false;\n if (promise) {\n promise\n .then(() => {\n if (!cancelled) {\n setIsReady(true);\n }\n })\n .catch((e) => {\n setError(e.message);\n });\n }\n return () => {\n cancelled = true;\n };\n }, [promise]);\n\n // This will ensure that the changes are saved before reloading or navigating away.\n useEffect(() => {\n window.addEventListener(\"beforeunload\", saveChanges, false);\n let tauriUnload: any = undefined;\n if (window.__TAURI__) {\n tauriUnload = once(\"tauri://close-requested\", saveChanges);\n }\n return () => {\n window.removeEventListener(\"beforeunload\", saveChanges);\n if (tauriUnload) {\n tauriUnload();\n }\n };\n }, [saveChanges]);\n\n // When we unmount, or \"current\" is about to change, then\n // we call save once more.\n useEffect(() => {\n return () => {\n saveChanges();\n };\n }, [saveChanges, currentId]);\n\n // If the loader does not handle its own synchronisation through the Vault it provides, it can\n // let the application know and update the local copy instead. This callback is debounced\n // to ensure we don't call it too often.\n useEffect(() => {\n // @todo migrate this into the storage class.\n if (vault && storage.shouldUpdateWithVault()) {\n return vault.subscribe(debounceSaveChanges, true);\n }\n }, [debounceSaveChanges, storage, vault]);\n\n return {\n vault,\n ready,\n error,\n };\n}\n\nexport function useProjectCreators() {\n const { changeApp } = useApps();\n const { actions } = useProjectContext();\n\n const createBlankManifest = useCallback(function createBlankManifest() {\n actions.createProject(\n projectFromManifest({\n \"@context\": \"http://iiif.io/api/presentation/3/context.json\",\n id: `https://example.org/${v4()}`,\n type: \"Manifest\",\n label: {\n en: [\"Blank Manifest\"],\n },\n items: [],\n })\n );\n\n changeApp({ id: \"manifest-editor\" });\n\n // Actions are stable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const createProjectFromManifestId = useCallback(\n async function createProjectFromManifestId(id: string) {\n let full = await getManifestNomalized(id);\n if (full) {\n if ((full as any)[\"@id\"]) {\n full = convertPresentation2(full) as any;\n }\n if (full) {\n actions.createProject(projectFromManifest(full as any));\n changeApp({ id: \"manifest-editor\" });\n }\n }\n },\n // Actions are stable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const createProjectFromCollectionId = useCallback(\n async function createProjectFromCollectionId(id: string) {\n let full = await getManifestNomalized(id);\n if (full) {\n if ((full as any)[\"@id\"]) {\n full = convertPresentation2(full) as any;\n }\n if (full) {\n actions.createProject(projectFromCollection(full as any));\n changeApp({ id: \"collection-editor\" });\n }\n }\n },\n // Actions are stable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const createProjectFromManifestJson = useCallback(\n async function createProjectFromManifestId(json: string) {\n let full = JSON.parse(json);\n if (full) {\n if ((full as any)[\"@id\"]) {\n full = convertPresentation2(full) as any;\n }\n if (full) {\n actions.createProject(projectFromManifest(full as any));\n changeApp({ id: \"manifest-editor\" });\n }\n }\n },\n // Actions are stable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n return {\n createProjectFromManifestJson,\n createProjectFromManifestId,\n createProjectFromCollectionId,\n createBlankManifest,\n };\n}\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","import { EditorProject, ProjectBackend } from \"../ProjectContext.types\";\nimport * as localforage from \"localforage\";\n\nexport class LocalStorageBackend implements ProjectBackend {\n namespace: string;\n saveInterval: number;\n storage: LocalForage;\n constructor(settings?: { namespace?: string }) {\n this.namespace = settings?.namespace || \"default-v1.1\";\n this.saveInterval = 5000;\n this.storage = localforage.createInstance({\n name: \"manifest-editor-projects\",\n });\n }\n\n async deleteProject(id: string): Promise<void> {\n await this.storage.removeItem(`${this.namespace}/projects/${id}`);\n }\n\n async createProject(project: EditorProject): Promise<void> {\n const index = await this.getProjectIndex();\n\n await this.storage.setItem(`${this.namespace}/projects/${project.id}`, JSON.stringify(project));\n\n if (index.indexOf(project.id) === -1) {\n index.push(project.id);\n await this.saveProjectIndex(index);\n }\n }\n\n canDelete() {\n return true;\n }\n\n async getAllProjects(): Promise<EditorProject[]> {\n try {\n const index = await this.getProjectIndex();\n const projects = [];\n for (const item of index) {\n if (item === \"_index\") {\n continue;\n }\n const loaded = await this.storage.getItem<any>(`${this.namespace}/projects/${item}`);\n if (loaded) {\n try {\n projects.push(JSON.parse(loaded));\n } catch (e) {\n // Silent on individual items?\n }\n }\n }\n\n return projects;\n } catch (e) {\n console.error(\"Error loading from localstorage\", e);\n return [];\n }\n }\n\n async getLastProject(): Promise<string | null> {\n return this.storage.getItem(`${this.namespace}/last`);\n }\n\n async setLastProject(id: string): Promise<void> {\n await this.storage.setItem(`${this.namespace}/last`, id);\n }\n\n async updateProject(project: EditorProject): Promise<void> {\n await this.storage.setItem(`${this.namespace}/projects/${project.id}`, JSON.stringify(project));\n }\n\n private async saveProjectIndex(index: string[]): Promise<void> {\n await this.storage.setItem(`${this.namespace}/_index`, JSON.stringify(index));\n }\n\n private async getProjectIndex(): Promise<string[]> {\n const json = await this.storage.getItem<string>(`${this.namespace}/_index`);\n if (!json) {\n return [];\n }\n const index = JSON.parse(json);\n\n if (!Array.isArray(index)) {\n return [];\n }\n\n return index;\n }\n}\n","import { Vault } from \"@iiif/vault\";\nimport { EditorProject, ProjectStorage } from \"../ProjectContext.types\";\nimport { Collection, Manifest, Reference } from \"@iiif/presentation-3\";\nimport { CollectionStorage, ManifestStorage, Storage } from \"../types/Storage\";\n\nexport abstract class AbstractVaultLoader<T extends Storage>\n implements ProjectStorage<ManifestStorage | CollectionStorage, Manifest | Collection, T>\n{\n abstract type: string;\n vaults: Record<string, Vault | null> = {};\n saveInterval: number;\n\n protected constructor(config: Partial<{ saveInterval: number }> = {}) {\n this.saveInterval = config.saveInterval || 5000;\n }\n\n shouldUpdateWithVault() {\n return true;\n }\n\n canCreate() {\n return true;\n }\n\n canDelete() {\n return true;\n }\n\n abstract create(project: EditorProject, data: Manifest | Collection): Promise<T>;\n\n createVaultInstance(project: EditorProject): [Vault, Promise<void>] {\n const foundVault = this.vaults[project.storage.data.key];\n if (foundVault) {\n return [foundVault, Promise.resolve()];\n }\n\n const vault = new Vault();\n\n const promise = async () => {\n const data = await this.getStorage(project.storage as any);\n await vault.loadManifest(project.resource.id, JSON.parse(JSON.stringify(data?.data)));\n this.vaults[project.storage.data.key] = vault;\n };\n\n return [vault, promise() as Promise<void>];\n }\n\n closeVaultInstance(project: EditorProject, vault: Vault): void {\n // No-op\n }\n\n async saveStorage(storage: T): Promise<void> {\n const vault = this.vaults[storage.data.key];\n const manifestRef: Reference<\"Manifest\" | \"Collection\"> = {\n id: storage.data.id,\n type: storage.data.type,\n };\n\n // There will only be something to save if there is active vault.\n if (vault) {\n const data = vault.toPresentation3<Manifest | Collection>(manifestRef);\n\n const stored: ManifestStorage | CollectionStorage =\n data.type === \"Collection\"\n ? ({\n type: \"collection-storage\",\n data,\n } as CollectionStorage)\n : ({\n type: \"manifest-storage\",\n data,\n } as ManifestStorage);\n\n await this.saveStorageData(stored, storage);\n }\n }\n\n abstract getStorage(storage: T): Promise<CollectionStorage | ManifestStorage | null>;\n\n abstract saveStorageData(manifest: CollectionStorage | ManifestStorage, storage: T): void | Promise<void>;\n\n abstract deleteStorage(storage: T): Promise<void>;\n\n abstract getBackendStorage(project: EditorProject): T;\n}\n","import { EditorProject } from \"../ProjectContext.types\";\nimport { Vault } from \"@iiif/vault\";\nimport { Collection, Manifest } from \"@iiif/presentation-3\";\nimport { ManifestStorage, CollectionStorage, RemoteWebsocketStorage } from \"../types/Storage\";\nimport { AbstractVaultLoader } from \"./AbstractVaultLoader\";\nimport { ClientVault } from \"@/npm/client-vault\";\n\nexport class WebsocketLoader extends AbstractVaultLoader<RemoteWebsocketStorage> {\n type = \"websocket-storage\";\n baseUrl: string;\n token: string;\n\n constructor(settings: { baseUrl: string; token: string }) {\n super({ saveInterval: 5000 });\n this.baseUrl = settings.baseUrl;\n this.token = settings.token;\n }\n\n getStorage(storage: RemoteWebsocketStorage): Promise<CollectionStorage | ManifestStorage | null> {\n throw new Error(\"Method not implemented.\");\n }\n\n shouldUpdateWithVault() {\n return true;\n }\n\n async create(project: EditorProject, data: Manifest | Collection): Promise<RemoteWebsocketStorage> {\n throw new Error(\"Cannot create new project from Manifest Editor\");\n }\n\n canCreate(): boolean {\n return false;\n }\n\n canDelete(): boolean {\n return false;\n }\n\n createVaultInstance(project: EditorProject): [Vault, Promise<void>] {\n const vault = new ClientVault(`${this.baseUrl}/vault/${project.storage.data.id}?token=${this.token}`);\n\n return [vault, vault.waitUntilReady()];\n }\n\n closeVaultInstance(project: EditorProject, vault: Vault): void {\n if (vault instanceof ClientVault) {\n vault.ws.close();\n }\n }\n\n async saveStorageData(\n manifestStorage: ManifestStorage | CollectionStorage,\n storage: RemoteWebsocketStorage\n ): Promise<void> {\n // No-op? Maybe in the future we will send a message to the server to save the manifest\n }\n\n async deleteStorage(storage: RemoteWebsocketStorage): Promise<void> {\n throw new Error(\"Cannot delete\");\n }\n\n getBackendStorage(project: EditorProject): RemoteWebsocketStorage {\n // This will never change after creation, but other adapters might?\n return project.storage as RemoteWebsocketStorage;\n }\n}\n","import { EditorProject } from \"../ProjectContext.types\";\nimport { Vault } from \"@iiif/vault\";\nimport { Collection, Manifest } from \"@iiif/presentation-3\";\nimport { ResourceKeyedStorage, ManifestStorage, CollectionStorage } from \"../types/Storage\";\nimport { v4 } from \"uuid\";\nimport { AbstractVaultLoader } from \"./AbstractVaultLoader\";\nimport invariant from \"tiny-invariant\";\nimport localforage from \"localforage\";\n\nexport class LocalStorageLoader extends AbstractVaultLoader<ResourceKeyedStorage> {\n type = \"local-storage\";\n namespace: string;\n storage: LocalForage;\n\n vaults: Record<string, Vault | null> = {};\n\n constructor(settings?: { namespace?: string }) {\n super({ saveInterval: 5000 });\n this.namespace = settings?.namespace || \"default\";\n this.storage = localforage.createInstance({\n name: \"local-storage-resource-loader\",\n });\n }\n\n shouldUpdateWithVault() {\n return true;\n }\n\n async create(project: EditorProject, data: Manifest | Collection): Promise<ResourceKeyedStorage> {\n const key = v4();\n\n await localStorage.setItem(`${this.namespace}/store/${key}`, JSON.stringify(data));\n\n return {\n type: \"resource-keyed-storage\",\n data: {\n id: data.id,\n type: data.type,\n key,\n },\n };\n }\n\n async getStorage(storage: ResourceKeyedStorage): Promise<CollectionStorage | ManifestStorage | null> {\n try {\n const item = await localStorage.getItem(`${this.namespace}/store/${storage.data.key}`);\n const manifest = item ? (JSON.parse(item) as any) : null;\n\n invariant(manifest, \"Resource not found\");\n\n if (manifest.type === \"Collection\") {\n return {\n type: \"collection-storage\",\n data: manifest,\n };\n }\n\n return {\n type: \"manifest-storage\",\n data: manifest,\n };\n } catch (e) {\n return null;\n }\n }\n\n async saveStorageData(\n manifestStorage: ManifestStorage | CollectionStorage,\n storage: ResourceKeyedStorage\n ): Promise<void> {\n await localStorage.setItem(`${this.namespace}/store/${storage.data.key}`, JSON.stringify(manifestStorage.data));\n }\n\n async deleteStorage(storage: ResourceKeyedStorage): Promise<void> {\n this.vaults[storage.data.key] = null;\n await localStorage.removeItem(`${this.namespace}/store/${storage.data.key}`);\n }\n\n getBackendStorage(project: EditorProject): ResourceKeyedStorage {\n // This will never change after creation, but other adapters might?\n return project.storage as ResourceKeyedStorage;\n }\n}\n","import { normalize, HAS_PART, PART_OF, frameResource } from \"@iiif/parser\";\nconst createAction = function createAction2(type) {\n return function() {\n const base = { type, getType: () => type, toString: () => type };\n return (payload, meta) => ({\n ...base,\n ...payload !== void 0 && { payload },\n ...meta !== void 0 && { meta }\n });\n };\n};\nconst IMPORT_ENTITIES = \"@iiif/IMPORT_ENTITIES\";\nconst importEntities = createAction(IMPORT_ENTITIES)();\nconst ADD_MAPPING = \"@iiif/ADD_MAPPING\";\nconst ADD_MAPPINGS = \"@iiif/ADD_MAPPINGS\";\nconst addMapping = createAction(ADD_MAPPING)();\nconst addMappings = createAction(ADD_MAPPINGS)();\nconst RESOURCE_ERROR = \"RESOURCE_ERROR\";\nconst RESOURCE_LOADING = \"RESOURCE_LOADING\";\nconst RESOURCE_READY = \"RESOURCE_READY\";\nconst REQUEST_RESOURCE = \"@iiif/REQUEST_RESOURCE\";\nconst REQUEST_ERROR = \"@iiif/REQUEST_ERROR\";\nconst REQUEST_MISMATCH = \"@iiif/REQUEST_MISMATCH\";\nconst REQUEST_COMPLETE = \"@iiif/REQUEST_COMPLETE\";\nconst requestResource = createAction(REQUEST_RESOURCE)();\nconst requestError = createAction(REQUEST_ERROR)();\nconst requestMismatch = createAction(REQUEST_MISMATCH)();\nconst requestComplete = createAction(REQUEST_COMPLETE)();\nconst BATCH_ACTIONS = \"@iiif/BATCH\";\nconst batchActions = createAction(BATCH_ACTIONS)();\nconst actionListFromResource = (id, response) => {\n const { entities, resource, mapping } = normalize(response);\n if (resource.id === void 0) {\n return [requestError({ id, message: \"ID is not defined in resource.\" })];\n }\n const actions = [importEntities({ entities }), addMappings({ mapping })];\n if (resource.id !== id) {\n actions.push(addMapping({ id, type: resource.type }));\n actions.push(requestMismatch({ requestId: id, actualId: resource.id }));\n }\n actions.push(requestComplete({ id }));\n return actions;\n};\nconst safeIsNaN = Number.isNaN || function ponyfill(value) {\n return typeof value === \"number\" && value !== value;\n};\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (!Array.isArray(newInputs) || !Array.isArray(lastInputs)) {\n return newInputs === lastInputs;\n }\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (let i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\nfunction resolveIfExists(state, url, parent) {\n const request = state.iiif.requests[url];\n const resourceType = state.iiif.mapping[url];\n if (!resourceType || !state.iiif.entities[resourceType][request.resourceUri]) {\n return void 0;\n }\n const fullEntity = state.iiif.entities[resourceType][request.resourceUri];\n if (fullEntity && fullEntity[HAS_PART]) {\n const framing = fullEntity[HAS_PART].find((t) => {\n return parent ? t[PART_OF] === parent.id : t[PART_OF] === fullEntity.id;\n });\n return frameResource(fullEntity, framing);\n }\n return fullEntity;\n}\nfunction createFetchHelper(vault, fetcher, { waitTimeout = 30 } = {}) {\n return async (url, options) => {\n const store = vault.getStore();\n const state = store.getState();\n const request = state.iiif.requests[url];\n if (request) {\n switch (request.loadingState) {\n case RESOURCE_ERROR:\n break;\n case RESOURCE_LOADING: {\n let cleanupSubscription;\n let didContinue = false;\n try {\n const resolvedEntity = await Promise.race([\n new Promise((resolve, reject) => {\n if (didContinue) {\n return;\n }\n cleanupSubscription = store.subscribe(() => {\n const latestState = store.getState();\n if (latestState.iiif.requests[url].loadingState === RESOURCE_ERROR) {\n reject();\n return;\n }\n if (latestState.iiif.requests[url].loadingState === RESOURCE_READY) {\n const maybeResolvedEntity = resolveIfExists(latestState, url);\n if (maybeResolvedEntity) {\n resolve(maybeResolvedEntity);\n } else {\n reject();\n }\n }\n });\n }),\n new Promise(\n (resolve, reject) => setTimeout(() => {\n didContinue = true;\n reject();\n }, waitTimeout * 60 * 1e3)\n )\n ]);\n if (cleanupSubscription) {\n cleanupSubscription();\n }\n if (resolvedEntity) {\n return resolvedEntity;\n }\n } catch (e) {\n if (cleanupSubscription) {\n cleanupSubscription();\n }\n break;\n }\n break;\n }\n case RESOURCE_READY: {\n const resolvedEntity = resolveIfExists(state, url);\n if (resolvedEntity) {\n return resolvedEntity;\n }\n break;\n }\n }\n }\n vault.dispatch(requestResource({ id: url }));\n try {\n const resource = await fetcher(url, options);\n if (!resource.id && !resource[\"@id\"]) {\n if (resource[\"@type\"]) {\n resource[\"@id\"] = url;\n resource.id = url;\n } else {\n resource.id = url;\n }\n }\n const toDispatch = actionListFromResource(url, resource);\n vault.dispatch(batchActions({ actions: toDispatch }));\n return resolveIfExists(store.getState(), url);\n } catch (err) {\n vault.dispatch(requestError({ id: url, message: err.toString() }));\n throw err;\n }\n };\n}\nfunction getDefaultEntities() {\n return {\n Collection: {},\n Manifest: {},\n Canvas: {},\n AnnotationPage: {},\n AnnotationCollection: {},\n Annotation: {},\n ContentResource: {},\n Range: {},\n Service: {},\n Selector: {},\n Agent: {}\n };\n}\nfunction resolveList(state, items) {\n const returnItems = [];\n for (const ref of items) {\n if (state.iiif.entities[ref.type] && state.iiif.entities[ref.type][ref.id]) {\n returnItems.push(state.iiif.entities[ref.type][ref.id]);\n }\n }\n return returnItems;\n}\nexport {\n actionListFromResource,\n areInputsEqual,\n createFetchHelper,\n getDefaultEntities,\n resolveIfExists,\n resolveList\n};\n//# sourceMappingURL=index.mjs.map\n","import { Vault } from \"@iiif/vault\";\nimport {\n addReference,\n batchActions,\n modifyEntityField,\n reorderEntityField,\n requestResource,\n} from \"@iiif/vault/actions\";\nimport { actionListFromResource } from \"@iiif/vault/utility\";\n\nexport function createPreviewVault(homepageCollectionId = \"vault://homepage-collection.json\") {\n const vault = new Vault();\n\n // 1st - ensure that our \"default\" collection exists OR import one.\n const previewCollection = window.localStorage.getItem(\"preview-vault-collection\");\n let didImport = false;\n if (previewCollection) {\n try {\n const previewState = JSON.parse(previewCollection);\n if (previewState.id && previewState.id === homepageCollectionId) {\n vault.dispatch(requestResource({ id: previewState.id }));\n const toDispatch = actionListFromResource(previewState.id, previewState);\n vault.dispatch(batchActions({ actions: toDispatch }));\n didImport = true;\n }\n } catch (e) {\n //\n }\n }\n\n if (!didImport) {\n const toDispatch = actionListFromResource(homepageCollectionId, {\n \"@context\": \"http://iiif.io/api/presentation/3/context.json\",\n id: homepageCollectionId,\n type: \"Collection\",\n label: { en: [\"Recent items\"] },\n items: [],\n });\n vault.dispatch(requestResource({ id: homepageCollectionId }));\n vault.dispatch(batchActions({ actions: toDispatch }));\n }\n\n const clearHistory = () => {\n vault.dispatch(modifyEntityField({ id: homepageCollectionId, type: \"Collection\", key: \"items\", value: [] }));\n window.localStorage.setItem(\n \"preview-vault-collection\",\n JSON.stringify(vault.toPresentation3({ id: homepageCollectionId, type: \"Collection\" }))\n );\n };\n\n const addHistory = (id: string, type: string) => {\n const state = vault.getState();\n if (id && type && (type === \"Collection\" || type === \"Manifest\")) {\n const existingCollection = state.iiif.entities.Collection[homepageCollectionId];\n // This shouldn't happen... but it could.\n if (existingCollection) {\n const alreadyExists = existingCollection.items.findIndex((t) => t.id === id);\n if (alreadyExists === -1) {\n vault.dispatch(\n addReference({\n id: homepageCollectionId,\n type: \"Collection\",\n reference: { id, type },\n key: \"items\",\n index: 0,\n })\n );\n } else {\n vault.dispatch(\n reorderEntityField({\n id: homepageCollectionId,\n type: \"Collection\",\n key: \"items\",\n startIndex: alreadyExists,\n endIndex: 0,\n })\n );\n }\n\n window.localStorage.setItem(\n \"preview-vault-collection\",\n JSON.stringify(vault.toPresentation3({ id: homepageCollectionId, type: \"Collection\" }))\n );\n }\n }\n };\n\n const unsubscribe2 = vault.on(\"after:@iiif/REMOVE_REFERENCE\", (ctx) => {\n if (ctx.action.payload.id === homepageCollectionId) {\n window.localStorage.setItem(\n \"preview-vault-collection\",\n JSON.stringify(vault.toPresentation3({ id: homepageCollectionId, type: \"Collection\" }))\n );\n }\n });\n\n const unsubscribe = () => {\n // This isn't working, because React.\n // unsubscribe1();\n // unsubscribe2();\n };\n\n return { vault, unsubscribe, addHistory, clearHistory } as const;\n}\n","import { createContext, useContext, useEffect, useMemo } from \"react\";\nimport { Vault } from \"@iiif/vault\";\nimport { VaultProvider } from \"react-iiif-vault\";\nimport { createPreviewVault } from \"@/shell/PreviewVault/create-preview-vault\";\n\nexport function usePreviewVault() {\n return useContext(PreviewVaultReactContext);\n}\n\nconst PreviewVaultReactContext = createContext<Vault>(new Vault());\n\nconst PreviewVaultAddHistory = createContext({\n addHistory: (id: string, type: string) => {},\n clearHistory: () => {},\n});\n\nexport const HOMEPAGE_COLLECTION = \"manifest-editor://homepage-collection.json\";\n\nexport function usePreviewHistory() {\n return useContext(PreviewVaultAddHistory);\n}\n\nexport function PreviewVaultContext(props: { children: any }) {\n const { vault, unsubscribe, addHistory, clearHistory } = useMemo(() => {\n return createPreviewVault(HOMEPAGE_COLLECTION);\n }, []);\n\n useEffect(() => {\n return unsubscribe;\n }, []);\n\n return (\n <PreviewVaultAddHistory.Provider value={{ addHistory, clearHistory }}>\n <PreviewVaultReactContext.Provider value={vault}>{props.children}</PreviewVaultReactContext.Provider>\n </PreviewVaultAddHistory.Provider>\n );\n}\n\nexport function PreviewVaultBoundary({ children }: { children: any }) {\n const vault = usePreviewVault();\n\n return <VaultProvider vault={vault}>{children}</VaultProvider>;\n}\n","import { Reference } from \"@iiif/presentation-3\";\nimport { createContext, ReactNode, useContext, useMemo } from \"react\";\nimport invariant from \"tiny-invariant\";\nimport { useVault, useVaultSelector } from \"react-iiif-vault\";\nimport { EditorInstance } from \"../../editor-api/EditorInstance\";\n\ninterface ResourceEditingContext {\n resource: Reference<any> | null;\n}\n\nconst ResourceEditingReactContext = createContext<ResourceEditingContext>({\n resource: null,\n});\n\nexport function useEditingContext() {\n return useContext(ResourceEditingReactContext);\n}\n\n/**\n * useResource\n *\n * Only use this if you KNOW that there is a resource (e.g. in a panel)\n */\nexport function useResource<T = Record<string, never>>(): T & Reference<any> {\n const vault = useVault();\n const { resource } = useEditingContext();\n\n invariant(resource, \"Nothing selected\");\n\n const { id, type } = resource;\n\n const fullResource = useVaultSelector(() => {\n return vault.get({ id, type });\n }, [id, type]);\n\n return fullResource as T & Reference<any>;\n}\n\n/**\n * useOptionalResource\n *\n * Use in components where you don't know if something is editing. (e.g. canvas listing)\n */\nexport function useOptionalResource() {\n const { resource } = useEditingContext();\n\n return resource;\n}\n\nexport function ResourceEditingProvider({\n resource,\n children,\n}: {\n resource: { id: string; type: string } | null | undefined;\n children: ReactNode;\n}) {\n const { id, type } = resource || {};\n\n return (\n <ResourceEditingReactContext.Provider\n value={useMemo(\n () => ({\n // Current resource.\n resource: id && type ? { id, type } : null,\n }),\n [id, type]\n )}\n >\n {children}\n </ResourceEditingReactContext.Provider>\n );\n}\n","import { memo, ReactNode, useContext, useMemo, useReducer, useState } from \"react\";\nimport {\n LayoutActionsReactContext,\n LayoutPropsReactContext,\n LayoutStateReactContext,\n} from \"@/shell/Layout/Layout.context\";\nimport {\n CreatableResource,\n EditableResource,\n getDefaultLayoutState,\n LayoutProviderProps,\n layoutReducer,\n PinnablePanelActions,\n useEditingStack,\n usePanelActions,\n} from \"@/shell\";\nimport invariant from \"tiny-invariant\";\nimport { Reference, SpecificResource } from \"@iiif/presentation-3\";\nimport { isSpecificResource } from \"@iiif/parser\";\n\nfunction parse(args: string | { id: string; state?: any; stacked?: boolean }, _state?: any): any {\n if (typeof args === \"string\") {\n return { id: args, state: _state };\n }\n return args;\n}\n\nexport const LayoutProvider = memo(function LayoutProvider(props: { children: ReactNode }) {\n const [available, setAvailable] = useState<LayoutProviderProps & { loading?: true }>({\n loading: true,\n centerPanels: [],\n leftPanels: [],\n rightPanels: [],\n });\n const [state, dispatch] = useReducer(layoutReducer, undefined, getDefaultLayoutState);\n const actions = {\n setAvailable,\n centerPanel: usePanelActions(\"centerPanel\", dispatch),\n leftPanel: usePanelActions(\"leftPanel\", dispatch),\n rightPanel: usePanelActions(\"rightPanel\", dispatch),\n pinnedRightPanel: usePanelActions(\"pinnedRightPanel\", dispatch) as PinnablePanelActions,\n editingStack: useEditingStack(),\n };\n\n function find(id: any) {\n const right = available.rightPanels.find((r) => r.id === id);\n if (right) {\n return [right, actions.rightPanel, actions.pinnedRightPanel] as const;\n }\n\n const center = available.centerPanels.find((r) => r.id === id);\n if (center) {\n return [center, actions.centerPanel] as const;\n }\n\n const left = available.leftPanels.find((r) => r.id === id);\n if (left) {\n return [left, actions.leftPanel] as const;\n }\n\n invariant(false, `Was not able to find panel with id \"${id}\"`);\n }\n\n function open(args: string | { id: string; state?: any; stacked?: boolean }, _state?: any): void {\n const { id, state, stacked } = parse(args, _state);\n const [found, actions, pinnable] = find(id);\n\n if (pinnable && found.options?.openPinned) {\n pinnable.pin({ id, state: { ...(found.defaultState || {}), ...(state || {}) } });\n } else {\n actions.open({\n id,\n state: { ...(found.defaultState || {}), ...(state || {}) },\n stacked,\n });\n }\n }\n\n function stack(args: string | { id: string; state?: any }, _state?: any): void {\n const { id, state } = parse(args, _state);\n const [found, actions] = find(id);\n actions.open({\n id,\n state: { ...(found.defaultState || {}), ...(state || {}) },\n stacked: true,\n });\n }\n\n function change(args: string | { id: string; state?: any; stacked?: boolean }, _state?: any): void {\n const { id, state, stacked } = parse(args, _state);\n const [found, actions] = find(id);\n actions.change({\n id,\n state: { ...(found.defaultState || {}), ...(state || {}) },\n stacked,\n });\n }\n\n function close(args: string | { id: string; state?: any }, _state?: any): void {\n const { id } = parse(args, _state);\n const [, actions] = find(id);\n actions.close();\n }\n\n function toggle(args: string | { id: string; state?: any }, _state?: any): void {\n const { id } = parse(args, _state);\n const [, actions] = find(id);\n actions.toggle();\n }\n\n function edit(\n resource: Reference | SpecificResource,\n context: Omit<EditableResource, \"resource\"> = {},\n { reset, property, stacked }: { reset?: boolean; property?: string; stacked?: boolean | undefined } = {}\n ) {\n const toEdit: EditableResource = {\n resource: isSpecificResource(resource)\n ? resource\n : {\n type: \"SpecificResource\",\n source: resource,\n },\n ...context,\n };\n\n actions.editingStack.edit(toEdit, reset);\n\n if (available.rightPanels.find((e) => e.id === \"@manifest-editor/editor\")) {\n actions.rightPanel.open({\n id: \"@manifest-editor/editor\",\n stacked: stacked !== false,\n state: { property },\n unique: true,\n });\n }\n }\n\n function create(resource: CreatableResource) {\n actions.editingStack.create(resource, {});\n if (available.rightPanels.find((e) => e.id === \"@manifest-editor/creator\")) {\n actions.rightPanel.open({\n id: \"@manifest-editor/creator\",\n stacked: true,\n unique: true,\n state: resource,\n });\n }\n }\n\n const otherActions = {\n open,\n change,\n close,\n toggle,\n stack,\n edit,\n create,\n };\n\n return (\n <LayoutPropsReactContext.Provider value={available}>\n <LayoutActionsReactContext.Provider value={useMemo(() => ({ ...actions, ...otherActions }), [available])}>\n <LayoutStateReactContext.Provider value={state}>{props.children}</LayoutStateReactContext.Provider>\n </LayoutActionsReactContext.Provider>\n </LayoutPropsReactContext.Provider>\n );\n});\n","import{_ as t,a as e}from\"./tslib.es6-9bc0804d.js\";import{i as n}from\"./tauri-7cafdaf8.js\";var o;function i(o,i){return void 0===i&&(i={}),t(this,void 0,void 0,(function(){return e(this,(function(t){return[2,n({__tauriModule:\"Fs\",message:{cmd:\"readTextFile\",path:o,options:i}})]}))}))}function r(o,i){return void 0===i&&(i={}),t(this,void 0,void 0,(function(){var t;return e(this,(function(e){switch(e.label){case 0:return[4,n({__tauriModule:\"Fs\",message:{cmd:\"readFile\",path:o,options:i}})];case 1:return t=e.sent(),[2,Uint8Array.from(t)]}}))}))}function s(o,i,r){return t(this,void 0,void 0,(function(){var t,s;return e(this,(function(e){return\"object\"==typeof r&&Object.freeze(r),\"object\"==typeof o&&Object.freeze(o),t={path:\"\",contents:\"\"},s=r,\"string\"==typeof o?t.path=o:(t.path=o.path,t.contents=o.contents),\"string\"==typeof i?t.contents=null!=i?i:\"\":s=i,[2,n({__tauriModule:\"Fs\",message:{cmd:\"writeFile\",path:t.path,contents:Array.from((new TextEncoder).encode(t.contents)),options:s}})]}))}))}function a(o,i,r){return t(this,void 0,void 0,(function(){var t,s;return e(this,(function(e){return\"object\"==typeof r&&Object.freeze(r),\"object\"==typeof o&&Object.freeze(o),t={path:\"\",contents:[]},s=r,\"string\"==typeof o?t.path=o:(t.path=o.path,t.contents=o.contents),i&&\"dir\"in i?s=i:\"string\"==typeof o&&(t.contents=null!=i?i:[]),[2,n({__tauriModule:\"Fs\",message:{cmd:\"writeFile\",path:t.path,contents:Array.from(t.contents),options:s}})]}))}))}function u(o,i){return void 0===i&&(i={}),t(this,void 0,void 0,(function(){return e(this,(function(t){return[2,n({__tauriModule:\"Fs\",message:{cmd:\"readDir\",path:o,options:i}})]}))}))}function c(o,i){return void 0===i&&(i={}),t(this,void 0,void 0,(function(){return e(this,(function(t){return[2,n({__tauriModule:\"Fs\",message:{cmd:\"createDir\",path:o,options:i}})]}))}))}function d(o,i){return void 0===i&&(i={}),t(this,void 0,void 0,(function(){return e(this,(function(t){return[2,n({__tauriModule:\"Fs\",message:{cmd:\"removeDir\",path:o,options:i}})]}))}))}function f(o,i,r){return void 0===r&&(r={}),t(this,void 0,void 0,(function(){return e(this,(function(t){return[2,n({__tauriModule:\"Fs\",message:{cmd:\"copyFile\",source:o,destination:i,options:r}})]}))}))}function p(o,i){return void 0===i&&(i={}),t(this,void 0,void 0,(function(){return e(this,(function(t){return[2,n({__tauriModule:\"Fs\",message:{cmd:\"removeFile\",path:o,options:i}})]}))}))}function l(o,i,r){return void 0===r&&(r={}),t(this,void 0,void 0,(function(){return e(this,(function(t){return[2,n({__tauriModule:\"Fs\",message:{cmd:\"renameFile\",oldPath:o,newPath:i,options:r}})]}))}))}!function(t){t[t.Audio=1]=\"Audio\",t[t.Cache=2]=\"Cache\",t[t.Config=3]=\"Config\",t[t.Data=4]=\"Data\",t[t.LocalData=5]=\"LocalData\",t[t.Desktop=6]=\"Desktop\",t[t.Document=7]=\"Document\",t[t.Download=8]=\"Download\",t[t.Executable=9]=\"Executable\",t[t.Font=10]=\"Font\",t[t.Home=11]=\"Home\",t[t.Picture=12]=\"Picture\",t[t.Public=13]=\"Public\",t[t.Runtime=14]=\"Runtime\",t[t.Template=15]=\"Template\",t[t.Video=16]=\"Video\",t[t.Resource=17]=\"Resource\",t[t.App=18]=\"App\",t[t.Log=19]=\"Log\",t[t.Temp=20]=\"Temp\"}(o||(o={}));var h=Object.freeze({__proto__:null,get BaseDirectory(){return o},get Dir(){return o},readTextFile:i,readBinaryFile:r,writeTextFile:s,writeFile:s,writeBinaryFile:a,readDir:u,createDir:c,removeDir:d,copyFile:f,removeFile:p,renameFile:l});export{o as B,r as a,a as b,u as c,c as d,d as e,f,p as g,l as h,h as i,i as r,s as w};\n","function n(){return navigator.appVersion.includes(\"Win\")}export{n as i};\n","import{_ as t,a as r}from\"./tslib.es6-9bc0804d.js\";import{i as e}from\"./tauri-7cafdaf8.js\";import{B as i}from\"./fs-af92a606.js\";import{i as n}from\"./os-check-094ffe86.js\";function o(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.App}})]}))}))}function u(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Audio}})]}))}))}function a(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Cache}})]}))}))}function s(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Config}})]}))}))}function c(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Data}})]}))}))}function d(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Desktop}})]}))}))}function h(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Document}})]}))}))}function f(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Download}})]}))}))}function v(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Executable}})]}))}))}function m(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Font}})]}))}))}function l(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Home}})]}))}))}function _(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.LocalData}})]}))}))}function P(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Picture}})]}))}))}function p(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Public}})]}))}))}function g(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Resource}})]}))}))}function D(n){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:n,directory:i.Resource}})]}))}))}function M(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Runtime}})]}))}))}function y(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Template}})]}))}))}function b(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Video}})]}))}))}function j(){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolvePath\",path:\"\",directory:i.Log}})]}))}))}var x=n()?\"\\\\\":\"/\",A=n()?\";\":\":\";function k(){for(var i=[],n=0;n<arguments.length;n++)i[n]=arguments[n];return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"resolve\",paths:i}})]}))}))}function z(i){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"normalize\",path:i}})]}))}))}function R(){for(var i=[],n=0;n<arguments.length;n++)i[n]=arguments[n];return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"join\",paths:i}})]}))}))}function w(i){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"dirname\",path:i}})]}))}))}function B(i){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"extname\",path:i}})]}))}))}function C(i,n){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"basename\",path:i,ext:n}})]}))}))}function L(i){return t(this,void 0,void 0,(function(){return r(this,(function(t){return[2,e({__tauriModule:\"Path\",message:{cmd:\"isAbsolute\",path:i}})]}))}))}var q=Object.freeze({__proto__:null,appDir:o,audioDir:u,cacheDir:a,configDir:s,dataDir:c,desktopDir:d,documentDir:h,downloadDir:f,executableDir:v,fontDir:m,homeDir:l,localDataDir:_,pictureDir:P,publicDir:p,resourceDir:g,resolveResource:D,runtimeDir:M,templateDir:y,videoDir:b,logDir:j,get BaseDirectory(){return i},sep:x,delimiter:A,resolve:k,normalize:z,join:R,dirname:w,extname:B,basename:C,isAbsolute:L});export{w as A,B,C,L as D,o as a,u as b,a as c,s as d,c as e,d as f,h as g,f as h,v as i,m as j,l as k,_ as l,P as m,p as n,D as o,q as p,M as q,g as r,j as s,y as t,x as u,b as v,A as w,k as x,z as y,R as z};\n","import { ProjectActionsType, ProjectsLoadingStatus, ProjectState } from \"./ProjectContext.types\";\nimport produce from \"immer\";\n\nexport const projectContextReducer = produce(function projectContextReducer(\n state: ProjectState,\n action: ProjectActionsType\n) {\n if (state.current) {\n switch (action.type) {\n // Single project actions\n case \"removePublication\":\n state.current.publications = state.current.publications.filter((p) => p.id !== action.payload);\n break;\n case \"saveProject\":\n state.current.metadata.modified = Date.now();\n break;\n case \"updateDetails\":\n state.current.name = action.payload.name;\n state.current.filename = action.payload.filename;\n break;\n case \"updateStorage\":\n state.current.storage = action.payload;\n break;\n case \"createPublication\": {\n if (!state.current.publications.find((s) => s.id === action.payload.id)) {\n state.current.publications.push(action.payload);\n }\n break;\n }\n case \"updateThumbnail\":\n state.current.thumbnail = action.payload;\n break;\n case \"updateSettings\":\n state.current.settings = action.payload;\n break;\n case \"updatePublication\": {\n const found = state.current.publications.find((s) => s.id === action.payload.id);\n if (found) {\n found.config = action.payload.config;\n }\n break;\n }\n case \"removePreview\": {\n const existing = state.current.previews?.findIndex((p) => p.id === action.payload);\n if (existing !== -1) {\n state.current.previews.splice(existing, 1);\n }\n break;\n }\n case \"setPreview\": {\n const existing = state.current.previews?.findIndex((p) => p.id === action.payload.id);\n if (existing !== -1) {\n state.current.previews.splice(existing, 1, action.payload);\n } else {\n state.current.previews.push(action.payload);\n }\n\n break;\n }\n }\n }\n switch (action.type) {\n case \"load\": {\n state.allProjects = action.payload.allProjects;\n state.current = action.payload.current;\n state.loadingStatus = action.payload.loadingStatus;\n break;\n }\n // Navigate project actions.\n case \"forkProject\":\n // This is probably all behind the scenes.\n break;\n case \"deleteProject\":\n state.allProjects = state.allProjects.filter((p) => p.id !== action.payload);\n if (state.current && state.current.id === action.payload) {\n state.current = null;\n }\n break;\n case \"deselectProject\":\n state.current = null;\n break;\n case \"createProject\":\n state.allProjects.push(action.payload);\n state.current = action.payload;\n break;\n case \"switchProject\":\n state.current = state.allProjects.find((p) => p.id === action.payload) || null;\n break;\n case \"setLoadingStatus\":\n state.loadingStatus = action.payload;\n break;\n }\n});\n\nexport function getDefaultProjectContextState(\n status: ProjectsLoadingStatus | null = {\n loading: false,\n loaded: true,\n lastLoaded: 0,\n }\n): ProjectState {\n return {\n allProjects: [],\n current: null,\n loadingStatus: status,\n };\n}\n","import {\n ProjectBackend,\n ProjectContext,\n ProjectState,\n useApps,\n useProjectActionsWithBackend,\n useProjectBackend,\n useProjectLoader,\n} from \"@/shell\";\nimport { ReactNode, useEffect, useMemo, useReducer } from \"react\";\nimport { FileSystemFolderBackend } from \"@/shell/ProjectContext/backend/FileSystemFolderBackend\";\nimport { LocalStorageBackend } from \"@/shell/ProjectContext/backend/LocalStorageBackend\";\nimport { FileSystemLoader } from \"@/shell/ProjectContext/storage/FileSystemLoader\";\nimport { LocalStorageLoader } from \"@/shell/ProjectContext/storage/LocalStorageLoader\";\nimport { getDefaultProjectContextState, projectContextReducer } from \"@/shell/ProjectContext/ProjectContext.reducer\";\nimport { CollectionContext, ManifestContext, VaultProvider } from \"react-iiif-vault\";\nimport { AbstractVaultLoader } from \"@/shell/ProjectContext/storage/AbstractVaultLoader\";\nimport { ProjectReactContext, ProjectLoadingReactContext } from \"./ProjectContext\";\n\nexport interface ProjectProviderProps {\n children: ReactNode;\n defaultApp?: string;\n // Storage\n storage?: AbstractVaultLoader<any>;\n backend?: ProjectBackend;\n initialState?: () => ProjectState;\n}\nexport function ProjectProvider(props: ProjectProviderProps) {\n const { currentApp, changeApp, apps } = useApps();\n const selectedApp = currentApp ? apps[currentApp.id] : null;\n // @todo this may be configuration or something else.\n // The interface for the loader will definitely change over time.\n const backend = useMemo(\n () => props.backend || (window.__TAURI__ ? new FileSystemFolderBackend() : new LocalStorageBackend()),\n []\n );\n const storage = useMemo(\n () => props.storage || (window.__TAURI__ ? new FileSystemLoader() : new LocalStorageLoader()),\n []\n );\n const [state, dispatch] = useReducer(\n projectContextReducer,\n undefined,\n props.initialState || getDefaultProjectContextState\n );\n const actions = useProjectActionsWithBackend(dispatch, backend, storage);\n const context: ProjectContext = useMemo(\n () => ({ actions, canDelete: backend.canDelete(), ...state }),\n [actions, backend, state]\n );\n const { vault, ready, error } = useProjectLoader(context, storage);\n const manifestOrCollection = context.current?.resource;\n\n const loadingStatus = useMemo(() => {\n return { isLoading: !ready, isError: !!error, error };\n }, [ready, error]);\n\n useProjectBackend(context, backend);\n\n useEffect(() => {\n if (\n state.loadingStatus &&\n state.loadingStatus.loaded &&\n ready &&\n (!vault || !manifestOrCollection) &&\n currentApp?.id !== (props.defaultApp || \"splash\")\n ) {\n changeApp({ id: props.defaultApp || \"splash\" });\n }\n }, []);\n\n if ((state.loadingStatus && state.loadingStatus.loading) || (context.current && !manifestOrCollection)) {\n return <div>Loading...</div>;\n }\n\n if (manifestOrCollection?.type === \"Manifest\") {\n return (\n <ProjectLoadingReactContext.Provider value={loadingStatus}>\n <ProjectReactContext.Provider value={context}>\n <VaultProvider vault={vault || undefined} key={state.current?.id}>\n <ManifestContext manifest={manifestOrCollection?.id || \"\"}>{props.children}</ManifestContext>\n </VaultProvider>\n </ProjectReactContext.Provider>\n </ProjectLoadingReactContext.Provider>\n );\n }\n\n if (manifestOrCollection?.type === \"Collection\") {\n return (\n <ProjectLoadingReactContext.Provider value={loadingStatus}>\n <ProjectReactContext.Provider value={context}>\n <VaultProvider vault={vault || undefined} key={state.current?.id}>\n <CollectionContext collection={manifestOrCollection?.id || \"\"}>{props.children}</CollectionContext>\n </VaultProvider>\n </ProjectReactContext.Provider>\n </ProjectLoadingReactContext.Provider>\n );\n }\n\n return (\n <ProjectLoadingReactContext.Provider value={loadingStatus}>\n <ProjectReactContext.Provider value={context}>\n <VaultProvider vault={vault || undefined} key={state.current?.id}>\n {props.children}\n </VaultProvider>\n </ProjectReactContext.Provider>\n </ProjectLoadingReactContext.Provider>\n );\n}\n","import React, { ReactNode, useContext, useEffect, useMemo, useState } from \"react\";\nimport { ThumbnailSize } from \"@/atoms/HeightWidthSwitcher\";\nimport invariant from \"tiny-invariant\";\nimport { parse } from \"query-string\";\nimport { useProjectCreators } from \"@/shell\";\n\ninterface EditorContextInterface {\n // Layouts\n selectedProperty: string; // 11 usages\n selectedPanel?: number; // 16 usages\n changeSelectedProperty: (property: string, key?: number) => void; // 62 usages\n setView: (view: \"thumbnails\" | \"tree\" | \"grid\" | \"noNav\" | \"fullEditor\") => void; // 9 usages\n view: \"thumbnails\" | \"tree\" | \"grid\" | \"noNav\" | \"fullEditor\"; // 10 usages\n\n // This is just a modal.\n addCanvasModalOpen: boolean; // 2 usages\n setAddCanvasModalOpen: (boolean: boolean) => void; // 4 usages\n\n // This is panel state.\n thumbnailSize: ThumbnailSize; // 8 usages\n setThumbnailSize: (size: ThumbnailSize) => void; // 1 usages\n}\n\nexport const ManifestEditorContext = React.createContext<EditorContextInterface | null>(null);\n\nexport function useManifestEditor() {\n const ctx = useContext(ManifestEditorContext);\n\n invariant(ctx, \"Can only be called from <ManifestEditorProvider />\");\n\n return ctx;\n}\n\nexport function ManifestEditorProvider({\n children,\n ignoreQueryString,\n}: {\n children: ReactNode;\n ignoreQueryString?: boolean;\n}) {\n const [selectedProperty, setSelectedProperty] = useState(\"manifest\");\n const [selectedPanel, setSelectedPanel] = useState(0);\n const [addCanvasModalOpen, setAddCanvasModalOpen] = useState(false);\n const [view, setView] = useState<\"thumbnails\" | \"tree\" | \"grid\" | \"noNav\" | \"fullEditor\">(\"grid\");\n const { createProjectFromManifestId } = useProjectCreators();\n const changeSelectedProperty = (property: string, panelNum?: number) => {\n setSelectedProperty(property);\n if (panelNum || panelNum === 0) {\n setSelectedPanel(panelNum);\n }\n };\n\n useEffect(() => {\n if (!ignoreQueryString) {\n const parsed = parse(window.location.hash.slice(1));\n if (parsed && parsed.manifest && typeof parsed.manifest === \"string\") {\n createProjectFromManifestId(parsed.manifest).then(() => {\n window.location.hash = \"\";\n });\n return;\n }\n }\n }, []);\n\n const [thumbnailSize, setThumbnailSize] = useState({ w: 128, h: 128 });\n\n const editorSettings = useMemo(\n () => ({\n selectedProperty,\n view,\n selectedPanel,\n addCanvasModalOpen,\n thumbnailSize,\n languages: [],\n behaviorProperties: [],\n changeSelectedProperty,\n setView,\n setAddCanvasModalOpen,\n setThumbnailSize,\n }),\n [addCanvasModalOpen, selectedPanel, selectedProperty, thumbnailSize, view]\n );\n\n return <ManifestEditorContext.Provider value={editorSettings}>{children}</ManifestEditorContext.Provider>;\n}\n\nexport default ManifestEditorContext;\n","export const defaultTheme = {\n color: {\n main: \"#347cff\",\n mainHover: \"#4a89ff\",\n logoPink: \"#E94581\",\n white: \"white\",\n grey: \"grey\",\n black: \"black\",\n lightgrey: \"#F8F9FA\",\n mediumgrey: \"#dddddd\",\n danger: \"#a90e21\",\n warning: \"#e38627\",\n lightdanger: \"#ffeaea\",\n lightsuccess: \"#c5e8c5\",\n success: \"#6ccd55\",\n greyOverlay: \"rgba(0, 0, 0, 0.2)\",\n highlight: \"#faeed7\",\n },\n iiifColor: {\n manifest: \"rgba(0, 0, 0, 0.2)\",\n canvas: \"rgba(255, 222, 219, 0.8)\",\n service: \"rgba(13, 110, 253, 0.8)\",\n annotation: \"rgba(247, 226, 173, 0.8)\",\n contentResource: \"rgba(207, 247, 255, 0.8)\",\n ranges: \"rgba(144, 213, 157, 0.8)\",\n },\n padding: {\n xs: \"0.25rem\",\n small: \"0.5rem\",\n medium: \"1rem\",\n large: \"2rem\",\n },\n device: {\n mobile: \"375px\",\n tablet: \"768px\",\n laptop: \"992px\",\n desktop: \"1200px\",\n },\n shadows: {\n standard: \"rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.05) 0px 5px 15px 0px\",\n bottom: \"rgba(0, 0, 0, 0.1) 0px 4px 2px -2px\",\n },\n};\n","import React, { Component, ErrorInfo, ReactNode } from \"react\";\n\ninterface Props {\n children: ReactNode;\n}\n\ninterface State {\n hasError: boolean;\n}\n\nexport class ErrorBoundary extends Component<Props, State> {\n public state: State = {\n hasError: false,\n };\n\n public static getDerivedStateFromError(_: Error): State {\n console.error(_);\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error(\"Uncaught error:\", error, errorInfo);\n }\n\n public render() {\n if (this.state.hasError) {\n return <h1>Sorry.. there was an error</h1>;\n }\n\n return this.props.children;\n }\n}\n","import React, { ReactNode, useMemo } from \"react\";\nimport { LayoutProvider } from \"../Layout/Layout.context-internal\";\nimport { ProjectProvider, ProjectProviderProps } from \"../ProjectContext/ProjectContext.internal\";\nimport { PreviewProvider } from \"../PreviewContext/PreviewContext\";\nimport { PreviewConfiguration } from \"../PreviewContext/PreviewContext.types\";\nimport { ManifestEditorProvider } from \"@/apps/ManifestEditorLegacy/ManifestEditor.context\";\nimport { AppProvider } from \"../AppContext/AppContext\";\nimport { AppDefinition } from \"@/apps/app-loader\";\nimport { Config, ConfigProvider } from \"../ConfigContext/ConfigContext\";\nimport { defaultTheme } from \"@/themes/default-theme\";\nimport { ThemeProvider } from \"styled-components\";\nimport { ErrorBoundary } from \"@/atoms/ErrorBoundary\";\nimport { EditingStack } from \"@/shell/EditingStack/EditingStack\";\nimport { PreviewVaultContext } from \"@/shell/PreviewVault/PreviewVault\";\n\nconst previewConfigs: PreviewConfiguration[] = [\n {\n id: \"universal-viewer\",\n config: { url: \"https://uv-v4.netlify.app/#?iiifManifestId={manifestId}\" },\n type: \"external-manifest-preview\",\n label: \"Universal viewer\",\n },\n {\n id: \"mirador-3\",\n type: \"external-manifest-preview\",\n label: \"Mirador 3\",\n config: {\n url: \"https://tomcrane.github.io/scratch/mirador3/?iiif-content={manifestId}\",\n },\n },\n {\n id: \"iiif-preview\",\n config: { url: \"https://iiif-preview.digirati.services/store\" },\n type: \"iiif-preview-service\",\n label: \"IIIF Preview\",\n },\n];\n\nexport const ShellProvider = ({\n config,\n children,\n theme,\n saveCurrentApp,\n apps,\n initialApp,\n project,\n}: {\n config?: Partial<Config>;\n children: ReactNode;\n theme?: any;\n saveCurrentApp?: boolean;\n apps: AppDefinition;\n initialApp?: { id: string; args?: any };\n project?: Partial<ProjectProviderProps>;\n}) => {\n return (\n <ErrorBoundary>\n <PreviewVaultContext>\n <ThemeProvider theme={theme || defaultTheme}>\n <ConfigProvider config={config}>\n <AppProvider apps={apps.allApps} initialApp={initialApp} saveCurrentApp={saveCurrentApp}>\n <ProjectProvider {...(project || {})}>\n <EditingStack>\n <LayoutProvider>\n {/* @todo swap these out for (config?.previews || []) */}\n <PreviewProvider configs={config?.previews || previewConfigs}>\n <ManifestEditorProvider>{children}</ManifestEditorProvider>\n </PreviewProvider>\n </LayoutProvider>\n </EditingStack>\n </ProjectProvider>\n </AppProvider>\n </ConfigProvider>\n </ThemeProvider>\n </PreviewVaultContext>\n </ErrorBoundary>\n );\n};\n","// TaskBridge.\nimport mitt, { Emitter } from \"mitt\";\nimport { createContext, ReactNode, useCallback, useContext, useEffect, useMemo, useReducer } from \"react\";\n\ninterface Task<Req = any, Res = any> {\n name: string;\n status: \"idle\" | \"running\" | \"complete\" | \"error\";\n emitter: Emitter<any>;\n promise: Promise<any>;\n abort: AbortController;\n resolve: (value?: any) => void;\n reject: (reason?: any) => void;\n error?: string;\n request?: Req;\n response?: Res;\n}\n\nconst tempGlobalState: Record<string, Record<string, Task>> = {};\n\nconst DispatchReactContext = createContext<string>(\"global\");\n\nfunction useCurrentDispatchId() {\n return useContext(DispatchReactContext);\n}\n\nfunction createDeferred() {\n let res: (value: any) => void = undefined as any;\n let rej: (reason?: any) => void = undefined as any;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n\n return { promise, resolve: res, reject: rej };\n}\n\nexport function useTask(name: string) {\n const id = useCurrentDispatchId();\n const [, invalidate] = useReducer((r) => r + 1, 0);\n const task = useMemo(() => {\n if (!tempGlobalState[id]) {\n tempGlobalState[id] = {};\n }\n if (!tempGlobalState[id][name]) {\n tempGlobalState[id][name] = {\n name,\n emitter: mitt(),\n status: \"idle\",\n promise: Promise.resolve(),\n abort: new AbortController(),\n reject: () => void 0,\n resolve: () => void 0,\n };\n }\n\n return tempGlobalState[id][name];\n }, [id, name]);\n\n useTaskEvent(task, \"abort\", invalidate);\n useTaskEvent(task, \"error\", invalidate);\n useTaskEvent(task, \"complete\", invalidate);\n useTaskEvent(task, \"running\", invalidate);\n\n return task;\n}\n\nexport function useTaskEvent<Req = any, Res = any>(\n task: Task<Req, Res>,\n name: string,\n _cb: (task: Task<Req, Res>) => any\n) {\n const cb = useCallback(() => _cb(task), [_cb]);\n useEffect(() => {\n const em = task.emitter;\n em.on(name, cb);\n return () => em.off(name, cb);\n }, [name, cb, task.emitter]);\n}\n\nconst noop = () => void 0;\n\nexport function useTaskDispatch<Req = any, Res = any>(\n name: string,\n onComplete?: (task: Task<Req, Res>) => void | Promise<void>\n) {\n const taskDetails = useTask(name);\n\n useTaskEvent(taskDetails, \"complete\", onComplete ? onComplete : noop);\n\n const runTask = (request?: any) => {\n // Abort running tasks.\n if (taskDetails.status === \"running\") {\n taskDetails.abort.abort();\n taskDetails.emitter.emit(\"abort\");\n }\n\n // Error clearing.\n if (taskDetails.error) {\n taskDetails.error = \"\";\n }\n\n // Creating new task.\n const d = createDeferred();\n d.promise.then(() => taskDetails.emitter.emit(\"complete\")).catch(() => taskDetails.emitter.emit(\"error\"));\n taskDetails.status = \"running\";\n taskDetails.request = request;\n taskDetails.promise = d.promise;\n taskDetails.resolve = d.resolve;\n taskDetails.reject = d.reject;\n taskDetails.emitter.emit(\"running\");\n };\n\n return [runTask, taskDetails] as const;\n}\n\nexport function useTaskRunner<Req = any, Res = any>(\n name: string,\n onRun: (task: Task<Req, Res>) => void | Promise<void>\n) {\n const taskDetails = useTask(name);\n\n useTaskEvent(taskDetails, \"running\", onRun);\n\n const completeTask = (response?: any) => {\n if (taskDetails.status === \"running\") {\n taskDetails.response = response;\n taskDetails.status = \"complete\";\n taskDetails.resolve();\n }\n //\n };\n\n const rejectTask = (reason?: any, error?: any) => {\n if (taskDetails.status === \"running\") {\n taskDetails.error = error || reason;\n taskDetails.status = \"error\";\n taskDetails.reject(reason);\n }\n };\n\n return [completeTask, taskDetails, rejectTask] as const;\n}\n\nexport function TaskBridge({ children }: { children?: ReactNode }) {\n return (\n <DispatchReactContext.Provider value={useMemo(() => `id-${Date.now()}`, [])}>\n {children}\n </DispatchReactContext.Provider>\n );\n}\n","import { getValue } from \"@iiif/vault-helpers\";\nimport * as IIIFVault from \"@iiif/vault\";\n\n// This is from the ts version\n// Create an image in the DOM to measure height and width\nconst getImage = async (src: string): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const $img = document.createElement(\"img\");\n $img.onload = () => resolve($img);\n $img.onerror = () => reject();\n $img.src = src;\n if ($img.complete) {\n resolve($img); // cached.\n }\n });\n};\n\nconst getAudioVideo = async (src: string) => {\n return new Promise<HTMLVideoElement>((resolve, reject) => {\n // Video tag accepts both.\n const $media = document.createElement(\"video\");\n $media.onloadedmetadata = () => resolve($media);\n $media.onerror = () => reject();\n $media.preload = \"metadata\";\n $media.src = src;\n });\n};\n\n// use the hints from the user (if any), plus defaults, to get the order\n// in which to try various analysis\nfunction makeTryList(suppliedExpectedTypes: string[]) {\n const defaults = [\"Image\", \"ImageService\", \"ManifestOrCollection\", \"ContentState\"];\n let tryList: string[] = [];\n if (!suppliedExpectedTypes || suppliedExpectedTypes.length === 0) {\n tryList = defaults;\n }\n mergeList(suppliedExpectedTypes, tryList);\n mergeList(defaults, tryList);\n return tryList;\n}\n\nfunction mergeList(inputList: string[], outputList: string[]) {\n inputList.map((t: string) => {\n if (t === \"Image\" && !outputList.includes(\"Image\")) {\n outputList.push(\"Image\");\n }\n if (t === \"ImageService\" && !outputList.includes(\"ImageService\")) {\n outputList.push(\"ImageService\");\n }\n if (t === \"Manifest\" && !outputList.includes(\"ManifestOrCollection\")) {\n outputList.push(\"ManifestOrCollection\");\n }\n if (t === \"Collection\" && !outputList.includes(\"ManifestOrCollection\")) {\n outputList.push(\"ManifestOrCollection\");\n }\n if (t === \"ManifestOrCollection\" && !outputList.includes(\"ManifestOrCollection\")) {\n outputList.push(\"ManifestOrCollection\");\n }\n if (t === \"ContentState\" && !outputList.includes(\"ContentState\")) {\n outputList.push(\"ContentState\");\n }\n });\n}\n\nexport async function detectMedia() {\n //\n}\n\nexport async function analyse(url: string, ...expectedTypes: string[]) {\n // const tryList = makeTryList(expectedTypes);\n\n if (!url) {\n return;\n }\n\n // 2 new options:\n // - Audio\n // - Video\n // Only support them if they end in mp3 or mp4\n if (url.endsWith(\".mp3\") || url.endsWith(\".mp4\") || url.endsWith(\".m4a\") || url.endsWith(\".m4v\")) {\n try {\n const av = await getAudioVideo(url);\n if (av) {\n const isAudio = av.videoWidth === 0;\n return {\n id: url,\n type: av.videoWidth === 0 ? \"Sound\" : \"Video\",\n width: av.videoWidth || undefined, // naturalWidth\n height: av.videoHeight || undefined, // naturalHeight\n duration: av.duration,\n format: isAudio ? \"audio/mp4\" : \"video/mp4\",\n };\n }\n } catch (e) {\n // fall through..\n }\n }\n\n // This doesn't use the tryList order yet.\n // One advantage of doing a fetch first _even if we expect an image_ is that\n // we might capture the content type, if the image is CORS-enabled.\n let response = null;\n try {\n // Try head request, if that works...\n await fetch(url, { method: \"HEAD\" });\n\n // then fetch the full resource.\n response = await fetch(url);\n } catch {\n // can handle the error better, but maybe CORS error happened so:\n return handleNonFetchableUrl(url);\n }\n\n if (!response.ok) {\n response = await fetch(url + \"/info.json\");\n if (!response.ok) {\n return handleNonFetchableUrl(url);\n }\n }\n\n // but... it might have been a CORS-enabled image, or an image from an image service.\n // In this scenario we can capture the content type right here.\n const contentTypeHeader = response.headers.get(\"Content-Type\");\n if (contentTypeHeader?.includes(\"image/\")) {\n return handleNonFetchableUrl(url, contentTypeHeader);\n }\n\n // OK, it's probably NOT an image, and we have an OK response, so can we get JSON from it?\n let data = null;\n try {\n data = await response.json();\n } catch {\n return null;\n }\n\n return await analyseJson(data, url);\n}\n\nfunction asImageService(data: any) {\n if (data.protocol && data.protocol === \"http://iiif.io/api/image\") {\n if (!data.type) {\n data.type = \"ImageService\";\n }\n // NB this will be ImageService3 if it's a v3 img service\n return data;\n }\n return null;\n}\n\nexport async function analyseJson(data: any, url: string) {\n // Is it an image service?\n const testImageService = asImageService(data);\n if (testImageService) {\n return testImageService;\n }\n\n // does it have an ID?\n const dataId = data.id || data[\"@id\"];\n if (!dataId) {\n return null;\n }\n const vault = new IIIFVault.Vault();\n const vaultData = await vault.load(url, data); // we could use dataId here, but just in case it's wrong...\n if (!vaultData) {\n return;\n }\n // @ts-ignore\n if ((vaultData && vaultData?.type === \"Manifest\") || vaultData?.type === \"Collection\") {\n return {\n id: url,\n // @ts-ignore\n type: vaultData.type,\n // @ts-ignore\n label: getValue(vaultData.label),\n };\n }\n}\n\nasync function handleNonFetchableUrl(url: string, capturedContentType?: string) {\n // it *is* an image... but is it an image from an image service?\n // In its current form this should be tried before any fetch happens\n // that is, does it match:\n // http<s>://<any.org>/<any-prefix>/region/size/rotation/format.quality ?\n // This should really call Stephen's IIIF Image API parser, and if it's a success, we know it's\n // probably an image service\n // https://github.com/atlas-viewer/iiif-image-api\n // https://github.com/atlas-viewer/iiif-image-api/blob/main/src/utility/parse-image-service-request.ts\n const parts = url.split(\"/\");\n if (parts.length >= 8) {\n // might be an image service\n const iiifParts = parts.slice(-4);\n // need to do more than this but the parser can do the hard work\n if (iiifParts[3].split(\".\").length === 2) {\n // This is not reliable! parse it properly!\n if (iiifParts[2][0] === \"!\" || iiifParts[2] === iiifParts[2]) {\n // rotation param is numeric\n // this is worth trying as an image service\n const serviceUrl = parts.slice(0, parts.length - 4).join(\"/\") + \"/info.json\";\n // assume this is a low cost thing to try\n const imgService = await getImageService(serviceUrl);\n if (imgService && imgService?.type && imgService?.type?.startsWith(\"ImageService\")) {\n return imgService;\n }\n }\n }\n }\n\n // OK we didn't find an image service behind that image URL. So now it's time to use the DOM.\n\n try {\n const image = (await getImage(url)) as any;\n const data = {\n id: url,\n type: \"Image\",\n width: image.width, // naturalWidth\n height: image.height, // naturalHeight\n format: await getFormat(url, capturedContentType),\n };\n return data;\n } catch {}\n\n return null;\n}\n\nasync function getImageService(url: string) {\n try {\n const response = await fetch(url);\n if (response.ok) {\n const data = await response.json();\n return await analyseJson(data, url);\n }\n return null;\n } catch (e: any) {\n console.log(e);\n return null;\n }\n}\n\nexport async function getFormat(url: string, capturedContentType?: string) {\n if (capturedContentType) {\n // we managed to learn this earlier, the image had CORS\n return capturedContentType;\n }\n try {\n // a HEAD request doesn't have CORS issues... well it didn't used to...\n const response = await fetch(url, { method: \"HEAD\", mode: \"no-cors\" });\n const ct = response.headers.get(\"Content-type\");\n if (ct) {\n return ct;\n }\n } catch (e) {\n // ignore.\n }\n\n // if the above still fails, we could fall back to guessing\n // content-type from the URL (.jpg etc).\n const test = url.toLowerCase();\n if (test.endsWith(\"jpg\") || test.endsWith(\"jpeg\")) {\n return \"image/jpeg\";\n }\n if (test.endsWith(\"png\")) {\n return \"image/png\";\n }\n // Just a default.\n return \"image/jpeg\";\n}\n\nexport async function getImageDimensions(url: string) {\n try {\n const image = await getImage(url);\n if (image) {\n return {\n width: image.naturalWidth || image.width,\n height: image.naturalHeight || image.height,\n };\n }\n } catch (e) {\n return null;\n }\n return null;\n}\n","import { HTMLAttributes, useCallback, useMemo } from \"react\";\nimport { UniversalCopyPasteProps } from \"./UniversalCopyPaste.types\";\nimport { analyse } from \"../../helpers/analyse\";\n\nexport function UniversalCopyTarget<T>({\n as,\n reference: _ref,\n onReference,\n onLink,\n onAnalysis,\n onDropReference: _onDropReference,\n onDropLink: _onDropLink,\n onDropAnalysis: _onDropAnalysis,\n onPasteReference: _onPasteReference,\n onPasteLink: _onPasteLink,\n onPasteAnalysis: _onPasteAnalysis,\n ...props\n}: Partial<HTMLAttributes<HTMLElement>> & UniversalCopyPasteProps<T> & T) {\n // const vault = useVault();\n const Component = (as || \"div\") as any;\n\n const onDropReference = _onDropReference || onReference;\n const onDropLink = _onDropLink || onLink;\n const onDropAnalysis = _onDropAnalysis || onAnalysis;\n const onPasteReference = _onPasteReference || onReference;\n const onPasteLink = _onPasteLink || onLink;\n const onPasteAnalysis = _onPasteAnalysis || onAnalysis;\n\n const reference = useMemo(() => {\n return _ref;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [_ref?.id, _ref?.type]);\n\n const onCopy = useCallback(\n function onCopy(e: ClipboardEvent) {\n if (e.defaultPrevented) {\n return;\n }\n e.preventDefault();\n if (e.clipboardData) {\n if (reference && reference.id && reference.type) {\n // const full = vault.get(reference);\n // if (full) {\n // e.clipboardData.setData(\"application/json\", JSON.stringify(vault.toPresentation3(vault.get(reference))));\n // }\n\n e.clipboardData.setData(\n \"application/json+vault\",\n JSON.stringify({\n id: reference.id,\n type: reference.type,\n })\n );\n }\n }\n },\n [reference]\n );\n\n const onPaste = useCallback(async function onPaste(e: ClipboardEvent) {\n if (e.defaultPrevented) {\n return;\n }\n e.preventDefault();\n if (e.clipboardData) {\n if (props.onLoading) {\n props.onLoading();\n }\n\n if (onPasteReference) {\n const data = e.clipboardData.getData(\"application/json+vault\");\n if (data) {\n try {\n const dataAsJson = JSON.parse(data);\n if (dataAsJson && dataAsJson.id && dataAsJson.type) {\n onPasteReference(dataAsJson);\n }\n } catch (e) {\n // ignore.\n }\n }\n }\n\n if (onPasteLink || onPasteAnalysis) {\n const data = e.clipboardData.getData(\"text\");\n if (data.startsWith(\"http\")) {\n const allLinks = data.split(\"\\n\");\n for (const link of allLinks) {\n if (onPasteAnalysis) {\n try {\n const result = await analyse(link);\n if (result) {\n onPasteAnalysis(result);\n continue;\n }\n } catch (e) {\n // let it fallback to onPasteLink\n }\n }\n if (onPasteLink) {\n onPasteLink(link);\n }\n }\n }\n }\n if (props.onComplete) {\n props.onComplete();\n }\n }\n }, []);\n\n // @todo not working..\n const onDragStart = useCallback(function onPaste(e: DragEvent) {\n if (e.defaultPrevented) {\n return;\n }\n e.preventDefault();\n if (e.dataTransfer && props.draggable) {\n e.dataTransfer.effectAllowed = \"all\";\n\n if (reference && reference.id && reference.type) {\n e.dataTransfer.setData(\n \"application/json+vault\",\n JSON.stringify({\n id: reference.id,\n type: reference.type,\n })\n );\n }\n }\n }, []);\n\n const onDrop = useCallback(async function onDrop(e: DragEvent) {\n e.preventDefault();\n if (e.dataTransfer) {\n if (onDropReference) {\n const data = e.dataTransfer.getData(\"application/json+vault\");\n if (data) {\n try {\n const dataAsJson = JSON.parse(data);\n if (dataAsJson && dataAsJson.id && dataAsJson.type) {\n onDropReference(dataAsJson, e);\n }\n } catch (e) {\n // ignore.\n return;\n }\n }\n }\n const json = e.dataTransfer.getData(\"application/json\");\n if (json) {\n const parsed = JSON.parse(json);\n // @todo this could be raw JSON or a Content State.\n return;\n }\n const link = e.dataTransfer.getData(\"text/plain\");\n if (link) {\n console.log(\"link\", link);\n return;\n }\n }\n }, []);\n\n const onDragOver = useCallback((e: DragEvent) => {\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = \"copy\";\n }\n }, []);\n\n return (\n <Component\n onCopy={onCopy}\n onPaste={onPaste}\n onDrop={onDrop}\n onDragOver={onDragOver}\n onDragStart={onDragStart}\n tabIndex={-1}\n {...props}\n />\n );\n}\n"],"names":["f","require$$0","k","l","n","p","q","c","a","g","b","d","e","h","lsEmitter","mitt","useOptionalLocalStorage","key","initialValue","disabled","storedValue","setStoredValue","useState","localStorageValue","setLocalStorageValue","useLocalStorage","lastStoredValue","useRef","window","localStorage","item","getItem","current","JSON","parse","error","console","log","setValue","value","valueToStore","Function","valueJson","stringify","setItem","emit","useEffect","listener","on","off","ProjectReactContext","createContext","ProjectLoadingReactContext","undefined","isError","isLoading","useProjectLoading","useContext","useProjectContext","ctx","invariant","useCurrentProject","DesktopContext","children","x","strictUriEncode","require$$1","splitOnFirst","require$$2","require$$3","decode","queryString","AppReactContext","AppStateReactContext","state","setState","useApps","useAppState","AppStateProvider","props","_setState","stateRef","id","useCallback","partial","existing","partialState","args","appId","useMemo","useCurrentApp","initialApp","enableLocalStorage","s","currentApp","changeApp","import","PULL_REQUEST","app","qs","location","toString","split","AppProvider","apps","saveCurrentApp","editProject","project","resource","type","ButtonReset","styled","button","Button","theme","padding","small","color","main","white","SmallButton","xs","medium","CalltoButton","mainHover","div","$right","Container","Header","IconButton","Logo","ProjectPreview","Draft","DraftsText","DraftTitleEdit","form","DraftTitleEditInput","input","DraftTitleEditButton","DraftTitle","ExternalManifestUrlPreview","constructor","config","label","focusable","serviceUrl","windows","url","isPreviewValid","closed","getRequires","getProvides","createPreview","vault","replace","readOnlyManifest","Date","now","opened","open","data","focus","found","updatePreview","deletePreview","close","IIIFPreviewService","cache","manifest","toPresentation3","response","fetch","method","headers","Origin","body","ok","json","time","cached","expirationTtl","updateLocation","updateUrl","deleteLocation","t","r","o","i","u","v","y","_","this","usePreviewActions","dispatch","handlers","useVault","projects","currentProject","handlerMap","providesMap","map","handler","provides","length","singleProvides","updatePreviews","selected","previews","selectedPreview","find","selectedHandler","requires","context","preview","fullPreview","provide","indexOf","newPreview","payload","Object","assign","actions","setPreview","removePreview","selectPreview","activatePreview","then","focusPreview","existingPreviewList","existingPreview","requirement","handlerId","contextualPreview","usePreviewHandlers","configs","push","previewContextReducer","produce","reducer","action","active","filter","getDefaultPreviewState","PreviewReactContext","PreviewProvider","memo","useReducer","usePreviewContext","ButtonContainer","ButtonMain","ButtonChange","$open","css","MenuContainer","MenuItem","statusMap","available","configured","MenuItemStatus","$status","MenuItemLabel","MenuItemClose","ButtonEmpty","useDropdownMenu_1","_a","DownIcon","rotate","fill","transform","transition","CloseIcon","$solid","PreviewButton","configsToShow","isOpen","buttonProps","itemProps","useDropdownMenu","inactive","Dropdown","DropdownContent","black","lightgrey","DropdownItem","$active","DropdownMenu","DropdownLabel","DropdownDivider","justify","FlexContainer","$align","FlexContainerColumn","RecentFilesWidget","shadows","standard","RecentThumbnails","RecentLabel","_slicedToArray","TemplateCardContainer","TemplateCardNew","mediumgrey","TemplateCardPlaceholder","AddIcon","className","inline","height","verticalAlign","WidgetHeader","h4","TemplateCard","manifestUrl","changeManifest","IIIFVault","Vault","setManifest","waitData","loadManifest","href","getValue","NewTemplates","newTemplates","items","BaseMessage","$small","$wide","$margin","$banner","InfoMessage","large","PaddingComponentMedium","NewManifestModal","useConfig","createProjectFromManifestId","useProjectCreators","name","marginLeft","FullScreenEnterIcon","ModalBackground","ModalContainer","sizes","sm","maxWidth","md","lg","InnerModalContainer","$expanded","size","ModalBody","ModalHeader","ModalHeaderTitle","ModalCloseIcon","ModalResizeIcon","ModalFooter","$footerAlignRight","ModalButton","React","forwardRef","as","title","render","renderFooter","onClose","onOpen","modalSize","autoHeight","footerAlignRight","openByDefault","style","onKeyDown","tabIndex","role","ref","portalEl","ready","setIsReady","expanded","setIsExpanded","containerRef","useLayoutEffect","element","document","createElement","appendChild","removeChild","closeModal","Component","createPortal","target","ShellOptions","useLayoutActions","fileOpen","setFileOpen","helpOpen","setHelpOpen","opacity","pointerEvents","visibility","stacked","ManifestEditorLogo","DraftTitleEditor","editingTitle","setIsEditingTitle","FormData","fromEntries","entries","updateDetails","flushSync","getElementById","MenuIcon","AppMenu","isMenuHidden","setIsMenuHidden","filteredApps","values","metadata","projectType","dev","setIsOpen","hideMenu","AppHeader","onClickLogo","drafts","useIsDesktop","ConfigReactContext","ConfigProvider","resolvedConfig","behaviorPresets","defaultLanguages","editingStackReducer","source","stack","reset","toRef","newCurrent","newStack","filterStack","slice","create","newStackWithDuplicates","prev","stackItem","BaseEditor","validators","entity","get","skipSelfReturn","reference","getId","getType","focusId","_observe","selector","cb","skipInitial","subscribe","required","Collection","Manifest","Canvas","Annotation","AnnotationPage","Range","AnnotationCollection","ContentResource","Agent","recommended","optional","notAllowed","all","descriptiveProperties","BasePropertyEditor","property","observe","containerId","getContainerProps","isRequired","isRecommended","isNotAllowed","isOptional","orRecommended","validate","isWarning","warnings","errors","validator","types","includes","properties","isValid","valid","message","warning","getWithoutTracking","tracker","track","set","modifyEntityField","createAction","IMPORT_ENTITIES","importEntities","MetadataEditor","cachedList","cachedSortableList","idCache","Map","_getId","has","newId","v4","getSortable","fresh","add","beforeIndex","entityActions","addMetadata","update","atIndex","updateMetadata","deleteAtIndex","removeMetadata","moveToStart","index","reorder","moveToEnd","len","startIndex","endIndex","reorderMetadata","RequiredStatementEditor","updateLabel","text","newValue","none","CC0","CC_BY","CC_BY_SA","CC_BY_ND","CC_BY_NC","CC_BY_NC_SA","CC_BY_NC_ND","creativeCommons","shortLabel","description","icon","legal","RightsStatementEditor","getClean","endsWith","getDefinition","getIcon","definition","getOptions","NavDateEditor","setDate","date","toISOString","getDate","modifyAsDate","fn","dateTime","InternationalStringEditor","BaseReferenceListEditor","Error","reorderEntityField","list","toRemove","removeReference","addAfter","addReference","addBefore","moveUpBy","steps","Math","max","moveDownBy","min","duplicate","updateReference","batchInsertAtIndex","indexes","atOldIndex","oldIndex","DescriptiveEditor","summary","requiredStatement","rights","navDate","language","thumbnail","provider","placeholderCanvas","accompanyingCanvas","PropertyObserver","observed","start","onChange","lastEntity","lastProps","prop","Array","isArray","emptyTracker","SelfReferenceEditor","editor","parent","parentProperty","getSelector","removeFromParent","ReadonlyProperty","autoAdvance","repeat","manifestOrdering","canvasOrdering","collection","range","hidden","collectionOrdering","rangeOrdering","mapToItem","autoAdvanceConfig","en","addNone","repeatConfig","manifestOrderingConfig","canvasOrderingConfig","collectionConfig","rangeConfig","collectionOrderingConfig","rangeOrderingConfig","hiddenConfig","supportedBehaviorConfig","BehaviorEditor","getSupported","TechnicalEditor","mediaType","format","profile","width","duration","viewingDirection","behavior","timeMode","motivation","LinkingEditor","seeAlso","service","services","rendering","partOf","supplementary","homepage","logo","StructuralEditor","annotations","structures","linkingProperties","structuralProperties","annotationOnly","technicalProperties","extensionProperties","allowed","resources","supported","AnnotationTargetEditor","getSourceId","removeSelector","getParsedSelector","parseSelector","setPosition","position","join","AnnotationBodyEditor","isSpatial","hasBody","bodyRef","getFirst","err","getFirstOrNone","AnnotationEditor","NavPlaceEditor","ExtensionsEditor","navPlace","textGranularity","EditorInstance","_config","technical","descriptive","linking","structural","annotation","extensions","isMultiple","meta","getPartOf","HAS_PART","PART_OF","problems","defaultState","EditingStackContext","EditingStackActionsContext","edit","back","updateCurrent","useEditingStack","useEditingResource","useEditingResourceStack","useCreatingResource","useManifestEditor","useResourceContext","invalidate","useCollectionEditor","useGenericEditor","useAnnotationPageEditor","annotationPage","useEditor","EditingStack","_dispatch","options","LayoutPropsReactContext","LayoutActionsReactContext","LayoutStateReactContext","useLayoutState","useAvailableLayouts","useLayoutProvider","OuterWrapper","header","Footer","Main","LeftPanel","$motion","$state","$width","CenterPanel","RightPanel","PanelContainer","$menu","PanelMenu","$position","PanelContent","StarIcon","BackIcon","_setPrototypeOf","setPrototypeOf","changedArray","ErrorBoundary","PaddedSidebarContainer","ErrorMessage","ExperimentalMessage","ExperimentalIcon","LimitationError","FixMeError","fix","WarningMessage","PanelError","isFixing","setIsFixing","errorObject","fontSize","margin","resetErrorBoundary","isPinnableState","pinnable","panelSizing","initial","fallback","minWidth","Infinity","renderHelper","htmlOrReact","dangerouslySetInnerHTML","__html","ChangeIcon","LayoutTitleReactContext","useSetCustomTitle","ModularPanelWrapper","ModularPanelHeader","ModulePanelButton","ModulePanelSpacer","ModularPanelLabel","h2","ModularPanelContent","ModularPanel","panel","isLeft","pinActions","ReactVaultContext","didError","setDidError","appState","layout","tabs","hideHeader","resetKeys","canvasId","switchablePanels","requiresState","customTitle","setCustomTitle","setCustomTitleRef","_setCustomTitle","backAction","originalCallback","popStack","metaKey","preventDefault","menuHandler","newPanel","change","backButton","closeButton","display","renderBackAction","left","pinned","unpin","pin","renderCloseAction","closeAction","MobileBar","LeftBarButton","PreviewBarButton","DrawerContainer","DrawerButton","DrawerBody","Lightbox","ResetIcon","HandleContainer","HandleControl","ResizeHandle","IconControl","OpenControl","$dir","InnerHandleContainer","UnscaledContainer","HandleControls","dir","stopPropagation","useEventHandler","callback","deps","addEventListener","removeEventListener","distance","x1","y1","x2","y2","sqrt","pow","abs","getMaxWidthPct","container","defaultMaxWidthPct","maxWidthPct","maxWidthPixel","useResizeLayout","resizableDiv","otherDiv","resizer","newPct","isDragging","setIsDragging","isEventDragging","isEventTimeout","startPos","widthA","widthB","setWidths","minWidthPx","maxWidthPx","loading","pageX","pageY","clearTimeout","setTimeout","getBoundingClientRect","minWidthPct","newWidthB","newWidthA","onDragEnd","refs","Spinner","GhostBlocks","ghostLoadingBlock","ghostBlockList","MiniEditor","Layout","status","_vault","leftPanels","centerPanels","rightPanels","leftPanel","rightPanel","centerPanel","enableMotion","pinnedRightPanel","mobile","useMatchMedia","leftPanelResizer","rightPanelResizer","isProjectLoading","isProject","showRightPanel","equal","resetLeftPanel","resetRightPanel","setAvailable","onMount","renderLeftPanel","L.PanelContainer","leftPanelMenuPosition","L.PanelContent","leftPanelMenu","L.PanelMenu","renderCenterPanel","centerPanelMenuPosition","centerPanelMenu","flex","justifyContent","alignItems","renderRightPanel","rightPanelMenuPosition","rightPanelMenu","miniEditor","L.OuterWrapper","L.Header","menu","L.Main","M.Container","M.CenterPanel","M.MobileBar","M.LeftBarButton","toggle","M.DrawerContainer","M.DrawerButton","M.PreviewBarButton","M.DrawerBody","M.LeftPanel","M.Lightbox","L.LeftPanel","L.CenterPanel","L.RightPanel","L.Footer","footer","pushStack","latest","unique","original","panelReducer","minimised","customWidth","layoutReducer","getDefaultPanelState","getDefaultLayoutState","usePanelActions","minimise","maximise","setCustomWidth","resetSize","getManifestNomalized","responseData","catch","projectFromManifest","details","filename","slugify","lower","created","modified","publications","settings","storage","__defProp","__defNormalProp","__publicField","prefix","ensureUniqueFilename","filenames","toLowerCase","counter","potentialFilename","projectFromCollection","useProjectActionsWithBackend","backend","createProject","allProjects","getAllProjects","canCreate","backendStorage","createdProject","switchProject","deleteProject","canDelete","setLastProject","deselectProject","forkProject","setLoadingStatus","saveProject","Promise","updateProject","saveStorage","createPublication","updatePublication","removePublication","updateSettings","updateThumbnail","updateStorage","load","publication","useProjectBackend","lastLoaded","loaded","lastId","getLastProject","lastValid","loadingStatus","useProjectLoader","currentRef","setError","saveChanges","newStorage","getBackendStorage","shallowEqual","debounceSaveChanges","useDebounce","saveInterval","currentId","promise","createVaultInstance","currentStorage","currentVault","closeVaultInstance","ClientVault","ws","cancelled","shouldUpdateWithVault","createBlankManifest","full","convertPresentation2","createProjectFromCollectionId","createProjectFromManifestJson","require","module","exports","global","self","idb","j","forage","keys","db","resolve","reject","sameValue","LocalForage","configureMissingMethods","methodNotImplementedFactory","setDriverSupport","supportedDrivers","LocalStorageBackend","namespace","localforage","removeItem","getProjectIndex","saveProjectIndex","AbstractVaultLoader","vaults","foundVault","getStorage","manifestRef","stored","saveStorageData","WebsocketLoader","baseUrl","token","waitUntilReady","manifestStorage","deleteStorage","LocalStorageLoader","createInstance","createAction2","createPreviewVault","homepageCollectionId","previewCollection","didImport","previewState","requestResource","toDispatch","actionListFromResource","batchActions","clearHistory","addHistory","getState","existingCollection","iiif","entities","alreadyExists","findIndex","unsubscribe","usePreviewVault","PreviewVaultReactContext","PreviewVaultAddHistory","HOMEPAGE_COLLECTION","usePreviewHistory","PreviewVaultContext","PreviewVaultBoundary","ResourceEditingReactContext","useEditingContext","useResource","fullResource","useVaultSelector","useOptionalResource","ResourceEditingProvider","_state","LayoutProvider","editingStack","right","center","openPinned","toEdit","isSpecificResource","otherActions","projectContextReducer","splice","getDefaultProjectContextState","ProjectProvider","initialState","manifestOrCollection","defaultApp","ManifestEditorContext","ManifestEditorProvider","ignoreQueryString","selectedProperty","setSelectedProperty","selectedPanel","setSelectedPanel","addCanvasModalOpen","setAddCanvasModalOpen","view","setView","changeSelectedProperty","panelNum","parsed","hash","thumbnailSize","setThumbnailSize","w","editorSettings","languages","behaviorProperties","defaultTheme","logoPink","grey","danger","lightdanger","lightsuccess","success","greyOverlay","highlight","iiifColor","canvas","contentResource","ranges","device","tablet","laptop","desktop","bottom","hasError","getDerivedStateFromError","componentDidCatch","errorInfo","previewConfigs","ShellProvider","allApps","tempGlobalState","DispatchReactContext","useCurrentDispatchId","createDeferred","res","rej","useTask","task","emitter","abort","AbortController","useTaskEvent","_cb","em","noop","useTaskDispatch","onComplete","taskDetails","runTask","request","useTaskRunner","onRun","completeTask","rejectTask","reason","TaskBridge","getImage","src","$img","onload","onerror","complete","getAudioVideo","$media","onloadedmetadata","preload","analyse","expectedTypes","av","isAudio","videoWidth","videoHeight","handleNonFetchableUrl","contentTypeHeader","analyseJson","asImageService","protocol","testImageService","dataId","vaultData","capturedContentType","parts","iiifParts","imgService","getImageService","startsWith","image","getFormat","mode","ct","test","UniversalCopyTarget","_ref","onReference","onLink","onAnalysis","onDropReference","_onDropReference","onDropLink","_onDropLink","onDropAnalysis","_onDropAnalysis","onPasteReference","_onPasteReference","onPasteLink","_onPasteLink","onPasteAnalysis","_onPasteAnalysis","onCopy","defaultPrevented","clipboardData","setData","onPaste","onLoading","getData","dataAsJson","allLinks","link","result","onDragStart","dataTransfer","draggable","effectAllowed","onDrop","onDragOver","dropEffect"],"mappings":"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"}
|