@sanity/document-internationalization 3.3.0 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/DeleteTranslationDialog/DocumentPreview.tsx","../src/constants.ts","../src/components/DeleteTranslationDialog/separateReferences.ts","../src/components/DeleteTranslationDialog/index.tsx","../src/components/DeleteTranslationFooter.tsx","../node_modules/suspend-react/index.js","../src/components/DocumentInternationalizationContext.tsx","../src/actions/DeleteTranslationAction.tsx","../node_modules/tslib/tslib.es6.mjs","../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/rxjs/dist/esm5/internal/util/lift.js","../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../src/hooks/useLanguageMetadata.tsx","../src/i18n/index.ts","../src/actions/DuplicateWithTranslationsAction.tsx","../src/hooks/useOpenInNewPane.tsx","../src/utils/createReference.ts","../src/components/LanguageManage.tsx","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/eq.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_root.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_getTag.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/supports-color/browser.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/flatten.js","../node_modules/@sanity/diff-match-patch/dist/index.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/_baseExtremum.js","../node_modules/lodash/_baseGt.js","../node_modules/lodash/identity.js","../node_modules/lodash/max.js","../node_modules/lodash/_baseLt.js","../node_modules/lodash/min.js","../node_modules/lodash/compact.js","../node_modules/@sanity/mutator/lib/index.mjs","../src/utils/excludePaths.ts","../src/components/LanguageOption.tsx","../src/components/LanguagePatch.tsx","../src/components/ConstrainedBox.tsx","../src/components/Warning.tsx","../src/components/DocumentInternationalizationMenu.tsx","../src/actions/DeleteMetadataAction.tsx","../src/badges/index.tsx","../src/components/BulkPublish/DocumentCheck.tsx","../src/components/BulkPublish/InfoIcon.tsx","../src/components/BulkPublish/Info.tsx","../src/components/BulkPublish/index.tsx","../src/components/OptimisticallyStrengthen/ReferencePatcher.tsx","../src/components/OptimisticallyStrengthen/index.tsx","../src/schema/translation/metadata.ts","../src/plugin.tsx"],"sourcesContent":["import {Preview, useSchema} from 'sanity'\nimport {Feedback} from 'sanity-plugin-utils'\n\ntype DocumentPreviewProps = {\n value: unknown\n type: string\n}\n\n// Wrapper of Preview just so that the schema type is satisfied by schema.get()\nexport default function DocumentPreview(props: DocumentPreviewProps) {\n const schema = useSchema()\n\n const schemaType = schema.get(props.type)\n if (!schemaType) {\n return <Feedback tone=\"critical\" title=\"Schema type not found\" />\n }\n\n return <Preview value={props.value} schemaType={schemaType} />\n}\n","import type {PluginConfigContext} from './types'\n\nexport const METADATA_SCHEMA_NAME = `translation.metadata`\nexport const TRANSLATIONS_ARRAY_NAME = `translations`\nexport const API_VERSION = `2023-05-22`\nexport const DEFAULT_CONFIG: PluginConfigContext = {\n supportedLanguages: [],\n schemaTypes: [],\n languageField: `language`,\n weakReferences: false,\n bulkPublish: false,\n metadataFields: [],\n apiVersion: API_VERSION,\n allowCreateMetaDoc: false,\n callback: null,\n}\n","import type {SanityDocument} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../../constants'\n\nexport function separateReferences(data: SanityDocument[] | null = []): {\n translations: SanityDocument[]\n otherReferences: SanityDocument[]\n} {\n const translations: SanityDocument[] = []\n const otherReferences: SanityDocument[] = []\n\n if (data && data.length > 0) {\n data.forEach((doc) => {\n if (doc._type === METADATA_SCHEMA_NAME) {\n translations.push(doc)\n } else {\n otherReferences.push(doc)\n }\n })\n }\n\n return {translations, otherReferences}\n}\n","import {Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useEffect, useMemo} from 'react'\nimport type {SanityDocument} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport DocumentPreview from './DocumentPreview'\nimport {separateReferences} from './separateReferences'\n\ntype DeleteTranslationDialogProps = {\n doc: SanityDocument\n documentId: string\n setTranslations: (translations: SanityDocument[]) => void\n}\n\nexport default function DeleteTranslationDialog(\n props: DeleteTranslationDialogProps\n) {\n const {doc, documentId, setTranslations} = props\n\n // Get all references and check if any of them are translations metadata\n const {data, loading} = useListeningQuery<SanityDocument[]>(\n `*[references($id)]{_id, _type}`,\n {params: {id: documentId}, initialValue: []}\n )\n const {translations, otherReferences} = useMemo(\n () => separateReferences(data),\n [data]\n )\n\n useEffect(() => {\n setTranslations(translations)\n }, [setTranslations, translations])\n\n if (loading) {\n return (\n <Flex padding={4} align=\"center\" justify=\"center\">\n <Spinner />\n </Flex>\n )\n }\n\n return (\n <Stack space={4}>\n {translations && translations.length > 0 ? (\n <Text>\n This document is a language-specific version which other translations\n depend on.\n </Text>\n ) : (\n <Text>This document does not have connected translations.</Text>\n )}\n <Card border padding={3}>\n <Stack space={4}>\n <Text size={1} weight=\"semibold\">\n {translations && translations.length > 0 ? (\n <>Before this document can be deleted</>\n ) : (\n <>This document can now be deleted</>\n )}\n </Text>\n <DocumentPreview value={doc} type={doc._type} />\n {translations && translations.length > 0 ? (\n <>\n <Card borderTop />\n <Text size={1} weight=\"semibold\">\n The reference in{' '}\n {translations.length === 1\n ? `this translations document`\n : `these translations documents`}{' '}\n must be removed\n </Text>\n {translations.map((translation) => (\n <DocumentPreview\n key={translation._id}\n value={translation}\n type={translation._type}\n />\n ))}\n </>\n ) : null}\n {otherReferences && otherReferences.length > 0 ? (\n <>\n <Card borderTop />\n <Text size={1} weight=\"semibold\">\n {otherReferences.length === 1\n ? `There is an additional reference`\n : `There are additional references`}{' '}\n to this document\n </Text>\n {otherReferences.map((reference) => (\n <DocumentPreview\n key={reference._id}\n value={reference}\n type={reference._type}\n />\n ))}\n </>\n ) : null}\n </Stack>\n </Card>\n {otherReferences.length === 0 ? (\n <Text>This document has no other references.</Text>\n ) : (\n <Text>\n You may not be able to delete this document because other documents\n refer to it.\n </Text>\n )}\n </Stack>\n )\n}\n","import {Button, Grid} from '@sanity/ui'\n\ntype DeleteTranslationFooterProps = {\n translations: unknown[]\n onClose: () => void\n onProceed: () => void\n}\n\nexport default function DeleteTranslationFooter(\n props: DeleteTranslationFooterProps\n) {\n const {translations, onClose, onProceed} = props\n\n return (\n <Grid columns={2} gap={2}>\n <Button text=\"Cancel\" onClick={onClose} mode=\"ghost\" />\n <Button\n text={\n translations && translations.length > 0\n ? `Unset translation reference`\n : `Delete document`\n }\n onClick={onProceed}\n tone=\"critical\"\n />\n </Grid>\n )\n}\n","const isPromise = promise => typeof promise === 'object' && typeof promise.then === 'function';\n\nconst globalCache = [];\n\nfunction shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {\n if (arrA === arrB) return true;\n if (!arrA || !arrB) return false;\n const len = arrA.length;\n if (arrB.length !== len) return false;\n\n for (let i = 0; i < len; i++) if (!equal(arrA[i], arrB[i])) return false;\n\n return true;\n}\n\nfunction query(fn, keys = null, preload = false, config = {}) {\n // If no keys were given, the function is the key\n if (keys === null) keys = [fn];\n\n for (const entry of globalCache) {\n // Find a match\n if (shallowEqualArrays(keys, entry.keys, entry.equal)) {\n // If we're pre-loading and the element is present, just return\n if (preload) return undefined; // If an error occurred, throw\n\n if (Object.prototype.hasOwnProperty.call(entry, 'error')) throw entry.error; // If a response was successful, return\n\n if (Object.prototype.hasOwnProperty.call(entry, 'response')) {\n if (config.lifespan && config.lifespan > 0) {\n if (entry.timeout) clearTimeout(entry.timeout);\n entry.timeout = setTimeout(entry.remove, config.lifespan);\n }\n\n return entry.response;\n } // If the promise is still unresolved, throw\n\n\n if (!preload) throw entry.promise;\n }\n } // The request is new or has changed.\n\n\n const entry = {\n keys,\n equal: config.equal,\n remove: () => {\n const index = globalCache.indexOf(entry);\n if (index !== -1) globalCache.splice(index, 1);\n },\n promise: // Execute the promise\n (isPromise(fn) ? fn : fn(...keys) // When it resolves, store its value\n ).then(response => {\n entry.response = response; // Remove the entry in time if a lifespan was given\n\n if (config.lifespan && config.lifespan > 0) {\n entry.timeout = setTimeout(entry.remove, config.lifespan);\n }\n }) // Store caught errors, they will be thrown in the render-phase to bubble into an error-bound\n .catch(error => entry.error = error)\n }; // Register the entry\n\n globalCache.push(entry); // And throw the promise, this yields control back to React\n\n if (!preload) throw entry.promise;\n return undefined;\n}\n\nconst suspend = (fn, keys, config) => query(fn, keys, false, config);\n\nconst preload = (fn, keys, config) => void query(fn, keys, true, config);\n\nconst peek = keys => {\n var _globalCache$find;\n\n return (_globalCache$find = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal))) == null ? void 0 : _globalCache$find.response;\n};\n\nconst clear = keys => {\n if (keys === undefined || keys.length === 0) globalCache.splice(0, globalCache.length);else {\n const entry = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal));\n if (entry) entry.remove();\n }\n};\n\nexport { clear, peek, preload, suspend };\n","import {useContext} from 'react'\nimport {createContext} from 'react'\nimport {type LayoutProps, useClient, useWorkspace} from 'sanity'\nimport {suspend} from 'suspend-react'\n\nimport {DEFAULT_CONFIG} from '../constants'\nimport type {PluginConfig, PluginConfigContext} from '../types'\n\nconst DocumentInternationalizationContext =\n createContext<PluginConfigContext>(DEFAULT_CONFIG)\n\nexport function useDocumentInternationalizationContext() {\n return useContext(DocumentInternationalizationContext)\n}\n\ntype DocumentInternationalizationProviderProps = LayoutProps & {\n pluginConfig: Required<PluginConfig>\n}\n\n/**\n * This Provider wraps the Studio and provides the DocumentInternationalization context to document actions and components.\n */\nexport function DocumentInternationalizationProvider(\n props: DocumentInternationalizationProviderProps\n) {\n const {pluginConfig} = props\n\n const client = useClient({apiVersion: pluginConfig.apiVersion})\n const workspace = useWorkspace()\n const supportedLanguages = Array.isArray(pluginConfig.supportedLanguages)\n ? pluginConfig.supportedLanguages\n : // eslint-disable-next-line require-await\n suspend(async () => {\n if (typeof pluginConfig.supportedLanguages === 'function') {\n return pluginConfig.supportedLanguages(client)\n }\n return pluginConfig.supportedLanguages\n }, [workspace])\n\n return (\n <DocumentInternationalizationContext.Provider\n value={{...pluginConfig, supportedLanguages}}\n >\n {props.renderDefault(props)}\n </DocumentInternationalizationContext.Provider>\n )\n}\n","import {TrashIcon} from '@sanity/icons'\nimport {type ButtonTone, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type SanityDocument,\n useClient,\n} from 'sanity'\n\nimport DeleteTranslationDialog from '../components/DeleteTranslationDialog'\nimport DeleteTranslationFooter from '../components/DeleteTranslationFooter'\nimport {useDocumentInternationalizationContext} from '../components/DocumentInternationalizationContext'\nimport {API_VERSION, TRANSLATIONS_ARRAY_NAME} from '../constants'\n\nexport const DeleteTranslationAction: DocumentActionComponent = (props) => {\n const {id: documentId, published, draft} = props\n const doc = draft || published\n const {languageField} = useDocumentInternationalizationContext()\n\n const [isDialogOpen, setDialogOpen] = useState(false)\n const [translations, setTranslations] = useState<SanityDocument[]>([])\n const onClose = useCallback(() => setDialogOpen(false), [])\n const documentLanguage = doc ? doc[languageField] : null\n\n const toast = useToast()\n const client = useClient({apiVersion: API_VERSION})\n\n // Remove translation reference and delete document in one transaction\n const onProceed = useCallback(() => {\n const tx = client.transaction()\n let operation = 'DELETE'\n\n if (documentLanguage && translations.length > 0) {\n operation = 'UNSET'\n translations.forEach((translation) => {\n tx.patch(translation._id, (patch) =>\n patch.unset([\n `${TRANSLATIONS_ARRAY_NAME}[_key == \"${documentLanguage}\"]`,\n ])\n )\n })\n } else {\n tx.delete(documentId)\n tx.delete(`drafts.${documentId}`)\n }\n\n tx.commit()\n .then(() => {\n if (operation === 'DELETE') {\n onClose()\n }\n toast.push({\n status: 'success',\n title:\n operation === 'UNSET'\n ? 'Translation reference unset'\n : 'Document deleted',\n description:\n operation === 'UNSET' ? 'The document can now be deleted' : null,\n })\n })\n .catch((err) => {\n toast.push({\n status: 'error',\n title:\n operation === 'unset'\n ? 'Failed to unset translation reference'\n : 'Failed to delete document',\n description: err.message,\n })\n })\n }, [client, documentLanguage, translations, documentId, onClose, toast])\n\n return {\n label: `Delete translation...`,\n disabled: !doc || !documentLanguage,\n icon: TrashIcon,\n tone: 'critical' as ButtonTone,\n onHandle: () => {\n setDialogOpen(true)\n },\n dialog: isDialogOpen && {\n type: 'dialog',\n onClose,\n header: 'Delete translation',\n content: doc ? (\n <DeleteTranslationDialog\n doc={doc}\n documentId={documentId}\n setTranslations={setTranslations}\n />\n ) : null,\n footer: (\n <DeleteTranslationFooter\n onClose={onClose}\n onProceed={onProceed}\n translations={translations}\n />\n ),\n },\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n}; });\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport type {Metadata} from '../types'\n\n// Using references() seemed less reliable for updating the listener\n// results than querying raw values in the array\n// AFAIK: references is _faster_ when querying with GROQ\n// const query = `*[_type == $translationSchema && references($id)]`\nconst query = `*[_type == $translationSchema && $id in translations[].value._ref]{\n _id,\n _createdAt,\n translations\n}`\n\nexport function useTranslationMetadata(id: string): {\n data: Metadata[] | null\n loading: boolean\n error: boolean | unknown | ProgressEvent\n} {\n const {data, loading, error} = useListeningQuery<Metadata[]>(query, {\n params: {id, translationSchema: METADATA_SCHEMA_NAME},\n })\n\n return {data, loading, error}\n}\n","import {defineLocaleResourceBundle} from 'sanity'\n\n/**\n * The locale namespace for the document internationalization plugin.\n *\n * @public\n */\nexport const documenti18nLocaleNamespace =\n 'document-internationalization' as const\n\n/**\n * The default locale bundle for the document internationalization plugin, which is US English.\n *\n * @internal\n */\nexport const documentInternationalizationUsEnglishLocaleBundle =\n defineLocaleResourceBundle({\n locale: 'en-US',\n namespace: documenti18nLocaleNamespace,\n resources: () => import('./resources'),\n })\n","import {CopyIcon} from '@sanity/icons'\nimport {useToast} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useMemo, useState} from 'react'\nimport {filter, firstValueFrom} from 'rxjs'\nimport {\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n type DocumentActionComponent,\n type Id,\n InsufficientPermissionsMessage,\n type PatchOperations,\n useClient,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useDocumentStore,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\nimport {structureLocaleNamespace} from 'sanity/structure'\n\nimport {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../constants'\nimport {useTranslationMetadata} from '../hooks/useLanguageMetadata'\nimport {documenti18nLocaleNamespace} from '../i18n'\n\nconst DISABLED_REASON_KEY = {\n METADATA_NOT_FOUND: 'action.duplicate.disabled.missing-metadata',\n MULTIPLE_METADATA: 'action.duplicate.disabled.multiple-metadata',\n NOTHING_TO_DUPLICATE: 'action.duplicate.disabled.nothing-to-duplicate',\n NOT_READY: 'action.duplicate.disabled.not-ready',\n}\n\nexport const DuplicateWithTranslationsAction: DocumentActionComponent = ({\n id,\n type,\n onComplete,\n}) => {\n const documentStore = useDocumentStore()\n const {duplicate} = useDocumentOperation(id, type)\n const {navigateIntent} = useRouter()\n const [isDuplicating, setDuplicating] = useState(false)\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n permission: 'duplicate',\n })\n const {data, loading: isMetadataDocumentLoading} = useTranslationMetadata(id)\n const hasOneMetadataDocument = useMemo(() => {\n return Array.isArray(data) && data.length <= 1\n }, [data])\n const metadataDocument = Array.isArray(data) && data.length ? data[0] : null\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n const toast = useToast()\n const {t: s} = useTranslation(structureLocaleNamespace)\n const {t: d} = useTranslation(documenti18nLocaleNamespace)\n const currentUser = useCurrentUser()\n\n const handle = useCallback(async () => {\n setDuplicating(true)\n\n try {\n if (!metadataDocument) {\n throw new Error('Metadata document not found')\n }\n\n // 1. Duplicate the document and its localized versions\n const translations = new Map<string, Id>()\n await Promise.all(\n metadataDocument[TRANSLATIONS_ARRAY_NAME].map(async (translation) => {\n const dupeId = uuid()\n const locale = translation._key\n const docId = translation.value?._ref\n\n if (!docId) {\n throw new Error('Translation document not found')\n }\n\n const {duplicate: duplicateTranslation} = await firstValueFrom(\n documentStore.pair\n .editOperations(docId, type)\n .pipe(filter((op) => op.duplicate.disabled !== 'NOT_READY'))\n )\n\n if (duplicateTranslation.disabled) {\n throw new Error('Cannot duplicate document')\n }\n\n const duplicateTranslationSuccess = firstValueFrom(\n documentStore.pair\n .operationEvents(docId, type)\n .pipe(filter((e) => e.op === 'duplicate' && e.type === 'success'))\n )\n duplicateTranslation.execute(dupeId)\n await duplicateTranslationSuccess\n\n translations.set(locale, dupeId)\n })\n )\n\n // 2. Duplicate the metadata document\n const {duplicate: duplicateMetadata} = await firstValueFrom(\n documentStore.pair\n .editOperations(metadataDocument._id, METADATA_SCHEMA_NAME)\n .pipe(filter((op) => op.duplicate.disabled !== 'NOT_READY'))\n )\n\n if (duplicateMetadata.disabled) {\n throw new Error('Cannot duplicate document')\n }\n\n const duplicateMetadataSuccess = firstValueFrom(\n documentStore.pair\n .operationEvents(metadataDocument._id, METADATA_SCHEMA_NAME)\n .pipe(filter((e) => e.op === 'duplicate' && e.type === 'success'))\n )\n const dupeId = uuid()\n duplicateMetadata.execute(dupeId)\n await duplicateMetadataSuccess\n\n // 3. Patch the duplicated metadata document to update the references\n // TODO: use document store\n // const {patch: patchMetadata} = await firstValueFrom(\n // documentStore.pair\n // .editOperations(dupeId, METADATA_SCHEMA_NAME)\n // .pipe(filter((op) => op.patch.disabled !== 'NOT_READY'))\n // )\n\n // if (patchMetadata.disabled) {\n // throw new Error('Cannot patch document')\n // }\n\n // await firstValueFrom(\n // documentStore.pair\n // .consistencyStatus(dupeId, METADATA_SCHEMA_NAME)\n // .pipe(filter((isConsistant) => isConsistant))\n // )\n\n // const patchMetadataSuccess = firstValueFrom(\n // documentStore.pair\n // .operationEvents(dupeId, METADATA_SCHEMA_NAME)\n // .pipe(filter((e) => e.op === 'patch' && e.type === 'success'))\n // )\n\n const patch: PatchOperations = {\n set: Object.fromEntries(\n Array.from(translations.entries()).map(([locale, documentId]) => [\n `${TRANSLATIONS_ARRAY_NAME}[_key == \"${locale}\"].value._ref`,\n documentId,\n ])\n ),\n }\n\n // patchMetadata.execute([patch])\n // await patchMetadataSuccess\n await client.transaction().patch(dupeId, patch).commit()\n\n // 4. Navigate to the duplicated document\n navigateIntent('edit', {\n id: Array.from(translations.values()).at(0),\n type,\n })\n\n onComplete()\n } catch (error) {\n console.error(error)\n toast.push({\n status: 'error',\n title: 'Error duplicating document',\n description:\n error instanceof Error\n ? error.message\n : 'Failed to duplicate document',\n })\n } finally {\n setDuplicating(false)\n }\n }, [\n client,\n documentStore.pair,\n metadataDocument,\n navigateIntent,\n onComplete,\n toast,\n type,\n ])\n\n return useMemo(() => {\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n icon: CopyIcon,\n disabled: true,\n label: d('action.duplicate.label'),\n title: (\n <InsufficientPermissionsMessage\n context=\"duplicate-document\"\n currentUser={currentUser}\n />\n ),\n }\n }\n\n if (!isMetadataDocumentLoading && !metadataDocument) {\n return {\n icon: CopyIcon,\n disabled: true,\n label: d('action.duplicate.label'),\n title: d(DISABLED_REASON_KEY.METADATA_NOT_FOUND),\n }\n }\n\n if (!hasOneMetadataDocument) {\n return {\n icon: CopyIcon,\n disabled: true,\n label: d('action.duplicate.label'),\n title: d(DISABLED_REASON_KEY.MULTIPLE_METADATA),\n }\n }\n\n return {\n icon: CopyIcon,\n disabled:\n isDuplicating ||\n Boolean(duplicate.disabled) ||\n isPermissionsLoading ||\n isMetadataDocumentLoading,\n label: isDuplicating\n ? s('action.duplicate.running.label')\n : d('action.duplicate.label'),\n title: duplicate.disabled\n ? s(DISABLED_REASON_KEY[duplicate.disabled])\n : '',\n onHandle: handle,\n }\n }, [\n currentUser,\n duplicate.disabled,\n handle,\n hasOneMetadataDocument,\n isDuplicating,\n isMetadataDocumentLoading,\n isPermissionsLoading,\n metadataDocument,\n permissions?.granted,\n s,\n d,\n ])\n}\n\nDuplicateWithTranslationsAction.action = 'duplicate'\n// @ts-expect-error `displayName` is used by React DevTools\nDuplicateWithTranslationsAction.displayName = 'DuplicateWithTranslationsAction'\n","import {useCallback, useContext} from 'react'\nimport {RouterContext} from 'sanity/router'\nimport {usePaneRouter} from 'sanity/structure'\n\nexport function useOpenInNewPane(id?: string | null, type?: string) {\n const routerContext = useContext(RouterContext)\n const {routerPanesState, groupIndex} = usePaneRouter()\n\n const openInNewPane = useCallback(() => {\n if (!routerContext || !id || !type) {\n return\n }\n\n // No panes open, function might be called outside Structure\n if (!routerPanesState.length) {\n routerContext.navigateIntent('edit', {id, type})\n return\n }\n\n const panes = [...routerPanesState]\n panes.splice(groupIndex + 1, 0, [\n {\n id: id,\n params: {type},\n },\n ])\n\n const href = routerContext.resolvePathFromState({panes})\n routerContext.navigateUrl({path: href})\n }, [id, type, routerContext, routerPanesState, groupIndex])\n\n return openInNewPane\n}\n","import type {TranslationReference} from '../types'\n\nexport function createReference(\n key: string,\n ref: string,\n type: string,\n strengthenOnPublish: boolean = true\n): TranslationReference {\n return {\n _key: key,\n _type: 'internationalizedArrayReferenceValue',\n value: {\n _type: 'reference',\n _ref: ref,\n _weak: true,\n // If the user has configured weakReferences, we won't want to strengthen them\n ...(strengthenOnPublish ? {_strengthenOnPublish: {type}} : {}),\n },\n }\n}\n","import {CogIcon} from '@sanity/icons'\nimport {Box, Button, Stack, Text, Tooltip} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {type ObjectSchemaType, useClient} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport {useOpenInNewPane} from '../hooks/useOpenInNewPane'\nimport {createReference} from '../utils/createReference'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguageManageProps = {\n id?: string\n metadataId?: string | null\n schemaType: ObjectSchemaType\n documentId: string\n sourceLanguageId?: string\n}\n\nexport default function LanguageManage(props: LanguageManageProps) {\n const {id, metadataId, schemaType, documentId, sourceLanguageId} = props\n const open = useOpenInNewPane(id, METADATA_SCHEMA_NAME)\n const openCreated = useOpenInNewPane(metadataId, METADATA_SCHEMA_NAME)\n const {allowCreateMetaDoc, apiVersion, weakReferences} =\n useDocumentInternationalizationContext()\n const client = useClient({apiVersion})\n const [userHasClicked, setUserHasClicked] = useState(false)\n\n const canCreate = !id && Boolean(metadataId) && allowCreateMetaDoc\n\n const handleClick = useCallback(() => {\n if (!id && metadataId && sourceLanguageId) {\n /* Disable button while this request is pending */\n setUserHasClicked(true)\n\n // handle creation of meta document\n const transaction = client.transaction()\n\n const sourceReference = createReference(\n sourceLanguageId,\n documentId,\n schemaType.name,\n !weakReferences\n )\n const newMetadataDocument = {\n _id: metadataId,\n _type: METADATA_SCHEMA_NAME,\n schemaTypes: [schemaType.name],\n translations: [sourceReference],\n }\n\n transaction.createIfNotExists(newMetadataDocument)\n\n transaction\n .commit()\n .then(() => {\n setUserHasClicked(false)\n openCreated()\n })\n .catch((err) => {\n console.error(err)\n setUserHasClicked(false)\n })\n } else {\n open()\n }\n }, [\n id,\n metadataId,\n sourceLanguageId,\n client,\n documentId,\n schemaType.name,\n weakReferences,\n openCreated,\n open,\n ])\n\n const disabled =\n (!id && !canCreate) || (canCreate && !sourceLanguageId) || userHasClicked\n\n return (\n <Tooltip\n animate\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Document has no other translations\n </Text>\n </Box>\n }\n fallbackPlacements={['right', 'left']}\n placement=\"top\"\n portal\n disabled={Boolean(id) || canCreate}\n >\n <Stack>\n <Button\n disabled={disabled}\n mode=\"ghost\"\n text=\"Manage Translations\"\n icon={CogIcon}\n loading={userHasClicked}\n onClick={handleClick}\n />\n </Stack>\n </Tooltip>\n )\n}\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(' ', ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/* eslint-env browser */\n'use strict';\n\nfunction getChromeVersion() {\n\tconst matches = /(Chrome|Chromium)\\/(?<chromeVersion>\\d+)\\./.exec(navigator.userAgent);\n\n\tif (!matches) {\n\t\treturn;\n\t}\n\n\treturn Number.parseInt(matches.groups.chromeVersion, 10);\n}\n\nconst colorSupport = getChromeVersion() >= 69 ? {\n\tlevel: 1,\n\thasBasic: true,\n\thas256: false,\n\thas16m: false\n} : false;\n\nmodule.exports = {\n\tstdout: colorSupport,\n\tstderr: colorSupport\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","function isHighSurrogate(char) {\n const charCode = char.charCodeAt(0);\n return charCode >= 55296 && charCode <= 56319;\n}\nfunction isLowSurrogate(char) {\n const charCode = char.charCodeAt(0);\n return charCode >= 56320 && charCode <= 57343;\n}\nfunction cloneDiff(diff) {\n const [type, patch] = diff;\n return [type, patch];\n}\nfunction getCommonOverlap(textA, textB) {\n let text1 = textA;\n let text2 = textB;\n const text1Length = text1.length;\n const text2Length = text2.length;\n if (text1Length === 0 || text2Length === 0) {\n return 0;\n }\n if (text1Length > text2Length) {\n text1 = text1.substring(text1Length - text2Length);\n } else if (text1Length < text2Length) {\n text2 = text2.substring(0, text1Length);\n }\n const textLength = Math.min(text1Length, text2Length);\n if (text1 === text2) {\n return textLength;\n }\n let best = 0;\n let length = 1;\n for (let found = 0; found !== -1;) {\n const pattern = text1.substring(textLength - length);\n found = text2.indexOf(pattern);\n if (found === -1) {\n return best;\n }\n length += found;\n if (found === 0 || text1.substring(textLength - length) === text2.substring(0, length)) {\n best = length;\n length++;\n }\n }\n return best;\n}\nfunction getCommonPrefix(text1, text2) {\n if (!text1 || !text2 || text1[0] !== text2[0]) {\n return 0;\n }\n let pointerMin = 0;\n let pointerMax = Math.min(text1.length, text2.length);\n let pointerMid = pointerMax;\n let pointerStart = 0;\n while (pointerMin < pointerMid) {\n if (text1.substring(pointerStart, pointerMid) === text2.substring(pointerStart, pointerMid)) {\n pointerMin = pointerMid;\n pointerStart = pointerMin;\n } else {\n pointerMax = pointerMid;\n }\n pointerMid = Math.floor((pointerMax - pointerMin) / 2 + pointerMin);\n }\n return pointerMid;\n}\nfunction getCommonSuffix(text1, text2) {\n if (!text1 || !text2 || text1[text1.length - 1] !== text2[text2.length - 1]) {\n return 0;\n }\n let pointerMin = 0;\n let pointerMax = Math.min(text1.length, text2.length);\n let pointerMid = pointerMax;\n let pointerEnd = 0;\n while (pointerMin < pointerMid) {\n if (text1.substring(text1.length - pointerMid, text1.length - pointerEnd) === text2.substring(text2.length - pointerMid, text2.length - pointerEnd)) {\n pointerMin = pointerMid;\n pointerEnd = pointerMin;\n } else {\n pointerMax = pointerMid;\n }\n pointerMid = Math.floor((pointerMax - pointerMin) / 2 + pointerMin);\n }\n return pointerMid;\n}\nfunction cleanupSemantic(rawDiffs) {\n let diffs = rawDiffs.map(diff => cloneDiff(diff));\n let hasChanges = false;\n const equalities = [];\n let equalitiesLength = 0;\n let lastEquality = null;\n let pointer = 0;\n let lengthInsertions1 = 0;\n let lengthDeletions1 = 0;\n let lengthInsertions2 = 0;\n let lengthDeletions2 = 0;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] === DIFF_EQUAL) {\n equalities[equalitiesLength++] = pointer;\n lengthInsertions1 = lengthInsertions2;\n lengthDeletions1 = lengthDeletions2;\n lengthInsertions2 = 0;\n lengthDeletions2 = 0;\n lastEquality = diffs[pointer][1];\n } else {\n if (diffs[pointer][0] === DIFF_INSERT) {\n lengthInsertions2 += diffs[pointer][1].length;\n } else {\n lengthDeletions2 += diffs[pointer][1].length;\n }\n if (lastEquality && lastEquality.length <= Math.max(lengthInsertions1, lengthDeletions1) && lastEquality.length <= Math.max(lengthInsertions2, lengthDeletions2)) {\n diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastEquality]);\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--;\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n lengthInsertions1 = 0;\n lengthDeletions1 = 0;\n lengthInsertions2 = 0;\n lengthDeletions2 = 0;\n lastEquality = null;\n hasChanges = true;\n }\n }\n pointer++;\n }\n if (hasChanges) {\n diffs = cleanupMerge(diffs);\n }\n diffs = cleanupSemanticLossless(diffs);\n pointer = 1;\n while (pointer < diffs.length) {\n if (diffs[pointer - 1][0] === DIFF_DELETE && diffs[pointer][0] === DIFF_INSERT) {\n const deletion = diffs[pointer - 1][1];\n const insertion = diffs[pointer][1];\n const overlapLength1 = getCommonOverlap(deletion, insertion);\n const overlapLength2 = getCommonOverlap(insertion, deletion);\n if (overlapLength1 >= overlapLength2) {\n if (overlapLength1 >= deletion.length / 2 || overlapLength1 >= insertion.length / 2) {\n diffs.splice(pointer, 0, [DIFF_EQUAL, insertion.substring(0, overlapLength1)]);\n diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlapLength1);\n diffs[pointer + 1][1] = insertion.substring(overlapLength1);\n pointer++;\n }\n } else if (overlapLength2 >= deletion.length / 2 || overlapLength2 >= insertion.length / 2) {\n diffs.splice(pointer, 0, [DIFF_EQUAL, deletion.substring(0, overlapLength2)]);\n diffs[pointer - 1][0] = DIFF_INSERT;\n diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlapLength2);\n diffs[pointer + 1][0] = DIFF_DELETE;\n diffs[pointer + 1][1] = deletion.substring(overlapLength2);\n pointer++;\n }\n pointer++;\n }\n pointer++;\n }\n return diffs;\n}\nconst nonAlphaNumericRegex = /[^a-zA-Z0-9]/;\nconst whitespaceRegex = /\\s/;\nconst linebreakRegex = /[\\r\\n]/;\nconst blanklineEndRegex = /\\n\\r?\\n$/;\nconst blanklineStartRegex = /^\\r?\\n\\r?\\n/;\nfunction cleanupSemanticLossless(rawDiffs) {\n const diffs = rawDiffs.map(diff => cloneDiff(diff));\n function diffCleanupSemanticScore(one, two) {\n if (!one || !two) {\n return 6;\n }\n const char1 = one.charAt(one.length - 1);\n const char2 = two.charAt(0);\n const nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex);\n const nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex);\n const whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex);\n const whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex);\n const lineBreak1 = whitespace1 && char1.match(linebreakRegex);\n const lineBreak2 = whitespace2 && char2.match(linebreakRegex);\n const blankLine1 = lineBreak1 && one.match(blanklineEndRegex);\n const blankLine2 = lineBreak2 && two.match(blanklineStartRegex);\n if (blankLine1 || blankLine2) {\n return 5;\n } else if (lineBreak1 || lineBreak2) {\n return 4;\n } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n return 3;\n } else if (whitespace1 || whitespace2) {\n return 2;\n } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n return 1;\n }\n return 0;\n }\n let pointer = 1;\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) {\n let equality1 = diffs[pointer - 1][1];\n let edit = diffs[pointer][1];\n let equality2 = diffs[pointer + 1][1];\n const commonOffset = getCommonSuffix(equality1, edit);\n if (commonOffset) {\n const commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset);\n edit = commonString + edit.substring(0, edit.length - commonOffset);\n equality2 = commonString + equality2;\n }\n let bestEquality1 = equality1;\n let bestEdit = edit;\n let bestEquality2 = equality2;\n let bestScore = diffCleanupSemanticScore(equality1, edit) + diffCleanupSemanticScore(edit, equality2);\n while (edit.charAt(0) === equality2.charAt(0)) {\n equality1 += edit.charAt(0);\n edit = edit.substring(1) + equality2.charAt(0);\n equality2 = equality2.substring(1);\n const score = diffCleanupSemanticScore(equality1, edit) + diffCleanupSemanticScore(edit, equality2);\n if (score >= bestScore) {\n bestScore = score;\n bestEquality1 = equality1;\n bestEdit = edit;\n bestEquality2 = equality2;\n }\n }\n if (diffs[pointer - 1][1] !== bestEquality1) {\n if (bestEquality1) {\n diffs[pointer - 1][1] = bestEquality1;\n } else {\n diffs.splice(pointer - 1, 1);\n pointer--;\n }\n diffs[pointer][1] = bestEdit;\n if (bestEquality2) {\n diffs[pointer + 1][1] = bestEquality2;\n } else {\n diffs.splice(pointer + 1, 1);\n pointer--;\n }\n }\n }\n pointer++;\n }\n return diffs;\n}\nfunction cleanupMerge(rawDiffs) {\n let diffs = rawDiffs.map(diff => cloneDiff(diff));\n diffs.push([DIFF_EQUAL, \"\"]);\n let pointer = 0;\n let countDelete = 0;\n let countInsert = 0;\n let textDelete = \"\";\n let textInsert = \"\";\n let commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n countInsert++;\n textInsert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n countDelete++;\n textDelete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n if (countDelete + countInsert > 1) {\n if (countDelete !== 0 && countInsert !== 0) {\n commonlength = getCommonPrefix(textInsert, textDelete);\n if (commonlength !== 0) {\n if (pointer - countDelete - countInsert > 0 && diffs[pointer - countDelete - countInsert - 1][0] === DIFF_EQUAL) {\n diffs[pointer - countDelete - countInsert - 1][1] += textInsert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL, textInsert.substring(0, commonlength)]);\n pointer++;\n }\n textInsert = textInsert.substring(commonlength);\n textDelete = textDelete.substring(commonlength);\n }\n commonlength = getCommonSuffix(textInsert, textDelete);\n if (commonlength !== 0) {\n diffs[pointer][1] = textInsert.substring(textInsert.length - commonlength) + diffs[pointer][1];\n textInsert = textInsert.substring(0, textInsert.length - commonlength);\n textDelete = textDelete.substring(0, textDelete.length - commonlength);\n }\n }\n pointer -= countDelete + countInsert;\n diffs.splice(pointer, countDelete + countInsert);\n if (textDelete.length) {\n diffs.splice(pointer, 0, [DIFF_DELETE, textDelete]);\n pointer++;\n }\n if (textInsert.length) {\n diffs.splice(pointer, 0, [DIFF_INSERT, textInsert]);\n pointer++;\n }\n pointer++;\n } else if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n countInsert = 0;\n countDelete = 0;\n textDelete = \"\";\n textInsert = \"\";\n break;\n default:\n throw new Error(\"Unknown diff operation\");\n }\n }\n if (diffs[diffs.length - 1][1] === \"\") {\n diffs.pop();\n }\n let hasChanges = false;\n pointer = 1;\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) {\n if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) === diffs[pointer - 1][1]) {\n diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n hasChanges = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) === diffs[pointer + 1][1]) {\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n hasChanges = true;\n }\n }\n pointer++;\n }\n if (hasChanges) {\n diffs = cleanupMerge(diffs);\n }\n return diffs;\n}\nfunction trueCount() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return args.reduce((n, bool) => n + (bool ? 1 : 0), 0);\n}\nfunction cleanupEfficiency(rawDiffs) {\n let editCost = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;\n let diffs = rawDiffs.map(diff => cloneDiff(diff));\n let hasChanges = false;\n const equalities = [];\n let equalitiesLength = 0;\n let lastEquality = null;\n let pointer = 0;\n let preIns = false;\n let preDel = false;\n let postIns = false;\n let postDel = false;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] === DIFF_EQUAL) {\n if (diffs[pointer][1].length < editCost && (postIns || postDel)) {\n equalities[equalitiesLength++] = pointer;\n preIns = postIns;\n preDel = postDel;\n lastEquality = diffs[pointer][1];\n } else {\n equalitiesLength = 0;\n lastEquality = null;\n }\n postIns = false;\n postDel = false;\n } else {\n if (diffs[pointer][0] === DIFF_DELETE) {\n postDel = true;\n } else {\n postIns = true;\n }\n if (lastEquality && (preIns && preDel && postIns && postDel || lastEquality.length < editCost / 2 && trueCount(preIns, preDel, postIns, postDel) === 3)) {\n diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastEquality]);\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--;\n lastEquality = null;\n if (preIns && preDel) {\n postIns = true;\n postDel = true;\n equalitiesLength = 0;\n } else {\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n postIns = false;\n postDel = false;\n }\n hasChanges = true;\n }\n }\n pointer++;\n }\n if (hasChanges) {\n diffs = cleanupMerge(diffs);\n }\n return diffs;\n}\nfunction bisect(text1, text2, deadline) {\n const text1Length = text1.length;\n const text2Length = text2.length;\n const maxD = Math.ceil((text1Length + text2Length) / 2);\n const vOffset = maxD;\n const vLength = 2 * maxD;\n const v1 = new Array(vLength);\n const v2 = new Array(vLength);\n for (let x = 0; x < vLength; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[vOffset + 1] = 0;\n v2[vOffset + 1] = 0;\n const delta = text1Length - text2Length;\n const front = delta % 2 !== 0;\n let k1start = 0;\n let k1end = 0;\n let k2start = 0;\n let k2end = 0;\n for (let d = 0; d < maxD; d++) {\n if (Date.now() > deadline) {\n break;\n }\n for (let k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n const k1Offset = vOffset + k1;\n let x1;\n if (k1 === -d || k1 !== d && v1[k1Offset - 1] < v1[k1Offset + 1]) {\n x1 = v1[k1Offset + 1];\n } else {\n x1 = v1[k1Offset - 1] + 1;\n }\n let y1 = x1 - k1;\n while (x1 < text1Length && y1 < text2Length && text1.charAt(x1) === text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1Offset] = x1;\n if (x1 > text1Length) {\n k1end += 2;\n } else if (y1 > text2Length) {\n k1start += 2;\n } else if (front) {\n const k2Offset = vOffset + delta - k1;\n if (k2Offset >= 0 && k2Offset < vLength && v2[k2Offset] !== -1) {\n const x2 = text1Length - v2[k2Offset];\n if (x1 >= x2) {\n return bisectSplit(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n for (let k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n const k2Offset = vOffset + k2;\n let x2;\n if (k2 === -d || k2 !== d && v2[k2Offset - 1] < v2[k2Offset + 1]) {\n x2 = v2[k2Offset + 1];\n } else {\n x2 = v2[k2Offset - 1] + 1;\n }\n let y2 = x2 - k2;\n while (x2 < text1Length && y2 < text2Length && text1.charAt(text1Length - x2 - 1) === text2.charAt(text2Length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2Offset] = x2;\n if (x2 > text1Length) {\n k2end += 2;\n } else if (y2 > text2Length) {\n k2start += 2;\n } else if (!front) {\n const k1Offset = vOffset + delta - k2;\n if (k1Offset >= 0 && k1Offset < vLength && v1[k1Offset] !== -1) {\n const x1 = v1[k1Offset];\n const y1 = vOffset + x1 - k1Offset;\n x2 = text1Length - x2;\n if (x1 >= x2) {\n return bisectSplit(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n }\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n}\nfunction bisectSplit(text1, text2, x, y, deadline) {\n const text1a = text1.substring(0, x);\n const text2a = text2.substring(0, y);\n const text1b = text1.substring(x);\n const text2b = text2.substring(y);\n const diffs = doDiff(text1a, text2a, {\n checkLines: false,\n deadline\n });\n const diffsb = doDiff(text1b, text2b, {\n checkLines: false,\n deadline\n });\n return diffs.concat(diffsb);\n}\nfunction findHalfMatch(text1, text2) {\n let timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (timeout <= 0) {\n return null;\n }\n const longText = text1.length > text2.length ? text1 : text2;\n const shortText = text1.length > text2.length ? text2 : text1;\n if (longText.length < 4 || shortText.length * 2 < longText.length) {\n return null;\n }\n const halfMatch1 = halfMatchI(longText, shortText, Math.ceil(longText.length / 4));\n const halfMatch2 = halfMatchI(longText, shortText, Math.ceil(longText.length / 2));\n let halfMatch;\n if (halfMatch1 && halfMatch2) {\n halfMatch = halfMatch1[4].length > halfMatch2[4].length ? halfMatch1 : halfMatch2;\n } else if (!halfMatch1 && !halfMatch2) {\n return null;\n } else if (!halfMatch2) {\n halfMatch = halfMatch1;\n } else if (!halfMatch1) {\n halfMatch = halfMatch2;\n }\n if (!halfMatch) {\n throw new Error(\"Unable to find a half match.\");\n }\n let text1A;\n let text1B;\n let text2A;\n let text2B;\n if (text1.length > text2.length) {\n text1A = halfMatch[0];\n text1B = halfMatch[1];\n text2A = halfMatch[2];\n text2B = halfMatch[3];\n } else {\n text2A = halfMatch[0];\n text2B = halfMatch[1];\n text1A = halfMatch[2];\n text1B = halfMatch[3];\n }\n const midCommon = halfMatch[4];\n return [text1A, text1B, text2A, text2B, midCommon];\n}\nfunction halfMatchI(longText, shortText, i) {\n const seed = longText.slice(i, i + Math.floor(longText.length / 4));\n let j = -1;\n let bestCommon = \"\";\n let bestLongTextA;\n let bestLongTextB;\n let bestShortTextA;\n let bestShortTextB;\n while ((j = shortText.indexOf(seed, j + 1)) !== -1) {\n const prefixLength = getCommonPrefix(longText.slice(i), shortText.slice(j));\n const suffixLength = getCommonSuffix(longText.slice(0, i), shortText.slice(0, j));\n if (bestCommon.length < suffixLength + prefixLength) {\n bestCommon = shortText.slice(j - suffixLength, j) + shortText.slice(j, j + prefixLength);\n bestLongTextA = longText.slice(0, i - suffixLength);\n bestLongTextB = longText.slice(i + prefixLength);\n bestShortTextA = shortText.slice(0, j - suffixLength);\n bestShortTextB = shortText.slice(j + prefixLength);\n }\n }\n if (bestCommon.length * 2 >= longText.length) {\n return [bestLongTextA || \"\", bestLongTextB || \"\", bestShortTextA || \"\", bestShortTextB || \"\", bestCommon || \"\"];\n }\n return null;\n}\nfunction charsToLines(diffs, lineArray) {\n for (let x = 0; x < diffs.length; x++) {\n const chars = diffs[x][1];\n const text = [];\n for (let y = 0; y < chars.length; y++) {\n text[y] = lineArray[chars.charCodeAt(y)];\n }\n diffs[x][1] = text.join(\"\");\n }\n}\nfunction linesToChars(textA, textB) {\n const lineArray = [];\n const lineHash = {};\n lineArray[0] = \"\";\n function diffLinesToMunge(text) {\n let chars = \"\";\n let lineStart = 0;\n let lineEnd = -1;\n let lineArrayLength = lineArray.length;\n while (lineEnd < text.length - 1) {\n lineEnd = text.indexOf(\"\\n\", lineStart);\n if (lineEnd === -1) {\n lineEnd = text.length - 1;\n }\n let line = text.slice(lineStart, lineEnd + 1);\n if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== void 0) {\n chars += String.fromCharCode(lineHash[line]);\n } else {\n if (lineArrayLength === maxLines) {\n line = text.slice(lineStart);\n lineEnd = text.length;\n }\n chars += String.fromCharCode(lineArrayLength);\n lineHash[line] = lineArrayLength;\n lineArray[lineArrayLength++] = line;\n }\n lineStart = lineEnd + 1;\n }\n return chars;\n }\n let maxLines = 4e4;\n const chars1 = diffLinesToMunge(textA);\n maxLines = 65535;\n const chars2 = diffLinesToMunge(textB);\n return {\n chars1,\n chars2,\n lineArray\n };\n}\nfunction doLineModeDiff(textA, textB, opts) {\n let text1 = textA;\n let text2 = textB;\n const a = linesToChars(text1, text2);\n text1 = a.chars1;\n text2 = a.chars2;\n const linearray = a.lineArray;\n let diffs = doDiff(text1, text2, {\n checkLines: false,\n deadline: opts.deadline\n });\n charsToLines(diffs, linearray);\n diffs = cleanupSemantic(diffs);\n diffs.push([DIFF_EQUAL, \"\"]);\n let pointer = 0;\n let countDelete = 0;\n let countInsert = 0;\n let textDelete = \"\";\n let textInsert = \"\";\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n countInsert++;\n textInsert += diffs[pointer][1];\n break;\n case DIFF_DELETE:\n countDelete++;\n textDelete += diffs[pointer][1];\n break;\n case DIFF_EQUAL:\n if (countDelete >= 1 && countInsert >= 1) {\n diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert);\n pointer = pointer - countDelete - countInsert;\n const aa = doDiff(textDelete, textInsert, {\n checkLines: false,\n deadline: opts.deadline\n });\n for (let j = aa.length - 1; j >= 0; j--) {\n diffs.splice(pointer, 0, aa[j]);\n }\n pointer += aa.length;\n }\n countInsert = 0;\n countDelete = 0;\n textDelete = \"\";\n textInsert = \"\";\n break;\n default:\n throw new Error(\"Unknown diff operation.\");\n }\n pointer++;\n }\n diffs.pop();\n return diffs;\n}\nfunction computeDiff(text1, text2, opts) {\n let diffs;\n if (!text1) {\n return [[DIFF_INSERT, text2]];\n }\n if (!text2) {\n return [[DIFF_DELETE, text1]];\n }\n const longtext = text1.length > text2.length ? text1 : text2;\n const shorttext = text1.length > text2.length ? text2 : text1;\n const i = longtext.indexOf(shorttext);\n if (i !== -1) {\n diffs = [[DIFF_INSERT, longtext.substring(0, i)], [DIFF_EQUAL, shorttext], [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n if (text1.length > text2.length) {\n diffs[0][0] = DIFF_DELETE;\n diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n if (shorttext.length === 1) {\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n const halfMatch = findHalfMatch(text1, text2);\n if (halfMatch) {\n const text1A = halfMatch[0];\n const text1B = halfMatch[1];\n const text2A = halfMatch[2];\n const text2B = halfMatch[3];\n const midCommon = halfMatch[4];\n const diffsA = doDiff(text1A, text2A, opts);\n const diffsB = doDiff(text1B, text2B, opts);\n return diffsA.concat([[DIFF_EQUAL, midCommon]], diffsB);\n }\n if (opts.checkLines && text1.length > 100 && text2.length > 100) {\n return doLineModeDiff(text1, text2, opts);\n }\n return bisect(text1, text2, opts.deadline);\n}\nconst DIFF_DELETE = -1;\nconst DIFF_INSERT = 1;\nconst DIFF_EQUAL = 0;\nfunction diff(textA, textB, opts) {\n if (textA === null || textB === null) {\n throw new Error(\"Null input. (diff)\");\n }\n const diffs = doDiff(textA, textB, createInternalOpts(opts || {}));\n adjustDiffForSurrogatePairs(diffs);\n return diffs;\n}\nfunction doDiff(textA, textB, options) {\n let text1 = textA;\n let text2 = textB;\n if (text1 === text2) {\n return text1 ? [[DIFF_EQUAL, text1]] : [];\n }\n let commonlength = getCommonPrefix(text1, text2);\n const commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n commonlength = getCommonSuffix(text1, text2);\n const commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n let diffs = computeDiff(text1, text2, options);\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diffs = cleanupMerge(diffs);\n return diffs;\n}\nfunction createDeadLine(timeout) {\n let t = 1;\n if (typeof timeout !== \"undefined\") {\n t = timeout <= 0 ? Number.MAX_VALUE : timeout;\n }\n return Date.now() + t * 1e3;\n}\nfunction createInternalOpts(opts) {\n return {\n checkLines: true,\n deadline: createDeadLine(opts.timeout || 1),\n ...opts\n };\n}\nfunction combineChar(data, char, dir) {\n return dir === 1 ? data + char : char + data;\n}\nfunction splitChar(data, dir) {\n return dir === 1 ? [data.substring(0, data.length - 1), data[data.length - 1]] : [data.substring(1), data[0]];\n}\nfunction hasSharedChar(diffs, i, j, dir) {\n return dir === 1 ? diffs[i][1][diffs[i][1].length - 1] === diffs[j][1][diffs[j][1].length - 1] : diffs[i][1][0] === diffs[j][1][0];\n}\nfunction deisolateChar(diffs, i, dir) {\n const inv = dir === 1 ? -1 : 1;\n let insertIdx = null;\n let deleteIdx = null;\n let j = i + dir;\n for (; j >= 0 && j < diffs.length && (insertIdx === null || deleteIdx === null); j += dir) {\n const [op, text2] = diffs[j];\n if (text2.length === 0) {\n continue;\n }\n if (op === DIFF_INSERT) {\n if (insertIdx === null) {\n insertIdx = j;\n }\n continue;\n } else if (op === DIFF_DELETE) {\n if (deleteIdx === null) {\n deleteIdx = j;\n }\n continue;\n } else if (op === DIFF_EQUAL) {\n if (insertIdx === null && deleteIdx === null) {\n const [rest, char2] = splitChar(diffs[i][1], dir);\n diffs[i][1] = rest;\n diffs[j][1] = combineChar(diffs[j][1], char2, inv);\n return;\n }\n break;\n }\n }\n if (insertIdx !== null && deleteIdx !== null && hasSharedChar(diffs, insertIdx, deleteIdx, dir)) {\n const [insertText, insertChar] = splitChar(diffs[insertIdx][1], inv);\n const [deleteText] = splitChar(diffs[deleteIdx][1], inv);\n diffs[insertIdx][1] = insertText;\n diffs[deleteIdx][1] = deleteText;\n diffs[i][1] = combineChar(diffs[i][1], insertChar, dir);\n return;\n }\n const [text, char] = splitChar(diffs[i][1], dir);\n diffs[i][1] = text;\n if (insertIdx === null) {\n diffs.splice(j, 0, [DIFF_INSERT, char]);\n if (deleteIdx !== null && deleteIdx >= j) deleteIdx++;\n } else {\n diffs[insertIdx][1] = combineChar(diffs[insertIdx][1], char, inv);\n }\n if (deleteIdx === null) {\n diffs.splice(j, 0, [DIFF_DELETE, char]);\n } else {\n diffs[deleteIdx][1] = combineChar(diffs[deleteIdx][1], char, inv);\n }\n}\nfunction adjustDiffForSurrogatePairs(diffs) {\n for (let i = 0; i < diffs.length; i++) {\n const [diffType, diffText] = diffs[i];\n if (diffText.length === 0) continue;\n const firstChar = diffText[0];\n const lastChar = diffText[diffText.length - 1];\n if (isHighSurrogate(lastChar) && diffType === DIFF_EQUAL) {\n deisolateChar(diffs, i, 1);\n }\n if (isLowSurrogate(firstChar) && diffType === DIFF_EQUAL) {\n deisolateChar(diffs, i, -1);\n }\n }\n for (let i = 0; i < diffs.length; i++) {\n if (diffs[i][1].length === 0) {\n diffs.splice(i, 1);\n }\n }\n}\nconst DEFAULT_OPTIONS = {\n /**\n * At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n */\n threshold: 0.5,\n /**\n * How far to search for a match (0 = exact location, 1000+ = broad match).\n * A match this many characters away from the expected location will add\n * 1.0 to the score (0.0 is a perfect match).\n */\n distance: 1e3\n};\nfunction applyDefaults(options) {\n return {\n ...DEFAULT_OPTIONS,\n ...options\n };\n}\nconst MAX_BITS$1 = 32;\nfunction bitap(text, pattern, loc) {\n let opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (pattern.length > MAX_BITS$1) {\n throw new Error(\"Pattern too long for this browser.\");\n }\n const options = applyDefaults(opts);\n const s = getAlphabetFromPattern(pattern);\n function getBitapScore(e, x) {\n const accuracy = e / pattern.length;\n const proximity = Math.abs(loc - x);\n if (!options.distance) {\n return proximity ? 1 : accuracy;\n }\n return accuracy + proximity / options.distance;\n }\n let scoreThreshold = options.threshold;\n let bestLoc = text.indexOf(pattern, loc);\n if (bestLoc !== -1) {\n scoreThreshold = Math.min(getBitapScore(0, bestLoc), scoreThreshold);\n bestLoc = text.lastIndexOf(pattern, loc + pattern.length);\n if (bestLoc !== -1) {\n scoreThreshold = Math.min(getBitapScore(0, bestLoc), scoreThreshold);\n }\n }\n const matchmask = 1 << pattern.length - 1;\n bestLoc = -1;\n let binMin;\n let binMid;\n let binMax = pattern.length + text.length;\n let lastRd = [];\n for (let d = 0; d < pattern.length; d++) {\n binMin = 0;\n binMid = binMax;\n while (binMin < binMid) {\n if (getBitapScore(d, loc + binMid) <= scoreThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n binMax = binMid;\n let start = Math.max(1, loc - binMid + 1);\n const finish = Math.min(loc + binMid, text.length) + pattern.length;\n const rd = new Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n for (let j = finish; j >= start; j--) {\n const charMatch = s[text.charAt(j - 1)];\n if (d === 0) {\n rd[j] = (rd[j + 1] << 1 | 1) & charMatch;\n } else {\n rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((lastRd[j + 1] | lastRd[j]) << 1 | 1) | lastRd[j + 1];\n }\n if (rd[j] & matchmask) {\n const score = getBitapScore(d, j - 1);\n if (score <= scoreThreshold) {\n scoreThreshold = score;\n bestLoc = j - 1;\n if (bestLoc > loc) {\n start = Math.max(1, 2 * loc - bestLoc);\n } else {\n break;\n }\n }\n }\n }\n if (getBitapScore(d + 1, loc) > scoreThreshold) {\n break;\n }\n lastRd = rd;\n }\n return bestLoc;\n}\nfunction getAlphabetFromPattern(pattern) {\n const s = {};\n for (let i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] = 0;\n }\n for (let i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;\n }\n return s;\n}\nfunction match(text, pattern, searchLocation) {\n if (text === null || pattern === null || searchLocation === null) {\n throw new Error(\"Null input. (match())\");\n }\n const loc = Math.max(0, Math.min(searchLocation, text.length));\n if (text === pattern) {\n return 0;\n } else if (!text.length) {\n return -1;\n } else if (text.substring(loc, loc + pattern.length) === pattern) {\n return loc;\n }\n return bitap(text, pattern, loc);\n}\nfunction createPatchObject(start1, start2) {\n return {\n diffs: [],\n start1,\n start2,\n utf8Start1: start1,\n utf8Start2: start2,\n length1: 0,\n length2: 0,\n utf8Length1: 0,\n utf8Length2: 0\n };\n}\nfunction diffText1(diffs) {\n const text = [];\n for (let x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n text[x] = diffs[x][1];\n }\n }\n return text.join(\"\");\n}\nfunction diffText2(diffs) {\n const text = [];\n for (let x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_DELETE) {\n text[x] = diffs[x][1];\n }\n }\n return text.join(\"\");\n}\nfunction countUtf8Bytes(str) {\n let bytes = 0;\n for (let i = 0; i < str.length; i++) {\n const codePoint = str.codePointAt(i);\n if (typeof codePoint === \"undefined\") {\n throw new Error(\"Failed to get codepoint\");\n }\n bytes += utf8len(codePoint);\n }\n return bytes;\n}\nfunction adjustIndiciesToUcs2(patches, base) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let byteOffset = 0;\n let idx = 0;\n function advanceTo(target) {\n for (; byteOffset < target;) {\n const codePoint = base.codePointAt(idx);\n if (typeof codePoint === \"undefined\") {\n return idx;\n }\n byteOffset += utf8len(codePoint);\n if (codePoint > 65535) {\n idx += 2;\n } else {\n idx += 1;\n }\n }\n if (!options.allowExceedingIndices && byteOffset !== target) {\n throw new Error(\"Failed to determine byte offset\");\n }\n return idx;\n }\n const adjusted = [];\n for (const patch of patches) {\n adjusted.push({\n diffs: patch.diffs.map(diff => cloneDiff(diff)),\n start1: advanceTo(patch.start1),\n start2: advanceTo(patch.start2),\n utf8Start1: patch.utf8Start1,\n utf8Start2: patch.utf8Start2,\n length1: patch.length1,\n length2: patch.length2,\n utf8Length1: patch.utf8Length1,\n utf8Length2: patch.utf8Length2\n });\n }\n return adjusted;\n}\nfunction utf8len(codePoint) {\n if (codePoint <= 127) return 1;\n if (codePoint <= 2047) return 2;\n if (codePoint <= 65535) return 3;\n return 4;\n}\nconst MAX_BITS = 32;\nconst DEFAULT_MARGIN = 4;\nconst DEFAULT_OPTS = {\n margin: 4\n};\nfunction getDefaultOpts() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n ...DEFAULT_OPTS,\n ...opts\n };\n}\nfunction make(a, b, options) {\n if (typeof a === \"string\" && typeof b === \"string\") {\n let diffs = diff(a, b, {\n checkLines: true\n });\n if (diffs.length > 2) {\n diffs = cleanupSemantic(diffs);\n diffs = cleanupEfficiency(diffs);\n }\n return _make(a, diffs, getDefaultOpts(options));\n }\n if (a && Array.isArray(a) && typeof b === \"undefined\") {\n return _make(diffText1(a), a, getDefaultOpts(options));\n }\n if (typeof a === \"string\" && b && Array.isArray(b)) {\n return _make(a, b, getDefaultOpts(options));\n }\n throw new Error(\"Unknown call format to make()\");\n}\nfunction _make(textA, diffs, options) {\n if (diffs.length === 0) {\n return [];\n }\n const patches = [];\n let patch = createPatchObject(0, 0);\n let patchDiffLength = 0;\n let charCount1 = 0;\n let charCount2 = 0;\n let utf8Count1 = 0;\n let utf8Count2 = 0;\n let prepatchText = textA;\n let postpatchText = textA;\n for (let x = 0; x < diffs.length; x++) {\n const currentDiff = diffs[x];\n const [diffType, diffText] = currentDiff;\n const diffTextLength = diffText.length;\n const diffByteLength = countUtf8Bytes(diffText);\n if (!patchDiffLength && diffType !== DIFF_EQUAL) {\n patch.start1 = charCount1;\n patch.start2 = charCount2;\n patch.utf8Start1 = utf8Count1;\n patch.utf8Start2 = utf8Count2;\n }\n switch (diffType) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = currentDiff;\n patch.length2 += diffTextLength;\n patch.utf8Length2 += diffByteLength;\n postpatchText = postpatchText.substring(0, charCount2) + diffText + postpatchText.substring(charCount2);\n break;\n case DIFF_DELETE:\n patch.length1 += diffTextLength;\n patch.utf8Length1 += diffByteLength;\n patch.diffs[patchDiffLength++] = currentDiff;\n postpatchText = postpatchText.substring(0, charCount2) + postpatchText.substring(charCount2 + diffTextLength);\n break;\n case DIFF_EQUAL:\n if (diffTextLength <= 2 * options.margin && patchDiffLength && diffs.length !== x + 1) {\n patch.diffs[patchDiffLength++] = currentDiff;\n patch.length1 += diffTextLength;\n patch.length2 += diffTextLength;\n patch.utf8Length1 += diffByteLength;\n patch.utf8Length2 += diffByteLength;\n } else if (diffTextLength >= 2 * options.margin) {\n if (patchDiffLength) {\n addContext(patch, prepatchText, options);\n patches.push(patch);\n patch = createPatchObject(-1, -1);\n patchDiffLength = 0;\n prepatchText = postpatchText;\n charCount1 = charCount2;\n utf8Count1 = utf8Count2;\n }\n }\n break;\n default:\n throw new Error(\"Unknown diff type\");\n }\n if (diffType !== DIFF_INSERT) {\n charCount1 += diffTextLength;\n utf8Count1 += diffByteLength;\n }\n if (diffType !== DIFF_DELETE) {\n charCount2 += diffTextLength;\n utf8Count2 += diffByteLength;\n }\n }\n if (patchDiffLength) {\n addContext(patch, prepatchText, options);\n patches.push(patch);\n }\n return patches;\n}\nfunction addContext(patch, text, opts) {\n if (text.length === 0) {\n return;\n }\n let pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n let padding = 0;\n while (text.indexOf(pattern) !== text.lastIndexOf(pattern) && pattern.length < MAX_BITS - opts.margin - opts.margin) {\n padding += opts.margin;\n pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding);\n }\n padding += opts.margin;\n let prefixStart = patch.start2 - padding;\n if (prefixStart >= 1 && isLowSurrogate(text[prefixStart])) {\n prefixStart--;\n }\n const prefix = text.substring(prefixStart, patch.start2);\n if (prefix) {\n patch.diffs.unshift([DIFF_EQUAL, prefix]);\n }\n const prefixLength = prefix.length;\n const prefixUtf8Length = countUtf8Bytes(prefix);\n let suffixEnd = patch.start2 + patch.length1 + padding;\n if (suffixEnd < text.length && isLowSurrogate(text[suffixEnd])) {\n suffixEnd++;\n }\n const suffix = text.substring(patch.start2 + patch.length1, suffixEnd);\n if (suffix) {\n patch.diffs.push([DIFF_EQUAL, suffix]);\n }\n const suffixLength = suffix.length;\n const suffixUtf8Length = countUtf8Bytes(suffix);\n patch.start1 -= prefixLength;\n patch.start2 -= prefixLength;\n patch.utf8Start1 -= prefixUtf8Length;\n patch.utf8Start2 -= prefixUtf8Length;\n patch.length1 += prefixLength + suffixLength;\n patch.length2 += prefixLength + suffixLength;\n patch.utf8Length1 += prefixUtf8Length + suffixUtf8Length;\n patch.utf8Length2 += prefixUtf8Length + suffixUtf8Length;\n}\nfunction levenshtein(diffs) {\n let leven = 0;\n let insertions = 0;\n let deletions = 0;\n for (let x = 0; x < diffs.length; x++) {\n const op = diffs[x][0];\n const data = diffs[x][1];\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n case DIFF_DELETE:\n deletions += data.length;\n break;\n case DIFF_EQUAL:\n leven += Math.max(insertions, deletions);\n insertions = 0;\n deletions = 0;\n break;\n default:\n throw new Error(\"Unknown diff operation.\");\n }\n }\n leven += Math.max(insertions, deletions);\n return leven;\n}\nfunction xIndex(diffs, loc) {\n let chars1 = 0;\n let chars2 = 0;\n let lastChars1 = 0;\n let lastChars2 = 0;\n let x;\n for (x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n chars1 += diffs[x][1].length;\n }\n if (diffs[x][0] !== DIFF_DELETE) {\n chars2 += diffs[x][1].length;\n }\n if (chars1 > loc) {\n break;\n }\n lastChars1 = chars1;\n lastChars2 = chars2;\n }\n if (diffs.length !== x && diffs[x][0] === DIFF_DELETE) {\n return lastChars2;\n }\n return lastChars2 + (loc - lastChars1);\n}\nfunction addPadding(patches) {\n let margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_MARGIN;\n const paddingLength = margin;\n let nullPadding = \"\";\n for (let x = 1; x <= paddingLength; x++) {\n nullPadding += String.fromCharCode(x);\n }\n for (const p of patches) {\n p.start1 += paddingLength;\n p.start2 += paddingLength;\n p.utf8Start1 += paddingLength;\n p.utf8Start2 += paddingLength;\n }\n let patch = patches[0];\n let diffs = patch.diffs;\n if (diffs.length === 0 || diffs[0][0] !== DIFF_EQUAL) {\n diffs.unshift([DIFF_EQUAL, nullPadding]);\n patch.start1 -= paddingLength;\n patch.start2 -= paddingLength;\n patch.utf8Start1 -= paddingLength;\n patch.utf8Start2 -= paddingLength;\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n patch.utf8Length1 += paddingLength;\n patch.utf8Length2 += paddingLength;\n } else if (paddingLength > diffs[0][1].length) {\n const firstDiffLength = diffs[0][1].length;\n const extraLength = paddingLength - firstDiffLength;\n diffs[0][1] = nullPadding.substring(firstDiffLength) + diffs[0][1];\n patch.start1 -= extraLength;\n patch.start2 -= extraLength;\n patch.utf8Start1 -= extraLength;\n patch.utf8Start2 -= extraLength;\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n patch.utf8Length1 += extraLength;\n patch.utf8Length2 += extraLength;\n }\n patch = patches[patches.length - 1];\n diffs = patch.diffs;\n if (diffs.length === 0 || diffs[diffs.length - 1][0] !== DIFF_EQUAL) {\n diffs.push([DIFF_EQUAL, nullPadding]);\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n patch.utf8Length1 += paddingLength;\n patch.utf8Length2 += paddingLength;\n } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n const extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n patch.utf8Length1 += extraLength;\n patch.utf8Length2 += extraLength;\n }\n return nullPadding;\n}\nfunction splitMax(patches) {\n let margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_MARGIN;\n const patchSize = MAX_BITS;\n for (let x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patchSize) {\n continue;\n }\n const bigpatch = patches[x];\n patches.splice(x--, 1);\n let start1 = bigpatch.start1;\n let start2 = bigpatch.start2;\n let preContext = \"\";\n while (bigpatch.diffs.length !== 0) {\n const patch = createPatchObject(start1 - preContext.length, start2 - preContext.length);\n let empty = true;\n if (preContext !== \"\") {\n const precontextByteCount = countUtf8Bytes(preContext);\n patch.length1 = preContext.length;\n patch.utf8Length1 = precontextByteCount;\n patch.length2 = preContext.length;\n patch.utf8Length2 = precontextByteCount;\n patch.diffs.push([DIFF_EQUAL, preContext]);\n }\n while (bigpatch.diffs.length !== 0 && patch.length1 < patchSize - margin) {\n const diffType = bigpatch.diffs[0][0];\n let diffText = bigpatch.diffs[0][1];\n let diffTextByteCount = countUtf8Bytes(diffText);\n if (diffType === DIFF_INSERT) {\n patch.length2 += diffText.length;\n patch.utf8Length2 += diffTextByteCount;\n start2 += diffText.length;\n const diff = bigpatch.diffs.shift();\n if (diff) {\n patch.diffs.push(diff);\n }\n empty = false;\n } else if (diffType === DIFF_DELETE && patch.diffs.length === 1 && patch.diffs[0][0] === DIFF_EQUAL && diffText.length > 2 * patchSize) {\n patch.length1 += diffText.length;\n patch.utf8Length1 += diffTextByteCount;\n start1 += diffText.length;\n empty = false;\n patch.diffs.push([diffType, diffText]);\n bigpatch.diffs.shift();\n } else {\n diffText = diffText.substring(0, patchSize - patch.length1 - margin);\n diffTextByteCount = countUtf8Bytes(diffText);\n patch.length1 += diffText.length;\n patch.utf8Length1 += diffTextByteCount;\n start1 += diffText.length;\n if (diffType === DIFF_EQUAL) {\n patch.length2 += diffText.length;\n patch.utf8Length2 += diffTextByteCount;\n start2 += diffText.length;\n } else {\n empty = false;\n }\n patch.diffs.push([diffType, diffText]);\n if (diffText === bigpatch.diffs[0][1]) {\n bigpatch.diffs.shift();\n } else {\n bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diffText.length);\n }\n }\n }\n preContext = diffText2(patch.diffs);\n preContext = preContext.substring(preContext.length - margin);\n const postContext = diffText1(bigpatch.diffs).substring(0, margin);\n const postContextByteCount = countUtf8Bytes(postContext);\n if (postContext !== \"\") {\n patch.length1 += postContext.length;\n patch.length2 += postContext.length;\n patch.utf8Length1 += postContextByteCount;\n patch.utf8Length2 += postContextByteCount;\n if (patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n patch.diffs[patch.diffs.length - 1][1] += postContext;\n } else {\n patch.diffs.push([DIFF_EQUAL, postContext]);\n }\n }\n if (!empty) {\n patches.splice(++x, 0, patch);\n }\n }\n }\n}\nfunction apply(patches, originalText) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof patches === \"string\") {\n throw new Error(\"Patches must be an array - pass the patch to `parsePatch()` first\");\n }\n let text = originalText;\n if (patches.length === 0) {\n return [text, []];\n }\n const parsed = adjustIndiciesToUcs2(patches, text, {\n allowExceedingIndices: opts.allowExceedingIndices\n });\n const margin = opts.margin || DEFAULT_MARGIN;\n const deleteThreshold = opts.deleteThreshold || 0.4;\n const nullPadding = addPadding(parsed, margin);\n text = nullPadding + text + nullPadding;\n splitMax(parsed, margin);\n let delta = 0;\n const results = [];\n for (let x = 0; x < parsed.length; x++) {\n const expectedLoc = parsed[x].start2 + delta;\n const text1 = diffText1(parsed[x].diffs);\n let startLoc;\n let endLoc = -1;\n if (text1.length > MAX_BITS) {\n startLoc = match(text, text1.substring(0, MAX_BITS), expectedLoc);\n if (startLoc !== -1) {\n endLoc = match(text, text1.substring(text1.length - MAX_BITS), expectedLoc + text1.length - MAX_BITS);\n if (endLoc === -1 || startLoc >= endLoc) {\n startLoc = -1;\n }\n }\n } else {\n startLoc = match(text, text1, expectedLoc);\n }\n if (startLoc === -1) {\n results[x] = false;\n delta -= parsed[x].length2 - parsed[x].length1;\n } else {\n results[x] = true;\n delta = startLoc - expectedLoc;\n let text2;\n if (endLoc === -1) {\n text2 = text.substring(startLoc, startLoc + text1.length);\n } else {\n text2 = text.substring(startLoc, endLoc + MAX_BITS);\n }\n if (text1 === text2) {\n text = text.substring(0, startLoc) + diffText2(parsed[x].diffs) + text.substring(startLoc + text1.length);\n } else {\n let diffs = diff(text1, text2, {\n checkLines: false\n });\n if (text1.length > MAX_BITS && levenshtein(diffs) / text1.length > deleteThreshold) {\n results[x] = false;\n } else {\n diffs = cleanupSemanticLossless(diffs);\n let index1 = 0;\n let index2 = 0;\n for (let y = 0; y < parsed[x].diffs.length; y++) {\n const mod = parsed[x].diffs[y];\n if (mod[0] !== DIFF_EQUAL) {\n index2 = xIndex(diffs, index1);\n }\n if (mod[0] === DIFF_INSERT) {\n text = text.substring(0, startLoc + index2) + mod[1] + text.substring(startLoc + index2);\n } else if (mod[0] === DIFF_DELETE) {\n text = text.substring(0, startLoc + index2) + text.substring(startLoc + xIndex(diffs, index1 + mod[1].length));\n }\n if (mod[0] !== DIFF_DELETE) {\n index1 += mod[1].length;\n }\n }\n }\n }\n }\n }\n text = text.substring(nullPadding.length, text.length - nullPadding.length);\n return [text, results];\n}\nfunction stringify(patches) {\n return patches.map(stringifyPatch).join(\"\");\n}\nfunction stringifyPatch(patch) {\n const {\n utf8Length1,\n utf8Length2,\n utf8Start1,\n utf8Start2,\n diffs\n } = patch;\n let coords1;\n if (utf8Length1 === 0) {\n coords1 = \"\".concat(utf8Start1, \",0\");\n } else if (utf8Length1 === 1) {\n coords1 = \"\".concat(utf8Start1 + 1);\n } else {\n coords1 = \"\".concat(utf8Start1 + 1, \",\").concat(utf8Length1);\n }\n let coords2;\n if (utf8Length2 === 0) {\n coords2 = \"\".concat(utf8Start2, \",0\");\n } else if (utf8Length2 === 1) {\n coords2 = \"\".concat(utf8Start2 + 1);\n } else {\n coords2 = \"\".concat(utf8Start2 + 1, \",\").concat(utf8Length2);\n }\n const text = [\"@@ -\".concat(coords1, \" +\").concat(coords2, \" @@\\n\")];\n let op;\n for (let x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n op = \"+\";\n break;\n case DIFF_DELETE:\n op = \"-\";\n break;\n case DIFF_EQUAL:\n op = \" \";\n break;\n default:\n throw new Error(\"Unknown patch operation.\");\n }\n text[x + 1] = \"\".concat(op + encodeURI(diffs[x][1]), \"\\n\");\n }\n return text.join(\"\").replace(/%20/g, \" \");\n}\nconst patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\nfunction parse(textline) {\n if (!textline) {\n return [];\n }\n const patches = [];\n const lines = textline.split(\"\\n\");\n let textPointer = 0;\n while (textPointer < lines.length) {\n const m = lines[textPointer].match(patchHeader);\n if (!m) {\n throw new Error(\"Invalid patch string: \".concat(lines[textPointer]));\n }\n const patch = createPatchObject(toInt(m[1]), toInt(m[3]));\n patches.push(patch);\n if (m[2] === \"\") {\n patch.start1--;\n patch.utf8Start1--;\n patch.length1 = 1;\n patch.utf8Length1 = 1;\n } else if (m[2] === \"0\") {\n patch.length1 = 0;\n patch.utf8Length1 = 0;\n } else {\n patch.start1--;\n patch.utf8Start1--;\n patch.utf8Length1 = toInt(m[2]);\n patch.length1 = patch.utf8Length1;\n }\n if (m[4] === \"\") {\n patch.start2--;\n patch.utf8Start2--;\n patch.length2 = 1;\n patch.utf8Length2 = 1;\n } else if (m[4] === \"0\") {\n patch.length2 = 0;\n patch.utf8Length2 = 0;\n } else {\n patch.start2--;\n patch.utf8Start2--;\n patch.utf8Length2 = toInt(m[4]);\n patch.length2 = patch.utf8Length2;\n }\n textPointer++;\n while (textPointer < lines.length) {\n const currentLine = lines[textPointer];\n const sign = currentLine.charAt(0);\n if (sign === \"@\") {\n break;\n }\n if (sign === \"\") {\n textPointer++;\n continue;\n }\n let line;\n try {\n line = decodeURI(currentLine.slice(1));\n } catch (ex) {\n throw new Error(\"Illegal escape in parse: \".concat(currentLine));\n }\n const utf8Diff = countUtf8Bytes(line) - line.length;\n if (sign === \"-\") {\n patch.diffs.push([DIFF_DELETE, line]);\n patch.length1 -= utf8Diff;\n } else if (sign === \"+\") {\n patch.diffs.push([DIFF_INSERT, line]);\n patch.length2 -= utf8Diff;\n } else if (sign === \" \") {\n patch.diffs.push([DIFF_EQUAL, line]);\n patch.length1 -= utf8Diff;\n patch.length2 -= utf8Diff;\n } else {\n throw new Error(\"Invalid patch mode \\\"\".concat(sign, \"\\\" in: \").concat(line));\n }\n textPointer++;\n }\n }\n return patches;\n}\nfunction toInt(num) {\n return parseInt(num, 10);\n}\nexport { DIFF_DELETE, DIFF_EQUAL, DIFF_INSERT, adjustIndiciesToUcs2, apply as applyPatches, cleanupEfficiency, cleanupSemantic, diff as makeDiff, make as makePatches, match, parse as parsePatch, stringifyPatch, stringify as stringifyPatches };\n//# sourceMappingURL=index.js.map\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","import isEqual from \"lodash/isEqual.js\";\nimport debugIt from \"debug\";\nimport flatten from \"lodash/flatten.js\";\nimport { parsePatch as parsePatch$1, applyPatches, stringifyPatches, makePatches } from \"@sanity/diff-match-patch\";\nimport max from \"lodash/max.js\";\nimport min from \"lodash/min.js\";\nimport { uuid } from \"@sanity/uuid\";\nimport compact from \"lodash/compact.js\";\nconst debug = debugIt(\"mutator-document\");\nvar __defProp$h = Object.defineProperty, __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$h = (obj, key, value) => __defNormalProp$h(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass ImmutableAccessor {\n constructor(value, path) {\n __publicField$h(this, \"_value\"), __publicField$h(this, \"path\"), this._value = value, this.path = path || [];\n }\n containerType() {\n return Array.isArray(this._value) ? \"array\" : this._value !== null && typeof this._value == \"object\" ? \"object\" : \"primitive\";\n }\n // Common reader, supported by all containers\n get() {\n return this._value;\n }\n // Array reader\n length() {\n if (!Array.isArray(this._value))\n throw new Error(\"Won't return length of non-indexable _value\");\n return this._value.length;\n }\n getIndex(i) {\n return Array.isArray(this._value) ? i >= this.length() ? null : new ImmutableAccessor(this._value[i], this.path.concat(i)) : !1;\n }\n // Object reader\n hasAttribute(key) {\n return isRecord$1(this._value) ? this._value.hasOwnProperty(key) : !1;\n }\n attributeKeys() {\n return isRecord$1(this._value) ? Object.keys(this._value) : [];\n }\n getAttribute(key) {\n if (!isRecord$1(this._value))\n throw new Error(\"getAttribute only applies to plain objects\");\n return this.hasAttribute(key) ? new ImmutableAccessor(this._value[key], this.path.concat(key)) : null;\n }\n // Common writer, supported by all containers\n set(value) {\n return value === this._value ? this : new ImmutableAccessor(value, this.path);\n }\n // array writer interface\n setIndex(i, value) {\n if (!Array.isArray(this._value))\n throw new Error(\"setIndex only applies to arrays\");\n if (Object.is(value, this._value[i]))\n return this;\n const nextValue = this._value.slice();\n return nextValue[i] = value, new ImmutableAccessor(nextValue, this.path);\n }\n setIndexAccessor(i, accessor) {\n return this.setIndex(i, accessor.get());\n }\n unsetIndices(indices) {\n if (!Array.isArray(this._value))\n throw new Error(\"unsetIndices only applies to arrays\");\n const length = this._value.length, nextValue = [];\n for (let i = 0; i < length; i++)\n indices.indexOf(i) === -1 && nextValue.push(this._value[i]);\n return new ImmutableAccessor(nextValue, this.path);\n }\n insertItemsAt(pos, items) {\n if (!Array.isArray(this._value))\n throw new Error(\"insertItemsAt only applies to arrays\");\n let nextValue;\n return this._value.length === 0 && pos === 0 ? nextValue = items : nextValue = this._value.slice(0, pos).concat(items).concat(this._value.slice(pos)), new ImmutableAccessor(nextValue, this.path);\n }\n // Object writer interface\n setAttribute(key, value) {\n if (!isRecord$1(this._value))\n throw new Error(\"Unable to set attribute of non-object container\");\n if (Object.is(value, this._value[key]))\n return this;\n const nextValue = Object.assign({}, this._value, { [key]: value });\n return new ImmutableAccessor(nextValue, this.path);\n }\n setAttributeAccessor(key, accessor) {\n return this.setAttribute(key, accessor.get());\n }\n unsetAttribute(key) {\n if (!isRecord$1(this._value))\n throw new Error(\"Unable to unset attribute of non-object container\");\n const nextValue = Object.assign({}, this._value);\n return delete nextValue[key], new ImmutableAccessor(nextValue, this.path);\n }\n}\nfunction isRecord$1(value) {\n return value !== null && typeof value == \"object\";\n}\nfunction isRecord(value) {\n return value !== null && typeof value == \"object\";\n}\nconst IS_DOTTABLE = /^[a-z_$]+/;\nfunction arrayToJSONMatchPath(pathArray) {\n let path = \"\";\n return pathArray.forEach((segment, index) => {\n path += stringifySegment(segment, index === 0);\n }), path;\n}\nfunction stringifySegment(segment, hasLeading) {\n if (typeof segment == \"number\")\n return `[${segment}]`;\n if (isRecord(segment)) {\n const seg = segment;\n return Object.keys(segment).map((key) => isPrimitiveValue(seg[key]) ? `[${key}==\"${seg[key]}\"]` : \"\").join(\"\");\n }\n return typeof segment == \"string\" && IS_DOTTABLE.test(segment) ? hasLeading ? segment : `.${segment}` : `['${segment}']`;\n}\nfunction isPrimitiveValue(val) {\n switch (typeof val) {\n case \"number\":\n case \"string\":\n case \"boolean\":\n return !0;\n default:\n return !1;\n }\n}\nfunction descend$1(tail) {\n const [head, newTail] = splitIfPath(tail);\n if (!head)\n throw new Error(\"Head cannot be null\");\n return spreadIfUnionHead(head, newTail);\n}\nfunction splitIfPath(tail) {\n if (tail.type !== \"path\")\n return [tail, null];\n const nodes = tail.nodes;\n return nodes.length === 0 ? [null, null] : nodes.length === 1 ? [nodes[0], null] : [nodes[0], { type: \"path\", nodes: nodes.slice(1) }];\n}\nfunction concatPaths(path1, path2) {\n if (!path1 && !path2)\n return null;\n const nodes1 = path1 ? path1.nodes : [], nodes2 = path2 ? path2.nodes : [];\n return {\n type: \"path\",\n nodes: nodes1.concat(nodes2)\n };\n}\nfunction spreadIfUnionHead(head, tail) {\n return head.type !== \"union\" ? [[head, tail]] : head.nodes.map((node) => {\n if (node.type === \"path\") {\n const [subHead, subTail] = splitIfPath(node);\n return [subHead, concatPaths(subTail, tail)];\n }\n return [node, tail];\n });\n}\nvar __defProp$g = Object.defineProperty, __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$g = (obj, key, value) => __defNormalProp$g(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nconst digitChar = /[0-9]/, attributeCharMatcher = /^[a-zA-Z0-9_]$/, attributeFirstCharMatcher = /^[a-zA-Z_]$/, symbols = {\n // NOTE: These are compared against in order of definition,\n // thus '==' must come before '=', '>=' before '>', etc.\n operator: [\"..\", \".\", \",\", \":\", \"?\"],\n comparator: [\">=\", \"<=\", \"<\", \">\", \"==\", \"!=\"],\n keyword: [\"$\", \"@\"],\n boolean: [\"true\", \"false\"],\n paren: [\"[\", \"]\"]\n}, symbolClasses = Object.keys(symbols);\nclass Tokenizer {\n constructor(path) {\n __publicField$g(this, \"source\"), __publicField$g(this, \"i\"), __publicField$g(this, \"length\"), __publicField$g(this, \"tokenizers\"), this.source = path, this.length = path.length, this.i = 0, this.tokenizers = [\n this.tokenizeSymbol,\n this.tokenizeIdentifier,\n this.tokenizeNumber,\n this.tokenizeQuoted\n ].map((fn) => fn.bind(this));\n }\n tokenize() {\n const result = [];\n for (; !this.EOF(); ) {\n this.chompWhitespace();\n let token = null;\n if (!this.tokenizers.some((tokenizer) => (token = tokenizer(), !!token)) || !token)\n throw new Error(`Invalid tokens in jsonpath '${this.source}' @ ${this.i}`);\n result.push(token);\n }\n return result;\n }\n takeWhile(fn) {\n const start = this.i;\n let result = \"\";\n for (; !this.EOF(); ) {\n const nextChar = fn(this.source[this.i]);\n if (nextChar === null)\n break;\n result += nextChar, this.i++;\n }\n return this.i === start ? null : result;\n }\n EOF() {\n return this.i >= this.length;\n }\n peek() {\n return this.EOF() ? null : this.source[this.i];\n }\n consume(str) {\n if (this.i + str.length > this.length)\n throw new Error(`Expected ${str} at end of jsonpath`);\n if (str === this.source.slice(this.i, this.i + str.length))\n this.i += str.length;\n else\n throw new Error(`Expected \"${str}\", but source contained \"${this.source.slice()}`);\n }\n // Tries to match the upcoming bit of string with the provided string. If it matches, returns\n // the string, then advances the read pointer to the next bit. If not, returns null and nothing\n // happens.\n tryConsume(str) {\n if (this.i + str.length > this.length)\n return null;\n if (str === this.source.slice(this.i, this.i + str.length)) {\n if (str[0].match(attributeCharMatcher) && this.length > this.i + str.length) {\n const nextChar = this.source[this.i + str.length];\n if (nextChar && nextChar.match(attributeCharMatcher))\n return null;\n }\n return this.i += str.length, str;\n }\n return null;\n }\n chompWhitespace() {\n this.takeWhile((char) => char === \" \" ? \"\" : null);\n }\n tokenizeQuoted() {\n const quote = this.peek();\n if (quote === \"'\" || quote === '\"') {\n this.consume(quote);\n let escape = !1;\n const inner = this.takeWhile((char) => escape ? (escape = !1, char) : char === \"\\\\\" ? (escape = !0, \"\") : char != quote ? char : null);\n return this.consume(quote), {\n type: \"quoted\",\n value: inner,\n quote: quote === '\"' ? \"double\" : \"single\"\n };\n }\n return null;\n }\n tokenizeIdentifier() {\n let first = !0;\n const identifier = this.takeWhile((char) => first ? (first = !1, char.match(attributeFirstCharMatcher) ? char : null) : char.match(attributeCharMatcher) ? char : null);\n return identifier !== null ? {\n type: \"identifier\",\n name: identifier\n } : null;\n }\n tokenizeNumber() {\n const start = this.i;\n let dotSeen = !1, digitSeen = !1, negative = !1;\n this.peek() === \"-\" && (negative = !0, this.consume(\"-\"));\n const number = this.takeWhile((char) => char === \".\" && !dotSeen && digitSeen ? (dotSeen = !0, char) : (digitSeen = !0, char.match(digitChar) ? char : null));\n return number !== null ? {\n type: \"number\",\n value: negative ? -number : +number,\n raw: negative ? `-${number}` : number\n } : (this.i = start, null);\n }\n tokenizeSymbol() {\n for (const symbolClass of symbolClasses) {\n const symbol = symbols[symbolClass].find((pattern) => this.tryConsume(pattern));\n if (symbol)\n return {\n type: symbolClass,\n symbol\n };\n }\n return null;\n }\n}\nfunction tokenize(jsonpath) {\n return new Tokenizer(jsonpath).tokenize();\n}\nvar __defProp$f = Object.defineProperty, __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$f = (obj, key, value) => __defNormalProp$f(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass Parser {\n constructor(path) {\n __publicField$f(this, \"tokens\"), __publicField$f(this, \"length\"), __publicField$f(this, \"i\"), this.tokens = tokenize(path), this.length = this.tokens.length, this.i = 0;\n }\n parse() {\n return this.parsePath();\n }\n EOF() {\n return this.i >= this.length;\n }\n // Look at upcoming token\n peek() {\n return this.EOF() ? null : this.tokens[this.i];\n }\n consume() {\n const result = this.peek();\n return this.i += 1, result;\n }\n // Return next token if it matches the pattern\n probe(pattern) {\n const token = this.peek();\n if (!token)\n return null;\n const record = token;\n return Object.keys(pattern).every((key) => key in token && pattern[key] === record[key]) ? token : null;\n }\n // Return and consume next token if it matches the pattern\n match(pattern) {\n return this.probe(pattern) ? this.consume() : null;\n }\n parseAttribute() {\n const token = this.match({ type: \"identifier\" });\n if (token && token.type === \"identifier\")\n return {\n type: \"attribute\",\n name: token.name\n };\n const quoted = this.match({ type: \"quoted\", quote: \"single\" });\n return quoted && quoted.type === \"quoted\" ? {\n type: \"attribute\",\n name: quoted.value || \"\"\n } : null;\n }\n parseAlias() {\n return this.match({ type: \"keyword\", symbol: \"@\" }) || this.match({ type: \"keyword\", symbol: \"$\" }) ? {\n type: \"alias\",\n target: \"self\"\n } : null;\n }\n parseNumber() {\n const token = this.match({ type: \"number\" });\n return token && token.type === \"number\" ? {\n type: \"number\",\n value: token.value\n } : null;\n }\n parseNumberValue() {\n const expr = this.parseNumber();\n return expr ? expr.value : null;\n }\n parseSliceSelector() {\n const start = this.i, rangeStart = this.parseNumberValue();\n if (!this.match({ type: \"operator\", symbol: \":\" }))\n return rangeStart === null ? (this.i = start, null) : { type: \"index\", value: rangeStart };\n const result = {\n type: \"range\",\n start: rangeStart,\n end: this.parseNumberValue()\n };\n return this.match({ type: \"operator\", symbol: \":\" }) && (result.step = this.parseNumberValue()), result.start === null && result.end === null ? (this.i = start, null) : result;\n }\n parseValueReference() {\n return this.parseAttribute() || this.parseSliceSelector();\n }\n parseLiteralValue() {\n const literalString = this.match({ type: \"quoted\", quote: \"double\" });\n if (literalString && literalString.type === \"quoted\")\n return {\n type: \"string\",\n value: literalString.value || \"\"\n };\n const literalBoolean = this.match({ type: \"boolean\" });\n return literalBoolean && literalBoolean.type === \"boolean\" ? {\n type: \"boolean\",\n value: literalBoolean.symbol === \"true\"\n } : this.parseNumber();\n }\n // TODO: Reorder constraints so that literal value is always on rhs, and variable is always\n // on lhs.\n parseFilterExpression() {\n const start = this.i, expr = this.parseAttribute() || this.parseAlias();\n if (!expr)\n return null;\n if (this.match({ type: \"operator\", symbol: \"?\" }))\n return {\n type: \"constraint\",\n operator: \"?\",\n lhs: expr\n };\n const binOp = this.match({ type: \"comparator\" });\n if (!binOp || binOp.type !== \"comparator\")\n return this.i = start, null;\n const lhs = expr, rhs = this.parseLiteralValue();\n if (!rhs)\n throw new Error(`Operator ${binOp.symbol} needs a literal value at the right hand side`);\n return {\n type: \"constraint\",\n operator: binOp.symbol,\n lhs,\n rhs\n };\n }\n parseExpression() {\n return this.parseFilterExpression() || this.parseValueReference();\n }\n parseUnion() {\n if (!this.match({ type: \"paren\", symbol: \"[\" }))\n return null;\n const terms = [];\n let expr = this.parseFilterExpression() || this.parsePath() || this.parseValueReference();\n for (; expr && (terms.push(expr), !this.match({ type: \"paren\", symbol: \"]\" })); ) {\n if (!this.match({ type: \"operator\", symbol: \",\" }))\n throw new Error(\"Expected ]\");\n if (expr = this.parseFilterExpression() || this.parsePath() || this.parseValueReference(), !expr)\n throw new Error(\"Expected expression following ','\");\n }\n return {\n type: \"union\",\n nodes: terms\n };\n }\n parseRecursive() {\n if (!this.match({ type: \"operator\", symbol: \"..\" }))\n return null;\n const subpath = this.parsePath();\n if (!subpath)\n throw new Error(\"Expected path following '..' operator\");\n return {\n type: \"recursive\",\n term: subpath\n };\n }\n parsePath() {\n const nodes = [], expr = this.parseAttribute() || this.parseUnion() || this.parseRecursive();\n if (!expr)\n return null;\n for (nodes.push(expr); !this.EOF(); )\n if (this.match({ type: \"operator\", symbol: \".\" })) {\n const attr = this.parseAttribute();\n if (!attr)\n throw new Error(\"Expected attribute name following '.\");\n nodes.push(attr);\n continue;\n } else if (this.probe({ type: \"paren\", symbol: \"[\" })) {\n const union = this.parseUnion();\n if (!union)\n throw new Error(\"Expected union following '['\");\n nodes.push(union);\n } else {\n const recursive = this.parseRecursive();\n recursive && nodes.push(recursive);\n break;\n }\n return nodes.length === 1 ? nodes[0] : {\n type: \"path\",\n nodes\n };\n }\n}\nfunction parseJsonPath(path) {\n const parsed = new Parser(path).parse();\n if (!parsed)\n throw new Error(`Failed to parse JSON path \"${path}\"`);\n return parsed;\n}\nfunction toPath(expr) {\n return toPathInner(expr, !1);\n}\nfunction toPathInner(expr, inUnion) {\n switch (expr.type) {\n case \"attribute\":\n return expr.name;\n case \"alias\":\n return expr.target === \"self\" ? \"@\" : \"$\";\n case \"number\":\n return `${expr.value}`;\n case \"range\": {\n const result = [];\n return inUnion || result.push(\"[\"), expr.start && result.push(`${expr.start}`), result.push(\":\"), expr.end && result.push(`${expr.end}`), expr.step && result.push(`:${expr.step}`), inUnion || result.push(\"]\"), result.join(\"\");\n }\n case \"index\":\n return inUnion ? `${expr.value}` : `[${expr.value}]`;\n case \"constraint\": {\n const rhs = expr.rhs ? ` ${toPathInner(expr.rhs, !1)}` : \"\", inner = `${toPathInner(expr.lhs, !1)} ${expr.operator}${rhs}`;\n return inUnion ? inner : `[${inner}]`;\n }\n case \"string\":\n return JSON.stringify(expr.value);\n case \"path\": {\n const result = [], nodes = expr.nodes.slice();\n for (; nodes.length > 0; ) {\n const node = nodes.shift();\n node && result.push(toPath(node));\n const upcoming = nodes[0];\n upcoming && toPathInner(upcoming, !1)[0] !== \"[\" && result.push(\".\");\n }\n return result.join(\"\");\n }\n case \"union\":\n return `[${expr.nodes.map((e) => toPathInner(e, !0)).join(\",\")}]`;\n default:\n throw new Error(`Unknown node type ${expr.type}`);\n case \"recursive\":\n return `..${toPathInner(expr.term, !1)}`;\n }\n}\nvar __defProp$e = Object.defineProperty, __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$e = (obj, key, value) => __defNormalProp$e(obj, key + \"\", value);\nclass Expression {\n constructor(expr) {\n if (__publicField$e(this, \"expr\"), !expr)\n throw new Error(\"Attempted to create Expression from null-value\");\n if (\"expr\" in expr ? this.expr = expr.expr : this.expr = expr, !(\"type\" in this.expr))\n throw new Error(\"Attempt to create Expression for expression with no type\");\n }\n isPath() {\n return this.expr.type === \"path\";\n }\n isUnion() {\n return this.expr.type === \"union\";\n }\n isCollection() {\n return this.isPath() || this.isUnion();\n }\n isConstraint() {\n return this.expr.type === \"constraint\";\n }\n isRecursive() {\n return this.expr.type === \"recursive\";\n }\n isExistenceConstraint() {\n return this.expr.type === \"constraint\" && this.expr.operator === \"?\";\n }\n isIndex() {\n return this.expr.type === \"index\";\n }\n isRange() {\n return this.expr.type === \"range\";\n }\n expandRange(probe) {\n const probeLength = () => {\n if (!probe)\n throw new Error(\"expandRange() required a probe that was not passed\");\n return probe.length();\n };\n let start = \"start\" in this.expr && this.expr.start || 0;\n start = interpretNegativeIndex(start, probe);\n let end = \"end\" in this.expr && this.expr.end || probeLength();\n end = interpretNegativeIndex(end, probe);\n const step = \"step\" in this.expr && this.expr.step || 1;\n return { start, end, step };\n }\n isAttributeReference() {\n return this.expr.type === \"attribute\";\n }\n // Is a range or index -> something referencing indexes\n isIndexReference() {\n return this.isIndex() || this.isRange();\n }\n name() {\n return \"name\" in this.expr ? this.expr.name : \"\";\n }\n isSelfReference() {\n return this.expr.type === \"alias\" && this.expr.target === \"self\";\n }\n constraintTargetIsSelf() {\n return this.expr.type === \"constraint\" && this.expr.lhs.type === \"alias\" && this.expr.lhs.target === \"self\";\n }\n constraintTargetIsAttribute() {\n return this.expr.type === \"constraint\" && this.expr.lhs.type === \"attribute\";\n }\n testConstraint(probe) {\n const expr = this.expr;\n if (expr.type === \"constraint\" && expr.lhs.type === \"alias\" && expr.lhs.target === \"self\") {\n if (probe.containerType() !== \"primitive\")\n return !1;\n if (expr.type === \"constraint\" && expr.operator === \"?\")\n return !0;\n const lhs2 = probe.get(), rhs2 = expr.rhs && \"value\" in expr.rhs ? expr.rhs.value : void 0;\n return testBinaryOperator(lhs2, expr.operator, rhs2);\n }\n if (expr.type !== \"constraint\")\n return !1;\n const lhs = expr.lhs;\n if (!lhs)\n throw new Error(\"No LHS of expression\");\n if (lhs.type !== \"attribute\")\n throw new Error(`Constraint target ${lhs.type} not supported`);\n if (probe.containerType() !== \"object\")\n return !1;\n const lhsValue = probe.getAttribute(lhs.name);\n if (lhsValue == null || lhsValue.containerType() !== \"primitive\")\n return !1;\n if (this.isExistenceConstraint())\n return !0;\n const rhs = expr.rhs && \"value\" in expr.rhs ? expr.rhs.value : void 0;\n return testBinaryOperator(lhsValue.get(), expr.operator, rhs);\n }\n pathNodes() {\n return this.expr.type === \"path\" ? this.expr.nodes : [this.expr];\n }\n prepend(node) {\n return node ? new Expression({\n type: \"path\",\n nodes: node.pathNodes().concat(this.pathNodes())\n }) : this;\n }\n concat(other) {\n return other ? other.prepend(this) : this;\n }\n descend() {\n return descend$1(this.expr).map((headTail) => {\n const [head, tail] = headTail;\n return {\n head: head ? new Expression(head) : null,\n tail: tail ? new Expression(tail) : null\n };\n });\n }\n unwrapRecursive() {\n if (this.expr.type !== \"recursive\")\n throw new Error(`Attempt to unwrap recursive on type ${this.expr.type}`);\n return new Expression(this.expr.term);\n }\n toIndicies(probe) {\n if (this.expr.type !== \"index\" && this.expr.type !== \"range\")\n throw new Error(\"Node cannot be converted to indexes\");\n if (this.expr.type === \"index\")\n return [interpretNegativeIndex(this.expr.value, probe)];\n const result = [], range = this.expandRange(probe);\n let { start, end } = range;\n range.step < 0 && ([start, end] = [end, start]);\n for (let i = start; i < end; i++)\n result.push(i);\n return result;\n }\n toFieldReferences() {\n if (this.isIndexReference())\n return this.toIndicies();\n if (this.expr.type === \"attribute\")\n return [this.expr.name];\n throw new Error(`Can't convert ${this.expr.type} to field references`);\n }\n toString() {\n return toPath(this.expr);\n }\n static fromPath(path) {\n const parsed = parseJsonPath(path);\n if (!parsed)\n throw new Error(`Failed to parse path \"${path}\"`);\n return new Expression(parsed);\n }\n static attributeReference(name) {\n return new Expression({\n type: \"attribute\",\n name\n });\n }\n static indexReference(i) {\n return new Expression({\n type: \"index\",\n value: i\n });\n }\n}\nfunction testBinaryOperator(lhsValue, operator, rhsValue) {\n switch (operator) {\n case \">\":\n return lhsValue > rhsValue;\n case \">=\":\n return lhsValue >= rhsValue;\n case \"<\":\n return lhsValue < rhsValue;\n case \"<=\":\n return lhsValue <= rhsValue;\n case \"==\":\n return lhsValue === rhsValue;\n case \"!=\":\n return lhsValue !== rhsValue;\n default:\n throw new Error(`Unsupported binary operator ${operator}`);\n }\n}\nfunction interpretNegativeIndex(index, probe) {\n if (index >= 0)\n return index;\n if (!probe)\n throw new Error(\"interpretNegativeIndex() must have a probe when < 0\");\n return index + probe.length();\n}\nvar __defProp$d = Object.defineProperty, __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$d = (obj, key, value) => __defNormalProp$d(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass Descender {\n constructor(head, tail) {\n __publicField$d(this, \"head\"), __publicField$d(this, \"tail\"), this.head = head, this.tail = tail;\n }\n // Iterate this descender once processing any constraints that are\n // resolvable on the current value. Returns an array of new descenders\n // that are guaranteed to be without constraints in the head\n iterate(probe) {\n let result = [this];\n if (this.head && this.head.isConstraint()) {\n let anyConstraints = !0;\n for (; anyConstraints; )\n result = flatten(\n result.map((descender) => descender.iterateConstraints(probe))\n ), anyConstraints = result.some((descender) => descender.head && descender.head.isConstraint());\n }\n return result;\n }\n isRecursive() {\n return !!(this.head && this.head.isRecursive());\n }\n hasArrived() {\n return this.head === null && this.tail === null;\n }\n extractRecursives() {\n if (this.head && this.head.isRecursive()) {\n const term = this.head.unwrapRecursive();\n return new Descender(null, term.concat(this.tail)).descend();\n }\n return [];\n }\n iterateConstraints(probe) {\n const head = this.head;\n if (head === null || !head.isConstraint())\n return [this];\n const result = [];\n if (probe.containerType() === \"primitive\" && head.constraintTargetIsSelf())\n return head.testConstraint(probe) && result.push(...this.descend()), result;\n if (probe.containerType() === \"array\") {\n const length = probe.length();\n for (let i = 0; i < length; i++) {\n const constraint = probe.getIndex(i);\n constraint && head.testConstraint(constraint) && result.push(new Descender(new Expression({ type: \"index\", value: i }), this.tail));\n }\n return result;\n }\n return probe.containerType() === \"object\" ? head.constraintTargetIsSelf() ? [] : head.testConstraint(probe) ? this.descend() : result : result;\n }\n descend() {\n return this.tail ? this.tail.descend().map((ht) => new Descender(ht.head, ht.tail)) : [new Descender(null, null)];\n }\n toString() {\n const result = [\"<\"];\n return this.head && result.push(this.head.toString()), result.push(\"|\"), this.tail && result.push(this.tail.toString()), result.push(\">\"), result.join(\"\");\n }\n}\nvar __defProp$c = Object.defineProperty, __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$c = (obj, key, value) => __defNormalProp$c(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass Matcher {\n constructor(active, parent) {\n __publicField$c(this, \"active\"), __publicField$c(this, \"recursives\"), __publicField$c(this, \"payload\"), this.active = active || [], parent ? (this.recursives = parent.recursives, this.payload = parent.payload) : this.recursives = [], this.extractRecursives();\n }\n setPayload(payload) {\n return this.payload = payload, this;\n }\n // Moves any recursive descenders onto the recursive track, removing them from\n // the active set\n extractRecursives() {\n this.active = this.active.filter((descender) => descender.isRecursive() ? (this.recursives.push(...descender.extractRecursives()), !1) : !0);\n }\n // Find recursives that are relevant now and should be considered part of the active set\n activeRecursives(probe) {\n return this.recursives.filter((descender) => {\n const head = descender.head;\n return head ? head.isConstraint() || probe.containerType() === \"array\" && head.isIndexReference() ? !0 : probe.containerType() === \"object\" ? head.isAttributeReference() && probe.hasAttribute(head.name()) : !1 : !1;\n });\n }\n match(probe) {\n return this.iterate(probe).extractMatches(probe);\n }\n iterate(probe) {\n const newActiveSet = [];\n return this.active.concat(this.activeRecursives(probe)).forEach((descender) => {\n newActiveSet.push(...descender.iterate(probe));\n }), new Matcher(newActiveSet, this);\n }\n // Returns true if any of the descenders in the active or recursive set\n // consider the current state a final destination\n isDestination() {\n return this.active.some((descender) => descender.hasArrived());\n }\n hasRecursives() {\n return this.recursives.length > 0;\n }\n // Returns any payload delivieries and leads that needs to be followed to complete\n // the process.\n extractMatches(probe) {\n const leads = [], targets = [];\n if (this.active.forEach((descender) => {\n if (descender.hasArrived()) {\n targets.push(\n new Expression({\n type: \"alias\",\n target: \"self\"\n })\n );\n return;\n }\n const descenderHead = descender.head;\n if (descenderHead && !(probe.containerType() === \"array\" && !descenderHead.isIndexReference()) && !(probe.containerType() === \"object\" && !descenderHead.isAttributeReference()))\n if (descender.tail) {\n const matcher = new Matcher(descender.descend(), this);\n descenderHead.toFieldReferences().forEach(() => {\n leads.push({\n target: descenderHead,\n matcher\n });\n });\n } else\n targets.push(descenderHead);\n }), this.hasRecursives()) {\n const recursivesMatcher = new Matcher([], this);\n if (probe.containerType() === \"array\") {\n const length = probe.length();\n for (let i = 0; i < length; i++)\n leads.push({\n target: Expression.indexReference(i),\n matcher: recursivesMatcher\n });\n } else probe.containerType() === \"object\" && probe.attributeKeys().forEach((name) => {\n leads.push({\n target: Expression.attributeReference(name),\n matcher: recursivesMatcher\n });\n });\n }\n return targets.length > 0 ? { leads, delivery: { targets, payload: this.payload } } : { leads };\n }\n static fromPath(jsonpath) {\n const path = parseJsonPath(jsonpath);\n if (!path)\n throw new Error(`Failed to parse path from \"${jsonpath}\"`);\n const descender = new Descender(null, new Expression(path));\n return new Matcher(descender.descend());\n }\n}\nvar __defProp$b = Object.defineProperty, __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$b = (obj, key, value) => __defNormalProp$b(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass PlainProbe {\n constructor(value, path) {\n __publicField$b(this, \"_value\"), __publicField$b(this, \"path\"), this._value = value, this.path = path || [];\n }\n containerType() {\n return Array.isArray(this._value) ? \"array\" : this._value !== null && typeof this._value == \"object\" ? \"object\" : \"primitive\";\n }\n length() {\n if (!Array.isArray(this._value))\n throw new Error(\"Won't return length of non-indexable _value\");\n return this._value.length;\n }\n getIndex(i) {\n return Array.isArray(this._value) ? i >= this.length() ? null : new PlainProbe(this._value[i], this.path.concat(i)) : !1;\n }\n hasAttribute(key) {\n return isRecord(this._value) ? this._value.hasOwnProperty(key) : !1;\n }\n attributeKeys() {\n return isRecord(this._value) ? Object.keys(this._value) : [];\n }\n getAttribute(key) {\n if (!isRecord(this._value))\n throw new Error(\"getAttribute only applies to plain objects\");\n return this.hasAttribute(key) ? new PlainProbe(this._value[key], this.path.concat(key)) : null;\n }\n get() {\n return this._value;\n }\n}\nfunction extractAccessors(path, value) {\n const result = [], matcher = Matcher.fromPath(path).setPayload(function(values) {\n result.push(...values);\n }), accessor = new PlainProbe(value);\n return descend(matcher, accessor), result;\n}\nfunction descend(matcher, accessor) {\n const { leads, delivery } = matcher.match(accessor);\n leads.forEach((lead) => {\n accessorsFromTarget(lead.target, accessor).forEach((childAccessor) => {\n descend(lead.matcher, childAccessor);\n });\n }), delivery && delivery.targets.forEach((target) => {\n typeof delivery.payload == \"function\" && delivery.payload(accessorsFromTarget(target, accessor));\n });\n}\nfunction accessorsFromTarget(target, accessor) {\n const result = [];\n if (target.isIndexReference())\n target.toIndicies(accessor).forEach((i) => {\n result.push(accessor.getIndex(i));\n });\n else if (target.isAttributeReference())\n result.push(accessor.getAttribute(target.name()));\n else if (target.isSelfReference())\n result.push(accessor);\n else\n throw new Error(`Unable to derive accessor for target ${target.toString()}`);\n return compact(result);\n}\nfunction extract(path, value) {\n return extractAccessors(path, value).map((acc) => acc.get());\n}\nfunction extractWithPath(path, value) {\n return extractAccessors(path, value).map((acc) => ({ path: acc.path, value: acc.get() }));\n}\nvar __defProp$a = Object.defineProperty, __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$a = (obj, key, value) => __defNormalProp$a(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nfunction applyPatch(patch, oldValue) {\n if (typeof oldValue != \"string\") return oldValue;\n const [result] = applyPatches(patch, oldValue, { allowExceedingIndices: !0 });\n return result;\n}\nclass DiffMatchPatch {\n constructor(id, path, dmpPatchSrc) {\n __publicField$a(this, \"path\"), __publicField$a(this, \"dmpPatch\"), __publicField$a(this, \"id\"), this.id = id, this.path = path, this.dmpPatch = parsePatch$1(dmpPatchSrc);\n }\n apply(targets, accessor) {\n let result = accessor;\n if (result.containerType() === \"primitive\")\n return result;\n for (const target of targets) {\n if (target.isIndexReference()) {\n for (const index of target.toIndicies(accessor)) {\n const item = result.getIndex(index);\n if (!item)\n continue;\n const oldValue = item.get(), nextValue = applyPatch(this.dmpPatch, oldValue);\n result = result.setIndex(index, nextValue);\n }\n continue;\n }\n if (target.isAttributeReference() && result.hasAttribute(target.name())) {\n const attribute = result.getAttribute(target.name());\n if (!attribute)\n continue;\n const oldValue = attribute.get(), nextValue = applyPatch(this.dmpPatch, oldValue);\n result = result.setAttribute(target.name(), nextValue);\n continue;\n }\n throw new Error(`Unable to apply diffMatchPatch to target ${target.toString()}`);\n }\n return result;\n }\n}\nvar __defProp$9 = Object.defineProperty, __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$9 = (obj, key, value) => __defNormalProp$9(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nfunction performIncrement(previousValue, delta) {\n return typeof previousValue != \"number\" || !Number.isFinite(previousValue) ? previousValue : previousValue + delta;\n}\nclass IncPatch {\n constructor(id, path, value) {\n __publicField$9(this, \"path\"), __publicField$9(this, \"value\"), __publicField$9(this, \"id\"), this.path = path, this.value = value, this.id = id;\n }\n apply(targets, accessor) {\n let result = accessor;\n if (result.containerType() === \"primitive\")\n return result;\n for (const target of targets) {\n if (target.isIndexReference()) {\n for (const index of target.toIndicies(accessor)) {\n const item = result.getIndex(index);\n if (!item)\n continue;\n const previousValue = item.get();\n result = result.setIndex(index, performIncrement(previousValue, this.value));\n }\n continue;\n }\n if (target.isAttributeReference()) {\n const attribute = result.getAttribute(target.name());\n if (!attribute)\n continue;\n const previousValue = attribute.get();\n result = result.setAttribute(target.name(), performIncrement(previousValue, this.value));\n continue;\n }\n throw new Error(`Unable to apply to target ${target.toString()}`);\n }\n return result;\n }\n}\nfunction targetsToIndicies(targets, accessor) {\n const result = [];\n return targets.forEach((target) => {\n target.isIndexReference() && result.push(...target.toIndicies(accessor));\n }), result.sort();\n}\nvar __defProp$8 = Object.defineProperty, __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$8 = (obj, key, value) => __defNormalProp$8(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass InsertPatch {\n constructor(id, location, path, items) {\n __publicField$8(this, \"location\"), __publicField$8(this, \"path\"), __publicField$8(this, \"items\"), __publicField$8(this, \"id\"), this.id = id, this.location = location, this.path = path, this.items = items;\n }\n apply(targets, accessor) {\n let result = accessor;\n if (accessor.containerType() !== \"array\")\n throw new Error(\"Attempt to apply insert patch to non-array value\");\n switch (this.location) {\n case \"before\": {\n const pos = minIndex(targets, accessor);\n result = result.insertItemsAt(pos, this.items);\n break;\n }\n case \"after\": {\n const pos = maxIndex(targets, accessor);\n result = result.insertItemsAt(pos + 1, this.items);\n break;\n }\n case \"replace\": {\n const indicies = targetsToIndicies(targets, accessor);\n result = result.unsetIndices(indicies), result = result.insertItemsAt(indicies[0], this.items);\n break;\n }\n default:\n throw new Error(`Unsupported location atm: ${this.location}`);\n }\n return result;\n }\n}\nfunction minIndex(targets, accessor) {\n let result = min(targetsToIndicies(targets, accessor)) || 0;\n return targets.forEach((target) => {\n if (target.isRange()) {\n const { start } = target.expandRange();\n start < result && (result = start);\n }\n }), result;\n}\nfunction maxIndex(targets, accessor) {\n let result = max(targetsToIndicies(targets, accessor)) || 0;\n return targets.forEach((target) => {\n if (target.isRange()) {\n const { end } = target.expandRange();\n end > result && (result = end);\n }\n }), result;\n}\nvar __defProp$7 = Object.defineProperty, __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$7 = (obj, key, value) => __defNormalProp$7(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass SetIfMissingPatch {\n constructor(id, path, value) {\n __publicField$7(this, \"id\"), __publicField$7(this, \"path\"), __publicField$7(this, \"value\"), this.id = id, this.path = path, this.value = value;\n }\n apply(targets, accessor) {\n let result = accessor;\n return targets.forEach((target) => {\n if (!target.isIndexReference())\n if (target.isAttributeReference())\n result.containerType() === \"primitive\" ? result = result.set({ [target.name()]: this.value }) : result.hasAttribute(target.name()) || (result = accessor.setAttribute(target.name(), this.value));\n else\n throw new Error(`Unable to apply to target ${target.toString()}`);\n }), result;\n }\n}\nvar __defProp$6 = Object.defineProperty, __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$6 = (obj, key, value) => __defNormalProp$6(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass SetPatch {\n constructor(id, path, value) {\n __publicField$6(this, \"id\"), __publicField$6(this, \"path\"), __publicField$6(this, \"value\"), this.id = id, this.path = path, this.value = value;\n }\n apply(targets, accessor) {\n let result = accessor;\n return targets.forEach((target) => {\n if (target.isSelfReference())\n result = result.set(this.value);\n else if (target.isIndexReference())\n target.toIndicies(accessor).forEach((i) => {\n result = result.setIndex(i, this.value);\n });\n else if (target.isAttributeReference())\n result.containerType() === \"primitive\" ? result = result.set({ [target.name()]: this.value }) : result = result.setAttribute(target.name(), this.value);\n else\n throw new Error(`Unable to apply to target ${target.toString()}`);\n }), result;\n }\n}\nvar __defProp$5 = Object.defineProperty, __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass UnsetPatch {\n constructor(id, path) {\n __publicField$5(this, \"id\"), __publicField$5(this, \"path\"), __publicField$5(this, \"value\"), this.id = id, this.path = path;\n }\n // eslint-disable-next-line class-methods-use-this\n apply(targets, accessor) {\n let result = accessor;\n switch (accessor.containerType()) {\n case \"array\":\n result = result.unsetIndices(targetsToIndicies(targets, accessor));\n break;\n case \"object\":\n targets.forEach((target) => {\n result = result.unsetAttribute(target.name());\n });\n break;\n default:\n throw new Error(\n \"Target value is neither indexable or an object. This error should potentially just be silently ignored?\"\n );\n }\n return result;\n }\n}\nfunction parsePatch(patch) {\n const result = [];\n if (Array.isArray(patch))\n return patch.reduce((r, p) => r.concat(parsePatch(p)), result);\n const { set, setIfMissing, unset, diffMatchPatch, inc, dec, insert } = patch;\n if (setIfMissing && Object.keys(setIfMissing).forEach((path) => {\n result.push(new SetIfMissingPatch(patch.id, path, setIfMissing[path]));\n }), set && Object.keys(set).forEach((path) => {\n result.push(new SetPatch(patch.id, path, set[path]));\n }), unset && unset.forEach((path) => {\n result.push(new UnsetPatch(patch.id, path));\n }), diffMatchPatch && Object.keys(diffMatchPatch).forEach((path) => {\n result.push(new DiffMatchPatch(patch.id, path, diffMatchPatch[path]));\n }), inc && Object.keys(inc).forEach((path) => {\n result.push(new IncPatch(patch.id, path, inc[path]));\n }), dec && Object.keys(dec).forEach((path) => {\n result.push(new IncPatch(patch.id, path, -dec[path]));\n }), insert) {\n let location, path;\n const spec = insert;\n if (\"before\" in spec)\n location = \"before\", path = spec.before;\n else if (\"after\" in spec)\n location = \"after\", path = spec.after;\n else if (\"replace\" in spec)\n location = \"replace\", path = spec.replace;\n else\n throw new Error(\"Invalid insert patch\");\n result.push(new InsertPatch(patch.id, location, path, spec.items));\n }\n return result;\n}\nvar __defProp$4 = Object.defineProperty, __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$4 = (obj, key, value) => __defNormalProp$4(obj, key + \"\", value);\nclass Patcher {\n constructor(patch) {\n __publicField$4(this, \"patches\"), this.patches = parsePatch(patch);\n }\n apply(value) {\n const accessor = new ImmutableAccessor(value);\n return this.applyViaAccessor(accessor).get();\n }\n // If you want to use your own accessor implementation, you can use this method\n // to invoke the patcher. Since all subsequent accessors for children of this accessor\n // are obtained through the methods in the accessors, you retain full control of the\n // implementation throguhgout the application. Have a look in ImmutableAccessor\n // to see an example of how accessors are implemented.\n applyViaAccessor(accessor) {\n let result = accessor;\n const idAccessor = accessor.getAttribute(\"_id\");\n if (!idAccessor)\n throw new Error(\"Cannot apply patch to document with no _id\");\n const id = idAccessor.get();\n for (const patch of this.patches) {\n if (patch.id !== id)\n continue;\n const matcher = Matcher.fromPath(patch.path).setPayload(patch);\n result = process(matcher, result);\n }\n return result;\n }\n}\nfunction process(matcher, accessor) {\n const isSetPatch = matcher.payload instanceof SetPatch || matcher.payload instanceof SetIfMissingPatch;\n let result = accessor;\n const { leads, delivery } = matcher.match(accessor);\n return leads.forEach((lead) => {\n if (lead.target.isIndexReference())\n lead.target.toIndicies().forEach((i) => {\n const item = result.getIndex(i);\n if (!item)\n throw new Error(\"Index out of bounds\");\n result = result.setIndexAccessor(i, process(lead.matcher, item));\n });\n else if (lead.target.isAttributeReference()) {\n isSetPatch && result.containerType() === \"primitive\" && (result = result.set({}));\n let oldValueAccessor = result.getAttribute(lead.target.name());\n if (!oldValueAccessor && isSetPatch && (result = result.setAttribute(lead.target.name(), {}), oldValueAccessor = result.getAttribute(lead.target.name())), !oldValueAccessor)\n return;\n const newValueAccessor = process(lead.matcher, oldValueAccessor);\n oldValueAccessor !== newValueAccessor && (result = result.setAttributeAccessor(lead.target.name(), newValueAccessor));\n } else\n throw new Error(`Unable to handle target ${lead.target.toString()}`);\n }), delivery && isPatcher(delivery.payload) && (result = delivery.payload.apply(delivery.targets, result)), result;\n}\nfunction isPatcher(payload) {\n return !!(payload && typeof payload == \"object\" && payload !== null && \"apply\" in payload && typeof payload.apply == \"function\");\n}\nconst luid = uuid;\nvar __defProp$3 = Object.defineProperty, __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass Mutation {\n constructor(options) {\n __publicField$3(this, \"params\"), __publicField$3(this, \"compiled\"), __publicField$3(this, \"_appliesToMissingDocument\"), this.params = options;\n }\n get transactionId() {\n return this.params.transactionId;\n }\n get transition() {\n return this.params.transition;\n }\n get identity() {\n return this.params.identity;\n }\n get previousRev() {\n return this.params.previousRev;\n }\n get resultRev() {\n return this.params.resultRev;\n }\n get mutations() {\n return this.params.mutations;\n }\n get timestamp() {\n if (typeof this.params.timestamp == \"string\")\n return new Date(this.params.timestamp);\n }\n get effects() {\n return this.params.effects;\n }\n assignRandomTransactionId() {\n this.params.transactionId = luid(), this.params.resultRev = this.params.transactionId;\n }\n appliesToMissingDocument() {\n if (typeof this._appliesToMissingDocument < \"u\")\n return this._appliesToMissingDocument;\n const firstMut = this.mutations[0];\n return firstMut ? this._appliesToMissingDocument = !!(firstMut.create || firstMut.createIfNotExists || firstMut.createOrReplace) : this._appliesToMissingDocument = !0, this._appliesToMissingDocument;\n }\n // Compiles all mutations into a handy function\n compile() {\n const operations = [], getGuaranteedCreatedAt = (doc) => (doc == null ? void 0 : doc._createdAt) || this.params.timestamp || (/* @__PURE__ */ new Date()).toISOString();\n this.mutations.forEach((mutation) => {\n if (mutation.create) {\n const create = mutation.create || {};\n operations.push((doc) => doc || Object.assign(create, {\n _createdAt: getGuaranteedCreatedAt(create)\n }));\n return;\n }\n if (mutation.createIfNotExists) {\n const createIfNotExists = mutation.createIfNotExists || {};\n operations.push(\n (doc) => doc === null ? Object.assign(createIfNotExists, {\n _createdAt: getGuaranteedCreatedAt(createIfNotExists)\n }) : doc\n );\n return;\n }\n if (mutation.createOrReplace) {\n const createOrReplace = mutation.createOrReplace || {};\n operations.push(\n () => Object.assign(createOrReplace, {\n _createdAt: getGuaranteedCreatedAt(createOrReplace)\n })\n );\n return;\n }\n if (mutation.delete) {\n operations.push(() => null);\n return;\n }\n if (mutation.patch) {\n if (\"query\" in mutation.patch)\n return;\n const patch = new Patcher(mutation.patch);\n operations.push((doc) => patch.apply(doc));\n return;\n }\n throw new Error(`Unsupported mutation ${JSON.stringify(mutation, null, 2)}`);\n }), typeof this.params.timestamp == \"string\" && operations.push((doc) => doc ? Object.assign(doc, { _updatedAt: this.params.timestamp }) : null);\n const prevRev = this.previousRev, rev = this.resultRev || this.transactionId;\n this.compiled = (doc) => {\n if (prevRev && doc && prevRev !== doc._rev)\n throw new Error(\n `Previous revision for this mutation was ${prevRev}, but the document revision is ${doc._rev}`\n );\n let result = doc;\n for (const operation of operations)\n result = operation(result);\n return result && rev && (result === doc && (result = Object.assign({}, doc)), result._rev = rev), result;\n };\n }\n apply(document) {\n debug(\"Applying mutation %O to document %O\", this.mutations, document), this.compiled || this.compile();\n const result = this.compiled(document);\n return debug(\" => %O\", result), result;\n }\n static applyAll(document, mutations) {\n return mutations.reduce((doc, mutation) => mutation.apply(doc), document);\n }\n // Given a number of yet-to-be-committed mutation objects, collects them into one big mutation\n // any metadata like transactionId is ignored and must be submitted by the client. It is assumed\n // that all mutations are on the same document.\n // TOOO: Optimize mutations, eliminating mutations that overwrite themselves!\n static squash(document, mutations) {\n const squashed = mutations.reduce(\n (result, mutation) => result.concat(...mutation.mutations),\n []\n );\n return new Mutation({ mutations: squashed });\n }\n}\nvar __defProp$2 = Object.defineProperty, __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass Document {\n constructor(doc) {\n __publicField$2(this, \"incoming\", []), __publicField$2(this, \"submitted\", []), __publicField$2(this, \"pending\", []), __publicField$2(this, \"HEAD\"), __publicField$2(this, \"EDGE\"), __publicField$2(this, \"onRebase\"), __publicField$2(this, \"onMutation\"), __publicField$2(this, \"onConsistencyChanged\"), __publicField$2(this, \"onRemoteMutation\"), __publicField$2(this, \"inconsistentAt\", null), __publicField$2(this, \"lastStagedAt\", null), this.reset(doc), this.HEAD = doc, this.EDGE = doc;\n }\n // Reset the state of the Document, used to recover from unsavory states by reloading the document\n reset(doc) {\n this.incoming = [], this.submitted = [], this.pending = [], this.inconsistentAt = null, this.HEAD = doc, this.EDGE = doc, this.considerIncoming(), this.updateConsistencyFlag();\n }\n // Call when a mutation arrives from Sanity\n arrive(mutation) {\n this.incoming.push(mutation), this.considerIncoming(), this.updateConsistencyFlag();\n }\n // Call to signal that we are submitting a mutation. Returns a callback object with a\n // success and failure handler that must be called according to the outcome of our\n // submission.\n stage(mutation, silent) {\n if (!mutation.transactionId)\n throw new Error(\"Mutations _must_ have transactionId when submitted\");\n this.lastStagedAt = /* @__PURE__ */ new Date(), debug(\"Staging mutation %s (pushed to pending)\", mutation.transactionId), this.pending.push(mutation), this.EDGE = mutation.apply(this.EDGE), this.onMutation && !silent && this.onMutation({\n mutation,\n document: this.EDGE,\n remote: !1\n });\n const txnId = mutation.transactionId;\n return this.updateConsistencyFlag(), {\n success: () => {\n this.pendingSuccessfullySubmitted(txnId), this.updateConsistencyFlag();\n },\n failure: () => {\n this.pendingFailed(txnId), this.updateConsistencyFlag();\n }\n };\n }\n // Call to check if everything is nice and quiet and there are no unresolved mutations.\n // Means this model thinks both HEAD and EDGE is up to date with what the server sees.\n isConsistent() {\n return !this.inconsistentAt;\n }\n // Private\n // Attempts to apply any resolvable incoming patches to HEAD. Will keep patching as long as there\n // are applicable patches to be applied\n considerIncoming() {\n let mustRebase = !1, nextMut;\n const rebaseMutations = [];\n if (this.HEAD && this.HEAD._updatedAt) {\n const updatedAt = new Date(this.HEAD._updatedAt);\n this.incoming.find((mut) => mut.timestamp && mut.timestamp < updatedAt) && (this.incoming = this.incoming.filter((mut) => mut.timestamp && mut.timestamp < updatedAt));\n }\n let protect = 0;\n do {\n if (this.HEAD) {\n const HEAD = this.HEAD;\n nextMut = HEAD._rev ? this.incoming.find((mut) => mut.previousRev === HEAD._rev) : void 0;\n } else\n nextMut = this.incoming.find((mut) => mut.appliesToMissingDocument());\n if (nextMut) {\n const applied = this.applyIncoming(nextMut);\n if (mustRebase = mustRebase || applied, mustRebase && rebaseMutations.push(nextMut), protect++ > 10)\n throw new Error(\n `Mutator stuck flushing incoming mutations. Probably stuck here: ${JSON.stringify(\n nextMut\n )}`\n );\n }\n } while (nextMut);\n this.incoming.length > 0 && debug.enabled && debug(\n \"Unable to apply mutations %s\",\n this.incoming.map((mut) => mut.transactionId).join(\", \")\n ), mustRebase && this.rebase(rebaseMutations);\n }\n // check current consistency state, update flag and invoke callback if needed\n updateConsistencyFlag() {\n const wasConsistent = this.isConsistent(), isConsistent = this.pending.length === 0 && this.submitted.length === 0 && this.incoming.length === 0;\n isConsistent ? this.inconsistentAt = null : this.inconsistentAt || (this.inconsistentAt = /* @__PURE__ */ new Date()), wasConsistent != isConsistent && this.onConsistencyChanged && (debug(isConsistent ? \"Buffered document is inconsistent\" : \"Buffered document is consistent\"), this.onConsistencyChanged(isConsistent));\n }\n // apply an incoming patch that has been prequalified as the next in line for this document\n applyIncoming(mut) {\n if (!mut)\n return !1;\n if (!mut.transactionId)\n throw new Error(\"Received incoming mutation without a transaction ID\");\n if (debug(\n \"Applying mutation %s -> %s to rev %s\",\n mut.previousRev,\n mut.resultRev,\n this.HEAD && this.HEAD._rev\n ), this.HEAD = mut.apply(this.HEAD), this.onRemoteMutation && this.onRemoteMutation(mut), this.incoming = this.incoming.filter((m) => m.transactionId !== mut.transactionId), this.hasUnresolvedMutations()) {\n const needRebase = this.consumeUnresolved(mut.transactionId);\n return debug.enabled && (debug(\n `Incoming mutation ${mut.transactionId} appeared while there were pending or submitted local mutations`\n ), debug(`Submitted txnIds: ${this.submitted.map((m) => m.transactionId).join(\", \")}`), debug(`Pending txnIds: ${this.pending.map((m) => m.transactionId).join(\", \")}`), debug(\"needRebase === %s\", needRebase)), needRebase;\n }\n return debug(\n \"Remote mutation %s arrived w/o any pending or submitted local mutations\",\n mut.transactionId\n ), this.EDGE = this.HEAD, this.onMutation && this.onMutation({\n mutation: mut,\n document: this.EDGE,\n remote: !0\n }), !1;\n }\n /**\n * Returns true if there are unresolved mutations between HEAD and EDGE, meaning we have\n * mutations that are still waiting to be either submitted, or to be confirmed by the server.\n *\n * @returns true if there are unresolved mutations between HEAD and EDGE, false otherwise\n */\n hasUnresolvedMutations() {\n return this.submitted.length > 0 || this.pending.length > 0;\n }\n /**\n * When an incoming mutation is applied to HEAD, this is called to remove the mutation from\n * the unresolved state. If the newly applied patch is the next upcoming unresolved mutation,\n * no rebase is needed, but we might have the wrong idea about the ordering of mutations, so in\n * that case we are given the flag `needRebase` to tell us that this mutation arrived out of\n * order in terms of our optimistic version, so a rebase is needed.\n *\n * @param txnId - Transaction ID of the remote mutation\n * @returns true if rebase is needed, false otherwise\n */\n consumeUnresolved(txnId) {\n if (this.submitted.length === 0 && this.pending.length === 0)\n return !1;\n if (this.submitted.length !== 0) {\n if (this.submitted[0].transactionId === txnId)\n return debug(\n \"Remote mutation %s matches upcoming submitted mutation, consumed from 'submitted' buffer\",\n txnId\n ), this.submitted.shift(), !1;\n } else if (this.pending.length > 0 && this.pending[0].transactionId === txnId)\n return debug(\n \"Remote mutation %s matches upcoming pending mutation, consumed from 'pending' buffer\",\n txnId\n ), this.pending.shift(), !1;\n return debug(\n \"The mutation was not the upcoming mutation, scrubbing. Pending: %d, Submitted: %d\",\n this.pending.length,\n this.submitted.length\n ), this.submitted = this.submitted.filter((mut) => mut.transactionId !== txnId), this.pending = this.pending.filter((mut) => mut.transactionId !== txnId), debug(\"After scrubbing: Pending: %d, Submitted: %d\", this.pending.length, this.submitted.length), !0;\n }\n pendingSuccessfullySubmitted(pendingTxnId) {\n if (this.pending.length === 0)\n return;\n const first = this.pending[0];\n if (first.transactionId === pendingTxnId) {\n this.pending.shift(), this.submitted.push(first);\n return;\n }\n let justSubmitted;\n const stillPending = [];\n this.pending.forEach((mutation) => {\n if (mutation.transactionId === pendingTxnId) {\n justSubmitted = mutation;\n return;\n }\n stillPending.push(mutation);\n }), justSubmitted && this.submitted.push(justSubmitted), this.pending = stillPending, this.rebase([]);\n }\n pendingFailed(pendingTxnId) {\n this.pending = this.pending.filter((mutation) => mutation.transactionId !== pendingTxnId), this.rebase([]);\n }\n rebase(incomingMutations) {\n const oldEdge = this.EDGE;\n this.EDGE = Mutation.applyAll(this.HEAD, this.submitted.concat(this.pending)), oldEdge !== null && this.EDGE !== null && (oldEdge._rev = this.EDGE._rev), !isEqual(this.EDGE, oldEdge) && this.onRebase && this.onRebase(this.EDGE, incomingMutations, this.pending);\n }\n}\nvar __defProp$1 = Object.defineProperty, __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nclass SquashingBuffer {\n constructor(doc) {\n __publicField$1(this, \"BASIS\"), __publicField$1(this, \"PRESTAGE\"), __publicField$1(this, \"setOperations\"), __publicField$1(this, \"documentPresent\"), __publicField$1(this, \"out\", []), __publicField$1(this, \"staged\"), doc ? debug(\"Reset mutation buffer to rev %s\", doc._rev) : debug(\"Reset mutation buffer state to document being deleted\"), this.staged = [], this.setOperations = {}, this.documentPresent = !1, this.BASIS = doc, this.PRESTAGE = doc;\n }\n add(mut) {\n mut.mutations.forEach((op) => this.addOperation(op));\n }\n hasChanges() {\n return this.out.length > 0 || Object.keys(this.setOperations).length > 0;\n }\n /**\n * Extracts the mutations in this buffer.\n * After this is done, the buffer lifecycle is over and the client should\n * create an new one with the new, updated BASIS.\n *\n * @param txnId - Transaction ID\n * @returns A `Mutation` instance if we had outgoing mutations pending, null otherwise\n */\n purge(txnId) {\n this.stashStagedOperations();\n let result = null;\n return this.out.length > 0 && (debug(\"Purged mutation buffer\"), result = new Mutation({\n mutations: this.out,\n resultRev: txnId,\n transactionId: txnId\n })), this.out = [], this.documentPresent = !1, result;\n }\n addOperation(op) {\n var _a;\n if (op.patch && op.patch.set && \"id\" in op.patch && op.patch.id === ((_a = this.PRESTAGE) == null ? void 0 : _a._id) && Object.keys(op.patch).length === 2) {\n const setPatch = op.patch.set, unoptimizable = {};\n for (const path of Object.keys(setPatch))\n setPatch.hasOwnProperty(path) && (this.optimiseSetOperation(path, setPatch[path]) || (unoptimizable[path] = setPatch[path]));\n Object.keys(unoptimizable).length > 0 && (debug(\"Unoptimizable set-operation detected, purging optimization buffer\"), this.staged.push({ patch: { id: this.PRESTAGE._id, set: unoptimizable } }), this.stashStagedOperations());\n return;\n }\n if (op.createIfNotExists && this.PRESTAGE && op.createIfNotExists._id === this.PRESTAGE._id) {\n this.documentPresent || (this.staged.push(op), this.documentPresent = !0, this.stashStagedOperations());\n return;\n }\n debug(\"Unoptimizable mutation detected, purging optimization buffer\"), this.staged.push(op), this.stashStagedOperations();\n }\n /**\n * Attempt to perform one single set operation in an optimised manner, return value\n * reflects whether or not the operation could be performed.\n \n * @param path - The JSONPath to the set operation in question\n * @param nextValue - The value to be set\n * @returns True of optimized, false otherwise\n */\n optimiseSetOperation(path, nextValue) {\n if (typeof nextValue == \"object\")\n return !1;\n const matches = extractWithPath(path, this.PRESTAGE);\n if (matches.length !== 1)\n return !1;\n const match = matches[0];\n if (typeof match.value == \"object\" || !this.PRESTAGE)\n return !1;\n let op = null;\n if (match.value === nextValue)\n op = null;\n else if (typeof match.value == \"string\" && typeof nextValue == \"string\")\n try {\n const patch = stringifyPatches(makePatches(match.value, nextValue));\n op = { patch: { id: this.PRESTAGE._id, diffMatchPatch: { [path]: patch } } };\n } catch (e) {\n return !1;\n }\n else\n op = { patch: { id: this.PRESTAGE._id, set: { [path]: nextValue } } };\n const canonicalPath = arrayToJSONMatchPath(match.path);\n return op ? this.setOperations[canonicalPath] = op : delete this.setOperations[canonicalPath], !0;\n }\n stashStagedOperations() {\n const nextOps = [];\n Object.keys(this.setOperations).forEach((key) => {\n const op = this.setOperations[key];\n op && nextOps.push(op);\n }), nextOps.push(...this.staged), nextOps.length > 0 && (this.PRESTAGE = new Mutation({ mutations: nextOps }).apply(this.PRESTAGE), this.staged = [], this.setOperations = {}), this.out.push(...nextOps);\n }\n /**\n * Rebases given the new base-document\n *\n * @param newBasis - New base document to rebase on\n * @returns New \"edge\" document with buffered changes integrated\n */\n rebase(newBasis) {\n return this.stashStagedOperations(), newBasis === null ? (this.out = [], this.BASIS = newBasis, this.PRESTAGE = newBasis, this.documentPresent = !1) : (this.BASIS = newBasis, this.out ? this.PRESTAGE = new Mutation({ mutations: this.out }).apply(this.BASIS) : this.PRESTAGE = this.BASIS), this.PRESTAGE;\n }\n}\nvar __defProp = Object.defineProperty, __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != \"symbol\" ? key + \"\" : key, value);\nconst ONE_MINUTE = 1e3 * 60;\nclass Commit {\n constructor(mutations, { resolve, reject }) {\n __publicField(this, \"mutations\"), __publicField(this, \"tries\"), __publicField(this, \"resolve\"), __publicField(this, \"reject\"), this.mutations = mutations, this.tries = 0, this.resolve = resolve, this.reject = reject;\n }\n apply(doc) {\n return Mutation.applyAll(doc, this.mutations);\n }\n squash(doc) {\n const result = Mutation.squash(doc, this.mutations);\n return result.assignRandomTransactionId(), result;\n }\n}\nconst mutReducerFn = (acc, mut) => acc.concat(mut.mutations);\nclass BufferedDocument {\n constructor(doc) {\n __publicField(this, \"mutations\"), __publicField(this, \"document\"), __publicField(this, \"LOCAL\"), __publicField(this, \"commits\"), __publicField(this, \"buffer\"), __publicField(this, \"onMutation\"), __publicField(this, \"onRemoteMutation\"), __publicField(this, \"onRebase\"), __publicField(this, \"onDelete\"), __publicField(this, \"onConsistencyChanged\"), __publicField(this, \"commitHandler\"), __publicField(this, \"committerRunning\", !1), this.buffer = new SquashingBuffer(doc), this.document = new Document(doc), this.document.onMutation = (msg) => this.handleDocMutation(msg), this.document.onRemoteMutation = (mut) => this.onRemoteMutation && this.onRemoteMutation(mut), this.document.onRebase = (edge, remoteMutations, localMutations) => this.handleDocRebase(edge, remoteMutations, localMutations), this.document.onConsistencyChanged = (msg) => this.handleDocConsistencyChanged(msg), this.LOCAL = doc, this.mutations = [], this.commits = [];\n }\n // Used to reset the state of the local document model. If the model has been inconsistent\n // for too long, it has probably missed a notification, and should reload the document from the server\n reset(doc) {\n doc ? debug(\"Document state reset to revision %s\", doc._rev) : debug(\"Document state reset to being deleted\"), this.document.reset(doc), this.rebase([], []), this.handleDocConsistencyChanged(this.document.isConsistent());\n }\n // Add a change to the buffer\n add(mutation) {\n this.onConsistencyChanged && this.onConsistencyChanged(!1), debug(\"Staged local mutation\"), this.buffer.add(mutation);\n const oldLocal = this.LOCAL;\n this.LOCAL = mutation.apply(this.LOCAL), this.onMutation && oldLocal !== this.LOCAL && (debug(\"onMutation fired\"), this.onMutation({\n mutation,\n document: this.LOCAL,\n remote: !1\n }), this.LOCAL === null && this.onDelete && this.onDelete(this.LOCAL));\n }\n // Call when a mutation arrives from Sanity\n arrive(mutation) {\n if (debug(\"Remote mutation arrived %s -> %s\", mutation.previousRev, mutation.resultRev), mutation.previousRev === mutation.resultRev)\n throw new Error(\n `Mutation ${mutation.transactionId} has previousRev === resultRev (${mutation.previousRev})`\n );\n return this.document.arrive(mutation);\n }\n // Submit all mutations in the buffer to be committed\n commit() {\n return new Promise((resolve, reject) => {\n if (!this.buffer.hasChanges()) {\n resolve();\n return;\n }\n debug(\"Committing local changes\");\n const pendingMutations = this.buffer.purge();\n this.commits.push(new Commit(pendingMutations ? [pendingMutations] : [], { resolve, reject })), this.buffer = new SquashingBuffer(this.LOCAL), this.performCommits();\n });\n }\n // Starts the committer that will try to committ all staged commits to the database\n // by calling the commitHandler. Will keep running until all commits are successfully\n // committed.\n performCommits() {\n if (!this.commitHandler)\n throw new Error(\"No commitHandler configured for this BufferedDocument\");\n this.committerRunning || this._cycleCommitter();\n }\n // TODO: Error handling, right now retries after every error\n _cycleCommitter() {\n const commit = this.commits.shift();\n if (!commit) {\n this.committerRunning = !1;\n return;\n }\n this.committerRunning = !0;\n const squashed = commit.squash(this.LOCAL), docResponder = this.document.stage(squashed, !0), responder = {\n success: () => {\n debug(\"Commit succeeded\"), docResponder.success(), commit.resolve(), this._cycleCommitter();\n },\n failure: () => {\n debug(\"Commit failed\"), commit.tries += 1, this.LOCAL !== null && this.commits.unshift(commit), docResponder.failure(), commit.tries < 200 && setTimeout(() => this._cycleCommitter(), Math.min(commit.tries * 1e3, ONE_MINUTE));\n },\n cancel: (error) => {\n this.commits.forEach((comm) => comm.reject(error)), this.commits = [], this.reset(this.document.HEAD), this.buffer = new SquashingBuffer(this.LOCAL), this.committerRunning = !1;\n }\n };\n debug(\"Posting commit\"), this.commitHandler && this.commitHandler({\n mutation: squashed,\n success: responder.success,\n failure: responder.failure,\n cancel: responder.cancel\n });\n }\n handleDocRebase(edge, remoteMutations, localMutations) {\n this.rebase(remoteMutations, localMutations);\n }\n handleDocumentDeleted() {\n debug(\"Document deleted\"), this.LOCAL !== null && this.onDelete && this.onDelete(this.LOCAL), this.commits = [], this.mutations = [];\n }\n handleDocMutation(msg) {\n if (this.commits.length === 0 && !this.buffer.hasChanges()) {\n debug(\"Document mutated from remote with no local changes\"), this.LOCAL = this.document.EDGE, this.buffer = new SquashingBuffer(this.LOCAL), this.onMutation && this.onMutation(msg);\n return;\n }\n debug(\"Document mutated from remote with local changes\"), this.document.EDGE === null && this.handleDocumentDeleted(), this.rebase([msg.mutation], []);\n }\n rebase(remoteMutations, localMutations) {\n debug(\"Rebasing document\"), this.document.EDGE === null && this.handleDocumentDeleted();\n const oldLocal = this.LOCAL;\n this.LOCAL = this.commits.reduce((doc, commit) => commit.apply(doc), this.document.EDGE), this.LOCAL = this.buffer.rebase(this.LOCAL), oldLocal !== null && this.LOCAL !== null && (oldLocal._rev = this.LOCAL._rev), !isEqual(this.LOCAL, oldLocal) && this.onRebase && this.onRebase(\n this.LOCAL,\n remoteMutations.reduce(mutReducerFn, []),\n localMutations.reduce(mutReducerFn, [])\n );\n }\n handleDocConsistencyChanged(isConsistent) {\n if (!this.onConsistencyChanged)\n return;\n const hasLocalChanges = this.commits.length > 0 || this.buffer.hasChanges();\n isConsistent && !hasLocalChanges && this.onConsistencyChanged(!0), isConsistent || this.onConsistencyChanged(!1);\n }\n}\nexport {\n BufferedDocument,\n Mutation,\n arrayToJSONMatchPath,\n extract,\n extractWithPath\n};\n//# sourceMappingURL=index.mjs.map\n","import {extractWithPath, Mutation} from '@sanity/mutator'\nimport {\n isDocumentSchemaType,\n type ObjectSchemaType,\n type Path,\n pathToString,\n type SanityDocument,\n type SchemaType,\n} from 'sanity'\n\nexport interface DocumentMember {\n schemaType: SchemaType\n path: Path\n name: string\n value: unknown\n}\n\nexport function removeExcludedPaths(\n doc: SanityDocument | null,\n schemaType: ObjectSchemaType\n): SanityDocument | null {\n // If the supplied doc is null or the schemaType\n // isn't a document, return as is.\n if (!isDocumentSchemaType(schemaType) || !doc) {\n return doc\n }\n\n // The extractPaths function gets all the fields in the doc with\n // a value, along with their schemaTypes and paths. We'll end up\n // with an array of paths in string form which we want to exclude\n const pathsToExclude: string[] = extractPaths(doc, schemaType, [])\n // We filter for any fields which should be excluded from the document\n // duplicate action, based on the schemaType option being set.\n .filter(\n (field) =>\n field.schemaType?.options?.documentInternationalization?.exclude ===\n true\n )\n // then we return the stringified version of the path\n .map((field) => {\n return pathToString(field.path)\n })\n\n // Now we can use the Mutation class from @sanity/mutator to patch the document\n // to remove all the paths that are for one of the excluded fields. This is just\n // done locally, and the documents themselves are not patched in the Content Lake.\n const mut = new Mutation({\n mutations: [\n {\n patch: {\n id: doc._id,\n unset: pathsToExclude,\n },\n },\n ],\n })\n\n return mut.apply(doc) as SanityDocument\n}\n\nfunction extractPaths(\n doc: SanityDocument,\n schemaType: ObjectSchemaType,\n path: Path\n): DocumentMember[] {\n return schemaType.fields.reduce<DocumentMember[]>((acc, field) => {\n const fieldPath = [...path, field.name]\n const fieldSchema = field.type\n const {value} = extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n if (!value) {\n return acc\n }\n\n const thisFieldWithPath: DocumentMember = {\n path: fieldPath,\n name: field.name,\n schemaType: fieldSchema,\n value,\n }\n\n if (fieldSchema.jsonType === 'object') {\n const innerFields = extractPaths(doc, fieldSchema, fieldPath)\n\n return [...acc, thisFieldWithPath, ...innerFields]\n } else if (\n fieldSchema.jsonType === 'array' &&\n fieldSchema.of.length &&\n fieldSchema.of.some((item) => 'fields' in item)\n ) {\n const {value: arrayValue} =\n extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n\n let arrayPaths: DocumentMember[] = []\n if ((arrayValue as any)?.length) {\n for (const item of arrayValue as any[]) {\n const itemPath = [...fieldPath, {_key: item._key}]\n let itemSchema = fieldSchema.of.find((t) => t.name === item._type)\n if (!item._type) {\n itemSchema = fieldSchema.of[0]\n }\n if (item._key && itemSchema) {\n const innerFields = extractPaths(\n doc,\n itemSchema as ObjectSchemaType,\n itemPath\n )\n const arrayMember = {\n path: itemPath,\n name: item._key,\n schemaType: itemSchema,\n value: item,\n }\n arrayPaths = [...arrayPaths, arrayMember, ...innerFields]\n }\n }\n }\n\n return [...acc, thisFieldWithPath, ...arrayPaths]\n }\n\n return [...acc, thisFieldWithPath]\n }, [])\n}\n","import {AddIcon, CheckmarkIcon, SplitVerticalIcon} from '@sanity/icons'\nimport {\n Badge,\n Box,\n Button,\n Flex,\n Spinner,\n Text,\n Tooltip,\n useToast,\n} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useEffect, useState} from 'react'\nimport {type ObjectSchemaType, type SanityDocument, useClient} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport {useOpenInNewPane} from '../hooks/useOpenInNewPane'\nimport type {\n Language,\n Metadata,\n MetadataDocument,\n TranslationReference,\n} from '../types'\nimport {createReference} from '../utils/createReference'\nimport {removeExcludedPaths} from '../utils/excludePaths'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguageOptionProps = {\n language: Language\n schemaType: ObjectSchemaType\n documentId: string\n disabled: boolean\n current: boolean\n source: SanityDocument | null\n metadataId: string | null\n metadata?: Metadata | null\n sourceLanguageId?: string\n}\n\nexport default function LanguageOption(props: LanguageOptionProps) {\n const {\n language,\n schemaType,\n documentId,\n current,\n source,\n sourceLanguageId,\n metadata,\n metadataId,\n } = props\n /* When the user has clicked the Create button, the button should be disabled\n * to prevent double-clicks from firing onCreate twice. This creates duplicate\n * translation metadata entries, which editors will not be able to delete */\n const [userHasClicked, setUserHasClicked] = useState(false)\n const disabled =\n props.disabled ||\n userHasClicked ||\n current ||\n !source ||\n !sourceLanguageId ||\n !metadataId\n const translation: TranslationReference | undefined = metadata?.translations\n .length\n ? metadata.translations.find((t) => t._key === language.id)\n : undefined\n const {apiVersion, languageField, weakReferences, callback} =\n useDocumentInternationalizationContext()\n const client = useClient({apiVersion})\n const toast = useToast()\n\n const open = useOpenInNewPane(translation?.value?._ref, schemaType.name)\n const handleOpen = useCallback(() => open(), [open])\n\n /* Once a translation has been created, reset the userHasClicked state to false\n * so they can click on it to navigate to the translation. If a translation already\n * existed when this component was mounted, this will have no effect. */\n const hasTranslation = Boolean(translation)\n useEffect(() => {\n setUserHasClicked(false)\n }, [hasTranslation])\n\n const handleCreate = useCallback(async () => {\n if (!source) {\n throw new Error(`Cannot create translation without source document`)\n }\n\n if (!sourceLanguageId) {\n throw new Error(`Cannot create translation without source language ID`)\n }\n\n if (!metadataId) {\n throw new Error(`Cannot create translation without a metadata ID`)\n }\n /* Disable the create button while this request is pending */\n setUserHasClicked(true)\n\n const transaction = client.transaction()\n\n // 1. Duplicate source document\n const newTranslationDocumentId = uuid()\n let newTranslationDocument = {\n ...source,\n _id: `drafts.${newTranslationDocumentId}`,\n // 2. Update language of the translation\n [languageField]: language.id,\n }\n\n // Remove fields / paths we don't want to duplicate\n newTranslationDocument = removeExcludedPaths(\n newTranslationDocument,\n schemaType\n ) as SanityDocument\n\n transaction.create(newTranslationDocument)\n\n // 3. Maybe create the metadata document\n const sourceReference = createReference(\n sourceLanguageId,\n documentId,\n schemaType.name,\n !weakReferences\n )\n const newTranslationReference = createReference(\n language.id,\n newTranslationDocumentId,\n schemaType.name,\n !weakReferences\n )\n const newMetadataDocument: MetadataDocument = {\n _id: metadataId,\n _type: METADATA_SCHEMA_NAME,\n schemaTypes: [schemaType.name],\n translations: [sourceReference],\n }\n\n transaction.createIfNotExists(newMetadataDocument)\n\n // 4. Patch translation to metadata document\n // Note: If the document was only just created in the operation above\n // This patch operation will have no effect\n const metadataPatch = client\n .patch(metadataId)\n .setIfMissing({translations: [sourceReference]})\n .insert(`after`, `translations[-1]`, [newTranslationReference])\n\n transaction.patch(metadataPatch)\n\n // 5. Commit!\n transaction\n .commit()\n .then(() => {\n const metadataExisted = Boolean(metadata?._createdAt)\n\n callback?.({\n client,\n sourceLanguageId,\n sourceDocument: source,\n newDocument: newTranslationDocument,\n destinationLanguageId: language.id,\n metaDocumentId: metadataId,\n }).catch((err) => {\n toast.push({\n status: 'error',\n title: `Callback`,\n description: `Error while running callback - ${err}.`,\n })\n })\n\n return toast.push({\n status: 'success',\n title: `Created \"${language.title}\" translation`,\n description: metadataExisted\n ? `Updated Translations Metadata`\n : `Created Translations Metadata`,\n })\n })\n .catch((err) => {\n console.error(err)\n\n /* Re-enable the create button if there was an error */\n setUserHasClicked(false)\n\n return toast.push({\n status: 'error',\n title: `Error creating translation`,\n description: err.message,\n })\n })\n }, [\n client,\n documentId,\n language.id,\n language.title,\n languageField,\n metadata?._createdAt,\n metadataId,\n schemaType,\n source,\n sourceLanguageId,\n toast,\n weakReferences,\n callback,\n ])\n\n let message\n\n if (current) {\n message = `Current document`\n } else if (translation) {\n message = `Open ${language.title} translation`\n } else if (!translation) {\n message = `Create new ${language.title} translation`\n }\n\n return (\n <Tooltip\n animate\n content={\n <Box padding={2}>\n <Text muted size={1}>\n {message}\n </Text>\n </Box>\n }\n fallbackPlacements={['right', 'left']}\n placement=\"top\"\n portal\n >\n <Button\n onClick={translation ? handleOpen : handleCreate}\n mode={current && disabled ? `default` : `bleed`}\n disabled={disabled}\n >\n <Flex gap={3} align=\"center\">\n {disabled && !current ? (\n <Spinner />\n ) : (\n <Text size={2}>\n {/* eslint-disable-next-line no-nested-ternary */}\n {translation ? (\n <SplitVerticalIcon />\n ) : current ? (\n <CheckmarkIcon />\n ) : (\n <AddIcon />\n )}\n </Text>\n )}\n <Box flex={1}>\n <Text>{language.title}</Text>\n </Box>\n <Badge tone={disabled || current ? `default` : `primary`}>\n {language.id}\n </Badge>\n </Flex>\n </Button>\n </Tooltip>\n )\n}\n","import {EditIcon} from '@sanity/icons'\nimport {Badge, Box, Button, Flex, Text, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {type SanityDocument, useClient} from 'sanity'\n\nimport type {Language} from '../types'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguagePatchProps = {\n language: Language\n source: SanityDocument | null\n disabled: boolean\n}\n\nexport default function LanguagePatch(props: LanguagePatchProps) {\n const {language, source} = props\n const {apiVersion, languageField} = useDocumentInternationalizationContext()\n const disabled = props.disabled || !source\n const client = useClient({apiVersion})\n const toast = useToast()\n\n const handleClick = useCallback(() => {\n if (!source) {\n throw new Error(`Cannot patch missing document`)\n }\n\n const currentId = source._id\n\n client\n .patch(currentId)\n .set({[languageField]: language.id})\n .commit()\n .then(() => {\n toast.push({\n title: `Set document language to ${language.title}`,\n status: `success`,\n })\n })\n .catch((err) => {\n console.error(err)\n\n return toast.push({\n title: `Failed to set document language to ${language.title}`,\n status: `error`,\n })\n })\n }, [source, client, languageField, language, toast])\n\n return (\n <Button\n mode=\"bleed\"\n onClick={handleClick}\n disabled={disabled}\n justify=\"flex-start\"\n >\n <Flex gap={3} align=\"center\">\n <Text size={2}>\n <EditIcon />\n </Text>\n <Box flex={1}>\n <Text>{language.title}</Text>\n </Box>\n <Badge>{language.id}</Badge>\n </Flex>\n </Button>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport default styled(Box)`\n max-width: 280px;\n`\n","import {Card, Flex, Text} from '@sanity/ui'\nimport type {PropsWithChildren} from 'react'\n\nimport ConstrainedBox from './ConstrainedBox'\n\nexport default function Warning({children}: PropsWithChildren) {\n return (\n <Card tone=\"caution\" padding={3}>\n <Flex justify=\"center\">\n <ConstrainedBox>\n <Text size={1} align=\"center\">\n {children}\n </Text>\n </ConstrainedBox>\n </Flex>\n </Card>\n )\n}\n","import {TranslateIcon} from '@sanity/icons'\nimport {\n Box,\n Button,\n Card,\n Popover,\n Stack,\n Text,\n TextInput,\n useClickOutside,\n} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {type FormEvent, useCallback, useMemo, useState} from 'react'\nimport {useEditState} from 'sanity'\n\nimport {useTranslationMetadata} from '../hooks/useLanguageMetadata'\nimport type {DocumentInternationalizationMenuProps} from '../types'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\nimport LanguageManage from './LanguageManage'\nimport LanguageOption from './LanguageOption'\nimport LanguagePatch from './LanguagePatch'\nimport Warning from './Warning'\n\nexport function DocumentInternationalizationMenu(\n props: DocumentInternationalizationMenuProps\n) {\n const {documentId} = props\n const schemaType = props.schemaType\n const {languageField, supportedLanguages} =\n useDocumentInternationalizationContext()\n\n // Search filter query\n const [query, setQuery] = useState(``)\n const handleQuery = useCallback((event: FormEvent<HTMLInputElement>) => {\n if (event.currentTarget.value) {\n setQuery(event.currentTarget.value)\n } else {\n setQuery(``)\n }\n }, [])\n\n // UI Handlers\n const [open, setOpen] = useState(false)\n const handleClick = useCallback(() => setOpen((o) => !o), [])\n const [button, setButton] = useState<HTMLElement | null>(null)\n const [popover, setPopover] = useState<HTMLElement | null>(null)\n const handleClickOutside = useCallback(() => setOpen(false), [])\n useClickOutside(handleClickOutside, [button, popover])\n\n // Get metadata from content lake\n const {data, loading, error} = useTranslationMetadata(documentId)\n const metadata = Array.isArray(data) && data.length ? data[0] : null\n\n // Optimistically set a metadata ID for a newly created metadata document\n // Cannot rely on generated metadata._id from useTranslationMetadata\n // As the document store might not have returned it before creating another translation\n const metadataId = useMemo(() => {\n if (loading) {\n return null\n }\n\n // Once created, these two values should be the same anyway\n return metadata?._id ?? uuid()\n }, [loading, metadata?._id])\n\n // Duplicate a new language version from the most recent version of this document\n const {draft, published} = useEditState(documentId, schemaType.name)\n const source = draft || published\n\n // Check for data issues\n const documentIsInOneMetadataDocument = useMemo(() => {\n return Array.isArray(data) && data.length <= 1\n }, [data])\n const sourceLanguageId = source?.[languageField] as string | undefined\n const sourceLanguageIsValid = supportedLanguages.some(\n (l) => l.id === sourceLanguageId\n )\n const allLanguagesAreValid = useMemo(() => {\n const valid = supportedLanguages.every((l) => l.id && l.title)\n if (!valid) {\n console.warn(\n `Not all languages are valid. It should be an array of objects with an \"id\" and \"title\" property. Or a function that returns an array of objects with an \"id\" and \"title\" property.`,\n supportedLanguages\n )\n }\n\n return valid\n }, [supportedLanguages])\n\n const content = (\n <Box padding={1}>\n {error ? (\n <Card tone=\"critical\" padding={1}>\n <Text>There was an error returning translations metadata</Text>\n </Card>\n ) : (\n <Stack space={1}>\n <LanguageManage\n id={metadata?._id}\n documentId={documentId}\n metadataId={metadataId}\n schemaType={schemaType}\n sourceLanguageId={sourceLanguageId}\n />\n {supportedLanguages.length > 4 ? (\n <TextInput\n onChange={handleQuery}\n value={query}\n placeholder=\"Filter languages\"\n />\n ) : null}\n {supportedLanguages.length > 0 ? (\n <>\n {/* Once metadata is loaded, there may be issues */}\n {loading ? null : (\n <>\n {/* Not all languages are valid */}\n {data && documentIsInOneMetadataDocument ? null : (\n <Warning>\n {/* TODO: Surface these documents to the user */}\n This document has been found in more than one Translations\n Metadata documents\n </Warning>\n )}\n {/* Not all languages are valid */}\n {allLanguagesAreValid ? null : (\n <Warning>\n Not all language objects are valid. See the console.\n </Warning>\n )}\n {/* Current document has no language field */}\n {sourceLanguageId ? null : (\n <Warning>\n Choose a language to apply to{' '}\n <strong>this Document</strong>\n </Warning>\n )}\n {/* Current document has an invalid language field */}\n {sourceLanguageId && !sourceLanguageIsValid ? (\n <Warning>\n Select a supported language. Current language value:{' '}\n <code>{sourceLanguageId}</code>\n </Warning>\n ) : null}\n </>\n )}\n {supportedLanguages\n .filter((language) => {\n if (query) {\n return language.title\n .toLowerCase()\n .includes(query.toLowerCase())\n }\n return true\n })\n .map((language) =>\n !loading && sourceLanguageId && sourceLanguageIsValid ? (\n // Button to duplicate this document to a new translation\n // And either create or update the metadata document\n <LanguageOption\n key={language.id}\n language={language}\n schemaType={schemaType}\n documentId={documentId}\n disabled={loading || !allLanguagesAreValid}\n current={language.id === sourceLanguageId}\n metadata={metadata}\n metadataId={metadataId}\n source={source}\n sourceLanguageId={sourceLanguageId}\n />\n ) : (\n // Button to set a language field on *this* document\n <LanguagePatch\n key={language.id}\n source={source}\n language={language}\n // Only allow language patch change to:\n // - Keys not in metadata\n // - The key of this document in the metadata\n disabled={\n (loading ||\n !allLanguagesAreValid ||\n metadata?.translations\n .filter((t) => t?.value?._ref !== documentId)\n .some((t) => t._key === language.id)) ??\n false\n }\n />\n )\n )}\n </>\n ) : null}\n </Stack>\n )}\n </Box>\n )\n\n const issueWithTranslations =\n !loading && sourceLanguageId && !sourceLanguageIsValid\n\n if (!documentId) {\n return null\n }\n\n if (!schemaType || !schemaType.name) {\n return null\n }\n\n return (\n <Popover\n animate\n constrainSize\n content={content}\n open={open}\n portal\n ref={setPopover}\n overflow=\"auto\"\n tone=\"default\"\n >\n <Button\n text=\"Translations\"\n mode=\"bleed\"\n disabled={!source}\n tone={\n !source || loading || !issueWithTranslations ? undefined : `caution`\n }\n icon={TranslateIcon}\n onClick={handleClick}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n","import {TrashIcon} from '@sanity/icons'\nimport {type ButtonTone, useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type KeyedObject,\n type Reference,\n type TypedObject,\n useClient,\n} from 'sanity'\n\nimport {API_VERSION, TRANSLATIONS_ARRAY_NAME} from '../constants'\n\ntype TranslationReference = TypedObject &\n KeyedObject & {\n value: Reference\n }\n\nexport const DeleteMetadataAction: DocumentActionComponent = (props) => {\n const {id: documentId, published, draft, onComplete} = props\n const doc = draft || published\n\n const [isDialogOpen, setDialogOpen] = useState(false)\n const onClose = useCallback(() => setDialogOpen(false), [])\n const translations: TranslationReference[] = useMemo(\n () =>\n doc && Array.isArray(doc[TRANSLATIONS_ARRAY_NAME])\n ? (doc[TRANSLATIONS_ARRAY_NAME] as TranslationReference[])\n : [],\n [doc]\n )\n\n const toast = useToast()\n const client = useClient({apiVersion: API_VERSION})\n\n // Remove translation reference and delete document in one transaction\n const onProceed = useCallback(() => {\n const tx = client.transaction()\n\n tx.patch(documentId, (patch) => patch.unset([TRANSLATIONS_ARRAY_NAME]))\n\n if (translations.length > 0) {\n translations.forEach((translation) => {\n tx.delete(translation.value._ref)\n tx.delete(`drafts.${translation.value._ref}`)\n })\n }\n\n tx.delete(documentId)\n // Shouldn't exist as this document type is in liveEdit\n tx.delete(`drafts.${documentId}`)\n\n tx.commit()\n .then(() => {\n onClose()\n\n toast.push({\n status: 'success',\n title: 'Deleted document and translations',\n })\n })\n .catch((err) => {\n toast.push({\n status: 'error',\n title: 'Failed to delete document and translations',\n description: err.message,\n })\n })\n }, [client, translations, documentId, onClose, toast])\n\n return {\n label: `Delete all translations`,\n disabled: !doc || !translations.length,\n icon: TrashIcon,\n tone: 'critical' as ButtonTone,\n onHandle: () => {\n setDialogOpen(true)\n },\n dialog: isDialogOpen && {\n type: 'confirm',\n onCancel: onComplete,\n onConfirm: () => {\n onProceed()\n onComplete()\n },\n tone: 'critical' as ButtonTone,\n message:\n translations.length === 1\n ? `Delete 1 translation and this document`\n : `Delete all ${translations.length} translations and this document`,\n },\n }\n}\n","import type {DocumentBadgeDescription, DocumentBadgeProps} from 'sanity'\n\nimport {useDocumentInternationalizationContext} from '../components/DocumentInternationalizationContext'\n\nexport function LanguageBadge(\n props: DocumentBadgeProps\n): DocumentBadgeDescription | null {\n const source = props?.draft || props?.published\n const {languageField, supportedLanguages} =\n useDocumentInternationalizationContext()\n const languageId = source?.[languageField]\n\n if (!languageId) {\n return null\n }\n\n const language = Array.isArray(supportedLanguages)\n ? supportedLanguages.find((l) => l.id === languageId)\n : null\n\n // Currently we only show the language id if the supportedLanguages are async\n return {\n label: language?.id ?? String(languageId),\n title: language?.title ?? undefined,\n color: `primary`,\n }\n}\n","import {Card, Spinner} from '@sanity/ui'\nimport {useEffect, useMemo} from 'react'\nimport {Preview, useEditState, useSchema, useValidationStatus} from 'sanity'\n\ntype DocumentCheckProps = {\n id: string\n onCheckComplete: (id: string) => void\n addInvalidId: (id: string) => void\n removeInvalidId: (id: string) => void\n addDraftId: (id: string) => void\n removeDraftId: (id: string) => void\n}\n\n// Check if the document has a draft\n// Check if that draft is valid\n// Report back to parent that it can be added to bulk publish\nexport default function DocumentCheck(props: DocumentCheckProps) {\n const {\n id,\n onCheckComplete,\n addInvalidId,\n removeInvalidId,\n addDraftId,\n removeDraftId,\n } = props\n const editState = useEditState(id, ``)\n const {isValidating, validation} = useValidationStatus(id, ``)\n const schema = useSchema()\n\n const validationHasErrors = useMemo(() => {\n return (\n !isValidating &&\n validation.length > 0 &&\n validation.some((item) => item.level === 'error')\n )\n }, [isValidating, validation])\n\n useEffect(() => {\n if (validationHasErrors) {\n addInvalidId(id)\n } else {\n removeInvalidId(id)\n }\n\n if (editState.draft) {\n addDraftId(id)\n } else {\n removeDraftId(id)\n }\n\n if (!isValidating) {\n onCheckComplete(id)\n }\n }, [\n addDraftId,\n addInvalidId,\n editState.draft,\n id,\n isValidating,\n onCheckComplete,\n removeDraftId,\n removeInvalidId,\n validationHasErrors,\n ])\n\n // We only care about drafts\n if (!editState.draft) {\n return null\n }\n\n const schemaType = schema.get(editState.draft._type)\n\n return (\n <Card\n border\n padding={2}\n tone={validationHasErrors ? `critical` : `positive`}\n >\n {editState.draft && schemaType ? (\n <Preview\n layout=\"default\"\n value={editState.draft}\n schemaType={schemaType}\n />\n ) : (\n <Spinner />\n )}\n </Card>\n )\n}\n","import {Box, type ButtonTone, Text, Tooltip} from '@sanity/ui'\nimport type {ComponentType, PropsWithChildren} from 'react'\nimport {TextWithTone} from 'sanity'\n\ntype InfoIconProps = PropsWithChildren & {\n icon: ComponentType\n tone: ButtonTone\n text?: string\n}\n\nexport default function InfoIcon(props: InfoIconProps) {\n const {text, icon, tone, children} = props\n const Icon = icon\n\n return (\n <Tooltip\n animate\n portal\n content={\n children ? (\n <>{children}</>\n ) : (\n <Box padding={2}>\n <Text size={1}>{text}</Text>\n </Box>\n )\n }\n >\n <TextWithTone tone={tone} size={1}>\n <Icon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","import {InfoOutlineIcon} from '@sanity/icons'\nimport {Box, Stack, Text} from '@sanity/ui'\n\nimport InfoIcon from './InfoIcon'\n\nexport default function Info() {\n return (\n <InfoIcon icon={InfoOutlineIcon} tone=\"primary\">\n <Stack padding={3} space={4} style={{maxWidth: 250}}>\n <Box>\n <Text size={1}>Bulk publishing uses the Scheduling API.</Text>\n </Box>\n <Box>\n <Text size={1}>\n Customized Document Actions in the Studio will not execute. Webhooks\n will execute.\n </Text>\n </Box>\n <Box>\n <Text size={1}>\n Validation is checked before rendering the button below, but the\n Scheduling API will not check for – or enforce – validation.\n </Text>\n </Box>\n </Stack>\n </InfoIcon>\n )\n}\n","import {Button, Card, Dialog, Inline, Stack, Text, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {TextWithTone, useClient, useWorkspace} from 'sanity'\n\nimport {API_VERSION} from '../../constants'\nimport type {TranslationReference} from '../../types'\nimport DocumentCheck from './DocumentCheck'\nimport Info from './Info'\n\nexport type BulkPublishProps = {\n translations: TranslationReference[]\n}\n\n// A root-level component with UI for hitting the Publishing API\nexport default function BulkPublish(props: BulkPublishProps) {\n const {translations} = props\n const client = useClient({apiVersion: API_VERSION})\n const {projectId, dataset} = useWorkspace()\n const toast = useToast()\n const [invalidIds, setInvalidIds] = useState<string[] | null>(null)\n const [checkedIds, setCheckedIds] = useState<string[]>([])\n\n const onCheckComplete = useCallback((id: string) => {\n setCheckedIds((ids) => Array.from(new Set([...ids, id])))\n }, [])\n\n // Handle dialog\n const [open, setOpen] = useState(false)\n const onOpen = useCallback(() => setOpen(true), [])\n const onClose = useCallback(() => setOpen(false), [])\n\n const addInvalidId = useCallback((id: string) => {\n setInvalidIds((ids) => (ids ? Array.from(new Set([...ids, id])) : [id]))\n }, [])\n\n const removeInvalidId = useCallback((id: string) => {\n setInvalidIds((ids) => (ids ? ids.filter((i) => i !== id) : []))\n }, [])\n\n const [draftIds, setDraftIds] = useState<string[]>([])\n\n const addDraftId = useCallback((id: string) => {\n setDraftIds((ids) => Array.from(new Set([...ids, id])))\n }, [])\n\n const removeDraftId = useCallback((id: string) => {\n setDraftIds((ids) => ids.filter((i) => i !== id))\n }, [])\n\n const handleBulkPublish = useCallback(() => {\n const body = translations.map((translation) => ({\n documentId: translation.value._ref,\n }))\n client\n .request({\n uri: `/publish/${projectId}/${dataset}`,\n method: 'POST',\n body,\n })\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Success',\n description: 'Bulk publish complete',\n })\n })\n .catch((err) => {\n console.error(err)\n toast.push({\n status: 'error',\n title: 'Error',\n description: 'Bulk publish failed',\n })\n })\n }, [translations, client, projectId, dataset, toast])\n\n const disabled =\n // Not all documents have been checked\n checkedIds.length !== translations.length ||\n // Some document(s) are invalid\n Boolean(invalidIds && invalidIds?.length > 0) ||\n // No documents are drafts\n !draftIds.length\n\n return translations?.length > 0 ? (\n <Card padding={4} border radius={2}>\n <Stack space={3}>\n <Inline space={3}>\n <Text weight=\"bold\" size={1}>\n Bulk publishing\n </Text>\n <Info />\n </Inline>\n\n <Stack>\n <Button\n onClick={onOpen}\n text=\"Prepare bulk publishing\"\n mode=\"ghost\"\n />\n </Stack>\n\n {open && (\n <Dialog\n animate\n header=\"Bulk publishing\"\n id=\"bulk-publish-dialog\"\n onClose={onClose}\n zOffset={1000}\n width={3}\n >\n <Stack space={4} padding={4}>\n {draftIds.length > 0 ? (\n <Stack space={2}>\n <Text size={1}>\n There{' '}\n {draftIds.length === 1\n ? `is 1 draft document`\n : `are ${draftIds.length} draft documents`}\n .\n </Text>\n {invalidIds && invalidIds.length > 0 ? (\n <TextWithTone tone=\"critical\" size={1}>\n {invalidIds && invalidIds.length === 1\n ? `1 draft document has`\n : `${\n invalidIds && invalidIds.length\n } draft documents have`}{' '}\n validation issues that must addressed first\n </TextWithTone>\n ) : (\n <TextWithTone tone=\"positive\" size={1}>\n All drafts are valid and can be bulk published\n </TextWithTone>\n )}\n </Stack>\n ) : null}\n\n <Stack space={1}>\n {translations\n .filter((translation) => translation?.value?._ref)\n .map((translation) => (\n <DocumentCheck\n key={translation._key}\n id={translation.value._ref}\n onCheckComplete={onCheckComplete}\n addInvalidId={addInvalidId}\n removeInvalidId={removeInvalidId}\n addDraftId={addDraftId}\n removeDraftId={removeDraftId}\n />\n ))}\n </Stack>\n {draftIds.length > 0 ? (\n <Button\n mode=\"ghost\"\n tone={\n invalidIds && invalidIds?.length > 0\n ? 'caution'\n : 'positive'\n }\n text={\n draftIds.length === 1\n ? `Publish draft document`\n : `Bulk publish ${draftIds.length} draft documents`\n }\n onClick={handleBulkPublish}\n disabled={disabled}\n />\n ) : (\n <Text muted size={1}>\n No draft documents to publish\n </Text>\n )}\n </Stack>\n </Dialog>\n )}\n </Stack>\n </Card>\n ) : null\n}\n","import {useEffect} from 'react'\nimport {PatchEvent, unset, useClient, useEditState} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {API_VERSION} from '../../constants'\nimport type {TranslationReference} from '../../types'\n\ntype ReferencePatcherProps = {\n translation: TranslationReference\n documentType: string\n metadataId: string\n}\n\n// For every reference, check if it is published, and if so, strengthen the reference\nexport default function ReferencePatcher(props: ReferencePatcherProps) {\n const {translation, documentType, metadataId} = props\n const editState = useEditState(translation.value._ref, documentType)\n const client = useClient({apiVersion: API_VERSION})\n const {onChange} = useDocumentPane()\n\n useEffect(() => {\n if (\n // We have a reference\n translation.value._ref &&\n // It's still weak and not-yet-strengthened\n translation.value._weak &&\n // We also want to keep this check because maybe the user *configured* weak refs\n translation.value._strengthenOnPublish &&\n // The referenced document has just been published\n !editState.draft &&\n editState.published &&\n editState.ready\n ) {\n const referencePathBase = [\n 'translations',\n {_key: translation._key},\n 'value',\n ]\n\n onChange(\n new PatchEvent([\n unset([...referencePathBase, '_weak']),\n unset([...referencePathBase, '_strengthenOnPublish']),\n ])\n )\n }\n }, [translation, editState, metadataId, client, onChange])\n\n return null\n}\n","import type {TranslationReference} from '../../types'\nimport ReferencePatcher from './ReferencePatcher'\n\ntype OptimisticallyStrengthenProps = {\n translations: TranslationReference[]\n metadataId: string\n}\n\n// There's no good reason to leave published references as weak\n// So this component will run on every render and strengthen them\nexport default function OptimisticallyStrengthen(\n props: OptimisticallyStrengthenProps\n) {\n const {translations = [], metadataId} = props\n\n if (!translations.length) {\n return null\n }\n\n return (\n <>\n {translations.map((translation) =>\n translation.value._strengthenOnPublish?.type ? (\n <ReferencePatcher\n key={translation._key}\n translation={translation}\n documentType={translation.value._strengthenOnPublish.type}\n metadataId={metadataId}\n />\n ) : null\n )}\n </>\n )\n}\n","import {TranslateIcon} from '@sanity/icons'\nimport {\n defineField,\n defineType,\n type DocumentDefinition,\n type FieldDefinition,\n} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../../constants'\n\nexport default (\n schemaTypes: string[],\n metadataFields: FieldDefinition[]\n): DocumentDefinition =>\n defineType({\n type: 'document',\n name: METADATA_SCHEMA_NAME,\n title: 'Translation metadata',\n icon: TranslateIcon,\n liveEdit: true,\n fields: [\n defineField({\n name: TRANSLATIONS_ARRAY_NAME,\n type: 'internationalizedArrayReference',\n }),\n defineField({\n name: 'schemaTypes',\n description:\n 'Optional: Used to filter the reference fields above so all translations share the same types.',\n type: 'array',\n of: [{type: 'string'}],\n options: {list: schemaTypes},\n readOnly: ({value}) => Boolean(value),\n }),\n ...metadataFields,\n ],\n preview: {\n select: {\n translations: TRANSLATIONS_ARRAY_NAME,\n documentSchemaTypes: 'schemaTypes',\n },\n prepare(selection) {\n const {translations = [], documentSchemaTypes = []} = selection\n const title =\n translations.length === 1\n ? `1 Translation`\n : `${translations.length} Translations`\n const languageKeys = translations.length\n ? translations\n .map((t: {_key: string}) => t._key.toUpperCase())\n .join(', ')\n : ``\n const subtitle = [\n languageKeys ? `(${languageKeys})` : null,\n documentSchemaTypes?.length\n ? documentSchemaTypes.map((s: string) => s).join(`, `)\n : ``,\n ]\n .filter(Boolean)\n .join(` `)\n\n return {\n title,\n subtitle,\n }\n },\n },\n })\n","import {Stack} from '@sanity/ui'\nimport {defineField, definePlugin, isSanityDocument} from 'sanity'\nimport {internationalizedArray} from 'sanity-plugin-internationalized-array'\n\nimport {DeleteMetadataAction} from './actions/DeleteMetadataAction'\nimport {LanguageBadge} from './badges'\nimport BulkPublish from './components/BulkPublish'\nimport {DocumentInternationalizationProvider} from './components/DocumentInternationalizationContext'\nimport {DocumentInternationalizationMenu} from './components/DocumentInternationalizationMenu'\nimport OptimisticallyStrengthen from './components/OptimisticallyStrengthen'\nimport {API_VERSION, DEFAULT_CONFIG, METADATA_SCHEMA_NAME} from './constants'\nimport {documentInternationalizationUsEnglishLocaleBundle} from './i18n'\nimport metadata from './schema/translation/metadata'\nimport type {PluginConfig, TranslationReference} from './types'\n\nexport const documentInternationalization = definePlugin<PluginConfig>(\n (config) => {\n const pluginConfig = {...DEFAULT_CONFIG, ...config}\n const {\n supportedLanguages,\n schemaTypes,\n languageField,\n bulkPublish,\n metadataFields,\n } = pluginConfig\n\n if (schemaTypes.length === 0) {\n throw new Error(\n 'You must specify at least one schema type on which to enable document internationalization. Update the `schemaTypes` option in the documentInternationalization() configuration.'\n )\n }\n\n return {\n name: '@sanity/document-internationalization',\n\n studio: {\n components: {\n layout: (props) =>\n DocumentInternationalizationProvider({...props, pluginConfig}),\n },\n },\n\n i18n: {\n bundles: [documentInternationalizationUsEnglishLocaleBundle],\n },\n\n // Adds:\n // - A bulk-publishing UI component to the form\n // - Will only work for projects on a compatible plan\n form: {\n components: {\n input: (props) => {\n if (\n props.id === 'root' &&\n props.schemaType.name === METADATA_SCHEMA_NAME &&\n isSanityDocument(props?.value)\n ) {\n const metadataId = props?.value?._id\n const translations =\n (props?.value?.translations as TranslationReference[]) ?? []\n const weakAndTypedTranslations = translations.filter(\n ({value}) => value?._weak && value._strengthenOnPublish\n )\n\n return (\n <Stack space={5}>\n {bulkPublish ? (\n <BulkPublish translations={translations} />\n ) : null}\n {weakAndTypedTranslations.length > 0 ? (\n <OptimisticallyStrengthen\n metadataId={metadataId}\n translations={weakAndTypedTranslations}\n />\n ) : null}\n {props.renderDefault(props)}\n </Stack>\n )\n }\n\n return props.renderDefault(props)\n },\n },\n },\n\n // Adds:\n // - The `Translations` dropdown to the editing form\n // - `Badges` to documents with a language value\n // - The `DeleteMetadataAction` action to the metadata document type\n document: {\n unstable_languageFilter: (prev, ctx) => {\n const {schemaType, documentId} = ctx\n\n return schemaTypes.includes(schemaType) && documentId\n ? [\n ...prev,\n (props) =>\n DocumentInternationalizationMenu({...props, documentId}),\n ]\n : prev\n },\n badges: (prev, {schemaType}) => {\n if (!schemaTypes.includes(schemaType)) {\n return prev\n }\n\n return [(props) => LanguageBadge(props), ...prev]\n },\n actions: (prev, {schemaType}) => {\n if (schemaType === METADATA_SCHEMA_NAME) {\n return [...prev, DeleteMetadataAction]\n }\n\n return prev\n },\n },\n\n // Adds:\n // - The `Translations metadata` document type to the schema\n schema: {\n // Create the metadata document type\n types: [metadata(schemaTypes, metadataFields)],\n\n // For every schema type this plugin is enabled on\n // Create an initial value template to set the language\n templates: (prev, {schema}) => {\n // Templates are not setup for async languages\n if (!Array.isArray(supportedLanguages)) {\n return prev\n }\n\n const parameterizedTemplates = schemaTypes.map((schemaType) => ({\n id: `${schemaType}-parameterized`,\n title: `${\n schema?.get(schemaType)?.title ?? schemaType\n }: with Language`,\n schemaType,\n parameters: [\n {name: `languageId`, title: `Language ID`, type: `string`},\n ],\n value: ({languageId}: {languageId: string}) => ({\n [languageField]: languageId,\n }),\n }))\n\n const staticTemplates = schemaTypes.flatMap((schemaType) => {\n return supportedLanguages.map((language) => ({\n id: `${schemaType}-${language.id}`,\n title: `${language.title} ${\n schema?.get(schemaType)?.title ?? schemaType\n }`,\n schemaType,\n value: {\n [languageField]: language.id,\n },\n }))\n })\n\n return [...prev, ...parameterizedTemplates, ...staticTemplates]\n },\n },\n\n // Uses:\n // - `sanity-plugin-internationalized-array` to maintain the translations array\n plugins: [\n // Translation metadata stores its references using this plugin\n // It cuts down on attribute usage and gives UI conveniences to add new translations\n internationalizedArray({\n languages: supportedLanguages,\n fieldTypes: [\n defineField(\n {\n name: 'reference',\n type: 'reference',\n to: schemaTypes.map((type) => ({type})),\n weak: pluginConfig.weakReferences,\n // Reference filters don't actually enforce validation!\n validation: (Rule) =>\n // @ts-expect-error - fix typings\n Rule.custom(async (item: TranslationReference, context) => {\n if (!item?.value?._ref || !item?._key) {\n return true\n }\n\n const client = context.getClient({apiVersion: API_VERSION})\n const valueLanguage = await client.fetch(\n `*[_id in [$ref, $draftRef]][0].${languageField}`,\n {\n ref: item.value._ref,\n draftRef: `drafts.${item.value._ref}`,\n }\n )\n\n if (valueLanguage && valueLanguage === item._key) {\n return true\n }\n\n return `Referenced document does not have the correct language value`\n }),\n options: {\n // @ts-expect-error - Update type once it knows the values of this filter\n filter: ({parent, document}) => {\n if (!parent) return null\n\n // I'm not sure in what instance there's an array of parents\n // But the Type suggests it's possible\n const parentArray = Array.isArray(parent)\n ? parent\n : [parent]\n const language = parentArray.find((p) => p._key)\n\n if (!language?._key) return null\n\n if (document.schemaTypes) {\n return {\n filter: `_type in $schemaTypes && ${languageField} == $language`,\n params: {\n schemaTypes: document.schemaTypes,\n language: language._key,\n },\n }\n }\n\n return {\n filter: `${languageField} == $language`,\n params: {language: language._key},\n }\n },\n },\n },\n {strict: false}\n ),\n ],\n }),\n ],\n }\n }\n)\n"],"names":["Stack","query","config","entry","__spreadProps","__spreadValues","d","b","isFunction","Subscription","Subscriber","ConsumerObserver","SafeSubscriber","OperatorSubscriber","err","dupeId","listCacheClear","eq","require$$0","assocIndexOf","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","require$$1","require$$2","require$$3","require$$4","ListCache","stackClear","stackDelete","stackGet","stackHas","freeGlobal","global","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","objectToString","baseGetTag","isObject","coreJsData","isMasked","funcProto","funcToString","toSource","baseIsNative","getValue","getNative","Map","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","Hash","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackSet","require$$5","setCacheAdd","setCacheHas","arrayPush","isArray","isObjectLike","baseIsArguments","isArguments","stubFalse","Buffer","isBuffer","DataView","Promise","Set","WeakMap","require$$6","parse","match","ms","debug","self","useColors","srcModule","isFlattenable","baseFlatten","diff","isSymbol","baseExtremum","baseGt","identity","baseLt","node","flatten","compact","applyPatches","parsePatch$1","min","max","unset","process","document","metadata","_a"],"mappings":"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","x_google_ignoreList":[5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/DeleteTranslationDialog/DocumentPreview.tsx","../src/constants.ts","../src/components/DeleteTranslationDialog/separateReferences.ts","../src/components/DeleteTranslationDialog/index.tsx","../src/components/DeleteTranslationFooter.tsx","../node_modules/suspend-react/index.js","../src/components/DocumentInternationalizationContext.tsx","../src/actions/DeleteTranslationAction.tsx","../node_modules/tslib/tslib.es6.mjs","../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/rxjs/dist/esm5/internal/util/lift.js","../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../src/hooks/useLanguageMetadata.tsx","../src/i18n/index.ts","../src/actions/DuplicateWithTranslationsAction.tsx","../src/hooks/useOpenInNewPane.tsx","../src/utils/createReference.ts","../src/components/LanguageManage.tsx","../src/utils/excludePaths.ts","../src/components/LanguageOption.tsx","../src/components/LanguagePatch.tsx","../src/components/ConstrainedBox.tsx","../src/components/Warning.tsx","../src/components/DocumentInternationalizationMenu.tsx","../src/actions/DeleteMetadataAction.tsx","../src/badges/index.tsx","../src/components/BulkPublish/DocumentCheck.tsx","../src/components/BulkPublish/InfoIcon.tsx","../src/components/BulkPublish/Info.tsx","../src/components/BulkPublish/index.tsx","../src/components/OptimisticallyStrengthen/ReferencePatcher.tsx","../src/components/OptimisticallyStrengthen/index.tsx","../src/schema/translation/metadata.ts","../src/plugin.tsx"],"sourcesContent":["import {Preview, useSchema} from 'sanity'\nimport {Feedback} from 'sanity-plugin-utils'\n\ntype DocumentPreviewProps = {\n value: unknown\n type: string\n}\n\n// Wrapper of Preview just so that the schema type is satisfied by schema.get()\nexport default function DocumentPreview(props: DocumentPreviewProps) {\n const schema = useSchema()\n\n const schemaType = schema.get(props.type)\n if (!schemaType) {\n return <Feedback tone=\"critical\" title=\"Schema type not found\" />\n }\n\n return <Preview value={props.value} schemaType={schemaType} />\n}\n","import type {PluginConfigContext} from './types'\n\nexport const METADATA_SCHEMA_NAME = `translation.metadata`\nexport const TRANSLATIONS_ARRAY_NAME = `translations`\nexport const API_VERSION = `2025-02-19`\nexport const DEFAULT_CONFIG: PluginConfigContext = {\n supportedLanguages: [],\n schemaTypes: [],\n languageField: `language`,\n weakReferences: false,\n bulkPublish: false,\n metadataFields: [],\n apiVersion: API_VERSION,\n allowCreateMetaDoc: false,\n callback: null,\n}\n","import type {SanityDocument} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../../constants'\n\nexport function separateReferences(data: SanityDocument[] | null = []): {\n translations: SanityDocument[]\n otherReferences: SanityDocument[]\n} {\n const translations: SanityDocument[] = []\n const otherReferences: SanityDocument[] = []\n\n if (data && data.length > 0) {\n data.forEach((doc) => {\n if (doc._type === METADATA_SCHEMA_NAME) {\n translations.push(doc)\n } else {\n otherReferences.push(doc)\n }\n })\n }\n\n return {translations, otherReferences}\n}\n","import {Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useEffect, useMemo} from 'react'\nimport type {SanityDocument} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport DocumentPreview from './DocumentPreview'\nimport {separateReferences} from './separateReferences'\n\ntype DeleteTranslationDialogProps = {\n doc: SanityDocument\n documentId: string\n setTranslations: (translations: SanityDocument[]) => void\n}\n\nexport default function DeleteTranslationDialog(\n props: DeleteTranslationDialogProps\n) {\n const {doc, documentId, setTranslations} = props\n\n // Get all references and check if any of them are translations metadata\n const {data, loading} = useListeningQuery<SanityDocument[]>(\n `*[references($id)]{_id, _type}`,\n {params: {id: documentId}, initialValue: []}\n )\n const {translations, otherReferences} = useMemo(\n () => separateReferences(data),\n [data]\n )\n\n useEffect(() => {\n setTranslations(translations)\n }, [setTranslations, translations])\n\n if (loading) {\n return (\n <Flex padding={4} align=\"center\" justify=\"center\">\n <Spinner />\n </Flex>\n )\n }\n\n return (\n <Stack space={4}>\n {translations && translations.length > 0 ? (\n <Text>\n This document is a language-specific version which other translations\n depend on.\n </Text>\n ) : (\n <Text>This document does not have connected translations.</Text>\n )}\n <Card border padding={3}>\n <Stack space={4}>\n <Text size={1} weight=\"semibold\">\n {translations && translations.length > 0 ? (\n <>Before this document can be deleted</>\n ) : (\n <>This document can now be deleted</>\n )}\n </Text>\n <DocumentPreview value={doc} type={doc._type} />\n {translations && translations.length > 0 ? (\n <>\n <Card borderTop />\n <Text size={1} weight=\"semibold\">\n The reference in{' '}\n {translations.length === 1\n ? `this translations document`\n : `these translations documents`}{' '}\n must be removed\n </Text>\n {translations.map((translation) => (\n <DocumentPreview\n key={translation._id}\n value={translation}\n type={translation._type}\n />\n ))}\n </>\n ) : null}\n {otherReferences && otherReferences.length > 0 ? (\n <>\n <Card borderTop />\n <Text size={1} weight=\"semibold\">\n {otherReferences.length === 1\n ? `There is an additional reference`\n : `There are additional references`}{' '}\n to this document\n </Text>\n {otherReferences.map((reference) => (\n <DocumentPreview\n key={reference._id}\n value={reference}\n type={reference._type}\n />\n ))}\n </>\n ) : null}\n </Stack>\n </Card>\n {otherReferences.length === 0 ? (\n <Text>This document has no other references.</Text>\n ) : (\n <Text>\n You may not be able to delete this document because other documents\n refer to it.\n </Text>\n )}\n </Stack>\n )\n}\n","import {Button, Grid} from '@sanity/ui'\n\ntype DeleteTranslationFooterProps = {\n translations: unknown[]\n onClose: () => void\n onProceed: () => void\n}\n\nexport default function DeleteTranslationFooter(\n props: DeleteTranslationFooterProps\n) {\n const {translations, onClose, onProceed} = props\n\n return (\n <Grid columns={2} gap={2}>\n <Button text=\"Cancel\" onClick={onClose} mode=\"ghost\" />\n <Button\n text={\n translations && translations.length > 0\n ? `Unset translation reference`\n : `Delete document`\n }\n onClick={onProceed}\n tone=\"critical\"\n />\n </Grid>\n )\n}\n","const isPromise = promise => typeof promise === 'object' && typeof promise.then === 'function';\n\nconst globalCache = [];\n\nfunction shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {\n if (arrA === arrB) return true;\n if (!arrA || !arrB) return false;\n const len = arrA.length;\n if (arrB.length !== len) return false;\n\n for (let i = 0; i < len; i++) if (!equal(arrA[i], arrB[i])) return false;\n\n return true;\n}\n\nfunction query(fn, keys = null, preload = false, config = {}) {\n // If no keys were given, the function is the key\n if (keys === null) keys = [fn];\n\n for (const entry of globalCache) {\n // Find a match\n if (shallowEqualArrays(keys, entry.keys, entry.equal)) {\n // If we're pre-loading and the element is present, just return\n if (preload) return undefined; // If an error occurred, throw\n\n if (Object.prototype.hasOwnProperty.call(entry, 'error')) throw entry.error; // If a response was successful, return\n\n if (Object.prototype.hasOwnProperty.call(entry, 'response')) {\n if (config.lifespan && config.lifespan > 0) {\n if (entry.timeout) clearTimeout(entry.timeout);\n entry.timeout = setTimeout(entry.remove, config.lifespan);\n }\n\n return entry.response;\n } // If the promise is still unresolved, throw\n\n\n if (!preload) throw entry.promise;\n }\n } // The request is new or has changed.\n\n\n const entry = {\n keys,\n equal: config.equal,\n remove: () => {\n const index = globalCache.indexOf(entry);\n if (index !== -1) globalCache.splice(index, 1);\n },\n promise: // Execute the promise\n (isPromise(fn) ? fn : fn(...keys) // When it resolves, store its value\n ).then(response => {\n entry.response = response; // Remove the entry in time if a lifespan was given\n\n if (config.lifespan && config.lifespan > 0) {\n entry.timeout = setTimeout(entry.remove, config.lifespan);\n }\n }) // Store caught errors, they will be thrown in the render-phase to bubble into an error-bound\n .catch(error => entry.error = error)\n }; // Register the entry\n\n globalCache.push(entry); // And throw the promise, this yields control back to React\n\n if (!preload) throw entry.promise;\n return undefined;\n}\n\nconst suspend = (fn, keys, config) => query(fn, keys, false, config);\n\nconst preload = (fn, keys, config) => void query(fn, keys, true, config);\n\nconst peek = keys => {\n var _globalCache$find;\n\n return (_globalCache$find = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal))) == null ? void 0 : _globalCache$find.response;\n};\n\nconst clear = keys => {\n if (keys === undefined || keys.length === 0) globalCache.splice(0, globalCache.length);else {\n const entry = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal));\n if (entry) entry.remove();\n }\n};\n\nexport { clear, peek, preload, suspend };\n","import {useContext} from 'react'\nimport {createContext} from 'react'\nimport {type LayoutProps, useClient, useWorkspace} from 'sanity'\nimport {suspend} from 'suspend-react'\n\nimport {DEFAULT_CONFIG} from '../constants'\nimport type {PluginConfig, PluginConfigContext} from '../types'\n\nconst DocumentInternationalizationContext =\n createContext<PluginConfigContext>(DEFAULT_CONFIG)\n\nexport function useDocumentInternationalizationContext() {\n return useContext(DocumentInternationalizationContext)\n}\n\ntype DocumentInternationalizationProviderProps = LayoutProps & {\n pluginConfig: Required<PluginConfig>\n}\n\n/**\n * This Provider wraps the Studio and provides the DocumentInternationalization context to document actions and components.\n */\nexport function DocumentInternationalizationProvider(\n props: DocumentInternationalizationProviderProps\n) {\n const {pluginConfig} = props\n\n const client = useClient({apiVersion: pluginConfig.apiVersion})\n const workspace = useWorkspace()\n const supportedLanguages = Array.isArray(pluginConfig.supportedLanguages)\n ? pluginConfig.supportedLanguages\n : // eslint-disable-next-line require-await\n suspend(async () => {\n if (typeof pluginConfig.supportedLanguages === 'function') {\n return pluginConfig.supportedLanguages(client)\n }\n return pluginConfig.supportedLanguages\n }, [workspace])\n\n return (\n <DocumentInternationalizationContext.Provider\n value={{...pluginConfig, supportedLanguages}}\n >\n {props.renderDefault(props)}\n </DocumentInternationalizationContext.Provider>\n )\n}\n","import {TrashIcon} from '@sanity/icons'\nimport {type ButtonTone, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type SanityDocument,\n useClient,\n} from 'sanity'\n\nimport DeleteTranslationDialog from '../components/DeleteTranslationDialog'\nimport DeleteTranslationFooter from '../components/DeleteTranslationFooter'\nimport {useDocumentInternationalizationContext} from '../components/DocumentInternationalizationContext'\nimport {API_VERSION, TRANSLATIONS_ARRAY_NAME} from '../constants'\n\nexport const DeleteTranslationAction: DocumentActionComponent = (props) => {\n const {id: documentId, published, draft} = props\n const doc = draft || published\n const {languageField} = useDocumentInternationalizationContext()\n\n const [isDialogOpen, setDialogOpen] = useState(false)\n const [translations, setTranslations] = useState<SanityDocument[]>([])\n const onClose = useCallback(() => setDialogOpen(false), [])\n const documentLanguage = doc ? doc[languageField] : null\n\n const toast = useToast()\n const client = useClient({apiVersion: API_VERSION})\n\n // Remove translation reference and delete document in one transaction\n const onProceed = useCallback(() => {\n const tx = client.transaction()\n let operation = 'DELETE'\n\n if (documentLanguage && translations.length > 0) {\n operation = 'UNSET'\n translations.forEach((translation) => {\n tx.patch(translation._id, (patch) =>\n patch.unset([\n `${TRANSLATIONS_ARRAY_NAME}[_key == \"${documentLanguage}\"]`,\n ])\n )\n })\n } else {\n tx.delete(documentId)\n tx.delete(`drafts.${documentId}`)\n }\n\n tx.commit()\n .then(() => {\n if (operation === 'DELETE') {\n onClose()\n }\n toast.push({\n status: 'success',\n title:\n operation === 'UNSET'\n ? 'Translation reference unset'\n : 'Document deleted',\n description:\n operation === 'UNSET' ? 'The document can now be deleted' : null,\n })\n })\n .catch((err) => {\n toast.push({\n status: 'error',\n title:\n operation === 'unset'\n ? 'Failed to unset translation reference'\n : 'Failed to delete document',\n description: err.message,\n })\n })\n }, [client, documentLanguage, translations, documentId, onClose, toast])\n\n return {\n label: `Delete translation...`,\n disabled: !doc || !documentLanguage,\n icon: TrashIcon,\n tone: 'critical' as ButtonTone,\n onHandle: () => {\n setDialogOpen(true)\n },\n dialog: isDialogOpen && {\n type: 'dialog',\n onClose,\n header: 'Delete translation',\n content: doc ? (\n <DeleteTranslationDialog\n doc={doc}\n documentId={documentId}\n setTranslations={setTranslations}\n />\n ) : null,\n footer: (\n <DeleteTranslationFooter\n onClose={onClose}\n onProceed={onProceed}\n translations={translations}\n />\n ),\n },\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n}; });\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport type {Metadata} from '../types'\n\n// Using references() seemed less reliable for updating the listener\n// results than querying raw values in the array\n// AFAIK: references is _faster_ when querying with GROQ\n// const query = `*[_type == $translationSchema && references($id)]`\nconst query = `*[_type == $translationSchema && $id in translations[].value._ref]{\n _id,\n _createdAt,\n translations\n}`\n\nexport function useTranslationMetadata(id: string): {\n data: Metadata[] | null\n loading: boolean\n error: boolean | unknown | ProgressEvent\n} {\n const {data, loading, error} = useListeningQuery<Metadata[]>(query, {\n params: {id, translationSchema: METADATA_SCHEMA_NAME},\n })\n\n return {data, loading, error}\n}\n","import {defineLocaleResourceBundle} from 'sanity'\n\n/**\n * The locale namespace for the document internationalization plugin.\n *\n * @public\n */\nexport const documenti18nLocaleNamespace =\n 'document-internationalization' as const\n\n/**\n * The default locale bundle for the document internationalization plugin, which is US English.\n *\n * @internal\n */\nexport const documentInternationalizationUsEnglishLocaleBundle =\n defineLocaleResourceBundle({\n locale: 'en-US',\n namespace: documenti18nLocaleNamespace,\n resources: () => import('./resources'),\n })\n","import {CopyIcon} from '@sanity/icons'\nimport {useToast} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useMemo, useState} from 'react'\nimport {filter, firstValueFrom} from 'rxjs'\nimport {\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n type DocumentActionComponent,\n type Id,\n InsufficientPermissionsMessage,\n type PatchOperations,\n useClient,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useDocumentStore,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\nimport {structureLocaleNamespace} from 'sanity/structure'\n\nimport {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../constants'\nimport {useTranslationMetadata} from '../hooks/useLanguageMetadata'\nimport {documenti18nLocaleNamespace} from '../i18n'\n\nconst DISABLED_REASON_KEY = {\n METADATA_NOT_FOUND: 'action.duplicate.disabled.missing-metadata',\n MULTIPLE_METADATA: 'action.duplicate.disabled.multiple-metadata',\n NOTHING_TO_DUPLICATE: 'action.duplicate.disabled.nothing-to-duplicate',\n NOT_READY: 'action.duplicate.disabled.not-ready',\n}\n\nexport const DuplicateWithTranslationsAction: DocumentActionComponent = ({\n id,\n type,\n onComplete,\n}) => {\n const documentStore = useDocumentStore()\n const {duplicate} = useDocumentOperation(id, type)\n const {navigateIntent} = useRouter()\n const [isDuplicating, setDuplicating] = useState(false)\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n permission: 'duplicate',\n })\n const {data, loading: isMetadataDocumentLoading} = useTranslationMetadata(id)\n const hasOneMetadataDocument = useMemo(() => {\n return Array.isArray(data) && data.length <= 1\n }, [data])\n const metadataDocument = Array.isArray(data) && data.length ? data[0] : null\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n const toast = useToast()\n const {t: s} = useTranslation(structureLocaleNamespace)\n const {t: d} = useTranslation(documenti18nLocaleNamespace)\n const currentUser = useCurrentUser()\n\n const handle = useCallback(async () => {\n setDuplicating(true)\n\n try {\n if (!metadataDocument) {\n throw new Error('Metadata document not found')\n }\n\n // 1. Duplicate the document and its localized versions\n const translations = new Map<string, Id>()\n await Promise.all(\n metadataDocument[TRANSLATIONS_ARRAY_NAME].map(async (translation) => {\n const dupeId = uuid()\n const locale = translation._key\n const docId = translation.value?._ref\n\n if (!docId) {\n throw new Error('Translation document not found')\n }\n\n const {duplicate: duplicateTranslation} = await firstValueFrom(\n documentStore.pair\n .editOperations(docId, type)\n .pipe(filter((op) => op.duplicate.disabled !== 'NOT_READY'))\n )\n\n if (duplicateTranslation.disabled) {\n throw new Error('Cannot duplicate document')\n }\n\n const duplicateTranslationSuccess = firstValueFrom(\n documentStore.pair\n .operationEvents(docId, type)\n .pipe(filter((e) => e.op === 'duplicate' && e.type === 'success'))\n )\n duplicateTranslation.execute(dupeId)\n await duplicateTranslationSuccess\n\n translations.set(locale, dupeId)\n })\n )\n\n // 2. Duplicate the metadata document\n const {duplicate: duplicateMetadata} = await firstValueFrom(\n documentStore.pair\n .editOperations(metadataDocument._id, METADATA_SCHEMA_NAME)\n .pipe(filter((op) => op.duplicate.disabled !== 'NOT_READY'))\n )\n\n if (duplicateMetadata.disabled) {\n throw new Error('Cannot duplicate document')\n }\n\n const duplicateMetadataSuccess = firstValueFrom(\n documentStore.pair\n .operationEvents(metadataDocument._id, METADATA_SCHEMA_NAME)\n .pipe(filter((e) => e.op === 'duplicate' && e.type === 'success'))\n )\n const dupeId = uuid()\n duplicateMetadata.execute(dupeId)\n await duplicateMetadataSuccess\n\n // 3. Patch the duplicated metadata document to update the references\n // TODO: use document store\n // const {patch: patchMetadata} = await firstValueFrom(\n // documentStore.pair\n // .editOperations(dupeId, METADATA_SCHEMA_NAME)\n // .pipe(filter((op) => op.patch.disabled !== 'NOT_READY'))\n // )\n\n // if (patchMetadata.disabled) {\n // throw new Error('Cannot patch document')\n // }\n\n // await firstValueFrom(\n // documentStore.pair\n // .consistencyStatus(dupeId, METADATA_SCHEMA_NAME)\n // .pipe(filter((isConsistant) => isConsistant))\n // )\n\n // const patchMetadataSuccess = firstValueFrom(\n // documentStore.pair\n // .operationEvents(dupeId, METADATA_SCHEMA_NAME)\n // .pipe(filter((e) => e.op === 'patch' && e.type === 'success'))\n // )\n\n const patch: PatchOperations = {\n set: Object.fromEntries(\n Array.from(translations.entries()).map(([locale, documentId]) => [\n `${TRANSLATIONS_ARRAY_NAME}[_key == \"${locale}\"].value._ref`,\n documentId,\n ])\n ),\n }\n\n // patchMetadata.execute([patch])\n // await patchMetadataSuccess\n await client.transaction().patch(dupeId, patch).commit()\n\n // 4. Navigate to the duplicated document\n navigateIntent('edit', {\n id: Array.from(translations.values()).at(0),\n type,\n })\n\n onComplete()\n } catch (error) {\n console.error(error)\n toast.push({\n status: 'error',\n title: 'Error duplicating document',\n description:\n error instanceof Error\n ? error.message\n : 'Failed to duplicate document',\n })\n } finally {\n setDuplicating(false)\n }\n }, [\n client,\n documentStore.pair,\n metadataDocument,\n navigateIntent,\n onComplete,\n toast,\n type,\n ])\n\n return useMemo(() => {\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n icon: CopyIcon,\n disabled: true,\n label: d('action.duplicate.label'),\n title: (\n <InsufficientPermissionsMessage\n context=\"duplicate-document\"\n currentUser={currentUser}\n />\n ),\n }\n }\n\n if (!isMetadataDocumentLoading && !metadataDocument) {\n return {\n icon: CopyIcon,\n disabled: true,\n label: d('action.duplicate.label'),\n title: d(DISABLED_REASON_KEY.METADATA_NOT_FOUND),\n }\n }\n\n if (!hasOneMetadataDocument) {\n return {\n icon: CopyIcon,\n disabled: true,\n label: d('action.duplicate.label'),\n title: d(DISABLED_REASON_KEY.MULTIPLE_METADATA),\n }\n }\n\n return {\n icon: CopyIcon,\n disabled:\n isDuplicating ||\n Boolean(duplicate.disabled) ||\n isPermissionsLoading ||\n isMetadataDocumentLoading,\n label: isDuplicating\n ? s('action.duplicate.running.label')\n : d('action.duplicate.label'),\n title: duplicate.disabled\n ? s(DISABLED_REASON_KEY[duplicate.disabled])\n : '',\n onHandle: handle,\n }\n }, [\n currentUser,\n duplicate.disabled,\n handle,\n hasOneMetadataDocument,\n isDuplicating,\n isMetadataDocumentLoading,\n isPermissionsLoading,\n metadataDocument,\n permissions?.granted,\n s,\n d,\n ])\n}\n\nDuplicateWithTranslationsAction.action = 'duplicate'\n// @ts-expect-error `displayName` is used by React DevTools\nDuplicateWithTranslationsAction.displayName = 'DuplicateWithTranslationsAction'\n","import {useCallback, useContext} from 'react'\nimport {RouterContext} from 'sanity/router'\nimport {usePaneRouter} from 'sanity/structure'\n\nexport function useOpenInNewPane(id?: string | null, type?: string) {\n const routerContext = useContext(RouterContext)\n const {routerPanesState, groupIndex} = usePaneRouter()\n\n const openInNewPane = useCallback(() => {\n if (!routerContext || !id || !type) {\n return\n }\n\n // No panes open, function might be called outside Structure\n if (!routerPanesState.length) {\n routerContext.navigateIntent('edit', {id, type})\n return\n }\n\n const panes = [...routerPanesState]\n panes.splice(groupIndex + 1, 0, [\n {\n id: id,\n params: {type},\n },\n ])\n\n const href = routerContext.resolvePathFromState({panes})\n routerContext.navigateUrl({path: href})\n }, [id, type, routerContext, routerPanesState, groupIndex])\n\n return openInNewPane\n}\n","import type {TranslationReference} from '../types'\n\nexport function createReference(\n key: string,\n ref: string,\n type: string,\n strengthenOnPublish: boolean = true\n): TranslationReference {\n return {\n _key: key,\n _type: 'internationalizedArrayReferenceValue',\n value: {\n _type: 'reference',\n _ref: ref,\n _weak: true,\n // If the user has configured weakReferences, we won't want to strengthen them\n ...(strengthenOnPublish ? {_strengthenOnPublish: {type}} : {}),\n },\n }\n}\n","import {CogIcon} from '@sanity/icons'\nimport {Box, Button, Stack, Text, Tooltip} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {type ObjectSchemaType, useClient} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport {useOpenInNewPane} from '../hooks/useOpenInNewPane'\nimport {createReference} from '../utils/createReference'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguageManageProps = {\n id?: string\n metadataId?: string | null\n schemaType: ObjectSchemaType\n documentId: string\n sourceLanguageId?: string\n}\n\nexport default function LanguageManage(props: LanguageManageProps) {\n const {id, metadataId, schemaType, documentId, sourceLanguageId} = props\n const open = useOpenInNewPane(id, METADATA_SCHEMA_NAME)\n const openCreated = useOpenInNewPane(metadataId, METADATA_SCHEMA_NAME)\n const {allowCreateMetaDoc, apiVersion, weakReferences} =\n useDocumentInternationalizationContext()\n const client = useClient({apiVersion})\n const [userHasClicked, setUserHasClicked] = useState(false)\n\n const canCreate = !id && Boolean(metadataId) && allowCreateMetaDoc\n\n const handleClick = useCallback(() => {\n if (!id && metadataId && sourceLanguageId) {\n /* Disable button while this request is pending */\n setUserHasClicked(true)\n\n // handle creation of meta document\n const transaction = client.transaction()\n\n const sourceReference = createReference(\n sourceLanguageId,\n documentId,\n schemaType.name,\n !weakReferences\n )\n const newMetadataDocument = {\n _id: metadataId,\n _type: METADATA_SCHEMA_NAME,\n schemaTypes: [schemaType.name],\n translations: [sourceReference],\n }\n\n transaction.createIfNotExists(newMetadataDocument)\n\n transaction\n .commit()\n .then(() => {\n setUserHasClicked(false)\n openCreated()\n })\n .catch((err) => {\n console.error(err)\n setUserHasClicked(false)\n })\n } else {\n open()\n }\n }, [\n id,\n metadataId,\n sourceLanguageId,\n client,\n documentId,\n schemaType.name,\n weakReferences,\n openCreated,\n open,\n ])\n\n const disabled =\n (!id && !canCreate) || (canCreate && !sourceLanguageId) || userHasClicked\n\n return (\n <Tooltip\n animate\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Document has no other translations\n </Text>\n </Box>\n }\n fallbackPlacements={['right', 'left']}\n placement=\"top\"\n portal\n disabled={Boolean(id) || canCreate}\n >\n <Stack>\n <Button\n disabled={disabled}\n mode=\"ghost\"\n text=\"Manage Translations\"\n icon={CogIcon}\n loading={userHasClicked}\n onClick={handleClick}\n />\n </Stack>\n </Tooltip>\n )\n}\n","import {extractWithPath, Mutation} from '@sanity/mutator'\nimport {\n isDocumentSchemaType,\n type ObjectSchemaType,\n type Path,\n pathToString,\n type SanityDocument,\n type SchemaType,\n} from 'sanity'\n\nexport interface DocumentMember {\n schemaType: SchemaType\n path: Path\n name: string\n value: unknown\n}\n\nexport function removeExcludedPaths(\n doc: SanityDocument | null,\n schemaType: ObjectSchemaType\n): SanityDocument | null {\n // If the supplied doc is null or the schemaType\n // isn't a document, return as is.\n if (!isDocumentSchemaType(schemaType) || !doc) {\n return doc\n }\n\n // The extractPaths function gets all the fields in the doc with\n // a value, along with their schemaTypes and paths. We'll end up\n // with an array of paths in string form which we want to exclude\n const pathsToExclude: string[] = extractPaths(doc, schemaType, [])\n // We filter for any fields which should be excluded from the document\n // duplicate action, based on the schemaType option being set.\n .filter(\n (field) =>\n field.schemaType?.options?.documentInternationalization?.exclude ===\n true\n )\n // then we return the stringified version of the path\n .map((field) => {\n return pathToString(field.path)\n })\n\n // Now we can use the Mutation class from @sanity/mutator to patch the document\n // to remove all the paths that are for one of the excluded fields. This is just\n // done locally, and the documents themselves are not patched in the Content Lake.\n const mut = new Mutation({\n mutations: [\n {\n patch: {\n id: doc._id,\n unset: pathsToExclude,\n },\n },\n ],\n })\n\n return mut.apply(doc) as SanityDocument\n}\n\nfunction extractPaths(\n doc: SanityDocument,\n schemaType: ObjectSchemaType,\n path: Path\n): DocumentMember[] {\n return schemaType.fields.reduce<DocumentMember[]>((acc, field) => {\n const fieldPath = [...path, field.name]\n const fieldSchema = field.type\n const {value} = extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n if (!value) {\n return acc\n }\n\n const thisFieldWithPath: DocumentMember = {\n path: fieldPath,\n name: field.name,\n schemaType: fieldSchema,\n value,\n }\n\n if (fieldSchema.jsonType === 'object') {\n const innerFields = extractPaths(doc, fieldSchema, fieldPath)\n\n return [...acc, thisFieldWithPath, ...innerFields]\n } else if (\n fieldSchema.jsonType === 'array' &&\n fieldSchema.of.length &&\n fieldSchema.of.some((item) => 'fields' in item)\n ) {\n const {value: arrayValue} =\n extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n\n let arrayPaths: DocumentMember[] = []\n if ((arrayValue as any)?.length) {\n for (const item of arrayValue as any[]) {\n const itemPath = [...fieldPath, {_key: item._key}]\n let itemSchema = fieldSchema.of.find((t) => t.name === item._type)\n if (!item._type) {\n itemSchema = fieldSchema.of[0]\n }\n if (item._key && itemSchema) {\n const innerFields = extractPaths(\n doc,\n itemSchema as ObjectSchemaType,\n itemPath\n )\n const arrayMember = {\n path: itemPath,\n name: item._key,\n schemaType: itemSchema,\n value: item,\n }\n arrayPaths = [...arrayPaths, arrayMember, ...innerFields]\n }\n }\n }\n\n return [...acc, thisFieldWithPath, ...arrayPaths]\n }\n\n return [...acc, thisFieldWithPath]\n }, [])\n}\n","import {AddIcon, CheckmarkIcon, SplitVerticalIcon} from '@sanity/icons'\nimport {\n Badge,\n Box,\n Button,\n Flex,\n Spinner,\n Text,\n Tooltip,\n useToast,\n} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useEffect, useState} from 'react'\nimport {type ObjectSchemaType, type SanityDocument, useClient} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport {useOpenInNewPane} from '../hooks/useOpenInNewPane'\nimport type {\n Language,\n Metadata,\n MetadataDocument,\n TranslationReference,\n} from '../types'\nimport {createReference} from '../utils/createReference'\nimport {removeExcludedPaths} from '../utils/excludePaths'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguageOptionProps = {\n language: Language\n schemaType: ObjectSchemaType\n documentId: string\n disabled: boolean\n current: boolean\n source: SanityDocument | null\n metadataId: string | null\n metadata?: Metadata | null\n sourceLanguageId?: string\n}\n\nexport default function LanguageOption(props: LanguageOptionProps) {\n const {\n language,\n schemaType,\n documentId,\n current,\n source,\n sourceLanguageId,\n metadata,\n metadataId,\n } = props\n /* When the user has clicked the Create button, the button should be disabled\n * to prevent double-clicks from firing onCreate twice. This creates duplicate\n * translation metadata entries, which editors will not be able to delete */\n const [userHasClicked, setUserHasClicked] = useState(false)\n const disabled =\n props.disabled ||\n userHasClicked ||\n current ||\n !source ||\n !sourceLanguageId ||\n !metadataId\n const translation: TranslationReference | undefined = metadata?.translations\n .length\n ? metadata.translations.find((t) => t._key === language.id)\n : undefined\n const {apiVersion, languageField, weakReferences, callback} =\n useDocumentInternationalizationContext()\n const client = useClient({apiVersion})\n const toast = useToast()\n\n const open = useOpenInNewPane(translation?.value?._ref, schemaType.name)\n const handleOpen = useCallback(() => open(), [open])\n\n /* Once a translation has been created, reset the userHasClicked state to false\n * so they can click on it to navigate to the translation. If a translation already\n * existed when this component was mounted, this will have no effect. */\n const hasTranslation = Boolean(translation)\n useEffect(() => {\n setUserHasClicked(false)\n }, [hasTranslation])\n\n const handleCreate = useCallback(async () => {\n if (!source) {\n throw new Error(`Cannot create translation without source document`)\n }\n\n if (!sourceLanguageId) {\n throw new Error(`Cannot create translation without source language ID`)\n }\n\n if (!metadataId) {\n throw new Error(`Cannot create translation without a metadata ID`)\n }\n /* Disable the create button while this request is pending */\n setUserHasClicked(true)\n\n const transaction = client.transaction()\n\n // 1. Duplicate source document\n const newTranslationDocumentId = uuid()\n let newTranslationDocument = {\n ...source,\n _id: `drafts.${newTranslationDocumentId}`,\n // 2. Update language of the translation\n [languageField]: language.id,\n }\n\n // Remove fields / paths we don't want to duplicate\n newTranslationDocument = removeExcludedPaths(\n newTranslationDocument,\n schemaType\n ) as SanityDocument\n\n transaction.create(newTranslationDocument)\n\n // 3. Maybe create the metadata document\n const sourceReference = createReference(\n sourceLanguageId,\n documentId,\n schemaType.name,\n !weakReferences\n )\n const newTranslationReference = createReference(\n language.id,\n newTranslationDocumentId,\n schemaType.name,\n !weakReferences\n )\n const newMetadataDocument: MetadataDocument = {\n _id: metadataId,\n _type: METADATA_SCHEMA_NAME,\n schemaTypes: [schemaType.name],\n translations: [sourceReference],\n }\n\n transaction.createIfNotExists(newMetadataDocument)\n\n // 4. Patch translation to metadata document\n // Note: If the document was only just created in the operation above\n // This patch operation will have no effect\n const metadataPatch = client\n .patch(metadataId)\n .setIfMissing({translations: [sourceReference]})\n .insert(`after`, `translations[-1]`, [newTranslationReference])\n\n transaction.patch(metadataPatch)\n\n // 5. Commit!\n transaction\n .commit()\n .then(() => {\n const metadataExisted = Boolean(metadata?._createdAt)\n\n callback?.({\n client,\n sourceLanguageId,\n sourceDocument: source,\n newDocument: newTranslationDocument,\n destinationLanguageId: language.id,\n metaDocumentId: metadataId,\n }).catch((err) => {\n toast.push({\n status: 'error',\n title: `Callback`,\n description: `Error while running callback - ${err}.`,\n })\n })\n\n return toast.push({\n status: 'success',\n title: `Created \"${language.title}\" translation`,\n description: metadataExisted\n ? `Updated Translations Metadata`\n : `Created Translations Metadata`,\n })\n })\n .catch((err) => {\n console.error(err)\n\n /* Re-enable the create button if there was an error */\n setUserHasClicked(false)\n\n return toast.push({\n status: 'error',\n title: `Error creating translation`,\n description: err.message,\n })\n })\n }, [\n client,\n documentId,\n language.id,\n language.title,\n languageField,\n metadata?._createdAt,\n metadataId,\n schemaType,\n source,\n sourceLanguageId,\n toast,\n weakReferences,\n callback,\n ])\n\n let message\n\n if (current) {\n message = `Current document`\n } else if (translation) {\n message = `Open ${language.title} translation`\n } else if (!translation) {\n message = `Create new ${language.title} translation`\n }\n\n return (\n <Tooltip\n animate\n content={\n <Box padding={2}>\n <Text muted size={1}>\n {message}\n </Text>\n </Box>\n }\n fallbackPlacements={['right', 'left']}\n placement=\"top\"\n portal\n >\n <Button\n onClick={translation ? handleOpen : handleCreate}\n mode={current && disabled ? `default` : `bleed`}\n disabled={disabled}\n >\n <Flex gap={3} align=\"center\">\n {disabled && !current ? (\n <Spinner />\n ) : (\n <Text size={2}>\n {/* eslint-disable-next-line no-nested-ternary */}\n {translation ? (\n <SplitVerticalIcon />\n ) : current ? (\n <CheckmarkIcon />\n ) : (\n <AddIcon />\n )}\n </Text>\n )}\n <Box flex={1}>\n <Text>{language.title}</Text>\n </Box>\n <Badge tone={disabled || current ? `default` : `primary`}>\n {language.id}\n </Badge>\n </Flex>\n </Button>\n </Tooltip>\n )\n}\n","import {EditIcon} from '@sanity/icons'\nimport {Badge, Box, Button, Flex, Text, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {type SanityDocument, useClient} from 'sanity'\n\nimport type {Language} from '../types'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguagePatchProps = {\n language: Language\n source: SanityDocument | null\n disabled: boolean\n}\n\nexport default function LanguagePatch(props: LanguagePatchProps) {\n const {language, source} = props\n const {apiVersion, languageField} = useDocumentInternationalizationContext()\n const disabled = props.disabled || !source\n const client = useClient({apiVersion})\n const toast = useToast()\n\n const handleClick = useCallback(() => {\n if (!source) {\n throw new Error(`Cannot patch missing document`)\n }\n\n const currentId = source._id\n\n client\n .patch(currentId)\n .set({[languageField]: language.id})\n .commit()\n .then(() => {\n toast.push({\n title: `Set document language to ${language.title}`,\n status: `success`,\n })\n })\n .catch((err) => {\n console.error(err)\n\n return toast.push({\n title: `Failed to set document language to ${language.title}`,\n status: `error`,\n })\n })\n }, [source, client, languageField, language, toast])\n\n return (\n <Button\n mode=\"bleed\"\n onClick={handleClick}\n disabled={disabled}\n justify=\"flex-start\"\n >\n <Flex gap={3} align=\"center\">\n <Text size={2}>\n <EditIcon />\n </Text>\n <Box flex={1}>\n <Text>{language.title}</Text>\n </Box>\n <Badge>{language.id}</Badge>\n </Flex>\n </Button>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport default styled(Box)`\n max-width: 280px;\n`\n","import {Card, Flex, Text} from '@sanity/ui'\nimport type {PropsWithChildren} from 'react'\n\nimport ConstrainedBox from './ConstrainedBox'\n\nexport default function Warning({children}: PropsWithChildren) {\n return (\n <Card tone=\"caution\" padding={3}>\n <Flex justify=\"center\">\n <ConstrainedBox>\n <Text size={1} align=\"center\">\n {children}\n </Text>\n </ConstrainedBox>\n </Flex>\n </Card>\n )\n}\n","import {TranslateIcon} from '@sanity/icons'\nimport {\n Box,\n Button,\n Card,\n Popover,\n Stack,\n Text,\n TextInput,\n useClickOutside,\n} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {type FormEvent, useCallback, useMemo, useState} from 'react'\nimport {useEditState} from 'sanity'\n\nimport {useTranslationMetadata} from '../hooks/useLanguageMetadata'\nimport type {DocumentInternationalizationMenuProps} from '../types'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\nimport LanguageManage from './LanguageManage'\nimport LanguageOption from './LanguageOption'\nimport LanguagePatch from './LanguagePatch'\nimport Warning from './Warning'\n\nexport function DocumentInternationalizationMenu(\n props: DocumentInternationalizationMenuProps\n) {\n const {documentId} = props\n const schemaType = props.schemaType\n const {languageField, supportedLanguages} =\n useDocumentInternationalizationContext()\n\n // Search filter query\n const [query, setQuery] = useState(``)\n const handleQuery = useCallback((event: FormEvent<HTMLInputElement>) => {\n if (event.currentTarget.value) {\n setQuery(event.currentTarget.value)\n } else {\n setQuery(``)\n }\n }, [])\n\n // UI Handlers\n const [open, setOpen] = useState(false)\n const handleClick = useCallback(() => setOpen((o) => !o), [])\n const [button, setButton] = useState<HTMLElement | null>(null)\n const [popover, setPopover] = useState<HTMLElement | null>(null)\n const handleClickOutside = useCallback(() => setOpen(false), [])\n useClickOutside(handleClickOutside, [button, popover])\n\n // Get metadata from content lake\n const {data, loading, error} = useTranslationMetadata(documentId)\n const metadata = Array.isArray(data) && data.length ? data[0] : null\n\n // Optimistically set a metadata ID for a newly created metadata document\n // Cannot rely on generated metadata._id from useTranslationMetadata\n // As the document store might not have returned it before creating another translation\n const metadataId = useMemo(() => {\n if (loading) {\n return null\n }\n\n // Once created, these two values should be the same anyway\n return metadata?._id ?? uuid()\n }, [loading, metadata?._id])\n\n // Duplicate a new language version from the most recent version of this document\n const {draft, published} = useEditState(documentId, schemaType.name)\n const source = draft || published\n\n // Check for data issues\n const documentIsInOneMetadataDocument = useMemo(() => {\n return Array.isArray(data) && data.length <= 1\n }, [data])\n const sourceLanguageId = source?.[languageField] as string | undefined\n const sourceLanguageIsValid = supportedLanguages.some(\n (l) => l.id === sourceLanguageId\n )\n const allLanguagesAreValid = useMemo(() => {\n const valid = supportedLanguages.every((l) => l.id && l.title)\n if (!valid) {\n console.warn(\n `Not all languages are valid. It should be an array of objects with an \"id\" and \"title\" property. Or a function that returns an array of objects with an \"id\" and \"title\" property.`,\n supportedLanguages\n )\n }\n\n return valid\n }, [supportedLanguages])\n\n const content = (\n <Box padding={1}>\n {error ? (\n <Card tone=\"critical\" padding={1}>\n <Text>There was an error returning translations metadata</Text>\n </Card>\n ) : (\n <Stack space={1}>\n <LanguageManage\n id={metadata?._id}\n documentId={documentId}\n metadataId={metadataId}\n schemaType={schemaType}\n sourceLanguageId={sourceLanguageId}\n />\n {supportedLanguages.length > 4 ? (\n <TextInput\n onChange={handleQuery}\n value={query}\n placeholder=\"Filter languages\"\n />\n ) : null}\n {supportedLanguages.length > 0 ? (\n <>\n {/* Once metadata is loaded, there may be issues */}\n {loading ? null : (\n <>\n {/* Not all languages are valid */}\n {data && documentIsInOneMetadataDocument ? null : (\n <Warning>\n {/* TODO: Surface these documents to the user */}\n This document has been found in more than one Translations\n Metadata documents\n </Warning>\n )}\n {/* Not all languages are valid */}\n {allLanguagesAreValid ? null : (\n <Warning>\n Not all language objects are valid. See the console.\n </Warning>\n )}\n {/* Current document has no language field */}\n {sourceLanguageId ? null : (\n <Warning>\n Choose a language to apply to{' '}\n <strong>this Document</strong>\n </Warning>\n )}\n {/* Current document has an invalid language field */}\n {sourceLanguageId && !sourceLanguageIsValid ? (\n <Warning>\n Select a supported language. Current language value:{' '}\n <code>{sourceLanguageId}</code>\n </Warning>\n ) : null}\n </>\n )}\n {supportedLanguages\n .filter((language) => {\n if (query) {\n return language.title\n .toLowerCase()\n .includes(query.toLowerCase())\n }\n return true\n })\n .map((language) =>\n !loading && sourceLanguageId && sourceLanguageIsValid ? (\n // Button to duplicate this document to a new translation\n // And either create or update the metadata document\n <LanguageOption\n key={language.id}\n language={language}\n schemaType={schemaType}\n documentId={documentId}\n disabled={loading || !allLanguagesAreValid}\n current={language.id === sourceLanguageId}\n metadata={metadata}\n metadataId={metadataId}\n source={source}\n sourceLanguageId={sourceLanguageId}\n />\n ) : (\n // Button to set a language field on *this* document\n <LanguagePatch\n key={language.id}\n source={source}\n language={language}\n // Only allow language patch change to:\n // - Keys not in metadata\n // - The key of this document in the metadata\n disabled={\n (loading ||\n !allLanguagesAreValid ||\n metadata?.translations\n .filter((t) => t?.value?._ref !== documentId)\n .some((t) => t._key === language.id)) ??\n false\n }\n />\n )\n )}\n </>\n ) : null}\n </Stack>\n )}\n </Box>\n )\n\n const issueWithTranslations =\n !loading && sourceLanguageId && !sourceLanguageIsValid\n\n if (!documentId) {\n return null\n }\n\n if (!schemaType || !schemaType.name) {\n return null\n }\n\n return (\n <Popover\n animate\n constrainSize\n content={content}\n open={open}\n portal\n ref={setPopover}\n overflow=\"auto\"\n tone=\"default\"\n >\n <Button\n text=\"Translations\"\n mode=\"bleed\"\n disabled={!source}\n tone={\n !source || loading || !issueWithTranslations ? undefined : `caution`\n }\n icon={TranslateIcon}\n onClick={handleClick}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n","import {TrashIcon} from '@sanity/icons'\nimport {type ButtonTone, useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type KeyedObject,\n type Reference,\n type TypedObject,\n useClient,\n} from 'sanity'\n\nimport {API_VERSION, TRANSLATIONS_ARRAY_NAME} from '../constants'\n\ntype TranslationReference = TypedObject &\n KeyedObject & {\n value: Reference\n }\n\nexport const DeleteMetadataAction: DocumentActionComponent = (props) => {\n const {id: documentId, published, draft, onComplete} = props\n const doc = draft || published\n\n const [isDialogOpen, setDialogOpen] = useState(false)\n const onClose = useCallback(() => setDialogOpen(false), [])\n const translations: TranslationReference[] = useMemo(\n () =>\n doc && Array.isArray(doc[TRANSLATIONS_ARRAY_NAME])\n ? (doc[TRANSLATIONS_ARRAY_NAME] as TranslationReference[])\n : [],\n [doc]\n )\n\n const toast = useToast()\n const client = useClient({apiVersion: API_VERSION})\n\n // Remove translation reference and delete document in one transaction\n const onProceed = useCallback(() => {\n const tx = client.transaction()\n\n tx.patch(documentId, (patch) => patch.unset([TRANSLATIONS_ARRAY_NAME]))\n\n if (translations.length > 0) {\n translations.forEach((translation) => {\n tx.delete(translation.value._ref)\n tx.delete(`drafts.${translation.value._ref}`)\n })\n }\n\n tx.delete(documentId)\n // Shouldn't exist as this document type is in liveEdit\n tx.delete(`drafts.${documentId}`)\n\n tx.commit()\n .then(() => {\n onClose()\n\n toast.push({\n status: 'success',\n title: 'Deleted document and translations',\n })\n })\n .catch((err) => {\n toast.push({\n status: 'error',\n title: 'Failed to delete document and translations',\n description: err.message,\n })\n })\n }, [client, translations, documentId, onClose, toast])\n\n return {\n label: `Delete all translations`,\n disabled: !doc || !translations.length,\n icon: TrashIcon,\n tone: 'critical' as ButtonTone,\n onHandle: () => {\n setDialogOpen(true)\n },\n dialog: isDialogOpen && {\n type: 'confirm',\n onCancel: onComplete,\n onConfirm: () => {\n onProceed()\n onComplete()\n },\n tone: 'critical' as ButtonTone,\n message:\n translations.length === 1\n ? `Delete 1 translation and this document`\n : `Delete all ${translations.length} translations and this document`,\n },\n }\n}\n","import type {DocumentBadgeDescription, DocumentBadgeProps} from 'sanity'\n\nimport {useDocumentInternationalizationContext} from '../components/DocumentInternationalizationContext'\n\nexport function LanguageBadge(\n props: DocumentBadgeProps\n): DocumentBadgeDescription | null {\n const source = props?.draft || props?.published\n const {languageField, supportedLanguages} =\n useDocumentInternationalizationContext()\n const languageId = source?.[languageField]\n\n if (!languageId) {\n return null\n }\n\n const language = Array.isArray(supportedLanguages)\n ? supportedLanguages.find((l) => l.id === languageId)\n : null\n\n // Currently we only show the language id if the supportedLanguages are async\n return {\n label: language?.id ?? String(languageId),\n title: language?.title ?? undefined,\n color: `primary`,\n }\n}\n","import {Card, Spinner} from '@sanity/ui'\nimport {useEffect, useMemo} from 'react'\nimport {Preview, useEditState, useSchema, useValidationStatus} from 'sanity'\n\ntype DocumentCheckProps = {\n id: string\n onCheckComplete: (id: string) => void\n addInvalidId: (id: string) => void\n removeInvalidId: (id: string) => void\n addDraftId: (id: string) => void\n removeDraftId: (id: string) => void\n}\n\n// Check if the document has a draft\n// Check if that draft is valid\n// Report back to parent that it can be added to bulk publish\nexport default function DocumentCheck(props: DocumentCheckProps) {\n const {\n id,\n onCheckComplete,\n addInvalidId,\n removeInvalidId,\n addDraftId,\n removeDraftId,\n } = props\n const editState = useEditState(id, ``)\n const {isValidating, validation} = useValidationStatus(id, ``)\n const schema = useSchema()\n\n const validationHasErrors = useMemo(() => {\n return (\n !isValidating &&\n validation.length > 0 &&\n validation.some((item) => item.level === 'error')\n )\n }, [isValidating, validation])\n\n useEffect(() => {\n if (validationHasErrors) {\n addInvalidId(id)\n } else {\n removeInvalidId(id)\n }\n\n if (editState.draft) {\n addDraftId(id)\n } else {\n removeDraftId(id)\n }\n\n if (!isValidating) {\n onCheckComplete(id)\n }\n }, [\n addDraftId,\n addInvalidId,\n editState.draft,\n id,\n isValidating,\n onCheckComplete,\n removeDraftId,\n removeInvalidId,\n validationHasErrors,\n ])\n\n // We only care about drafts\n if (!editState.draft) {\n return null\n }\n\n const schemaType = schema.get(editState.draft._type)\n\n return (\n <Card\n border\n padding={2}\n tone={validationHasErrors ? `critical` : `positive`}\n >\n {editState.draft && schemaType ? (\n <Preview\n layout=\"default\"\n value={editState.draft}\n schemaType={schemaType}\n />\n ) : (\n <Spinner />\n )}\n </Card>\n )\n}\n","import {Box, type ButtonTone, Text, Tooltip} from '@sanity/ui'\nimport type {ComponentType, PropsWithChildren} from 'react'\nimport {TextWithTone} from 'sanity'\n\ntype InfoIconProps = PropsWithChildren & {\n icon: ComponentType\n tone: ButtonTone\n text?: string\n}\n\nexport default function InfoIcon(props: InfoIconProps) {\n const {text, icon, tone, children} = props\n const Icon = icon\n\n return (\n <Tooltip\n animate\n portal\n content={\n children ? (\n <>{children}</>\n ) : (\n <Box padding={2}>\n <Text size={1}>{text}</Text>\n </Box>\n )\n }\n >\n <TextWithTone tone={tone} size={1}>\n <Icon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","import {InfoOutlineIcon} from '@sanity/icons'\nimport {Box, Stack, Text} from '@sanity/ui'\n\nimport InfoIcon from './InfoIcon'\n\nexport default function Info() {\n return (\n <InfoIcon icon={InfoOutlineIcon} tone=\"primary\">\n <Stack padding={3} space={4} style={{maxWidth: 250}}>\n <Box>\n <Text size={1}>Bulk publishing uses the Scheduling API.</Text>\n </Box>\n <Box>\n <Text size={1}>\n Customized Document Actions in the Studio will not execute. Webhooks\n will execute.\n </Text>\n </Box>\n <Box>\n <Text size={1}>\n Validation is checked before rendering the button below, but the\n Scheduling API will not check for – or enforce – validation.\n </Text>\n </Box>\n </Stack>\n </InfoIcon>\n )\n}\n","import {Button, Card, Dialog, Inline, Stack, Text, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {TextWithTone, useClient, useWorkspace} from 'sanity'\n\nimport {API_VERSION} from '../../constants'\nimport type {TranslationReference} from '../../types'\nimport DocumentCheck from './DocumentCheck'\nimport Info from './Info'\n\nexport type BulkPublishProps = {\n translations: TranslationReference[]\n}\n\n// A root-level component with UI for hitting the Publishing API\nexport default function BulkPublish(props: BulkPublishProps) {\n const {translations} = props\n const client = useClient({apiVersion: API_VERSION})\n const {projectId, dataset} = useWorkspace()\n const toast = useToast()\n const [invalidIds, setInvalidIds] = useState<string[] | null>(null)\n const [checkedIds, setCheckedIds] = useState<string[]>([])\n\n const onCheckComplete = useCallback((id: string) => {\n setCheckedIds((ids) => Array.from(new Set([...ids, id])))\n }, [])\n\n // Handle dialog\n const [open, setOpen] = useState(false)\n const onOpen = useCallback(() => setOpen(true), [])\n const onClose = useCallback(() => setOpen(false), [])\n\n const addInvalidId = useCallback((id: string) => {\n setInvalidIds((ids) => (ids ? Array.from(new Set([...ids, id])) : [id]))\n }, [])\n\n const removeInvalidId = useCallback((id: string) => {\n setInvalidIds((ids) => (ids ? ids.filter((i) => i !== id) : []))\n }, [])\n\n const [draftIds, setDraftIds] = useState<string[]>([])\n\n const addDraftId = useCallback((id: string) => {\n setDraftIds((ids) => Array.from(new Set([...ids, id])))\n }, [])\n\n const removeDraftId = useCallback((id: string) => {\n setDraftIds((ids) => ids.filter((i) => i !== id))\n }, [])\n\n const handleBulkPublish = useCallback(() => {\n const body = translations.map((translation) => ({\n documentId: translation.value._ref,\n }))\n client\n .request({\n uri: `/publish/${projectId}/${dataset}`,\n method: 'POST',\n body,\n })\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Success',\n description: 'Bulk publish complete',\n })\n })\n .catch((err) => {\n console.error(err)\n toast.push({\n status: 'error',\n title: 'Error',\n description: 'Bulk publish failed',\n })\n })\n }, [translations, client, projectId, dataset, toast])\n\n const disabled =\n // Not all documents have been checked\n checkedIds.length !== translations.length ||\n // Some document(s) are invalid\n Boolean(invalidIds && invalidIds?.length > 0) ||\n // No documents are drafts\n !draftIds.length\n\n return translations?.length > 0 ? (\n <Card padding={4} border radius={2}>\n <Stack space={3}>\n <Inline space={3}>\n <Text weight=\"bold\" size={1}>\n Bulk publishing\n </Text>\n <Info />\n </Inline>\n\n <Stack>\n <Button\n onClick={onOpen}\n text=\"Prepare bulk publishing\"\n mode=\"ghost\"\n />\n </Stack>\n\n {open && (\n <Dialog\n animate\n header=\"Bulk publishing\"\n id=\"bulk-publish-dialog\"\n onClose={onClose}\n zOffset={1000}\n width={3}\n >\n <Stack space={4} padding={4}>\n {draftIds.length > 0 ? (\n <Stack space={2}>\n <Text size={1}>\n There{' '}\n {draftIds.length === 1\n ? `is 1 draft document`\n : `are ${draftIds.length} draft documents`}\n .\n </Text>\n {invalidIds && invalidIds.length > 0 ? (\n <TextWithTone tone=\"critical\" size={1}>\n {invalidIds && invalidIds.length === 1\n ? `1 draft document has`\n : `${\n invalidIds && invalidIds.length\n } draft documents have`}{' '}\n validation issues that must addressed first\n </TextWithTone>\n ) : (\n <TextWithTone tone=\"positive\" size={1}>\n All drafts are valid and can be bulk published\n </TextWithTone>\n )}\n </Stack>\n ) : null}\n\n <Stack space={1}>\n {translations\n .filter((translation) => translation?.value?._ref)\n .map((translation) => (\n <DocumentCheck\n key={translation._key}\n id={translation.value._ref}\n onCheckComplete={onCheckComplete}\n addInvalidId={addInvalidId}\n removeInvalidId={removeInvalidId}\n addDraftId={addDraftId}\n removeDraftId={removeDraftId}\n />\n ))}\n </Stack>\n {draftIds.length > 0 ? (\n <Button\n mode=\"ghost\"\n tone={\n invalidIds && invalidIds?.length > 0\n ? 'caution'\n : 'positive'\n }\n text={\n draftIds.length === 1\n ? `Publish draft document`\n : `Bulk publish ${draftIds.length} draft documents`\n }\n onClick={handleBulkPublish}\n disabled={disabled}\n />\n ) : (\n <Text muted size={1}>\n No draft documents to publish\n </Text>\n )}\n </Stack>\n </Dialog>\n )}\n </Stack>\n </Card>\n ) : null\n}\n","import {useEffect} from 'react'\nimport {PatchEvent, unset, useClient, useEditState} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {API_VERSION} from '../../constants'\nimport type {TranslationReference} from '../../types'\n\ntype ReferencePatcherProps = {\n translation: TranslationReference\n documentType: string\n metadataId: string\n}\n\n// For every reference, check if it is published, and if so, strengthen the reference\nexport default function ReferencePatcher(props: ReferencePatcherProps) {\n const {translation, documentType, metadataId} = props\n const editState = useEditState(translation.value._ref, documentType)\n const client = useClient({apiVersion: API_VERSION})\n const {onChange} = useDocumentPane()\n\n useEffect(() => {\n if (\n // We have a reference\n translation.value._ref &&\n // It's still weak and not-yet-strengthened\n translation.value._weak &&\n // We also want to keep this check because maybe the user *configured* weak refs\n translation.value._strengthenOnPublish &&\n // The referenced document has just been published\n !editState.draft &&\n editState.published &&\n editState.ready\n ) {\n const referencePathBase = [\n 'translations',\n {_key: translation._key},\n 'value',\n ]\n\n onChange(\n new PatchEvent([\n unset([...referencePathBase, '_weak']),\n unset([...referencePathBase, '_strengthenOnPublish']),\n ])\n )\n }\n }, [translation, editState, metadataId, client, onChange])\n\n return null\n}\n","import type {TranslationReference} from '../../types'\nimport ReferencePatcher from './ReferencePatcher'\n\ntype OptimisticallyStrengthenProps = {\n translations: TranslationReference[]\n metadataId: string\n}\n\n// There's no good reason to leave published references as weak\n// So this component will run on every render and strengthen them\nexport default function OptimisticallyStrengthen(\n props: OptimisticallyStrengthenProps\n) {\n const {translations = [], metadataId} = props\n\n if (!translations.length) {\n return null\n }\n\n return (\n <>\n {translations.map((translation) =>\n translation.value._strengthenOnPublish?.type ? (\n <ReferencePatcher\n key={translation._key}\n translation={translation}\n documentType={translation.value._strengthenOnPublish.type}\n metadataId={metadataId}\n />\n ) : null\n )}\n </>\n )\n}\n","import {TranslateIcon} from '@sanity/icons'\nimport {\n defineField,\n defineType,\n type DocumentDefinition,\n type FieldDefinition,\n} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../../constants'\n\nexport default (\n schemaTypes: string[],\n metadataFields: FieldDefinition[]\n): DocumentDefinition =>\n defineType({\n type: 'document',\n name: METADATA_SCHEMA_NAME,\n title: 'Translation metadata',\n icon: TranslateIcon,\n liveEdit: true,\n fields: [\n defineField({\n name: TRANSLATIONS_ARRAY_NAME,\n type: 'internationalizedArrayReference',\n }),\n defineField({\n name: 'schemaTypes',\n description:\n 'Optional: Used to filter the reference fields above so all translations share the same types.',\n type: 'array',\n of: [{type: 'string'}],\n options: {list: schemaTypes},\n readOnly: ({value}) => Boolean(value),\n }),\n ...metadataFields,\n ],\n preview: {\n select: {\n translations: TRANSLATIONS_ARRAY_NAME,\n documentSchemaTypes: 'schemaTypes',\n },\n prepare(selection) {\n const {translations = [], documentSchemaTypes = []} = selection\n const title =\n translations.length === 1\n ? `1 Translation`\n : `${translations.length} Translations`\n const languageKeys = translations.length\n ? translations\n .map((t: {_key: string}) => t._key.toUpperCase())\n .join(', ')\n : ``\n const subtitle = [\n languageKeys ? `(${languageKeys})` : null,\n documentSchemaTypes?.length\n ? documentSchemaTypes.map((s: string) => s).join(`, `)\n : ``,\n ]\n .filter(Boolean)\n .join(` `)\n\n return {\n title,\n subtitle,\n }\n },\n },\n })\n","import {Stack} from '@sanity/ui'\nimport {defineField, definePlugin, isSanityDocument} from 'sanity'\nimport {internationalizedArray} from 'sanity-plugin-internationalized-array'\n\nimport {DeleteMetadataAction} from './actions/DeleteMetadataAction'\nimport {LanguageBadge} from './badges'\nimport BulkPublish from './components/BulkPublish'\nimport {DocumentInternationalizationProvider} from './components/DocumentInternationalizationContext'\nimport {DocumentInternationalizationMenu} from './components/DocumentInternationalizationMenu'\nimport OptimisticallyStrengthen from './components/OptimisticallyStrengthen'\nimport {API_VERSION, DEFAULT_CONFIG, METADATA_SCHEMA_NAME} from './constants'\nimport {documentInternationalizationUsEnglishLocaleBundle} from './i18n'\nimport metadata from './schema/translation/metadata'\nimport type {PluginConfig, TranslationReference} from './types'\n\nexport const documentInternationalization = definePlugin<PluginConfig>(\n (config) => {\n const pluginConfig = {...DEFAULT_CONFIG, ...config}\n const {\n supportedLanguages,\n schemaTypes,\n languageField,\n bulkPublish,\n metadataFields,\n } = pluginConfig\n\n if (schemaTypes.length === 0) {\n throw new Error(\n 'You must specify at least one schema type on which to enable document internationalization. Update the `schemaTypes` option in the documentInternationalization() configuration.'\n )\n }\n\n return {\n name: '@sanity/document-internationalization',\n\n studio: {\n components: {\n layout: (props) =>\n DocumentInternationalizationProvider({...props, pluginConfig}),\n },\n },\n\n i18n: {\n bundles: [documentInternationalizationUsEnglishLocaleBundle],\n },\n\n // Adds:\n // - A bulk-publishing UI component to the form\n // - Will only work for projects on a compatible plan\n form: {\n components: {\n input: (props) => {\n if (\n props.id === 'root' &&\n props.schemaType.name === METADATA_SCHEMA_NAME &&\n isSanityDocument(props?.value)\n ) {\n const metadataId = props?.value?._id\n const translations =\n (props?.value?.translations as TranslationReference[]) ?? []\n const weakAndTypedTranslations = translations.filter(\n ({value}) => value?._weak && value._strengthenOnPublish\n )\n\n return (\n <Stack space={5}>\n {bulkPublish ? (\n <BulkPublish translations={translations} />\n ) : null}\n {weakAndTypedTranslations.length > 0 ? (\n <OptimisticallyStrengthen\n metadataId={metadataId}\n translations={weakAndTypedTranslations}\n />\n ) : null}\n {props.renderDefault(props)}\n </Stack>\n )\n }\n\n return props.renderDefault(props)\n },\n },\n },\n\n // Adds:\n // - The `Translations` dropdown to the editing form\n // - `Badges` to documents with a language value\n // - The `DeleteMetadataAction` action to the metadata document type\n document: {\n unstable_languageFilter: (prev, ctx) => {\n const {schemaType, documentId} = ctx\n\n return schemaTypes.includes(schemaType) && documentId\n ? [\n ...prev,\n (props) =>\n DocumentInternationalizationMenu({...props, documentId}),\n ]\n : prev\n },\n badges: (prev, {schemaType}) => {\n if (!schemaTypes.includes(schemaType)) {\n return prev\n }\n\n return [(props) => LanguageBadge(props), ...prev]\n },\n actions: (prev, {schemaType}) => {\n if (schemaType === METADATA_SCHEMA_NAME) {\n return [...prev, DeleteMetadataAction]\n }\n\n return prev\n },\n },\n\n // Adds:\n // - The `Translations metadata` document type to the schema\n schema: {\n // Create the metadata document type\n types: [metadata(schemaTypes, metadataFields)],\n\n // For every schema type this plugin is enabled on\n // Create an initial value template to set the language\n templates: (prev, {schema}) => {\n // Templates are not setup for async languages\n if (!Array.isArray(supportedLanguages)) {\n return prev\n }\n\n const parameterizedTemplates = schemaTypes.map((schemaType) => ({\n id: `${schemaType}-parameterized`,\n title: `${\n schema?.get(schemaType)?.title ?? schemaType\n }: with Language`,\n schemaType,\n parameters: [\n {name: `languageId`, title: `Language ID`, type: `string`},\n ],\n value: ({languageId}: {languageId: string}) => ({\n [languageField]: languageId,\n }),\n }))\n\n const staticTemplates = schemaTypes.flatMap((schemaType) => {\n return supportedLanguages.map((language) => ({\n id: `${schemaType}-${language.id}`,\n title: `${language.title} ${\n schema?.get(schemaType)?.title ?? schemaType\n }`,\n schemaType,\n value: {\n [languageField]: language.id,\n },\n }))\n })\n\n return [...prev, ...parameterizedTemplates, ...staticTemplates]\n },\n },\n\n // Uses:\n // - `sanity-plugin-internationalized-array` to maintain the translations array\n plugins: [\n // Translation metadata stores its references using this plugin\n // It cuts down on attribute usage and gives UI conveniences to add new translations\n internationalizedArray({\n languages: supportedLanguages,\n fieldTypes: [\n defineField(\n {\n name: 'reference',\n type: 'reference',\n to: schemaTypes.map((type) => ({type})),\n weak: pluginConfig.weakReferences,\n // Reference filters don't actually enforce validation!\n validation: (Rule) =>\n // @ts-expect-error - fix typings\n Rule.custom(async (item: TranslationReference, context) => {\n if (!item?.value?._ref || !item?._key) {\n return true\n }\n\n const client = context.getClient({apiVersion: API_VERSION})\n const valueLanguage = await client.fetch(\n `*[_id in [$ref, $draftRef]][0].${languageField}`,\n {\n ref: item.value._ref,\n draftRef: `drafts.${item.value._ref}`,\n }\n )\n\n if (valueLanguage && valueLanguage === item._key) {\n return true\n }\n\n return `Referenced document does not have the correct language value`\n }),\n options: {\n // @ts-expect-error - Update type once it knows the values of this filter\n filter: ({parent, document}) => {\n if (!parent) return null\n\n // I'm not sure in what instance there's an array of parents\n // But the Type suggests it's possible\n const parentArray = Array.isArray(parent)\n ? parent\n : [parent]\n const language = parentArray.find((p) => p._key)\n\n if (!language?._key) return null\n\n if (document.schemaTypes) {\n return {\n filter: `_type in $schemaTypes && ${languageField} == $language`,\n params: {\n schemaTypes: document.schemaTypes,\n language: language._key,\n },\n }\n }\n\n return {\n filter: `${languageField} == $language`,\n params: {language: language._key},\n }\n },\n },\n },\n {strict: false}\n ),\n ],\n }),\n ],\n }\n }\n)\n"],"names":["query","config","entry","__spreadProps","__spreadValues","d","b","Subscription","Subscriber","ConsumerObserver","SafeSubscriber","OperatorSubscriber","err","dupeId","metadata","_a"],"mappings":"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","x_google_ignoreList":[5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]}