{"version":3,"file":"application.js","mappings":"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","sources":["webpack://app/./app/javascript/controllers/application.js","webpack://app/./app/javascript/controllers/auto_submit_controller.js","webpack://app/./app/javascript/controllers/clipboard_copy_controller.js","webpack://app/./app/javascript/controllers/direct_uploads_controller.js","webpack://app/./app/javascript/controllers/double_confirmations_controller.js","webpack://app/./app/javascript/controllers/expandable_content_controller.js","webpack://app/./app/javascript/utils/html_truncate.js","webpack://app/./app/javascript/controllers/hello_controller.js","webpack://app/../../shared/node_modules/@editorjs/editorjs/dist/editorjs.mjs","webpack://app/../../shared/node_modules/@editorjs/header/dist/header.mjs","webpack://app/../../shared/node_modules/@editorjs/list/dist/editorjs-list.mjs","webpack://app/./app/javascript/controllers/html_text_editor_controller.js","webpack://app/./app/javascript/controllers/index.js","webpack://app/../../shared/node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","webpack://app/./app/javascript/controllers/infinite_scroll_controller.js","webpack://app/./app/javascript/controllers/initialise_audio_controller.js","webpack://app/./app/javascript/controllers/lightbox_controller.js","webpack://app/./app/javascript/controllers/modal_controller.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/emaFilter.js","webpack://app/../../shared/node_modules/@uppy/status-bar/lib/StatusBarStates.js","webpack://app/../../shared/node_modules/@uppy/status-bar/lib/calculateProcessingProgress.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/prettyETA.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/secondsToTime.js","webpack://app/../../shared/node_modules/@uppy/status-bar/lib/Components.js","webpack://app/../../shared/node_modules/@uppy/status-bar/lib/StatusBarUI.js","webpack://app/../../shared/node_modules/@uppy/status-bar/lib/locale.js","webpack://app/../../shared/node_modules/@uppy/status-bar/lib/StatusBar.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/findAllDOMElements.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js","webpack://app/../../shared/node_modules/preact/hooks/dist/hooks.module.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/VirtualList.js","webpack://app/../../shared/node_modules/p-timeout/index.js","webpack://app/../../shared/node_modules/memoize-one/dist/memoize-one.esm.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/utils/trapFocus.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/isDragDropSupported.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FilePreview.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileItem/MetaErrorMessage.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/truncateString.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileItem/index.js","webpack://app/../../shared/node_modules/shallow-equal/dist/index.modern.mjs","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileList.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/AddFiles.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/EditorPanel.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileCard/RenderMetaFields.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/FileCard/index.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/Slide.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/components/Dashboard.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/locale.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/Dashboard.js","webpack://app/../../shared/node_modules/@uppy/provider-views/lib/ProviderView/ProviderView.js","webpack://app/../../shared/node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getDroppedFiles/index.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js","webpack://app/./app/javascript/controllers/multiple_upload_controller.js","webpack://app/../../shared/node_modules/nanoid/index.browser.js","webpack://app/../../shared/node_modules/nanoid/url-alphabet/index.js","webpack://app/./app/javascript/controllers/nested_form_controller.js","webpack://app/./app/javascript/controllers/record_audio_controller.js","webpack://app/./app/javascript/controllers/revealable_controller.js","webpack://app/./app/javascript/utils/rsvp_storage.js","webpack://app/./app/javascript/controllers/rsvps_controller.js","webpack://app/./app/javascript/controllers/search_form_controller.js","webpack://app/./app/javascript/controllers/select_input_controller.js","webpack://app/./app/javascript/controllers/share_button_controller.js","webpack://app/../../shared/node_modules/@uppy/file-input/lib/locale.js","webpack://app/../../shared/node_modules/@uppy/file-input/lib/FileInput.js","webpack://app/../../shared/node_modules/@uppy/progress-bar/lib/ProgressBar.js","webpack://app/./app/javascript/controllers/single_upload_controller.js","webpack://app/./app/javascript/controllers/tabs_controller.js","webpack://app/./app/javascript/controllers/toggle_radio_controller.js","webpack://app/./app/javascript/controllers/ sync \\.js$","webpack://app/../../shared/node_modules/@uppy/store-default/lib/index.js","webpack://app/../../shared/node_modules/@uppy/core/lib/supportsUploadProgress.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getTimeStamp.js","webpack://app/../../shared/node_modules/@uppy/core/lib/loggers.js","webpack://app/../../shared/node_modules/@uppy/core/lib/Restricter.js","webpack://app/../../shared/node_modules/@uppy/core/lib/locale.js","webpack://app/../../shared/node_modules/@uppy/core/lib/Uppy.js","webpack://app/../../shared/node_modules/@uppy/core/lib/getFileName.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/UserFacingApiError.js","webpack://app/../../shared/node_modules/is-network-error/index.js","webpack://app/../../shared/node_modules/p-retry/index.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/NetworkError.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/hasProperty.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/ErrorWithCause.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/emitSocketProgress.js","webpack://app/../../shared/node_modules/@uppy/companion-client/lib/AuthError.js","webpack://app/../../shared/node_modules/@uppy/companion-client/lib/RequestClient.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/fetchWithNetworkError.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getSocketHost.js","webpack://app/../../shared/node_modules/@uppy/core/lib/EventManager.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/RateLimitedQueue.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/fileFilters.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/AbortController.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getAllowedMetaFields.js","webpack://app/../../shared/node_modules/@uppy/aws-s3/lib/MultipartUploader.js","webpack://app/../../shared/node_modules/@uppy/aws-s3/lib/utils.js","webpack://app/../../shared/node_modules/@uppy/aws-s3/lib/createSignedURL.js","webpack://app/../../shared/node_modules/@uppy/aws-s3/lib/HTTPCommunicationQueue.js","webpack://app/../../shared/node_modules/@uppy/aws-s3/lib/index.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/ProgressTimeout.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/fetcher.js","webpack://app/../../shared/node_modules/@uppy/xhr-upload/lib/locale.js","webpack://app/../../shared/node_modules/@uppy/xhr-upload/lib/index.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/isNetworkError.js","webpack://app/./app/javascript/uppy.js","webpack://app/../../shared/node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/adapters.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/logger.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/connection_monitor.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/internal.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/connection.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/subscription.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/subscription_guarantor.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/subscriptions.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/consumer.js","webpack://app/../../shared/node_modules/@rails/actioncable/src/index.js","webpack://app/../../shared/node_modules/@transloadit/prettier-bytes/dist/prettierBytes.js","webpack://app/../../shared/node_modules/eventemitter3/index.js","webpack://app/../../shared/node_modules/lodash/_Symbol.js","webpack://app/../../shared/node_modules/lodash/_baseGetTag.js","webpack://app/../../shared/node_modules/lodash/_baseTrim.js","webpack://app/../../shared/node_modules/lodash/_freeGlobal.js","webpack://app/../../shared/node_modules/lodash/_getRawTag.js","webpack://app/../../shared/node_modules/lodash/_objectToString.js","webpack://app/../../shared/node_modules/lodash/_root.js","webpack://app/../../shared/node_modules/lodash/_trimmedEndIndex.js","webpack://app/../../shared/node_modules/lodash/debounce.js","webpack://app/../../shared/node_modules/lodash/isObject.js","webpack://app/../../shared/node_modules/lodash/isObjectLike.js","webpack://app/../../shared/node_modules/lodash/isSymbol.js","webpack://app/../../shared/node_modules/lodash/now.js","webpack://app/../../shared/node_modules/lodash/throttle.js","webpack://app/../../shared/node_modules/lodash/toNumber.js","webpack://app/../../shared/node_modules/mime-match/index.js","webpack://app/../../shared/node_modules/namespace-emitter/index.js","webpack://app/../../shared/node_modules/preact/dist/preact.module.js","webpack://app/../../shared/node_modules/retry/index.js","webpack://app/../../shared/node_modules/retry/lib/retry.js","webpack://app/../../shared/node_modules/retry/lib/retry_operation.js","webpack://app/../../shared/node_modules/wildcard/index.js","webpack://app/../../shared/node_modules/classnames/index.js","webpack://app/../../shared/node_modules/@uppy/core/lib/BasePlugin.js","webpack://app/../../shared/node_modules/@uppy/core/lib/UIPlugin.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/findDOMElement.js","webpack://app/../../shared/node_modules/@uppy/informer/lib/FadeIn.js","webpack://app/../../shared/node_modules/@uppy/informer/lib/TransitionGroup.js","webpack://app/../../shared/node_modules/@uppy/informer/lib/Informer.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/dataURItoBlob.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/isObjectURL.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/isPreviewSupported.js","webpack://app/../../shared/node_modules/exifr/dist/mini.esm.mjs","webpack://app/../../shared/node_modules/@uppy/thumbnail-generator/lib/locale.js","webpack://app/../../shared/node_modules/@uppy/thumbnail-generator/lib/index.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/Translator.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/generateFileID.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getFileNameAndExtension.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/mimeTypes.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getFileType.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/getTextDirection.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/isDOMElement.js","webpack://app/../../shared/node_modules/@uppy/utils/lib/toArray.js","webpack://app/../../shared/node_modules/nanoid/non-secure/index.js","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/define property getters","webpack://app/webpack/runtime/global","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/make namespace object","webpack://app/../../shared/node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack://app/../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack://app/../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack://app/../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack://app/../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack://app/../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js"],"sourcesContent":["import { Application } from \"@hotwired/stimulus\";\n\nconst application = Application.start();\n\n// Configure Stimulus development experience\napplication.debug = false;\nwindow.Stimulus = application;\n\nexport { application };\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n console.log(\"CONNECTING AUTO SUBMIT CONTROLLER::::::: \", this.element);\n this.element.requestSubmit();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"copyButton\", \"copyValue\", \"copyIcon\", \"copyText\"];\n\n copy(event) {\n event.stopPropagation();\n const triggerElement = event.currentTarget;\n navigator.clipboard.writeText(this.copyValueTarget.value);\n triggerElement.classList.add(\"!border-green-600\");\n // Reset after 5 seconds\n setTimeout(() => {\n triggerElement.classList.remove(\"!border-green-600\");\n }, 5000);\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n// import {\n// Core,\n// FileInput,\n// // Informer,\n// ProgressBar,\n// StatusBar,\n// ThumbnailGenerator,\n// AwsS3,\n// AwsS3Multipart,\n// } from \"uppy\";\n\n// const audioMimeTypes = [\n// \"audio/aac\",\n// \"audio/amr\",\n// \"audio/m4a\",\n// \"audio/mp4\",\n// \"audio/mpeg\",\n// \"audio/3g2\",\n// \"audio/wma\",\n// \"audio/ogg\",\n// \"audio/x-vorbis+ogg\",\n// \"audio/wav\",\n// \"audio/x-m4a\",\n// \"audio/x-wav\",\n// \"audio/webm\",\n// ];\n// const imageMimeTypes = [\"image/jpeg\", \"image/png\", \"image/webp\", \"image/gif\"];\n// const videoMimeTypes = [\"video/mp4\", \"video/quicktime\", \"video/x-msvideo\", \"video/x-ms-wmv\", \"application/octet-stream\"];\n// const is_chrome = navigator.userAgent.indexOf(\"Chrome\") > -1;\n\nexport default class extends Controller {\n // static targets = [\n // \"uploaderGroup\",\n // \"file\",\n // \"data\",\n // \"cancelLink\",\n // \"removeLink\",\n // \"previewContainer\",\n // \"progressBar\",\n // \"statusBar\",\n // \"previewIcon\",\n // \"previewImg\",\n // \"uploadingNotice\",\n // \"uploadedNotice\",\n // \"uploaderInformer\",\n // \"inBrowserUploadRecordingButton\",\n // ];\n // connect() {\n // if (this.hasPreviewImgTarget) {\n // this.previewImgTarget.src = \"\";\n // }\n // if (this.hasUploaderGroupTarget) {\n // this.setupUppy();\n // }\n // }\n // setupUppy() {\n // let uppy = this.getUppy();\n // this.cancelLinkTarget.addEventListener(\"click\", (event) => {\n // event.preventDefault();\n // window.dispatchEvent(new Event(\"uploader::uploadCanceled\"));\n // this.cancel(uppy);\n // });\n // this.removeLinkTarget.addEventListener(\"click\", (event) => {\n // event.preventDefault();\n // window.dispatchEvent(new Event(\"uploader::uploadRemoved\"));\n // this.remove(uppy);\n // });\n // if (typeof window !== \"undefined\" && window.addEventListener) {\n // window.addEventListener(\"online\", () => this.updateOnlineStatus(uppy));\n // window.addEventListener(\"offline\", () => this.updateOnlineStatus(uppy));\n // setTimeout(() => this.updateOnlineStatus(), 3000);\n // }\n // if (this.hasInBrowserUploadRecordingButtonTarget) {\n // const self = this;\n // window.addEventListener(\"audioRecorder::recordingStarted\", function () {\n // console.log(\"listening for in browser recording started\");\n // // self.audioRecorder.classList.remove(\"state--stopped\")\n // // self.enableActionButtons()\n // self.uploaderGroupTarget.classList.add(\"state--add-file-disabled\");\n // });\n // window.addEventListener(\"audioRecorder::audioRemoved\", function () {\n // self.uploaderGroupTarget.classList.remove(\"state--add-file-disabled\");\n // });\n // this.inBrowserUploadRecordingButtonTarget.addEventListener(\"click\", (event) => {\n // event.preventDefault();\n // fetch(self.inBrowserUploadRecordingButtonTarget.dataset.audioBlob)\n // .then((response) => response.blob())\n // .then((blob) => {\n // console.log(\"blob type: \", self.inBrowserUploadRecordingButtonTarget.dataset.audioBlobType);\n // uppy.addFile({\n // name: `${self.inBrowserUploadRecordingButtonTarget.dataset.name}.audio.webm`,\n // type: self.inBrowserUploadRecordingButtonTarget.dataset.audioBlobType,\n // data: blob,\n // });\n // });\n // });\n // }\n // uppy.on(\"upload\", (data) => {\n // window.dispatchEvent(new Event(\"uploader::uploadStarted\"));\n // // $(this.element).trigger(\"uploader::uploadStarted\")\n // this.previewContainerTarget.style.display = \"block\";\n // this.previewIconTarget.style.display = \"inline-block\";\n // this.uploadingNoticeTarget.style.display = \"block\";\n // this.uploadedNoticeTarget.style.display = \"none\";\n // });\n // uppy.on(\"thumbnail:generated\", (file, preview) => {\n // // show preview of the image using URL from thumbnail generator\n // this.previewImgTarget.src = preview;\n // this.previewIconTarget.style.display = \"none\";\n // });\n // uppy.on(\"upload-progress\", (file, progress) => {\n // if (this.element.dataset.resumeAttempted === \"true\") {\n // this.element.dataset.resumeAttempted = false;\n // this.uploaderInformerTarget.innerHTML = \"\";\n // }\n // });\n // uppy.on(\"upload-error\", (file, error, response) => {\n // this.element.dataset.uploadFailed = true;\n // this.uploaderInformerTarget.innerHTML = '

Upload of file failed

';\n // });\n // uppy.on(\"upload-success\", (file, response) => {\n // this.uploadingNoticeTarget.style.display = \"none\";\n // this.uploadedNoticeTarget.style.display = \"block\";\n // // construct uploaded file data in the format that Shrine expects\n // const uploadedFileData = this.uploadedFileData(file, response);\n // // set hidden field value to the uploaded file data so that it\"s submitted\n // // with the form as the attachment\n // this.dataTarget.value = JSON.stringify(uploadedFileData);\n // uppy.reset();\n // window.dispatchEvent(new Event(\"uploader::uploadEnded\"));\n // // $(this.element).trigger(\"uploader::uploadEnded\")\n // });\n // }\n // getUppy() {\n // switch (this.element.dataset.uploadType) {\n // case \"audio\":\n // return this.audioUploader();\n // case \"browser\":\n // return this.mediaRecordUploader();\n // case \"image\":\n // return this.imageUploader();\n // case \"video\":\n // return this.videoUploader();\n // default:\n // return this.assetUploader();\n // }\n // }\n // cancel(uppy) {\n // this.resetUpload(uppy);\n // }\n // remove(uppy) {\n // this.resetUpload(uppy);\n // }\n // resetUpload(uppy) {\n // uppy.reset();\n // this.dataTarget.value = \"\";\n // this.uploaderGroupTarget.classList.remove(\"state--add-file-disabled\");\n // this.element.dispatchEvent(new Event(\"uploader::uploadEnded\"));\n // this.previewContainerTarget.style.display = \"none\";\n // this.previewImgTarget.src = \"\";\n // this.previewIconTarget.display = \"inline-block\";\n // }\n // updateOnlineStatus(uppy) {\n // const online = typeof window.navigator.onLine !== \"undefined\" ? window.navigator.onLine : true;\n // if (!online) {\n // this.uploaderInformerTarget.innerHTML = '

Offline: any in progress upload will be paused

';\n // this.element.dataset.wasOffline = true;\n // if (!is_chrome) {\n // uppy.pauseAll();\n // }\n // } else {\n // if (this.element.dataset.wasOffline) {\n // this.uploaderInformerTarget.innerHTML = '

Online: attempting to restart any paused upload

';\n // if (!is_chrome) {\n // uppy.resumeAll();\n // }\n // this.element.dataset.wasOffline = false;\n // this.element.dataset.resumeAttempted = true;\n // }\n // }\n // }\n // buttonText() {\n // switch (this.element.dataset.uploadType) {\n // case \"audio\":\n // return this.element.dataset.uploadButtonText || \"Add audio file\";\n // case \"image\":\n // return this.element.dataset.uploadButtonText || \"Add image file\";\n // case \"video\":\n // return this.element.dataset.uploadButtonText || \"Add video file\";\n // default:\n // return this.element.dataset.uploadButtonText || \"Add an existing file\";\n // }\n // }\n // uploadedFileData(file, response) {\n // switch (this.element.dataset.uploadType) {\n // case \"audio\":\n // return this.multipartUploadedFileData(file, response);\n // case \"image\":\n // return this.singlepartUploadedFileData(file, response);\n // case \"video\":\n // return this.multipartUploadedFileData(file, response);\n // case \"browser\":\n // return this.mediaRecorderUploadedData(file, response);\n // default:\n // return this.multipartUploadedFileData(file, response);\n // }\n // }\n // multipartUploadedFileData(file, response) {\n // return {\n // id: response.uploadURL.match(/\\/cache\\/([^\\?]+)/)[1], // extract key without prefix\n // storage: \"cache\",\n // metadata: {\n // size: file.size,\n // filename: file.name,\n // mime_type: file.type,\n // },\n // };\n // }\n // singlepartUploadedFileData(file, response) {\n // return {\n // id: file.meta[\"key\"].match(/\\/cache\\/(.+)/)[1], // object key without prefix\n // storage: \"cache\",\n // metadata: {\n // size: file.size,\n // filename: file.name,\n // mime_type: file.type,\n // },\n // };\n // }\n // mediaRecorderUploadedData(file, response) {\n // return {\n // id: response.uploadURL.match(/\\/cache\\/([^\\?]+)/)[1], // extract key without prefix\n // storage: \"cache\",\n // metadata: {\n // size: file.size,\n // filename: file.name,\n // mime_type: file.type,\n // },\n // };\n // }\n // assetUploader() {\n // return (\n // Core({\n // autoProceed: true,\n // restrictions: {\n // maxNumberOfFiles: 1,\n // allowedFileTypes: [...audioMimeTypes, ...imageMimeTypes, ...videoMimeTypes],\n // },\n // })\n // .use(FileInput, {\n // target: this.uploaderGroupTarget,\n // pretty: true,\n // locale: {\n // strings: {\n // chooseFiles: this.buttonText(),\n // },\n // },\n // })\n // // .use(Informer, {\n // // target: this.uploaderGroupTarget,\n // // })\n // .use(StatusBar, {\n // id: \"StatusBar\",\n // target: this.statusBarTarget,\n // hideAfterFinish: false,\n // showProgressDetails: true,\n // hideUploadButton: true,\n // hideRetryButton: true,\n // hidePauseResumeButton: true,\n // hideCancelButton: true,\n // doneButtonHandler: null,\n // locale: {},\n // })\n // .use(ProgressBar, {\n // target: this.progressBarTarget,\n // })\n // .use(ThumbnailGenerator, {\n // thumbnailWidth: 600,\n // })\n // .use(AwsS3Multipart, {\n // companionUrl: \"/\", // will call the presign endpoint on `/s3/params`\n // retryDelays: [0, 2000, 5000, 10000],\n // })\n // );\n // }\n // imageUploader() {\n // return (\n // Core({\n // autoProceed: true,\n // restrictions: {\n // maxNumberOfFiles: 1,\n // allowedFileTypes: imageMimeTypes,\n // },\n // })\n // .use(FileInput, {\n // target: this.uploaderGroupTarget,\n // pretty: true,\n // locale: {\n // strings: {\n // chooseFiles: this.buttonText(),\n // },\n // },\n // })\n // // .use(Informer, {\n // // target: this.uploaderGroupTarget,\n // // })\n // .use(ProgressBar, {\n // target: this.progressBarTarget,\n // })\n // .use(ThumbnailGenerator, {\n // thumbnailWidth: 600,\n // })\n // .use(AwsS3, {\n // companionUrl: \"/images/presign\", // will call the presign endpoint on `/s3/params`\n // })\n // );\n // }\n // videoUploader() {\n // return (\n // Core({\n // autoProceed: true,\n // restrictions: {\n // maxNumberOfFiles: 1,\n // allowedFileTypes: videoMimeTypes,\n // },\n // })\n // .use(FileInput, {\n // target: this.uploaderGroupTarget,\n // pretty: true,\n // locale: {\n // strings: {\n // chooseFiles: this.buttonText(),\n // },\n // },\n // })\n // // .use(Informer, {\n // // target: this.uploaderGroupTarget,\n // // })\n // .use(ProgressBar, {\n // target: this.progressBarTarget,\n // })\n // .use(StatusBar, {\n // id: \"StatusBar\",\n // target: this.statusBarTarget,\n // hideAfterFinish: false,\n // showProgressDetails: true,\n // hideUploadButton: true,\n // hideRetryButton: true,\n // hidePauseResumeButton: true,\n // hideCancelButton: true,\n // doneButtonHandler: null,\n // locale: {},\n // })\n // .use(ThumbnailGenerator, {\n // thumbnailWidth: 600,\n // })\n // .use(AwsS3Multipart, {\n // companionUrl: \"/\", // will call the presign endpoint on `/s3/params`\n // retryDelays: [0, 2000, 5000, 10000],\n // })\n // );\n // }\n // audioUploader() {\n // return (\n // Core({\n // autoProceed: true,\n // restrictions: {\n // maxNumberOfFiles: 1,\n // allowedFileTypes: audioMimeTypes,\n // },\n // })\n // .use(FileInput, {\n // target: this.uploaderGroupTarget,\n // pretty: true,\n // locale: {\n // strings: {\n // chooseFiles: this.buttonText(),\n // },\n // },\n // })\n // // .use(Informer, {\n // // target: this.uploaderGroupTarget,\n // // })\n // .use(ProgressBar, {\n // target: this.progressBarTarget,\n // })\n // .use(StatusBar, {\n // id: \"StatusBar\",\n // target: this.statusBarTarget,\n // hideAfterFinish: false,\n // showProgressDetails: true,\n // hideUploadButton: true,\n // hideRetryButton: true,\n // hidePauseResumeButton: true,\n // hideCancelButton: true,\n // doneButtonHandler: null,\n // locale: {},\n // })\n // .use(ThumbnailGenerator, {\n // thumbnailWidth: 600,\n // })\n // .use(AwsS3Multipart, {\n // companionUrl: \"/\", // will call the presign endpoint on `/s3/params`\n // retryDelays: [0, 2000, 5000, 10000],\n // })\n // );\n // }\n // mediaRecordUploader() {\n // return (\n // Core({\n // autoProceed: true,\n // restrictions: {\n // maxNumberOfFiles: 1,\n // allowedFileTypes: audioMimeTypes,\n // },\n // })\n // .use(FileInput, {\n // target: this.uploaderGroupTarget,\n // pretty: true,\n // locale: {\n // strings: {\n // chooseFiles: this.buttonText(),\n // },\n // },\n // })\n // // .use(Informer, {\n // // target: this.uploaderGroupTarget,\n // // })\n // .use(ProgressBar, {\n // target: this.progressBarTarget,\n // })\n // .use(StatusBar, {\n // id: \"StatusBar\",\n // target: this.statusBarTarget,\n // hideAfterFinish: false,\n // showProgressDetails: true,\n // hideUploadButton: true,\n // hideRetryButton: true,\n // hidePauseResumeButton: true,\n // hideCancelButton: true,\n // doneButtonHandler: null,\n // locale: {},\n // })\n // .use(ThumbnailGenerator, {\n // thumbnailWidth: 600,\n // })\n // .use(AwsS3Multipart, {\n // companionUrl: \"/\", // will call the presign endpoint on `/s3/params`\n // retryDelays: [0, 2000, 5000, 10000],\n // })\n // );\n // }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"confirmButton\"];\n static values = {\n message: String,\n };\n\n connect() {\n this.confirmButtonTarget.addEventListener(\"click\", this.confirmAction.bind(this));\n }\n\n confirmAction(event) {\n const message = this.messageValue || \"Are you sure you want to perform this action? This cannot be undone.\";\n if (!confirm(message)) {\n event.preventDefault();\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { htmlTruncate } from \"../utils/html_truncate\"; // Import the utility function\n\nexport default class extends Controller {\n static targets = [\"content\", \"toggleContentButton\"];\n\n static values = {\n maxSnippetLength: Number,\n buffer: { type: Number, default: 50 },\n };\n\n connect() {\n this.contentTargets.forEach((contentTarget) => {\n const fullHtml = contentTarget.innerHTML;\n const textContent = contentTarget.textContent || \"\";\n\n console.log(\"MAX SNIPPET LENGTH::::::: \", textContent.length, this.maxSnippetLengthValue);\n if (textContent.length > this.maxSnippetLengthValue) {\n this.storeFullHtml(contentTarget, fullHtml);\n const truncated = this.storeTruncatedContent(contentTarget, fullHtml);\n\n if (truncated) {\n this.showToggleContentButton(contentTarget);\n } else {\n this.hideToggleContentButton(contentTarget);\n }\n } else {\n this.hideToggleContentButton(contentTarget);\n }\n });\n }\n\n storeFullHtml(contentTarget, fullHtml) {\n contentTarget.dataset.fullHtml = fullHtml;\n }\n\n storeTruncatedContent(contentTarget, fullHtml) {\n // Only run the truncation once and store the result\n if (!contentTarget.dataset.truncatedHtml) {\n const { html: truncatedHtml, truncated } = htmlTruncate(fullHtml, this.maxSnippetLengthValue, {\n buffer: this.bufferValue,\n });\n\n if (truncated) {\n contentTarget.dataset.truncatedHtml = truncatedHtml;\n // Set the initial state to truncated\n contentTarget.innerHTML = truncatedHtml;\n contentTarget.dataset.expanded = \"false\";\n return true;\n } else {\n // If not truncated, keep the full HTML\n contentTarget.innerHTML = fullHtml;\n contentTarget.dataset.expanded = \"true\";\n return false;\n }\n }\n return contentTarget.dataset.expanded === \"false\";\n }\n\n showToggleContentButton(contentTarget) {\n const toggleContentButton = contentTarget.closest(\".expandable-item\").querySelector(\".toggle-content\");\n if (toggleContentButton) {\n toggleContentButton.classList.remove(\"hidden\");\n toggleContentButton.textContent = \"Read More\";\n }\n }\n\n hideToggleContentButton(contentTarget) {\n const toggleContentButton = contentTarget.closest(\".expandable-item\").querySelector(\".toggle-content\");\n if (toggleContentButton) {\n toggleContentButton.classList.add(\"hidden\");\n }\n }\n\n toggleContent(event) {\n const contentTarget = event.target.closest(\".expandable-item\").querySelector(\".content\");\n const isExpanded = contentTarget.dataset.expanded === \"true\";\n const toggleContentButton = event.target;\n\n if (isExpanded) {\n // Use the already stored truncated HTML\n contentTarget.innerHTML = contentTarget.dataset.truncatedHtml;\n contentTarget.dataset.expanded = \"false\";\n toggleContentButton.textContent = \"Read More\";\n } else {\n // Use the already stored full HTML\n contentTarget.innerHTML = contentTarget.dataset.fullHtml;\n contentTarget.dataset.expanded = \"true\";\n toggleContentButton.textContent = \"Read Less\";\n }\n }\n}\n","export function htmlTruncate(html, maxLength, options = {}) {\n const {\n buffer = 50,\n ellipsis = \"...\",\n preserveElements = [\"a\", \"strong\", \"em\", \"code\"],\n ariaLabel = \"Content is truncated\",\n customBoundaries = {},\n } = options;\n\n const div = document.createElement(\"div\");\n div.innerHTML = html;\n\n const plainText = div.textContent || div.innerText || \"\";\n const totalLength = plainText.length;\n\n if (totalLength <= maxLength) {\n return { html, truncated: false };\n }\n\n let currentLength = 0;\n let truncated = false;\n let lastParagraphEnd = 0;\n let lastSentenceEnd = 0;\n let lastWordEnd = 0;\n let truncationPoint = 0;\n const openElements = [];\n\n function isCustomBoundary(text, type) {\n if (customBoundaries[type]) {\n return customBoundaries[type].test(text);\n }\n return false;\n }\n\n function traverse(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n const textContent = node.textContent;\n const words = textContent.match(/\\S+\\s*/g) || [];\n\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const newLength = currentLength + word.length;\n\n if (newLength > maxLength + buffer) {\n truncated = true;\n break;\n }\n\n currentLength = newLength;\n lastWordEnd = currentLength;\n\n if (word.match(/[.!?](\\s|$)/) || isCustomBoundary(word, \"sentence\")) {\n lastSentenceEnd = currentLength;\n }\n }\n\n if (truncated) {\n let endIndex;\n if (lastParagraphEnd > maxLength - buffer) {\n endIndex = lastParagraphEnd;\n } else if (lastSentenceEnd > maxLength - buffer) {\n endIndex = lastSentenceEnd;\n } else {\n endIndex = lastWordEnd;\n }\n\n truncationPoint = endIndex;\n return document.createTextNode(textContent.slice(0, endIndex - currentLength + textContent.length));\n }\n\n return node.cloneNode(true);\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const elementClone = node.cloneNode(false); // Clone without children\n\n if (preserveElements.includes(node.tagName.toLowerCase())) {\n openElements.push(elementClone);\n }\n\n if (node.tagName === \"P\" || isCustomBoundary(node.textContent, \"paragraph\")) {\n lastParagraphEnd = currentLength;\n }\n\n for (let child of node.childNodes) {\n if (truncated) break;\n const childClone = traverse(child);\n if (childClone) elementClone.appendChild(childClone);\n }\n\n if (preserveElements.includes(node.tagName.toLowerCase())) {\n openElements.pop();\n }\n\n if ((node.tagName === \"P\" || isCustomBoundary(node.textContent, \"paragraph\")) && !truncated) {\n lastParagraphEnd = currentLength;\n }\n\n return elementClone;\n }\n return null;\n }\n\n const truncatedDiv = traverse(div);\n\n // Check if the difference between full and truncated content is within the buffer\n if (totalLength - truncationPoint <= buffer) {\n return { html, truncated: false };\n }\n\n // Close any open preserved elements\n while (openElements.length) {\n const element = openElements.pop();\n element.appendChild(document.createTextNode(ellipsis));\n truncatedDiv.appendChild(element);\n }\n\n let truncatedHtml = truncatedDiv.innerHTML; // Use innerHTML instead of outerHTML\n\n // Add ARIA label for accessibility\n if (truncatedHtml.length < html.length) {\n truncatedHtml = `
${truncatedHtml}
`;\n } else {\n truncated = false;\n }\n\n return {\n html: truncated ? truncatedHtml : truncatedHtml,\n truncated,\n };\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n console.log(\"CONNECTING HELLO CONTROLLER::::::\");\n this.element.textContent = \"Hello World!\";\n }\n}\n","(function(){\"use strict\";try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.appendChild(document.createTextNode(\".ce-hint--align-start{text-align:left}.ce-hint--align-center{text-align:center}.ce-hint__description{opacity:.6;margin-top:3px}\")),document.head.appendChild(e)}}catch(t){console.error(\"vite-plugin-css-injected-by-js\",t)}})();\nvar ko = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Fe(n) {\n return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, \"default\") ? n.default : n;\n}\nfunction ze() {\n}\nObject.assign(ze, {\n default: ze,\n register: ze,\n revert: function() {\n },\n __esModule: !0\n});\nElement.prototype.matches || (Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(n) {\n const e = (this.document || this.ownerDocument).querySelectorAll(n);\n let t = e.length;\n for (; --t >= 0 && e.item(t) !== this; )\n ;\n return t > -1;\n});\nElement.prototype.closest || (Element.prototype.closest = function(n) {\n let e = this;\n if (!document.documentElement.contains(e))\n return null;\n do {\n if (e.matches(n))\n return e;\n e = e.parentElement || e.parentNode;\n } while (e !== null);\n return null;\n});\nElement.prototype.prepend || (Element.prototype.prepend = function(e) {\n const t = document.createDocumentFragment();\n Array.isArray(e) || (e = [e]), e.forEach((o) => {\n const i = o instanceof Node;\n t.appendChild(i ? o : document.createTextNode(o));\n }), this.insertBefore(t, this.firstChild);\n});\nElement.prototype.scrollIntoViewIfNeeded || (Element.prototype.scrollIntoViewIfNeeded = function(n) {\n n = arguments.length === 0 ? !0 : !!n;\n const e = this.parentNode, t = window.getComputedStyle(e, null), o = parseInt(t.getPropertyValue(\"border-top-width\")), i = parseInt(t.getPropertyValue(\"border-left-width\")), s = this.offsetTop - e.offsetTop < e.scrollTop, r = this.offsetTop - e.offsetTop + this.clientHeight - o > e.scrollTop + e.clientHeight, l = this.offsetLeft - e.offsetLeft < e.scrollLeft, a = this.offsetLeft - e.offsetLeft + this.clientWidth - i > e.scrollLeft + e.clientWidth, c = s && !r;\n (s || r) && n && (e.scrollTop = this.offsetTop - e.offsetTop - e.clientHeight / 2 - o + this.clientHeight / 2), (l || a) && n && (e.scrollLeft = this.offsetLeft - e.offsetLeft - e.clientWidth / 2 - i + this.clientWidth / 2), (s || r || l || a) && !n && this.scrollIntoView(c);\n});\nwindow.requestIdleCallback = window.requestIdleCallback || function(n) {\n const e = Date.now();\n return setTimeout(function() {\n n({\n didTimeout: !1,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - e));\n }\n });\n }, 1);\n};\nwindow.cancelIdleCallback = window.cancelIdleCallback || function(n) {\n clearTimeout(n);\n};\nlet vo = (n = 21) => crypto.getRandomValues(new Uint8Array(n)).reduce((e, t) => (t &= 63, t < 36 ? e += t.toString(36) : t < 62 ? e += (t - 26).toString(36).toUpperCase() : t > 62 ? e += \"-\" : e += \"_\", e), \"\");\nvar It = /* @__PURE__ */ ((n) => (n.VERBOSE = \"VERBOSE\", n.INFO = \"INFO\", n.WARN = \"WARN\", n.ERROR = \"ERROR\", n))(It || {});\nconst w = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n DOWN: 40,\n RIGHT: 39,\n DELETE: 46,\n META: 91,\n SLASH: 191\n}, wo = {\n LEFT: 0,\n WHEEL: 1,\n RIGHT: 2,\n BACKWARD: 3,\n FORWARD: 4\n};\nfunction Be(n, e, t = \"log\", o, i = \"color: inherit\") {\n if (!(\"console\" in window) || !window.console[t])\n return;\n const s = [\"info\", \"log\", \"warn\", \"error\"].includes(t), r = [];\n switch (Be.logLevel) {\n case \"ERROR\":\n if (t !== \"error\")\n return;\n break;\n case \"WARN\":\n if (![\"error\", \"warn\"].includes(t))\n return;\n break;\n case \"INFO\":\n if (!s || n)\n return;\n break;\n }\n o && r.push(o);\n const l = \"Editor.js 2.30.7\", a = `line-height: 1em;\n color: #006FEA;\n display: inline-block;\n font-size: 11px;\n line-height: 1em;\n background-color: #fff;\n padding: 4px 9px;\n border-radius: 30px;\n border: 1px solid rgba(56, 138, 229, 0.16);\n margin: 4px 5px 4px 0;`;\n n && (s ? (r.unshift(a, i), e = `%c${l}%c ${e}`) : e = `( ${l} )${e}`);\n try {\n s ? o ? console[t](`${e} %o`, ...r) : console[t](e, ...r) : console[t](e);\n } catch {\n }\n}\nBe.logLevel = \"VERBOSE\";\nfunction xo(n) {\n Be.logLevel = n;\n}\nconst I = Be.bind(window, !1), X = Be.bind(window, !0);\nfunction re(n) {\n return Object.prototype.toString.call(n).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}\nfunction O(n) {\n return re(n) === \"function\" || re(n) === \"asyncfunction\";\n}\nfunction R(n) {\n return re(n) === \"object\";\n}\nfunction Q(n) {\n return re(n) === \"string\";\n}\nfunction yo(n) {\n return re(n) === \"boolean\";\n}\nfunction bt(n) {\n return re(n) === \"number\";\n}\nfunction kt(n) {\n return re(n) === \"undefined\";\n}\nfunction V(n) {\n return n ? Object.keys(n).length === 0 && n.constructor === Object : !0;\n}\nfunction Mt(n) {\n return n > 47 && n < 58 || // number keys\n n === 32 || n === 13 || // Space bar & return key(s)\n n === 229 || // processing key input for certain languages — Chinese, Japanese, etc.\n n > 64 && n < 91 || // letter keys\n n > 95 && n < 112 || // Numpad keys\n n > 185 && n < 193 || // ;=,-./` (in order)\n n > 218 && n < 223;\n}\nasync function Eo(n, e = () => {\n}, t = () => {\n}) {\n async function o(i, s, r) {\n try {\n await i.function(i.data), await s(kt(i.data) ? {} : i.data);\n } catch {\n r(kt(i.data) ? {} : i.data);\n }\n }\n return n.reduce(async (i, s) => (await i, o(s, e, t)), Promise.resolve());\n}\nfunction At(n) {\n return Array.prototype.slice.call(n);\n}\nfunction Oe(n, e) {\n return function() {\n const t = this, o = arguments;\n window.setTimeout(() => n.apply(t, o), e);\n };\n}\nfunction Bo(n) {\n return n.name.split(\".\").pop();\n}\nfunction To(n) {\n return /^[-\\w]+\\/([-+\\w]+|\\*)$/.test(n);\n}\nfunction vt(n, e, t) {\n let o;\n return (...i) => {\n const s = this, r = () => {\n o = null, t || n.apply(s, i);\n }, l = t && !o;\n window.clearTimeout(o), o = window.setTimeout(r, e), l && n.apply(s, i);\n };\n}\nfunction Ve(n, e, t = void 0) {\n let o, i, s, r = null, l = 0;\n t || (t = {});\n const a = function() {\n l = t.leading === !1 ? 0 : Date.now(), r = null, s = n.apply(o, i), r || (o = i = null);\n };\n return function() {\n const c = Date.now();\n !l && t.leading === !1 && (l = c);\n const u = e - (c - l);\n return o = this, i = arguments, u <= 0 || u > e ? (r && (clearTimeout(r), r = null), l = c, s = n.apply(o, i), r || (o = i = null)) : !r && t.trailing !== !1 && (r = setTimeout(a, u)), s;\n };\n}\nfunction Co() {\n const n = {\n win: !1,\n mac: !1,\n x11: !1,\n linux: !1\n }, e = Object.keys(n).find((t) => window.navigator.appVersion.toLowerCase().indexOf(t) !== -1);\n return e && (n[e] = !0), n;\n}\nfunction Le(n) {\n return n[0].toUpperCase() + n.slice(1);\n}\nfunction qe(n, ...e) {\n if (!e.length)\n return n;\n const t = e.shift();\n if (R(n) && R(t))\n for (const o in t)\n R(t[o]) ? (n[o] || Object.assign(n, { [o]: {} }), qe(n[o], t[o])) : Object.assign(n, { [o]: t[o] });\n return qe(n, ...e);\n}\nfunction tt(n) {\n const e = Co();\n return n = n.replace(/shift/gi, \"⇧\").replace(/backspace/gi, \"⌫\").replace(/enter/gi, \"⏎\").replace(/up/gi, \"↑\").replace(/left/gi, \"→\").replace(/down/gi, \"↓\").replace(/right/gi, \"←\").replace(/escape/gi, \"⎋\").replace(/insert/gi, \"Ins\").replace(/delete/gi, \"␡\").replace(/\\+/gi, \" + \"), e.mac ? n = n.replace(/ctrl|cmd/gi, \"⌘\").replace(/alt/gi, \"⌥\") : n = n.replace(/cmd/gi, \"Ctrl\").replace(/windows/gi, \"WIN\"), n;\n}\nfunction So(n) {\n try {\n return new URL(n).href;\n } catch {\n }\n return n.substring(0, 2) === \"//\" ? window.location.protocol + n : window.location.origin + n;\n}\nfunction Io() {\n return vo(10);\n}\nfunction Mo(n) {\n window.open(n, \"_blank\");\n}\nfunction Ao(n = \"\") {\n return `${n}${Math.floor(Math.random() * 1e8).toString(16)}`;\n}\nfunction Ze(n, e, t) {\n const o = `«${e}» is deprecated and will be removed in the next major release. Please use the «${t}» instead.`;\n n && X(o, \"warn\");\n}\nfunction ue(n, e, t) {\n const o = t.value ? \"value\" : \"get\", i = t[o], s = `#${e}Cache`;\n if (t[o] = function(...r) {\n return this[s] === void 0 && (this[s] = i.apply(this, ...r)), this[s];\n }, o === \"get\" && t.set) {\n const r = t.set;\n t.set = function(l) {\n delete n[s], r.apply(this, l);\n };\n }\n return t;\n}\nconst Ot = 650;\nfunction pe() {\n return window.matchMedia(`(max-width: ${Ot}px)`).matches;\n}\nconst Ge = typeof window < \"u\" && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 1);\nfunction Oo(n, e) {\n const t = Array.isArray(n) || R(n), o = Array.isArray(e) || R(e);\n return t || o ? JSON.stringify(n) === JSON.stringify(e) : n === e;\n}\nclass d {\n /**\n * Check if passed tag has no closed tag\n *\n * @param {HTMLElement} tag - element to check\n * @returns {boolean}\n */\n static isSingleTag(e) {\n return e.tagName && [\n \"AREA\",\n \"BASE\",\n \"BR\",\n \"COL\",\n \"COMMAND\",\n \"EMBED\",\n \"HR\",\n \"IMG\",\n \"INPUT\",\n \"KEYGEN\",\n \"LINK\",\n \"META\",\n \"PARAM\",\n \"SOURCE\",\n \"TRACK\",\n \"WBR\"\n ].includes(e.tagName);\n }\n /**\n * Check if element is BR or WBR\n *\n * @param {HTMLElement} element - element to check\n * @returns {boolean}\n */\n static isLineBreakTag(e) {\n return e && e.tagName && [\n \"BR\",\n \"WBR\"\n ].includes(e.tagName);\n }\n /**\n * Helper for making Elements with class name and attributes\n *\n * @param {string} tagName - new Element tag name\n * @param {string[]|string} [classNames] - list or name of CSS class name(s)\n * @param {object} [attributes] - any attributes\n * @returns {HTMLElement}\n */\n static make(e, t = null, o = {}) {\n const i = document.createElement(e);\n if (Array.isArray(t)) {\n const s = t.filter((r) => r !== void 0);\n i.classList.add(...s);\n } else\n t && i.classList.add(t);\n for (const s in o)\n Object.prototype.hasOwnProperty.call(o, s) && (i[s] = o[s]);\n return i;\n }\n /**\n * Creates Text Node with the passed content\n *\n * @param {string} content - text content\n * @returns {Text}\n */\n static text(e) {\n return document.createTextNode(e);\n }\n /**\n * Append one or several elements to the parent\n *\n * @param {Element|DocumentFragment} parent - where to append\n * @param {Element|Element[]|DocumentFragment|Text|Text[]} elements - element or elements list\n */\n static append(e, t) {\n Array.isArray(t) ? t.forEach((o) => e.appendChild(o)) : e.appendChild(t);\n }\n /**\n * Append element or a couple to the beginning of the parent elements\n *\n * @param {Element} parent - where to append\n * @param {Element|Element[]} elements - element or elements list\n */\n static prepend(e, t) {\n Array.isArray(t) ? (t = t.reverse(), t.forEach((o) => e.prepend(o))) : e.prepend(t);\n }\n /**\n * Swap two elements in parent\n *\n * @param {HTMLElement} el1 - from\n * @param {HTMLElement} el2 - to\n * @deprecated\n */\n static swap(e, t) {\n const o = document.createElement(\"div\"), i = e.parentNode;\n i.insertBefore(o, e), i.insertBefore(e, t), i.insertBefore(t, o), i.removeChild(o);\n }\n /**\n * Selector Decorator\n *\n * Returns first match\n *\n * @param {Element} el - element we searching inside. Default - DOM Document\n * @param {string} selector - searching string\n * @returns {Element}\n */\n static find(e = document, t) {\n return e.querySelector(t);\n }\n /**\n * Get Element by Id\n *\n * @param {string} id - id to find\n * @returns {HTMLElement | null}\n */\n static get(e) {\n return document.getElementById(e);\n }\n /**\n * Selector Decorator.\n *\n * Returns all matches\n *\n * @param {Element|Document} el - element we searching inside. Default - DOM Document\n * @param {string} selector - searching string\n * @returns {NodeList}\n */\n static findAll(e = document, t) {\n return e.querySelectorAll(t);\n }\n /**\n * Returns CSS selector for all text inputs\n */\n static get allInputsSelector() {\n return \"[contenteditable=true], textarea, input:not([type]), \" + [\"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", \"url\"].map((t) => `input[type=\"${t}\"]`).join(\", \");\n }\n /**\n * Find all contenteditable, textarea and editable input elements passed holder contains\n *\n * @param holder - element where to find inputs\n */\n static findAllInputs(e) {\n return At(e.querySelectorAll(d.allInputsSelector)).reduce((t, o) => d.isNativeInput(o) || d.containsOnlyInlineElements(o) ? [...t, o] : [...t, ...d.getDeepestBlockElements(o)], []);\n }\n /**\n * Search for deepest node which is Leaf.\n * Leaf is the vertex that doesn't have any child nodes\n *\n * @description Method recursively goes throw the all Node until it finds the Leaf\n * @param {Node} node - root Node. From this vertex we start Deep-first search\n * {@link https://en.wikipedia.org/wiki/Depth-first_search}\n * @param {boolean} [atLast] - find last text node\n * @returns - it can be text Node or Element Node, so that caret will able to work with it\n * Can return null if node is Document or DocumentFragment, or node is not attached to the DOM\n */\n static getDeepestNode(e, t = !1) {\n const o = t ? \"lastChild\" : \"firstChild\", i = t ? \"previousSibling\" : \"nextSibling\";\n if (e && e.nodeType === Node.ELEMENT_NODE && e[o]) {\n let s = e[o];\n if (d.isSingleTag(s) && !d.isNativeInput(s) && !d.isLineBreakTag(s))\n if (s[i])\n s = s[i];\n else if (s.parentNode[i])\n s = s.parentNode[i];\n else\n return s.parentNode;\n return this.getDeepestNode(s, t);\n }\n return e;\n }\n /**\n * Check if object is DOM node\n *\n * @param {*} node - object to check\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isElement(e) {\n return bt(e) ? !1 : e && e.nodeType && e.nodeType === Node.ELEMENT_NODE;\n }\n /**\n * Check if object is DocumentFragment node\n *\n * @param {object} node - object to check\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isFragment(e) {\n return bt(e) ? !1 : e && e.nodeType && e.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n }\n /**\n * Check if passed element is contenteditable\n *\n * @param {HTMLElement} element - html element to check\n * @returns {boolean}\n */\n static isContentEditable(e) {\n return e.contentEditable === \"true\";\n }\n /**\n * Checks target if it is native input\n *\n * @param {*} target - HTML element or string\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isNativeInput(e) {\n const t = [\n \"INPUT\",\n \"TEXTAREA\"\n ];\n return e && e.tagName ? t.includes(e.tagName) : !1;\n }\n /**\n * Checks if we can set caret\n *\n * @param {HTMLElement} target - target to check\n * @returns {boolean}\n */\n static canSetCaret(e) {\n let t = !0;\n if (d.isNativeInput(e))\n switch (e.type) {\n case \"file\":\n case \"checkbox\":\n case \"radio\":\n case \"hidden\":\n case \"submit\":\n case \"button\":\n case \"image\":\n case \"reset\":\n t = !1;\n break;\n }\n else\n t = d.isContentEditable(e);\n return t;\n }\n /**\n * Checks node if it is empty\n *\n * @description Method checks simple Node without any childs for emptiness\n * If you have Node with 2 or more children id depth, you better use {@link Dom#isEmpty} method\n * @param {Node} node - node to check\n * @param {string} [ignoreChars] - char or substring to treat as empty\n * @returns {boolean} true if it is empty\n */\n static isNodeEmpty(e, t) {\n let o;\n return this.isSingleTag(e) && !this.isLineBreakTag(e) ? !1 : (this.isElement(e) && this.isNativeInput(e) ? o = e.value : o = e.textContent.replace(\"​\", \"\"), t && (o = o.replace(new RegExp(t, \"g\"), \"\")), o.trim().length === 0);\n }\n /**\n * checks node if it is doesn't have any child nodes\n *\n * @param {Node} node - node to check\n * @returns {boolean}\n */\n static isLeaf(e) {\n return e ? e.childNodes.length === 0 : !1;\n }\n /**\n * breadth-first search (BFS)\n * {@link https://en.wikipedia.org/wiki/Breadth-first_search}\n *\n * @description Pushes to stack all DOM leafs and checks for emptiness\n * @param {Node} node - node to check\n * @param {string} [ignoreChars] - char or substring to treat as empty\n * @returns {boolean}\n */\n static isEmpty(e, t) {\n const o = [e];\n for (; o.length > 0; )\n if (e = o.shift(), !!e) {\n if (this.isLeaf(e) && !this.isNodeEmpty(e, t))\n return !1;\n e.childNodes && o.push(...Array.from(e.childNodes));\n }\n return !0;\n }\n /**\n * Check if string contains html elements\n *\n * @param {string} str - string to check\n * @returns {boolean}\n */\n static isHTMLString(e) {\n const t = d.make(\"div\");\n return t.innerHTML = e, t.childElementCount > 0;\n }\n /**\n * Return length of node`s text content\n *\n * @param {Node} node - node with content\n * @returns {number}\n */\n static getContentLength(e) {\n return d.isNativeInput(e) ? e.value.length : e.nodeType === Node.TEXT_NODE ? e.length : e.textContent.length;\n }\n /**\n * Return array of names of block html elements\n *\n * @returns {string[]}\n */\n static get blockElements() {\n return [\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"canvas\",\n \"div\",\n \"dl\",\n \"dt\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"li\",\n \"main\",\n \"nav\",\n \"noscript\",\n \"ol\",\n \"output\",\n \"p\",\n \"pre\",\n \"ruby\",\n \"section\",\n \"table\",\n \"tbody\",\n \"thead\",\n \"tr\",\n \"tfoot\",\n \"ul\",\n \"video\"\n ];\n }\n /**\n * Check if passed content includes only inline elements\n *\n * @param {string|HTMLElement} data - element or html string\n * @returns {boolean}\n */\n static containsOnlyInlineElements(e) {\n let t;\n Q(e) ? (t = document.createElement(\"div\"), t.innerHTML = e) : t = e;\n const o = (i) => !d.blockElements.includes(i.tagName.toLowerCase()) && Array.from(i.children).every(o);\n return Array.from(t.children).every(o);\n }\n /**\n * Find and return all block elements in the passed parent (including subtree)\n *\n * @param {HTMLElement} parent - root element\n * @returns {HTMLElement[]}\n */\n static getDeepestBlockElements(e) {\n return d.containsOnlyInlineElements(e) ? [e] : Array.from(e.children).reduce((t, o) => [...t, ...d.getDeepestBlockElements(o)], []);\n }\n /**\n * Helper for get holder from {string} or return HTMLElement\n *\n * @param {string | HTMLElement} element - holder's id or holder's HTML Element\n * @returns {HTMLElement}\n */\n static getHolder(e) {\n return Q(e) ? document.getElementById(e) : e;\n }\n /**\n * Returns true if element is anchor (is A tag)\n *\n * @param {Element} element - element to check\n * @returns {boolean}\n */\n static isAnchor(e) {\n return e.tagName.toLowerCase() === \"a\";\n }\n /**\n * Return element's offset related to the document\n *\n * @todo handle case when editor initialized in scrollable popup\n * @param el - element to compute offset\n */\n static offset(e) {\n const t = e.getBoundingClientRect(), o = window.pageXOffset || document.documentElement.scrollLeft, i = window.pageYOffset || document.documentElement.scrollTop, s = t.top + i, r = t.left + o;\n return {\n top: s,\n left: r,\n bottom: s + t.height,\n right: r + t.width\n };\n }\n}\nfunction Lo(n) {\n return !/[^\\t\\n\\r ]/.test(n);\n}\nfunction _o(n) {\n const e = window.getComputedStyle(n), t = parseFloat(e.fontSize), o = parseFloat(e.lineHeight) || t * 1.2, i = parseFloat(e.paddingTop), s = parseFloat(e.borderTopWidth), r = parseFloat(e.marginTop), l = t * 0.8, a = (o - t) / 2;\n return r + s + i + a + l;\n}\nfunction Lt(n) {\n n.dataset.empty = d.isEmpty(n) ? \"true\" : \"false\";\n}\nconst No = {\n blockTunes: {\n toggler: {\n \"Click to tune\": \"\",\n \"or drag to move\": \"\"\n }\n },\n inlineToolbar: {\n converter: {\n \"Convert to\": \"\"\n }\n },\n toolbar: {\n toolbox: {\n Add: \"\"\n }\n },\n popover: {\n Filter: \"\",\n \"Nothing found\": \"\",\n \"Convert to\": \"\"\n }\n}, Po = {\n Text: \"\",\n Link: \"\",\n Bold: \"\",\n Italic: \"\"\n}, Do = {\n link: {\n \"Add a link\": \"\"\n },\n stub: {\n \"The block can not be displayed correctly.\": \"\"\n }\n}, Ro = {\n delete: {\n Delete: \"\",\n \"Click to delete\": \"\"\n },\n moveUp: {\n \"Move up\": \"\"\n },\n moveDown: {\n \"Move down\": \"\"\n }\n}, _t = {\n ui: No,\n toolNames: Po,\n tools: Do,\n blockTunes: Ro\n}, Nt = class ae {\n /**\n * Type-safe translation for internal UI texts:\n * Perform translation of the string by namespace and a key\n *\n * @example I18n.ui(I18nInternalNS.ui.blockTunes.toggler, 'Click to tune')\n * @param internalNamespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static ui(e, t) {\n return ae._t(e, t);\n }\n /**\n * Translate for external strings that is not presented in default dictionary.\n * For example, for user-specified tool names\n *\n * @param namespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static t(e, t) {\n return ae._t(e, t);\n }\n /**\n * Adjust module for using external dictionary\n *\n * @param dictionary - new messages list to override default\n */\n static setDictionary(e) {\n ae.currentDictionary = e;\n }\n /**\n * Perform translation both for internal and external namespaces\n * If there is no translation found, returns passed key as a translated message\n *\n * @param namespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static _t(e, t) {\n const o = ae.getNamespace(e);\n return !o || !o[t] ? t : o[t];\n }\n /**\n * Find messages section by namespace path\n *\n * @param namespace - path to section\n */\n static getNamespace(e) {\n return e.split(\".\").reduce((o, i) => !o || !Object.keys(o).length ? {} : o[i], ae.currentDictionary);\n }\n};\nNt.currentDictionary = _t;\nlet z = Nt;\nclass Pt extends Error {\n}\nclass Te {\n constructor() {\n this.subscribers = {};\n }\n /**\n * Subscribe any event on callback\n *\n * @param eventName - event name\n * @param callback - subscriber\n */\n on(e, t) {\n e in this.subscribers || (this.subscribers[e] = []), this.subscribers[e].push(t);\n }\n /**\n * Subscribe any event on callback. Callback will be called once and be removed from subscribers array after call.\n *\n * @param eventName - event name\n * @param callback - subscriber\n */\n once(e, t) {\n e in this.subscribers || (this.subscribers[e] = []);\n const o = (i) => {\n const s = t(i), r = this.subscribers[e].indexOf(o);\n return r !== -1 && this.subscribers[e].splice(r, 1), s;\n };\n this.subscribers[e].push(o);\n }\n /**\n * Emit callbacks with passed data\n *\n * @param eventName - event name\n * @param data - subscribers get this data when they were fired\n */\n emit(e, t) {\n V(this.subscribers) || !this.subscribers[e] || this.subscribers[e].reduce((o, i) => {\n const s = i(o);\n return s !== void 0 ? s : o;\n }, t);\n }\n /**\n * Unsubscribe callback from event\n *\n * @param eventName - event name\n * @param callback - event handler\n */\n off(e, t) {\n if (this.subscribers[e] === void 0) {\n console.warn(`EventDispatcher .off(): there is no subscribers for event \"${e.toString()}\". Probably, .off() called before .on()`);\n return;\n }\n for (let o = 0; o < this.subscribers[e].length; o++)\n if (this.subscribers[e][o] === t) {\n delete this.subscribers[e][o];\n break;\n }\n }\n /**\n * Destroyer\n * clears subscribers list\n */\n destroy() {\n this.subscribers = {};\n }\n}\nfunction G(n) {\n Object.setPrototypeOf(this, {\n /**\n * Block id\n *\n * @returns {string}\n */\n get id() {\n return n.id;\n },\n /**\n * Tool name\n *\n * @returns {string}\n */\n get name() {\n return n.name;\n },\n /**\n * Tool config passed on Editor's initialization\n *\n * @returns {ToolConfig}\n */\n get config() {\n return n.config;\n },\n /**\n * .ce-block element, that wraps plugin contents\n *\n * @returns {HTMLElement}\n */\n get holder() {\n return n.holder;\n },\n /**\n * True if Block content is empty\n *\n * @returns {boolean}\n */\n get isEmpty() {\n return n.isEmpty;\n },\n /**\n * True if Block is selected with Cross-Block selection\n *\n * @returns {boolean}\n */\n get selected() {\n return n.selected;\n },\n /**\n * Set Block's stretch state\n *\n * @param {boolean} state — state to set\n */\n set stretched(t) {\n n.stretched = t;\n },\n /**\n * True if Block is stretched\n *\n * @returns {boolean}\n */\n get stretched() {\n return n.stretched;\n },\n /**\n * True if Block has inputs to be focused\n */\n get focusable() {\n return n.focusable;\n },\n /**\n * Call Tool method with errors handler under-the-hood\n *\n * @param {string} methodName - method to call\n * @param {object} param - object with parameters\n * @returns {unknown}\n */\n call(t, o) {\n return n.call(t, o);\n },\n /**\n * Save Block content\n *\n * @returns {Promise}\n */\n save() {\n return n.save();\n },\n /**\n * Validate Block data\n *\n * @param {BlockToolData} data - data to validate\n * @returns {Promise}\n */\n validate(t) {\n return n.validate(t);\n },\n /**\n * Allows to say Editor that Block was changed. Used to manually trigger Editor's 'onChange' callback\n * Can be useful for block changes invisible for editor core.\n */\n dispatchChange() {\n n.dispatchChange();\n },\n /**\n * Tool could specify several entries to be displayed at the Toolbox (for example, \"Heading 1\", \"Heading 2\", \"Heading 3\")\n * This method returns the entry that is related to the Block (depended on the Block data)\n */\n getActiveToolboxEntry() {\n return n.getActiveToolboxEntry();\n }\n });\n}\nclass Ce {\n constructor() {\n this.allListeners = [];\n }\n /**\n * Assigns event listener on element and returns unique identifier\n *\n * @param {EventTarget} element - DOM element that needs to be listened\n * @param {string} eventType - event type\n * @param {Function} handler - method that will be fired on event\n * @param {boolean|AddEventListenerOptions} options - useCapture or {capture, passive, once}\n */\n on(e, t, o, i = !1) {\n const s = Ao(\"l\"), r = {\n id: s,\n element: e,\n eventType: t,\n handler: o,\n options: i\n };\n if (!this.findOne(e, t, o))\n return this.allListeners.push(r), e.addEventListener(t, o, i), s;\n }\n /**\n * Removes event listener from element\n *\n * @param {EventTarget} element - DOM element that we removing listener\n * @param {string} eventType - event type\n * @param {Function} handler - remove handler, if element listens several handlers on the same event type\n * @param {boolean|AddEventListenerOptions} options - useCapture or {capture, passive, once}\n */\n off(e, t, o, i) {\n const s = this.findAll(e, t, o);\n s.forEach((r, l) => {\n const a = this.allListeners.indexOf(s[l]);\n a > -1 && (this.allListeners.splice(a, 1), r.element.removeEventListener(r.eventType, r.handler, r.options));\n });\n }\n /**\n * Removes listener by id\n *\n * @param {string} id - listener identifier\n */\n offById(e) {\n const t = this.findById(e);\n t && t.element.removeEventListener(t.eventType, t.handler, t.options);\n }\n /**\n * Finds and returns first listener by passed params\n *\n * @param {EventTarget} element - event target\n * @param {string} [eventType] - event type\n * @param {Function} [handler] - event handler\n * @returns {ListenerData|null}\n */\n findOne(e, t, o) {\n const i = this.findAll(e, t, o);\n return i.length > 0 ? i[0] : null;\n }\n /**\n * Return all stored listeners by passed params\n *\n * @param {EventTarget} element - event target\n * @param {string} eventType - event type\n * @param {Function} handler - event handler\n * @returns {ListenerData[]}\n */\n findAll(e, t, o) {\n let i;\n const s = e ? this.findByEventTarget(e) : [];\n return e && t && o ? i = s.filter((r) => r.eventType === t && r.handler === o) : e && t ? i = s.filter((r) => r.eventType === t) : i = s, i;\n }\n /**\n * Removes all listeners\n */\n removeAll() {\n this.allListeners.map((e) => {\n e.element.removeEventListener(e.eventType, e.handler, e.options);\n }), this.allListeners = [];\n }\n /**\n * Module cleanup on destruction\n */\n destroy() {\n this.removeAll();\n }\n /**\n * Search method: looks for listener by passed element\n *\n * @param {EventTarget} element - searching element\n * @returns {Array} listeners that found on element\n */\n findByEventTarget(e) {\n return this.allListeners.filter((t) => {\n if (t.element === e)\n return t;\n });\n }\n /**\n * Search method: looks for listener by passed event type\n *\n * @param {string} eventType - event type\n * @returns {ListenerData[]} listeners that found on element\n */\n findByType(e) {\n return this.allListeners.filter((t) => {\n if (t.eventType === e)\n return t;\n });\n }\n /**\n * Search method: looks for listener by passed handler\n *\n * @param {Function} handler - event handler\n * @returns {ListenerData[]} listeners that found on element\n */\n findByHandler(e) {\n return this.allListeners.filter((t) => {\n if (t.handler === e)\n return t;\n });\n }\n /**\n * Returns listener data found by id\n *\n * @param {string} id - listener identifier\n * @returns {ListenerData}\n */\n findById(e) {\n return this.allListeners.find((t) => t.id === e);\n }\n}\nclass y {\n /**\n * @class\n * @param options - Module options\n * @param options.config - Module config\n * @param options.eventsDispatcher - Common event bus\n */\n constructor({ config: e, eventsDispatcher: t }) {\n if (this.nodes = {}, this.listeners = new Ce(), this.readOnlyMutableListeners = {\n /**\n * Assigns event listener on DOM element and pushes into special array that might be removed\n *\n * @param {EventTarget} element - DOM Element\n * @param {string} eventType - Event name\n * @param {Function} handler - Event handler\n * @param {boolean|AddEventListenerOptions} options - Listening options\n */\n on: (o, i, s, r = !1) => {\n this.mutableListenerIds.push(\n this.listeners.on(o, i, s, r)\n );\n },\n /**\n * Clears all mutable listeners\n */\n clearAll: () => {\n for (const o of this.mutableListenerIds)\n this.listeners.offById(o);\n this.mutableListenerIds = [];\n }\n }, this.mutableListenerIds = [], new.target === y)\n throw new TypeError(\"Constructors for abstract class Module are not allowed.\");\n this.config = e, this.eventsDispatcher = t;\n }\n /**\n * Editor modules setter\n *\n * @param {EditorModules} Editor - Editor's Modules\n */\n set state(e) {\n this.Editor = e;\n }\n /**\n * Remove memorized nodes\n */\n removeAllNodes() {\n for (const e in this.nodes) {\n const t = this.nodes[e];\n t instanceof HTMLElement && t.remove();\n }\n }\n /**\n * Returns true if current direction is RTL (Right-To-Left)\n */\n get isRtl() {\n return this.config.i18n.direction === \"rtl\";\n }\n}\nclass b {\n constructor() {\n this.instance = null, this.selection = null, this.savedSelectionRange = null, this.isFakeBackgroundEnabled = !1, this.commandBackground = \"backColor\", this.commandRemoveFormat = \"removeFormat\";\n }\n /**\n * Editor styles\n *\n * @returns {{editorWrapper: string, editorZone: string}}\n */\n static get CSS() {\n return {\n editorWrapper: \"codex-editor\",\n editorZone: \"codex-editor__redactor\"\n };\n }\n /**\n * Returns selected anchor\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Selection/anchorNode}\n *\n * @returns {Node|null}\n */\n static get anchorNode() {\n const e = window.getSelection();\n return e ? e.anchorNode : null;\n }\n /**\n * Returns selected anchor element\n *\n * @returns {Element|null}\n */\n static get anchorElement() {\n const e = window.getSelection();\n if (!e)\n return null;\n const t = e.anchorNode;\n return t ? d.isElement(t) ? t : t.parentElement : null;\n }\n /**\n * Returns selection offset according to the anchor node\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Selection/anchorOffset}\n *\n * @returns {number|null}\n */\n static get anchorOffset() {\n const e = window.getSelection();\n return e ? e.anchorOffset : null;\n }\n /**\n * Is current selection range collapsed\n *\n * @returns {boolean|null}\n */\n static get isCollapsed() {\n const e = window.getSelection();\n return e ? e.isCollapsed : null;\n }\n /**\n * Check current selection if it is at Editor's zone\n *\n * @returns {boolean}\n */\n static get isAtEditor() {\n return this.isSelectionAtEditor(b.get());\n }\n /**\n * Check if passed selection is at Editor's zone\n *\n * @param selection - Selection object to check\n */\n static isSelectionAtEditor(e) {\n if (!e)\n return !1;\n let t = e.anchorNode || e.focusNode;\n t && t.nodeType === Node.TEXT_NODE && (t = t.parentNode);\n let o = null;\n return t && t instanceof Element && (o = t.closest(`.${b.CSS.editorZone}`)), o ? o.nodeType === Node.ELEMENT_NODE : !1;\n }\n /**\n * Check if passed range at Editor zone\n *\n * @param range - range to check\n */\n static isRangeAtEditor(e) {\n if (!e)\n return;\n let t = e.startContainer;\n t && t.nodeType === Node.TEXT_NODE && (t = t.parentNode);\n let o = null;\n return t && t instanceof Element && (o = t.closest(`.${b.CSS.editorZone}`)), o ? o.nodeType === Node.ELEMENT_NODE : !1;\n }\n /**\n * Methods return boolean that true if selection exists on the page\n */\n static get isSelectionExists() {\n return !!b.get().anchorNode;\n }\n /**\n * Return first range\n *\n * @returns {Range|null}\n */\n static get range() {\n return this.getRangeFromSelection(this.get());\n }\n /**\n * Returns range from passed Selection object\n *\n * @param selection - Selection object to get Range from\n */\n static getRangeFromSelection(e) {\n return e && e.rangeCount ? e.getRangeAt(0) : null;\n }\n /**\n * Calculates position and size of selected text\n *\n * @returns {DOMRect | ClientRect}\n */\n static get rect() {\n let e = document.selection, t, o = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n if (e && e.type !== \"Control\")\n return e = e, t = e.createRange(), o.x = t.boundingLeft, o.y = t.boundingTop, o.width = t.boundingWidth, o.height = t.boundingHeight, o;\n if (!window.getSelection)\n return I(\"Method window.getSelection is not supported\", \"warn\"), o;\n if (e = window.getSelection(), e.rangeCount === null || isNaN(e.rangeCount))\n return I(\"Method SelectionUtils.rangeCount is not supported\", \"warn\"), o;\n if (e.rangeCount === 0)\n return o;\n if (t = e.getRangeAt(0).cloneRange(), t.getBoundingClientRect && (o = t.getBoundingClientRect()), o.x === 0 && o.y === 0) {\n const i = document.createElement(\"span\");\n if (i.getBoundingClientRect) {\n i.appendChild(document.createTextNode(\"​\")), t.insertNode(i), o = i.getBoundingClientRect();\n const s = i.parentNode;\n s.removeChild(i), s.normalize();\n }\n }\n return o;\n }\n /**\n * Returns selected text as String\n *\n * @returns {string}\n */\n static get text() {\n return window.getSelection ? window.getSelection().toString() : \"\";\n }\n /**\n * Returns window SelectionUtils\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Window/getSelection}\n *\n * @returns {Selection}\n */\n static get() {\n return window.getSelection();\n }\n /**\n * Set focus to contenteditable or native input element\n *\n * @param element - element where to set focus\n * @param offset - offset of cursor\n */\n static setCursor(e, t = 0) {\n const o = document.createRange(), i = window.getSelection();\n return d.isNativeInput(e) ? d.canSetCaret(e) ? (e.focus(), e.selectionStart = e.selectionEnd = t, e.getBoundingClientRect()) : void 0 : (o.setStart(e, t), o.setEnd(e, t), i.removeAllRanges(), i.addRange(o), o.getBoundingClientRect());\n }\n /**\n * Check if current range exists and belongs to container\n *\n * @param container - where range should be\n */\n static isRangeInsideContainer(e) {\n const t = b.range;\n return t === null ? !1 : e.contains(t.startContainer);\n }\n /**\n * Adds fake cursor to the current range\n */\n static addFakeCursor() {\n const e = b.range;\n if (e === null)\n return;\n const t = d.make(\"span\", \"codex-editor__fake-cursor\");\n t.dataset.mutationFree = \"true\", e.collapse(), e.insertNode(t);\n }\n /**\n * Check if passed element contains a fake cursor\n *\n * @param el - where to check\n */\n static isFakeCursorInsideContainer(e) {\n return d.find(e, \".codex-editor__fake-cursor\") !== null;\n }\n /**\n * Removes fake cursor from a container\n *\n * @param container - container to look for\n */\n static removeFakeCursor(e = document.body) {\n const t = d.find(e, \".codex-editor__fake-cursor\");\n t && t.remove();\n }\n /**\n * Removes fake background\n */\n removeFakeBackground() {\n this.isFakeBackgroundEnabled && (this.isFakeBackgroundEnabled = !1, document.execCommand(this.commandRemoveFormat));\n }\n /**\n * Sets fake background\n */\n setFakeBackground() {\n document.execCommand(this.commandBackground, !1, \"#a8d6ff\"), this.isFakeBackgroundEnabled = !0;\n }\n /**\n * Save SelectionUtils's range\n */\n save() {\n this.savedSelectionRange = b.range;\n }\n /**\n * Restore saved SelectionUtils's range\n */\n restore() {\n if (!this.savedSelectionRange)\n return;\n const e = window.getSelection();\n e.removeAllRanges(), e.addRange(this.savedSelectionRange);\n }\n /**\n * Clears saved selection\n */\n clearSaved() {\n this.savedSelectionRange = null;\n }\n /**\n * Collapse current selection\n */\n collapseToEnd() {\n const e = window.getSelection(), t = document.createRange();\n t.selectNodeContents(e.focusNode), t.collapse(!1), e.removeAllRanges(), e.addRange(t);\n }\n /**\n * Looks ahead to find passed tag from current selection\n *\n * @param {string} tagName - tag to found\n * @param {string} [className] - tag's class name\n * @param {number} [searchDepth] - count of tags that can be included. For better performance.\n * @returns {HTMLElement|null}\n */\n findParentTag(e, t, o = 10) {\n const i = window.getSelection();\n let s = null;\n return !i || !i.anchorNode || !i.focusNode ? null : ([\n /** the Node in which the selection begins */\n i.anchorNode,\n /** the Node in which the selection ends */\n i.focusNode\n ].forEach((l) => {\n let a = o;\n for (; a > 0 && l.parentNode && !(l.tagName === e && (s = l, t && l.classList && !l.classList.contains(t) && (s = null), s)); )\n l = l.parentNode, a--;\n }), s);\n }\n /**\n * Expands selection range to the passed parent node\n *\n * @param {HTMLElement} element - element which contents should be selected\n */\n expandToTag(e) {\n const t = window.getSelection();\n t.removeAllRanges();\n const o = document.createRange();\n o.selectNodeContents(e), t.addRange(o);\n }\n}\nfunction Fo(n, e) {\n const { type: t, target: o, addedNodes: i, removedNodes: s } = n;\n return n.type === \"attributes\" && n.attributeName === \"data-empty\" ? !1 : !!(e.contains(o) || t === \"childList\" && (Array.from(i).some((a) => a === e) || Array.from(s).some((a) => a === e)));\n}\nconst Je = \"redactor dom changed\", Dt = \"block changed\", Rt = \"fake cursor is about to be toggled\", Ft = \"fake cursor have been set\", ye = \"editor mobile layout toggled\";\nfunction Qe(n, e) {\n if (!n.conversionConfig)\n return !1;\n const t = n.conversionConfig[e];\n return O(t) || Q(t);\n}\nfunction _e(n, e) {\n return Qe(n.tool, e);\n}\nfunction Ht(n, e) {\n return Object.entries(n).some(([t, o]) => e[t] && Oo(e[t], o));\n}\nasync function zt(n, e) {\n const o = (await n.save()).data, i = e.find((s) => s.name === n.name);\n return i !== void 0 && !Qe(i, \"export\") ? [] : e.reduce((s, r) => {\n if (!Qe(r, \"import\") || r.toolbox === void 0)\n return s;\n const l = r.toolbox.filter((a) => {\n if (V(a) || a.icon === void 0)\n return !1;\n if (a.data !== void 0) {\n if (Ht(a.data, o))\n return !1;\n } else if (r.name === n.name)\n return !1;\n return !0;\n });\n return s.push({\n ...r,\n toolbox: l\n }), s;\n }, []);\n}\nfunction wt(n, e) {\n return n.mergeable ? n.name === e.name ? !0 : _e(e, \"export\") && _e(n, \"import\") : !1;\n}\nfunction Ho(n, e) {\n const t = e == null ? void 0 : e.export;\n return O(t) ? t(n) : Q(t) ? n[t] : (t !== void 0 && I(\"Conversion «export» property must be a string or function. String means key of saved data object to export. Function should export processed string to export.\"), \"\");\n}\nfunction xt(n, e) {\n const t = e == null ? void 0 : e.import;\n return O(t) ? t(n) : Q(t) ? {\n [t]: n\n } : (t !== void 0 && I(\"Conversion «import» property must be a string or function. String means key of tool data to import. Function accepts a imported string and return composed tool data.\"), {});\n}\nvar A = /* @__PURE__ */ ((n) => (n.Default = \"default\", n.Separator = \"separator\", n.Html = \"html\", n))(A || {}), J = /* @__PURE__ */ ((n) => (n.APPEND_CALLBACK = \"appendCallback\", n.RENDERED = \"rendered\", n.MOVED = \"moved\", n.UPDATED = \"updated\", n.REMOVED = \"removed\", n.ON_PASTE = \"onPaste\", n))(J || {});\nclass D extends Te {\n /**\n * @param options - block constructor options\n * @param [options.id] - block's id. Will be generated if omitted.\n * @param options.data - Tool's initial data\n * @param options.tool — block's tool\n * @param options.api - Editor API module for pass it to the Block Tunes\n * @param options.readOnly - Read-Only flag\n * @param [eventBus] - Editor common event bus. Allows to subscribe on some Editor events. Could be omitted when \"virtual\" Block is created. See BlocksAPI@composeBlockData.\n */\n constructor({\n id: e = Io(),\n data: t,\n tool: o,\n readOnly: i,\n tunesData: s\n }, r) {\n super(), this.cachedInputs = [], this.toolRenderedElement = null, this.tunesInstances = /* @__PURE__ */ new Map(), this.defaultTunesInstances = /* @__PURE__ */ new Map(), this.unavailableTunesData = {}, this.inputIndex = 0, this.editorEventBus = null, this.handleFocus = () => {\n this.dropInputsCache(), this.updateCurrentInput();\n }, this.didMutated = (l = void 0) => {\n const a = l === void 0, c = l instanceof InputEvent;\n !a && !c && this.detectToolRootChange(l);\n let u;\n a || c ? u = !0 : u = !(l.length > 0 && l.every((p) => {\n const { addedNodes: g, removedNodes: f, target: k } = p;\n return [\n ...Array.from(g),\n ...Array.from(f),\n k\n ].some((S) => (d.isElement(S) || (S = S.parentElement), S && S.closest('[data-mutation-free=\"true\"]') !== null));\n })), u && (this.dropInputsCache(), this.updateCurrentInput(), this.toggleInputsEmptyMark(), this.call(\n \"updated\"\n /* UPDATED */\n ), this.emit(\"didMutated\", this));\n }, this.name = o.name, this.id = e, this.settings = o.settings, this.config = o.settings.config || {}, this.editorEventBus = r || null, this.blockAPI = new G(this), this.tool = o, this.toolInstance = o.create(t, this.blockAPI, i), this.tunes = o.tunes, this.composeTunes(s), this.holder = this.compose(), window.requestIdleCallback(() => {\n this.watchBlockMutations(), this.addInputEvents(), this.toggleInputsEmptyMark();\n });\n }\n /**\n * CSS classes for the Block\n *\n * @returns {{wrapper: string, content: string}}\n */\n static get CSS() {\n return {\n wrapper: \"ce-block\",\n wrapperStretched: \"ce-block--stretched\",\n content: \"ce-block__content\",\n selected: \"ce-block--selected\",\n dropTarget: \"ce-block--drop-target\"\n };\n }\n /**\n * Find and return all editable elements (contenteditable and native inputs) in the Tool HTML\n */\n get inputs() {\n if (this.cachedInputs.length !== 0)\n return this.cachedInputs;\n const e = d.findAllInputs(this.holder);\n return this.inputIndex > e.length - 1 && (this.inputIndex = e.length - 1), this.cachedInputs = e, e;\n }\n /**\n * Return current Tool`s input\n * If Block doesn't contain inputs, return undefined\n */\n get currentInput() {\n return this.inputs[this.inputIndex];\n }\n /**\n * Set input index to the passed element\n *\n * @param element - HTML Element to set as current input\n */\n set currentInput(e) {\n const t = this.inputs.findIndex((o) => o === e || o.contains(e));\n t !== -1 && (this.inputIndex = t);\n }\n /**\n * Return first Tool`s input\n * If Block doesn't contain inputs, return undefined\n */\n get firstInput() {\n return this.inputs[0];\n }\n /**\n * Return first Tool`s input\n * If Block doesn't contain inputs, return undefined\n */\n get lastInput() {\n const e = this.inputs;\n return e[e.length - 1];\n }\n /**\n * Return next Tool`s input or undefined if it doesn't exist\n * If Block doesn't contain inputs, return undefined\n */\n get nextInput() {\n return this.inputs[this.inputIndex + 1];\n }\n /**\n * Return previous Tool`s input or undefined if it doesn't exist\n * If Block doesn't contain inputs, return undefined\n */\n get previousInput() {\n return this.inputs[this.inputIndex - 1];\n }\n /**\n * Get Block's JSON data\n *\n * @returns {object}\n */\n get data() {\n return this.save().then((e) => e && !V(e.data) ? e.data : {});\n }\n /**\n * Returns tool's sanitizer config\n *\n * @returns {object}\n */\n get sanitize() {\n return this.tool.sanitizeConfig;\n }\n /**\n * is block mergeable\n * We plugin have merge function then we call it mergeable\n *\n * @returns {boolean}\n */\n get mergeable() {\n return O(this.toolInstance.merge);\n }\n /**\n * If Block contains inputs, it is focusable\n */\n get focusable() {\n return this.inputs.length !== 0;\n }\n /**\n * Check block for emptiness\n *\n * @returns {boolean}\n */\n get isEmpty() {\n const e = d.isEmpty(this.pluginsContent, \"/\"), t = !this.hasMedia;\n return e && t;\n }\n /**\n * Check if block has a media content such as images, iframe and other\n *\n * @returns {boolean}\n */\n get hasMedia() {\n const e = [\n \"img\",\n \"iframe\",\n \"video\",\n \"audio\",\n \"source\",\n \"input\",\n \"textarea\",\n \"twitterwidget\"\n ];\n return !!this.holder.querySelector(e.join(\",\"));\n }\n /**\n * Set selected state\n * We don't need to mark Block as Selected when it is empty\n *\n * @param {boolean} state - 'true' to select, 'false' to remove selection\n */\n set selected(e) {\n var i, s;\n this.holder.classList.toggle(D.CSS.selected, e);\n const t = e === !0 && b.isRangeInsideContainer(this.holder), o = e === !1 && b.isFakeCursorInsideContainer(this.holder);\n (t || o) && ((i = this.editorEventBus) == null || i.emit(Rt, { state: e }), t ? b.addFakeCursor() : b.removeFakeCursor(this.holder), (s = this.editorEventBus) == null || s.emit(Ft, { state: e }));\n }\n /**\n * Returns True if it is Selected\n *\n * @returns {boolean}\n */\n get selected() {\n return this.holder.classList.contains(D.CSS.selected);\n }\n /**\n * Set stretched state\n *\n * @param {boolean} state - 'true' to enable, 'false' to disable stretched state\n */\n set stretched(e) {\n this.holder.classList.toggle(D.CSS.wrapperStretched, e);\n }\n /**\n * Return Block's stretched state\n *\n * @returns {boolean}\n */\n get stretched() {\n return this.holder.classList.contains(D.CSS.wrapperStretched);\n }\n /**\n * Toggle drop target state\n *\n * @param {boolean} state - 'true' if block is drop target, false otherwise\n */\n set dropTarget(e) {\n this.holder.classList.toggle(D.CSS.dropTarget, e);\n }\n /**\n * Returns Plugins content\n *\n * @returns {HTMLElement}\n */\n get pluginsContent() {\n return this.toolRenderedElement;\n }\n /**\n * Calls Tool's method\n *\n * Method checks tool property {MethodName}. Fires method with passes params If it is instance of Function\n *\n * @param {string} methodName - method to call\n * @param {object} params - method argument\n */\n call(e, t) {\n if (O(this.toolInstance[e])) {\n e === \"appendCallback\" && I(\n \"`appendCallback` hook is deprecated and will be removed in the next major release. Use `rendered` hook instead\",\n \"warn\"\n );\n try {\n this.toolInstance[e].call(this.toolInstance, t);\n } catch (o) {\n I(`Error during '${e}' call: ${o.message}`, \"error\");\n }\n }\n }\n /**\n * Call plugins merge method\n *\n * @param {BlockToolData} data - data to merge\n */\n async mergeWith(e) {\n await this.toolInstance.merge(e);\n }\n /**\n * Extracts data from Block\n * Groups Tool's save processing time\n *\n * @returns {object}\n */\n async save() {\n const e = await this.toolInstance.save(this.pluginsContent), t = this.unavailableTunesData;\n [\n ...this.tunesInstances.entries(),\n ...this.defaultTunesInstances.entries()\n ].forEach(([s, r]) => {\n if (O(r.save))\n try {\n t[s] = r.save();\n } catch (l) {\n I(`Tune ${r.constructor.name} save method throws an Error %o`, \"warn\", l);\n }\n });\n const o = window.performance.now();\n let i;\n return Promise.resolve(e).then((s) => (i = window.performance.now(), {\n id: this.id,\n tool: this.name,\n data: s,\n tunes: t,\n time: i - o\n })).catch((s) => {\n I(`Saving process for ${this.name} tool failed due to the ${s}`, \"log\", \"red\");\n });\n }\n /**\n * Uses Tool's validation method to check the correctness of output data\n * Tool's validation method is optional\n *\n * @description Method returns true|false whether data passed the validation or not\n * @param {BlockToolData} data - data to validate\n * @returns {Promise} valid\n */\n async validate(e) {\n let t = !0;\n return this.toolInstance.validate instanceof Function && (t = await this.toolInstance.validate(e)), t;\n }\n /**\n * Returns data to render in Block Tunes menu.\n * Splits block tunes into 2 groups: block specific tunes and common tunes\n */\n getTunes() {\n const e = [], t = [], o = typeof this.toolInstance.renderSettings == \"function\" ? this.toolInstance.renderSettings() : [];\n return d.isElement(o) ? e.push({\n type: A.Html,\n element: o\n }) : Array.isArray(o) ? e.push(...o) : e.push(o), [\n ...this.tunesInstances.values(),\n ...this.defaultTunesInstances.values()\n ].map((s) => s.render()).forEach((s) => {\n d.isElement(s) ? t.push({\n type: A.Html,\n element: s\n }) : Array.isArray(s) ? t.push(...s) : t.push(s);\n }), {\n toolTunes: e,\n commonTunes: t\n };\n }\n /**\n * Update current input index with selection anchor node\n */\n updateCurrentInput() {\n this.currentInput = d.isNativeInput(document.activeElement) || !b.anchorNode ? document.activeElement : b.anchorNode;\n }\n /**\n * Allows to say Editor that Block was changed. Used to manually trigger Editor's 'onChange' callback\n * Can be useful for block changes invisible for editor core.\n */\n dispatchChange() {\n this.didMutated();\n }\n /**\n * Call Tool instance destroy method\n */\n destroy() {\n this.unwatchBlockMutations(), this.removeInputEvents(), super.destroy(), O(this.toolInstance.destroy) && this.toolInstance.destroy();\n }\n /**\n * Tool could specify several entries to be displayed at the Toolbox (for example, \"Heading 1\", \"Heading 2\", \"Heading 3\")\n * This method returns the entry that is related to the Block (depended on the Block data)\n */\n async getActiveToolboxEntry() {\n const e = this.tool.toolbox;\n if (e.length === 1)\n return Promise.resolve(this.tool.toolbox[0]);\n const t = await this.data, o = e;\n return o == null ? void 0 : o.find((i) => Ht(i.data, t));\n }\n /**\n * Exports Block data as string using conversion config\n */\n async exportDataAsString() {\n const e = await this.data;\n return Ho(e, this.tool.conversionConfig);\n }\n /**\n * Make default Block wrappers and put Tool`s content there\n *\n * @returns {HTMLDivElement}\n */\n compose() {\n const e = d.make(\"div\", D.CSS.wrapper), t = d.make(\"div\", D.CSS.content), o = this.toolInstance.render();\n e.dataset.id = this.id, this.toolRenderedElement = o, t.appendChild(this.toolRenderedElement);\n let i = t;\n return [...this.tunesInstances.values(), ...this.defaultTunesInstances.values()].forEach((s) => {\n if (O(s.wrap))\n try {\n i = s.wrap(i);\n } catch (r) {\n I(`Tune ${s.constructor.name} wrap method throws an Error %o`, \"warn\", r);\n }\n }), e.appendChild(i), e;\n }\n /**\n * Instantiate Block Tunes\n *\n * @param tunesData - current Block tunes data\n * @private\n */\n composeTunes(e) {\n Array.from(this.tunes.values()).forEach((t) => {\n (t.isInternal ? this.defaultTunesInstances : this.tunesInstances).set(t.name, t.create(e[t.name], this.blockAPI));\n }), Object.entries(e).forEach(([t, o]) => {\n this.tunesInstances.has(t) || (this.unavailableTunesData[t] = o);\n });\n }\n /**\n * Adds focus event listeners to all inputs and contenteditable\n */\n addInputEvents() {\n this.inputs.forEach((e) => {\n e.addEventListener(\"focus\", this.handleFocus), d.isNativeInput(e) && e.addEventListener(\"input\", this.didMutated);\n });\n }\n /**\n * removes focus event listeners from all inputs and contenteditable\n */\n removeInputEvents() {\n this.inputs.forEach((e) => {\n e.removeEventListener(\"focus\", this.handleFocus), d.isNativeInput(e) && e.removeEventListener(\"input\", this.didMutated);\n });\n }\n /**\n * Listen common editor Dom Changed event and detect mutations related to the Block\n */\n watchBlockMutations() {\n var e;\n this.redactorDomChangedCallback = (t) => {\n const { mutations: o } = t;\n o.some((s) => Fo(s, this.toolRenderedElement)) && this.didMutated(o);\n }, (e = this.editorEventBus) == null || e.on(Je, this.redactorDomChangedCallback);\n }\n /**\n * Remove redactor dom change event listener\n */\n unwatchBlockMutations() {\n var e;\n (e = this.editorEventBus) == null || e.off(Je, this.redactorDomChangedCallback);\n }\n /**\n * Sometimes Tool can replace own main element, for example H2 -> H4 or UL -> OL\n * We need to detect such changes and update a link to tools main element with the new one\n *\n * @param mutations - records of block content mutations\n */\n detectToolRootChange(e) {\n e.forEach((t) => {\n if (Array.from(t.removedNodes).includes(this.toolRenderedElement)) {\n const i = t.addedNodes[t.addedNodes.length - 1];\n this.toolRenderedElement = i;\n }\n });\n }\n /**\n * Clears inputs cached value\n */\n dropInputsCache() {\n this.cachedInputs = [];\n }\n /**\n * Mark inputs with 'data-empty' attribute with the empty state\n */\n toggleInputsEmptyMark() {\n this.inputs.forEach(Lt);\n }\n}\nclass zo extends y {\n constructor() {\n super(...arguments), this.insert = (e = this.config.defaultBlock, t = {}, o = {}, i, s, r, l) => {\n const a = this.Editor.BlockManager.insert({\n id: l,\n tool: e,\n data: t,\n index: i,\n needToFocus: s,\n replace: r\n });\n return new G(a);\n }, this.composeBlockData = async (e) => {\n const t = this.Editor.Tools.blockTools.get(e);\n return new D({\n tool: t,\n api: this.Editor.API,\n readOnly: !0,\n data: {},\n tunesData: {}\n }).data;\n }, this.update = async (e, t, o) => {\n const { BlockManager: i } = this.Editor, s = i.getBlockById(e);\n if (s === void 0)\n throw new Error(`Block with id \"${e}\" not found`);\n const r = await i.update(s, t, o);\n return new G(r);\n }, this.convert = async (e, t, o) => {\n var h, p;\n const { BlockManager: i, Tools: s } = this.Editor, r = i.getBlockById(e);\n if (!r)\n throw new Error(`Block with id \"${e}\" not found`);\n const l = s.blockTools.get(r.name), a = s.blockTools.get(t);\n if (!a)\n throw new Error(`Block Tool with type \"${t}\" not found`);\n const c = ((h = l == null ? void 0 : l.conversionConfig) == null ? void 0 : h.export) !== void 0, u = ((p = a.conversionConfig) == null ? void 0 : p.import) !== void 0;\n if (c && u) {\n const g = await i.convert(r, t, o);\n return new G(g);\n } else {\n const g = [\n c ? !1 : Le(r.name),\n u ? !1 : Le(t)\n ].filter(Boolean).join(\" and \");\n throw new Error(`Conversion from \"${r.name}\" to \"${t}\" is not possible. ${g} tool(s) should provide a \"conversionConfig\"`);\n }\n }, this.insertMany = (e, t = this.Editor.BlockManager.blocks.length - 1) => {\n this.validateIndex(t);\n const o = e.map(({ id: i, type: s, data: r }) => this.Editor.BlockManager.composeBlock({\n id: i,\n tool: s || this.config.defaultBlock,\n data: r\n }));\n return this.Editor.BlockManager.insertMany(o, t), o.map((i) => new G(i));\n };\n }\n /**\n * Available methods\n *\n * @returns {Blocks}\n */\n get methods() {\n return {\n clear: () => this.clear(),\n render: (e) => this.render(e),\n renderFromHTML: (e) => this.renderFromHTML(e),\n delete: (e) => this.delete(e),\n swap: (e, t) => this.swap(e, t),\n move: (e, t) => this.move(e, t),\n getBlockByIndex: (e) => this.getBlockByIndex(e),\n getById: (e) => this.getById(e),\n getCurrentBlockIndex: () => this.getCurrentBlockIndex(),\n getBlockIndex: (e) => this.getBlockIndex(e),\n getBlocksCount: () => this.getBlocksCount(),\n getBlockByElement: (e) => this.getBlockByElement(e),\n stretchBlock: (e, t = !0) => this.stretchBlock(e, t),\n insertNewBlock: () => this.insertNewBlock(),\n insert: this.insert,\n insertMany: this.insertMany,\n update: this.update,\n composeBlockData: this.composeBlockData,\n convert: this.convert\n };\n }\n /**\n * Returns Blocks count\n *\n * @returns {number}\n */\n getBlocksCount() {\n return this.Editor.BlockManager.blocks.length;\n }\n /**\n * Returns current block index\n *\n * @returns {number}\n */\n getCurrentBlockIndex() {\n return this.Editor.BlockManager.currentBlockIndex;\n }\n /**\n * Returns the index of Block by id;\n *\n * @param id - block id\n */\n getBlockIndex(e) {\n const t = this.Editor.BlockManager.getBlockById(e);\n if (!t) {\n X(\"There is no block with id `\" + e + \"`\", \"warn\");\n return;\n }\n return this.Editor.BlockManager.getBlockIndex(t);\n }\n /**\n * Returns BlockAPI object by Block index\n *\n * @param {number} index - index to get\n */\n getBlockByIndex(e) {\n const t = this.Editor.BlockManager.getBlockByIndex(e);\n if (t === void 0) {\n X(\"There is no block at index `\" + e + \"`\", \"warn\");\n return;\n }\n return new G(t);\n }\n /**\n * Returns BlockAPI object by Block id\n *\n * @param id - id of block to get\n */\n getById(e) {\n const t = this.Editor.BlockManager.getBlockById(e);\n return t === void 0 ? (X(\"There is no block with id `\" + e + \"`\", \"warn\"), null) : new G(t);\n }\n /**\n * Get Block API object by any child html element\n *\n * @param element - html element to get Block by\n */\n getBlockByElement(e) {\n const t = this.Editor.BlockManager.getBlock(e);\n if (t === void 0) {\n X(\"There is no block corresponding to element `\" + e + \"`\", \"warn\");\n return;\n }\n return new G(t);\n }\n /**\n * Call Block Manager method that swap Blocks\n *\n * @param {number} fromIndex - position of first Block\n * @param {number} toIndex - position of second Block\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n I(\n \"`blocks.swap()` method is deprecated and will be removed in the next major release. Use `block.move()` method instead\",\n \"info\"\n ), this.Editor.BlockManager.swap(e, t);\n }\n /**\n * Move block from one index to another\n *\n * @param {number} toIndex - index to move to\n * @param {number} fromIndex - index to move from\n */\n move(e, t) {\n this.Editor.BlockManager.move(e, t);\n }\n /**\n * Deletes Block\n *\n * @param {number} blockIndex - index of Block to delete\n */\n delete(e = this.Editor.BlockManager.currentBlockIndex) {\n try {\n const t = this.Editor.BlockManager.getBlockByIndex(e);\n this.Editor.BlockManager.removeBlock(t);\n } catch (t) {\n X(t, \"warn\");\n return;\n }\n this.Editor.BlockManager.blocks.length === 0 && this.Editor.BlockManager.insert(), this.Editor.BlockManager.currentBlock && this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock, this.Editor.Caret.positions.END), this.Editor.Toolbar.close();\n }\n /**\n * Clear Editor's area\n */\n async clear() {\n await this.Editor.BlockManager.clear(!0), this.Editor.InlineToolbar.close();\n }\n /**\n * Fills Editor with Blocks data\n *\n * @param {OutputData} data — Saved Editor data\n */\n async render(e) {\n if (e === void 0 || e.blocks === void 0)\n throw new Error(\"Incorrect data passed to the render() method\");\n this.Editor.ModificationsObserver.disable(), await this.Editor.BlockManager.clear(), await this.Editor.Renderer.render(e.blocks), this.Editor.ModificationsObserver.enable();\n }\n /**\n * Render passed HTML string\n *\n * @param {string} data - HTML string to render\n * @returns {Promise}\n */\n renderFromHTML(e) {\n return this.Editor.BlockManager.clear(), this.Editor.Paste.processText(e, !0);\n }\n /**\n * Stretch Block's content\n *\n * @param {number} index - index of Block to stretch\n * @param {boolean} status - true to enable, false to disable\n * @deprecated Use BlockAPI interface to stretch Blocks\n */\n stretchBlock(e, t = !0) {\n Ze(\n !0,\n \"blocks.stretchBlock()\",\n \"BlockAPI\"\n );\n const o = this.Editor.BlockManager.getBlockByIndex(e);\n o && (o.stretched = t);\n }\n /**\n * Insert new Block\n * After set caret to this Block\n *\n * @todo remove in 3.0.0\n * @deprecated with insert() method\n */\n insertNewBlock() {\n I(\"Method blocks.insertNewBlock() is deprecated and it will be removed in the next major release. Use blocks.insert() instead.\", \"warn\"), this.insert();\n }\n /**\n * Validated block index and throws an error if it's invalid\n *\n * @param index - index to validate\n */\n validateIndex(e) {\n if (typeof e != \"number\")\n throw new Error(\"Index should be a number\");\n if (e < 0)\n throw new Error(\"Index should be greater than or equal to 0\");\n if (e === null)\n throw new Error(\"Index should be greater than or equal to 0\");\n }\n}\nfunction Uo(n, e) {\n return typeof n == \"number\" ? e.BlockManager.getBlockByIndex(n) : typeof n == \"string\" ? e.BlockManager.getBlockById(n) : e.BlockManager.getBlockById(n.id);\n}\nclass jo extends y {\n constructor() {\n super(...arguments), this.setToFirstBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.firstBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.firstBlock, e, t), !0) : !1, this.setToLastBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.lastBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.lastBlock, e, t), !0) : !1, this.setToPreviousBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.previousBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.previousBlock, e, t), !0) : !1, this.setToNextBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.nextBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.nextBlock, e, t), !0) : !1, this.setToBlock = (e, t = this.Editor.Caret.positions.DEFAULT, o = 0) => {\n const i = Uo(e, this.Editor);\n return i === void 0 ? !1 : (this.Editor.Caret.setToBlock(i, t, o), !0);\n }, this.focus = (e = !1) => e ? this.setToLastBlock(this.Editor.Caret.positions.END) : this.setToFirstBlock(this.Editor.Caret.positions.START);\n }\n /**\n * Available methods\n *\n * @returns {Caret}\n */\n get methods() {\n return {\n setToFirstBlock: this.setToFirstBlock,\n setToLastBlock: this.setToLastBlock,\n setToPreviousBlock: this.setToPreviousBlock,\n setToNextBlock: this.setToNextBlock,\n setToBlock: this.setToBlock,\n focus: this.focus\n };\n }\n}\nclass $o extends y {\n /**\n * Available methods\n *\n * @returns {Events}\n */\n get methods() {\n return {\n emit: (e, t) => this.emit(e, t),\n off: (e, t) => this.off(e, t),\n on: (e, t) => this.on(e, t)\n };\n }\n /**\n * Subscribe on Events\n *\n * @param {string} eventName - event name to subscribe\n * @param {Function} callback - event handler\n */\n on(e, t) {\n this.eventsDispatcher.on(e, t);\n }\n /**\n * Emit event with data\n *\n * @param {string} eventName - event to emit\n * @param {object} data - event's data\n */\n emit(e, t) {\n this.eventsDispatcher.emit(e, t);\n }\n /**\n * Unsubscribe from Event\n *\n * @param {string} eventName - event to unsubscribe\n * @param {Function} callback - event handler\n */\n off(e, t) {\n this.eventsDispatcher.off(e, t);\n }\n}\nclass ot extends y {\n /**\n * Return namespace section for tool or block tune\n *\n * @param toolName - tool name\n * @param isTune - is tool a block tune\n */\n static getNamespace(e, t) {\n return t ? `blockTunes.${e}` : `tools.${e}`;\n }\n /**\n * Return I18n API methods with global dictionary access\n */\n get methods() {\n return {\n t: () => {\n X(\"I18n.t() method can be accessed only from Tools\", \"warn\");\n }\n };\n }\n /**\n * Return I18n API methods with tool namespaced dictionary\n *\n * @param toolName - tool name\n * @param isTune - is tool a block tune\n */\n getMethodsForTool(e, t) {\n return Object.assign(\n this.methods,\n {\n t: (o) => z.t(ot.getNamespace(e, t), o)\n }\n );\n }\n}\nclass Yo extends y {\n /**\n * Editor.js Core API modules\n */\n get methods() {\n return {\n blocks: this.Editor.BlocksAPI.methods,\n caret: this.Editor.CaretAPI.methods,\n tools: this.Editor.ToolsAPI.methods,\n events: this.Editor.EventsAPI.methods,\n listeners: this.Editor.ListenersAPI.methods,\n notifier: this.Editor.NotifierAPI.methods,\n sanitizer: this.Editor.SanitizerAPI.methods,\n saver: this.Editor.SaverAPI.methods,\n selection: this.Editor.SelectionAPI.methods,\n styles: this.Editor.StylesAPI.classes,\n toolbar: this.Editor.ToolbarAPI.methods,\n inlineToolbar: this.Editor.InlineToolbarAPI.methods,\n tooltip: this.Editor.TooltipAPI.methods,\n i18n: this.Editor.I18nAPI.methods,\n readOnly: this.Editor.ReadOnlyAPI.methods,\n ui: this.Editor.UiAPI.methods\n };\n }\n /**\n * Returns Editor.js Core API methods for passed tool\n *\n * @param toolName - tool name\n * @param isTune - is tool a block tune\n */\n getMethodsForTool(e, t) {\n return Object.assign(\n this.methods,\n {\n i18n: this.Editor.I18nAPI.getMethodsForTool(e, t)\n }\n );\n }\n}\nclass Wo extends y {\n /**\n * Available methods\n *\n * @returns {InlineToolbar}\n */\n get methods() {\n return {\n close: () => this.close(),\n open: () => this.open()\n };\n }\n /**\n * Open Inline Toolbar\n */\n open() {\n this.Editor.InlineToolbar.tryToShow();\n }\n /**\n * Close Inline Toolbar\n */\n close() {\n this.Editor.InlineToolbar.close();\n }\n}\nclass Ko extends y {\n /**\n * Available methods\n *\n * @returns {Listeners}\n */\n get methods() {\n return {\n on: (e, t, o, i) => this.on(e, t, o, i),\n off: (e, t, o, i) => this.off(e, t, o, i),\n offById: (e) => this.offById(e)\n };\n }\n /**\n * Ads a DOM event listener. Return it's id.\n *\n * @param {HTMLElement} element - Element to set handler to\n * @param {string} eventType - event type\n * @param {() => void} handler - event handler\n * @param {boolean} useCapture - capture event or not\n */\n on(e, t, o, i) {\n return this.listeners.on(e, t, o, i);\n }\n /**\n * Removes DOM listener from element\n *\n * @param {Element} element - Element to remove handler from\n * @param eventType - event type\n * @param handler - event handler\n * @param {boolean} useCapture - capture event or not\n */\n off(e, t, o, i) {\n this.listeners.off(e, t, o, i);\n }\n /**\n * Removes DOM listener by the listener id\n *\n * @param id - id of the listener to remove\n */\n offById(e) {\n this.listeners.offById(e);\n }\n}\nvar Ut = { exports: {} };\n(function(n, e) {\n (function(t, o) {\n n.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(s) {\n if (o[s])\n return o[s].exports;\n var r = o[s] = { i: s, l: !1, exports: {} };\n return t[s].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(s, r, l) {\n i.o(s, r) || Object.defineProperty(s, r, { enumerable: !0, get: l });\n }, i.r = function(s) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(s, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(s, \"__esModule\", { value: !0 });\n }, i.t = function(s, r) {\n if (1 & r && (s = i(s)), 8 & r || 4 & r && typeof s == \"object\" && s && s.__esModule)\n return s;\n var l = /* @__PURE__ */ Object.create(null);\n if (i.r(l), Object.defineProperty(l, \"default\", { enumerable: !0, value: s }), 2 & r && typeof s != \"string\")\n for (var a in s)\n i.d(l, a, (function(c) {\n return s[c];\n }).bind(null, a));\n return l;\n }, i.n = function(s) {\n var r = s && s.__esModule ? function() {\n return s.default;\n } : function() {\n return s;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(s, r) {\n return Object.prototype.hasOwnProperty.call(s, r);\n }, i.p = \"/\", i(i.s = 0);\n }([function(t, o, i) {\n i(1), /*!\n * Codex JavaScript Notification module\n * https://github.com/codex-team/js-notifier\n */\n t.exports = function() {\n var s = i(6), r = \"cdx-notify--bounce-in\", l = null;\n return { show: function(a) {\n if (a.message) {\n (function() {\n if (l)\n return !0;\n l = s.getWrapper(), document.body.appendChild(l);\n })();\n var c = null, u = a.time || 8e3;\n switch (a.type) {\n case \"confirm\":\n c = s.confirm(a);\n break;\n case \"prompt\":\n c = s.prompt(a);\n break;\n default:\n c = s.alert(a), window.setTimeout(function() {\n c.remove();\n }, u);\n }\n l.appendChild(c), c.classList.add(r);\n }\n } };\n }();\n }, function(t, o, i) {\n var s = i(2);\n typeof s == \"string\" && (s = [[t.i, s, \"\"]]);\n var r = { hmr: !0, transform: void 0, insertInto: void 0 };\n i(4)(s, r), s.locals && (t.exports = s.locals);\n }, function(t, o, i) {\n (t.exports = i(3)(!1)).push([t.i, `.cdx-notify--error{background:#fffbfb!important}.cdx-notify--error::before{background:#fb5d5d!important}.cdx-notify__input{max-width:130px;padding:5px 10px;background:#f7f7f7;border:0;border-radius:3px;font-size:13px;color:#656b7c;outline:0}.cdx-notify__input:-ms-input-placeholder{color:#656b7c}.cdx-notify__input::placeholder{color:#656b7c}.cdx-notify__input:focus:-ms-input-placeholder{color:rgba(101,107,124,.3)}.cdx-notify__input:focus::placeholder{color:rgba(101,107,124,.3)}.cdx-notify__button{border:none;border-radius:3px;font-size:13px;padding:5px 10px;cursor:pointer}.cdx-notify__button:last-child{margin-left:10px}.cdx-notify__button--cancel{background:#f2f5f7;box-shadow:0 2px 1px 0 rgba(16,19,29,0);color:#656b7c}.cdx-notify__button--cancel:hover{background:#eee}.cdx-notify__button--confirm{background:#34c992;box-shadow:0 1px 1px 0 rgba(18,49,35,.05);color:#fff}.cdx-notify__button--confirm:hover{background:#33b082}.cdx-notify__btns-wrapper{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin-top:5px}.cdx-notify__cross{position:absolute;top:5px;right:5px;width:10px;height:10px;padding:5px;opacity:.54;cursor:pointer}.cdx-notify__cross::after,.cdx-notify__cross::before{content:'';position:absolute;left:9px;top:5px;height:12px;width:2px;background:#575d67}.cdx-notify__cross::before{transform:rotate(-45deg)}.cdx-notify__cross::after{transform:rotate(45deg)}.cdx-notify__cross:hover{opacity:1}.cdx-notifies{position:fixed;z-index:2;bottom:20px;left:20px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen,Ubuntu,Cantarell,\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif}.cdx-notify{position:relative;width:220px;margin-top:15px;padding:13px 16px;background:#fff;box-shadow:0 11px 17px 0 rgba(23,32,61,.13);border-radius:5px;font-size:14px;line-height:1.4em;word-wrap:break-word}.cdx-notify::before{content:'';position:absolute;display:block;top:0;left:0;width:3px;height:calc(100% - 6px);margin:3px;border-radius:5px;background:0 0}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}100%{transform:scale(1)}}.cdx-notify--bounce-in{animation-name:bounceIn;animation-duration:.6s;animation-iteration-count:1}.cdx-notify--success{background:#fafffe!important}.cdx-notify--success::before{background:#41ffb1!important}`, \"\"]);\n }, function(t, o) {\n t.exports = function(i) {\n var s = [];\n return s.toString = function() {\n return this.map(function(r) {\n var l = function(a, c) {\n var u = a[1] || \"\", h = a[3];\n if (!h)\n return u;\n if (c && typeof btoa == \"function\") {\n var p = (f = h, \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(f)))) + \" */\"), g = h.sources.map(function(k) {\n return \"/*# sourceURL=\" + h.sourceRoot + k + \" */\";\n });\n return [u].concat(g).concat([p]).join(`\n`);\n }\n var f;\n return [u].join(`\n`);\n }(r, i);\n return r[2] ? \"@media \" + r[2] + \"{\" + l + \"}\" : l;\n }).join(\"\");\n }, s.i = function(r, l) {\n typeof r == \"string\" && (r = [[null, r, \"\"]]);\n for (var a = {}, c = 0; c < this.length; c++) {\n var u = this[c][0];\n typeof u == \"number\" && (a[u] = !0);\n }\n for (c = 0; c < r.length; c++) {\n var h = r[c];\n typeof h[0] == \"number\" && a[h[0]] || (l && !h[2] ? h[2] = l : l && (h[2] = \"(\" + h[2] + \") and (\" + l + \")\"), s.push(h));\n }\n }, s;\n };\n }, function(t, o, i) {\n var s, r, l = {}, a = (s = function() {\n return window && document && document.all && !window.atob;\n }, function() {\n return r === void 0 && (r = s.apply(this, arguments)), r;\n }), c = function(v) {\n var m = {};\n return function(x) {\n if (typeof x == \"function\")\n return x();\n if (m[x] === void 0) {\n var E = (function(M) {\n return document.querySelector(M);\n }).call(this, x);\n if (window.HTMLIFrameElement && E instanceof window.HTMLIFrameElement)\n try {\n E = E.contentDocument.head;\n } catch {\n E = null;\n }\n m[x] = E;\n }\n return m[x];\n };\n }(), u = null, h = 0, p = [], g = i(5);\n function f(v, m) {\n for (var x = 0; x < v.length; x++) {\n var E = v[x], M = l[E.id];\n if (M) {\n M.refs++;\n for (var T = 0; T < M.parts.length; T++)\n M.parts[T](E.parts[T]);\n for (; T < E.parts.length; T++)\n M.parts.push(j(E.parts[T], m));\n } else {\n var P = [];\n for (T = 0; T < E.parts.length; T++)\n P.push(j(E.parts[T], m));\n l[E.id] = { id: E.id, refs: 1, parts: P };\n }\n }\n }\n function k(v, m) {\n for (var x = [], E = {}, M = 0; M < v.length; M++) {\n var T = v[M], P = m.base ? T[0] + m.base : T[0], B = { css: T[1], media: T[2], sourceMap: T[3] };\n E[P] ? E[P].parts.push(B) : x.push(E[P] = { id: P, parts: [B] });\n }\n return x;\n }\n function C(v, m) {\n var x = c(v.insertInto);\n if (!x)\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n var E = p[p.length - 1];\n if (v.insertAt === \"top\")\n E ? E.nextSibling ? x.insertBefore(m, E.nextSibling) : x.appendChild(m) : x.insertBefore(m, x.firstChild), p.push(m);\n else if (v.insertAt === \"bottom\")\n x.appendChild(m);\n else {\n if (typeof v.insertAt != \"object\" || !v.insertAt.before)\n throw new Error(`[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n`);\n var M = c(v.insertInto + \" \" + v.insertAt.before);\n x.insertBefore(m, M);\n }\n }\n function S(v) {\n if (v.parentNode === null)\n return !1;\n v.parentNode.removeChild(v);\n var m = p.indexOf(v);\n m >= 0 && p.splice(m, 1);\n }\n function _(v) {\n var m = document.createElement(\"style\");\n return v.attrs.type === void 0 && (v.attrs.type = \"text/css\"), ee(m, v.attrs), C(v, m), m;\n }\n function ee(v, m) {\n Object.keys(m).forEach(function(x) {\n v.setAttribute(x, m[x]);\n });\n }\n function j(v, m) {\n var x, E, M, T;\n if (m.transform && v.css) {\n if (!(T = m.transform(v.css)))\n return function() {\n };\n v.css = T;\n }\n if (m.singleton) {\n var P = h++;\n x = u || (u = _(m)), E = fe.bind(null, x, P, !1), M = fe.bind(null, x, P, !0);\n } else\n v.sourceMap && typeof URL == \"function\" && typeof URL.createObjectURL == \"function\" && typeof URL.revokeObjectURL == \"function\" && typeof Blob == \"function\" && typeof btoa == \"function\" ? (x = function(B) {\n var Y = document.createElement(\"link\");\n return B.attrs.type === void 0 && (B.attrs.type = \"text/css\"), B.attrs.rel = \"stylesheet\", ee(Y, B.attrs), C(B, Y), Y;\n }(m), E = (function(B, Y, ge) {\n var ie = ge.css, He = ge.sourceMap, mo = Y.convertToAbsoluteUrls === void 0 && He;\n (Y.convertToAbsoluteUrls || mo) && (ie = g(ie)), He && (ie += `\n/*# sourceMappingURL=data:application/json;base64,` + btoa(unescape(encodeURIComponent(JSON.stringify(He)))) + \" */\");\n var bo = new Blob([ie], { type: \"text/css\" }), mt = B.href;\n B.href = URL.createObjectURL(bo), mt && URL.revokeObjectURL(mt);\n }).bind(null, x, m), M = function() {\n S(x), x.href && URL.revokeObjectURL(x.href);\n }) : (x = _(m), E = (function(B, Y) {\n var ge = Y.css, ie = Y.media;\n if (ie && B.setAttribute(\"media\", ie), B.styleSheet)\n B.styleSheet.cssText = ge;\n else {\n for (; B.firstChild; )\n B.removeChild(B.firstChild);\n B.appendChild(document.createTextNode(ge));\n }\n }).bind(null, x), M = function() {\n S(x);\n });\n return E(v), function(B) {\n if (B) {\n if (B.css === v.css && B.media === v.media && B.sourceMap === v.sourceMap)\n return;\n E(v = B);\n } else\n M();\n };\n }\n t.exports = function(v, m) {\n if (typeof DEBUG < \"u\" && DEBUG && typeof document != \"object\")\n throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n (m = m || {}).attrs = typeof m.attrs == \"object\" ? m.attrs : {}, m.singleton || typeof m.singleton == \"boolean\" || (m.singleton = a()), m.insertInto || (m.insertInto = \"head\"), m.insertAt || (m.insertAt = \"bottom\");\n var x = k(v, m);\n return f(x, m), function(E) {\n for (var M = [], T = 0; T < x.length; T++) {\n var P = x[T];\n (B = l[P.id]).refs--, M.push(B);\n }\n for (E && f(k(E, m), m), T = 0; T < M.length; T++) {\n var B;\n if ((B = M[T]).refs === 0) {\n for (var Y = 0; Y < B.parts.length; Y++)\n B.parts[Y]();\n delete l[B.id];\n }\n }\n };\n };\n var $, oe = ($ = [], function(v, m) {\n return $[v] = m, $.filter(Boolean).join(`\n`);\n });\n function fe(v, m, x, E) {\n var M = x ? \"\" : E.css;\n if (v.styleSheet)\n v.styleSheet.cssText = oe(m, M);\n else {\n var T = document.createTextNode(M), P = v.childNodes;\n P[m] && v.removeChild(P[m]), P.length ? v.insertBefore(T, P[m]) : v.appendChild(T);\n }\n }\n }, function(t, o) {\n t.exports = function(i) {\n var s = typeof window < \"u\" && window.location;\n if (!s)\n throw new Error(\"fixUrls requires window.location\");\n if (!i || typeof i != \"string\")\n return i;\n var r = s.protocol + \"//\" + s.host, l = r + s.pathname.replace(/\\/[^\\/]*$/, \"/\");\n return i.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(a, c) {\n var u, h = c.trim().replace(/^\"(.*)\"$/, function(p, g) {\n return g;\n }).replace(/^'(.*)'$/, function(p, g) {\n return g;\n });\n return /^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(h) ? a : (u = h.indexOf(\"//\") === 0 ? h : h.indexOf(\"/\") === 0 ? r + h : l + h.replace(/^\\.\\//, \"\"), \"url(\" + JSON.stringify(u) + \")\");\n });\n };\n }, function(t, o, i) {\n var s, r, l, a, c, u, h, p, g;\n t.exports = (s = \"cdx-notifies\", r = \"cdx-notify\", l = \"cdx-notify__cross\", a = \"cdx-notify__button--confirm\", c = \"cdx-notify__button--cancel\", u = \"cdx-notify__input\", h = \"cdx-notify__button\", p = \"cdx-notify__btns-wrapper\", { alert: g = function(f) {\n var k = document.createElement(\"DIV\"), C = document.createElement(\"DIV\"), S = f.message, _ = f.style;\n return k.classList.add(r), _ && k.classList.add(r + \"--\" + _), k.innerHTML = S, C.classList.add(l), C.addEventListener(\"click\", k.remove.bind(k)), k.appendChild(C), k;\n }, confirm: function(f) {\n var k = g(f), C = document.createElement(\"div\"), S = document.createElement(\"button\"), _ = document.createElement(\"button\"), ee = k.querySelector(\".\" + l), j = f.cancelHandler, $ = f.okHandler;\n return C.classList.add(p), S.innerHTML = f.okText || \"Confirm\", _.innerHTML = f.cancelText || \"Cancel\", S.classList.add(h), _.classList.add(h), S.classList.add(a), _.classList.add(c), j && typeof j == \"function\" && (_.addEventListener(\"click\", j), ee.addEventListener(\"click\", j)), $ && typeof $ == \"function\" && S.addEventListener(\"click\", $), S.addEventListener(\"click\", k.remove.bind(k)), _.addEventListener(\"click\", k.remove.bind(k)), C.appendChild(S), C.appendChild(_), k.appendChild(C), k;\n }, prompt: function(f) {\n var k = g(f), C = document.createElement(\"div\"), S = document.createElement(\"button\"), _ = document.createElement(\"input\"), ee = k.querySelector(\".\" + l), j = f.cancelHandler, $ = f.okHandler;\n return C.classList.add(p), S.innerHTML = f.okText || \"Ok\", S.classList.add(h), S.classList.add(a), _.classList.add(u), f.placeholder && _.setAttribute(\"placeholder\", f.placeholder), f.default && (_.value = f.default), f.inputType && (_.type = f.inputType), j && typeof j == \"function\" && ee.addEventListener(\"click\", j), $ && typeof $ == \"function\" && S.addEventListener(\"click\", function() {\n $(_.value);\n }), S.addEventListener(\"click\", k.remove.bind(k)), C.appendChild(_), C.appendChild(S), k.appendChild(C), k;\n }, getWrapper: function() {\n var f = document.createElement(\"DIV\");\n return f.classList.add(s), f;\n } });\n }]);\n });\n})(Ut);\nvar Xo = Ut.exports;\nconst Vo = /* @__PURE__ */ Fe(Xo);\nclass qo {\n /**\n * Show web notification\n *\n * @param {NotifierOptions | ConfirmNotifierOptions | PromptNotifierOptions} options - notification options\n */\n show(e) {\n Vo.show(e);\n }\n}\nclass Zo extends y {\n /**\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.notifier = new qo();\n }\n /**\n * Available methods\n */\n get methods() {\n return {\n show: (e) => this.show(e)\n };\n }\n /**\n * Show notification\n *\n * @param {NotifierOptions} options - message option\n */\n show(e) {\n return this.notifier.show(e);\n }\n}\nclass Go extends y {\n /**\n * Available methods\n */\n get methods() {\n const e = () => this.isEnabled;\n return {\n toggle: (t) => this.toggle(t),\n get isEnabled() {\n return e();\n }\n };\n }\n /**\n * Set or toggle read-only state\n *\n * @param {boolean|undefined} state - set or toggle state\n * @returns {boolean} current value\n */\n toggle(e) {\n return this.Editor.ReadOnly.toggle(e);\n }\n /**\n * Returns current read-only state\n */\n get isEnabled() {\n return this.Editor.ReadOnly.isEnabled;\n }\n}\nvar jt = { exports: {} };\n(function(n, e) {\n (function(t, o) {\n n.exports = o();\n })(ko, function() {\n function t(h) {\n var p = h.tags, g = Object.keys(p), f = g.map(function(k) {\n return typeof p[k];\n }).every(function(k) {\n return k === \"object\" || k === \"boolean\" || k === \"function\";\n });\n if (!f)\n throw new Error(\"The configuration was invalid\");\n this.config = h;\n }\n var o = [\"P\", \"LI\", \"TD\", \"TH\", \"DIV\", \"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\", \"PRE\"];\n function i(h) {\n return o.indexOf(h.nodeName) !== -1;\n }\n var s = [\"A\", \"B\", \"STRONG\", \"I\", \"EM\", \"SUB\", \"SUP\", \"U\", \"STRIKE\"];\n function r(h) {\n return s.indexOf(h.nodeName) !== -1;\n }\n t.prototype.clean = function(h) {\n const p = document.implementation.createHTMLDocument(), g = p.createElement(\"div\");\n return g.innerHTML = h, this._sanitize(p, g), g.innerHTML;\n }, t.prototype._sanitize = function(h, p) {\n var g = l(h, p), f = g.firstChild();\n if (f)\n do {\n if (f.nodeType === Node.TEXT_NODE)\n if (f.data.trim() === \"\" && (f.previousElementSibling && i(f.previousElementSibling) || f.nextElementSibling && i(f.nextElementSibling))) {\n p.removeChild(f), this._sanitize(h, p);\n break;\n } else\n continue;\n if (f.nodeType === Node.COMMENT_NODE) {\n p.removeChild(f), this._sanitize(h, p);\n break;\n }\n var k = r(f), C;\n k && (C = Array.prototype.some.call(f.childNodes, i));\n var S = !!p.parentNode, _ = i(p) && i(f) && S, ee = f.nodeName.toLowerCase(), j = a(this.config, ee, f), $ = k && C;\n if ($ || c(f, j) || !this.config.keepNestedBlockElements && _) {\n if (!(f.nodeName === \"SCRIPT\" || f.nodeName === \"STYLE\"))\n for (; f.childNodes.length > 0; )\n p.insertBefore(f.childNodes[0], f);\n p.removeChild(f), this._sanitize(h, p);\n break;\n }\n for (var oe = 0; oe < f.attributes.length; oe += 1) {\n var fe = f.attributes[oe];\n u(fe, j, f) && (f.removeAttribute(fe.name), oe = oe - 1);\n }\n this._sanitize(h, f);\n } while (f = g.nextSibling());\n };\n function l(h, p) {\n return h.createTreeWalker(\n p,\n NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT,\n null,\n !1\n );\n }\n function a(h, p, g) {\n return typeof h.tags[p] == \"function\" ? h.tags[p](g) : h.tags[p];\n }\n function c(h, p) {\n return typeof p > \"u\" ? !0 : typeof p == \"boolean\" ? !p : !1;\n }\n function u(h, p, g) {\n var f = h.name.toLowerCase();\n return p === !0 ? !1 : typeof p[f] == \"function\" ? !p[f](h.value, g) : typeof p[f] > \"u\" || p[f] === !1 ? !0 : typeof p[f] == \"string\" ? p[f] !== h.value : !1;\n }\n return t;\n });\n})(jt);\nvar Jo = jt.exports;\nconst Qo = /* @__PURE__ */ Fe(Jo);\nfunction it(n, e) {\n return n.map((t) => {\n const o = O(e) ? e(t.tool) : e;\n return V(o) || (t.data = st(t.data, o)), t;\n });\n}\nfunction q(n, e = {}) {\n const t = {\n tags: e\n };\n return new Qo(t).clean(n);\n}\nfunction st(n, e) {\n return Array.isArray(n) ? ei(n, e) : R(n) ? ti(n, e) : Q(n) ? oi(n, e) : n;\n}\nfunction ei(n, e) {\n return n.map((t) => st(t, e));\n}\nfunction ti(n, e) {\n const t = {};\n for (const o in n) {\n if (!Object.prototype.hasOwnProperty.call(n, o))\n continue;\n const i = n[o], s = ii(e[o]) ? e[o] : e;\n t[o] = st(i, s);\n }\n return t;\n}\nfunction oi(n, e) {\n return R(e) ? q(n, e) : e === !1 ? q(n, {}) : n;\n}\nfunction ii(n) {\n return R(n) || yo(n) || O(n);\n}\nclass si extends y {\n /**\n * Available methods\n *\n * @returns {SanitizerConfig}\n */\n get methods() {\n return {\n clean: (e, t) => this.clean(e, t)\n };\n }\n /**\n * Perform sanitizing of a string\n *\n * @param {string} taintString - what to sanitize\n * @param {SanitizerConfig} config - sanitizer config\n * @returns {string}\n */\n clean(e, t) {\n return q(e, t);\n }\n}\nclass ni extends y {\n /**\n * Available methods\n *\n * @returns {Saver}\n */\n get methods() {\n return {\n save: () => this.save()\n };\n }\n /**\n * Return Editor's data\n *\n * @returns {OutputData}\n */\n save() {\n const e = \"Editor's content can not be saved in read-only mode\";\n return this.Editor.ReadOnly.isEnabled ? (X(e, \"warn\"), Promise.reject(new Error(e))) : this.Editor.Saver.save();\n }\n}\nclass ri extends y {\n constructor() {\n super(...arguments), this.selectionUtils = new b();\n }\n /**\n * Available methods\n *\n * @returns {SelectionAPIInterface}\n */\n get methods() {\n return {\n findParentTag: (e, t) => this.findParentTag(e, t),\n expandToTag: (e) => this.expandToTag(e),\n save: () => this.selectionUtils.save(),\n restore: () => this.selectionUtils.restore(),\n setFakeBackground: () => this.selectionUtils.setFakeBackground(),\n removeFakeBackground: () => this.selectionUtils.removeFakeBackground()\n };\n }\n /**\n * Looks ahead from selection and find passed tag with class name\n *\n * @param {string} tagName - tag to find\n * @param {string} className - tag's class name\n * @returns {HTMLElement|null}\n */\n findParentTag(e, t) {\n return this.selectionUtils.findParentTag(e, t);\n }\n /**\n * Expand selection to passed tag\n *\n * @param {HTMLElement} node - tag that should contain selection\n */\n expandToTag(e) {\n this.selectionUtils.expandToTag(e);\n }\n}\nclass li extends y {\n /**\n * Available methods\n */\n get methods() {\n return {\n getBlockTools: () => Array.from(this.Editor.Tools.blockTools.values())\n };\n }\n}\nclass ai extends y {\n /**\n * Exported classes\n */\n get classes() {\n return {\n /**\n * Base Block styles\n */\n block: \"cdx-block\",\n /**\n * Inline Tools styles\n */\n inlineToolButton: \"ce-inline-tool\",\n inlineToolButtonActive: \"ce-inline-tool--active\",\n /**\n * UI elements\n */\n input: \"cdx-input\",\n loader: \"cdx-loader\",\n button: \"cdx-button\",\n /**\n * Settings styles\n */\n settingsButton: \"cdx-settings-button\",\n settingsButtonActive: \"cdx-settings-button--active\"\n };\n }\n}\nclass ci extends y {\n /**\n * Available methods\n *\n * @returns {Toolbar}\n */\n get methods() {\n return {\n close: () => this.close(),\n open: () => this.open(),\n toggleBlockSettings: (e) => this.toggleBlockSettings(e),\n toggleToolbox: (e) => this.toggleToolbox(e)\n };\n }\n /**\n * Open toolbar\n */\n open() {\n this.Editor.Toolbar.moveAndOpen();\n }\n /**\n * Close toolbar and all included elements\n */\n close() {\n this.Editor.Toolbar.close();\n }\n /**\n * Toggles Block Setting of the current block\n *\n * @param {boolean} openingState — opening state of Block Setting\n */\n toggleBlockSettings(e) {\n if (this.Editor.BlockManager.currentBlockIndex === -1) {\n X(\"Could't toggle the Toolbar because there is no block selected \", \"warn\");\n return;\n }\n e ?? !this.Editor.BlockSettings.opened ? (this.Editor.Toolbar.moveAndOpen(), this.Editor.BlockSettings.open()) : this.Editor.BlockSettings.close();\n }\n /**\n * Open toolbox\n *\n * @param {boolean} openingState - Opening state of toolbox\n */\n toggleToolbox(e) {\n if (this.Editor.BlockManager.currentBlockIndex === -1) {\n X(\"Could't toggle the Toolbox because there is no block selected \", \"warn\");\n return;\n }\n e ?? !this.Editor.Toolbar.toolbox.opened ? (this.Editor.Toolbar.moveAndOpen(), this.Editor.Toolbar.toolbox.open()) : this.Editor.Toolbar.toolbox.close();\n }\n}\nvar $t = { exports: {} };\n/*!\n * CodeX.Tooltips\n * \n * @version 1.0.5\n * \n * @licence MIT\n * @author CodeX \n * \n * \n */\n(function(n, e) {\n (function(t, o) {\n n.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(s) {\n if (o[s])\n return o[s].exports;\n var r = o[s] = { i: s, l: !1, exports: {} };\n return t[s].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(s, r, l) {\n i.o(s, r) || Object.defineProperty(s, r, { enumerable: !0, get: l });\n }, i.r = function(s) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(s, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(s, \"__esModule\", { value: !0 });\n }, i.t = function(s, r) {\n if (1 & r && (s = i(s)), 8 & r || 4 & r && typeof s == \"object\" && s && s.__esModule)\n return s;\n var l = /* @__PURE__ */ Object.create(null);\n if (i.r(l), Object.defineProperty(l, \"default\", { enumerable: !0, value: s }), 2 & r && typeof s != \"string\")\n for (var a in s)\n i.d(l, a, (function(c) {\n return s[c];\n }).bind(null, a));\n return l;\n }, i.n = function(s) {\n var r = s && s.__esModule ? function() {\n return s.default;\n } : function() {\n return s;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(s, r) {\n return Object.prototype.hasOwnProperty.call(s, r);\n }, i.p = \"\", i(i.s = 0);\n }([function(t, o, i) {\n t.exports = i(1);\n }, function(t, o, i) {\n i.r(o), i.d(o, \"default\", function() {\n return s;\n });\n class s {\n constructor() {\n this.nodes = { wrapper: null, content: null }, this.showed = !1, this.offsetTop = 10, this.offsetLeft = 10, this.offsetRight = 10, this.hidingDelay = 0, this.handleWindowScroll = () => {\n this.showed && this.hide(!0);\n }, this.loadStyles(), this.prepare(), window.addEventListener(\"scroll\", this.handleWindowScroll, { passive: !0 });\n }\n get CSS() {\n return { tooltip: \"ct\", tooltipContent: \"ct__content\", tooltipShown: \"ct--shown\", placement: { left: \"ct--left\", bottom: \"ct--bottom\", right: \"ct--right\", top: \"ct--top\" } };\n }\n show(l, a, c) {\n this.nodes.wrapper || this.prepare(), this.hidingTimeout && clearTimeout(this.hidingTimeout);\n const u = Object.assign({ placement: \"bottom\", marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0, delay: 70, hidingDelay: 0 }, c);\n if (u.hidingDelay && (this.hidingDelay = u.hidingDelay), this.nodes.content.innerHTML = \"\", typeof a == \"string\")\n this.nodes.content.appendChild(document.createTextNode(a));\n else {\n if (!(a instanceof Node))\n throw Error(\"[CodeX Tooltip] Wrong type of «content» passed. It should be an instance of Node or String. But \" + typeof a + \" given.\");\n this.nodes.content.appendChild(a);\n }\n switch (this.nodes.wrapper.classList.remove(...Object.values(this.CSS.placement)), u.placement) {\n case \"top\":\n this.placeTop(l, u);\n break;\n case \"left\":\n this.placeLeft(l, u);\n break;\n case \"right\":\n this.placeRight(l, u);\n break;\n case \"bottom\":\n default:\n this.placeBottom(l, u);\n }\n u && u.delay ? this.showingTimeout = setTimeout(() => {\n this.nodes.wrapper.classList.add(this.CSS.tooltipShown), this.showed = !0;\n }, u.delay) : (this.nodes.wrapper.classList.add(this.CSS.tooltipShown), this.showed = !0);\n }\n hide(l = !1) {\n if (this.hidingDelay && !l)\n return this.hidingTimeout && clearTimeout(this.hidingTimeout), void (this.hidingTimeout = setTimeout(() => {\n this.hide(!0);\n }, this.hidingDelay));\n this.nodes.wrapper.classList.remove(this.CSS.tooltipShown), this.showed = !1, this.showingTimeout && clearTimeout(this.showingTimeout);\n }\n onHover(l, a, c) {\n l.addEventListener(\"mouseenter\", () => {\n this.show(l, a, c);\n }), l.addEventListener(\"mouseleave\", () => {\n this.hide();\n });\n }\n destroy() {\n this.nodes.wrapper.remove(), window.removeEventListener(\"scroll\", this.handleWindowScroll);\n }\n prepare() {\n this.nodes.wrapper = this.make(\"div\", this.CSS.tooltip), this.nodes.content = this.make(\"div\", this.CSS.tooltipContent), this.append(this.nodes.wrapper, this.nodes.content), this.append(document.body, this.nodes.wrapper);\n }\n loadStyles() {\n const l = \"codex-tooltips-style\";\n if (document.getElementById(l))\n return;\n const a = i(2), c = this.make(\"style\", null, { textContent: a.toString(), id: l });\n this.prepend(document.head, c);\n }\n placeBottom(l, a) {\n const c = l.getBoundingClientRect(), u = c.left + l.clientWidth / 2 - this.nodes.wrapper.offsetWidth / 2, h = c.bottom + window.pageYOffset + this.offsetTop + a.marginTop;\n this.applyPlacement(\"bottom\", u, h);\n }\n placeTop(l, a) {\n const c = l.getBoundingClientRect(), u = c.left + l.clientWidth / 2 - this.nodes.wrapper.offsetWidth / 2, h = c.top + window.pageYOffset - this.nodes.wrapper.clientHeight - this.offsetTop;\n this.applyPlacement(\"top\", u, h);\n }\n placeLeft(l, a) {\n const c = l.getBoundingClientRect(), u = c.left - this.nodes.wrapper.offsetWidth - this.offsetLeft - a.marginLeft, h = c.top + window.pageYOffset + l.clientHeight / 2 - this.nodes.wrapper.offsetHeight / 2;\n this.applyPlacement(\"left\", u, h);\n }\n placeRight(l, a) {\n const c = l.getBoundingClientRect(), u = c.right + this.offsetRight + a.marginRight, h = c.top + window.pageYOffset + l.clientHeight / 2 - this.nodes.wrapper.offsetHeight / 2;\n this.applyPlacement(\"right\", u, h);\n }\n applyPlacement(l, a, c) {\n this.nodes.wrapper.classList.add(this.CSS.placement[l]), this.nodes.wrapper.style.left = a + \"px\", this.nodes.wrapper.style.top = c + \"px\";\n }\n make(l, a = null, c = {}) {\n const u = document.createElement(l);\n Array.isArray(a) ? u.classList.add(...a) : a && u.classList.add(a);\n for (const h in c)\n c.hasOwnProperty(h) && (u[h] = c[h]);\n return u;\n }\n append(l, a) {\n Array.isArray(a) ? a.forEach((c) => l.appendChild(c)) : l.appendChild(a);\n }\n prepend(l, a) {\n Array.isArray(a) ? (a = a.reverse()).forEach((c) => l.prepend(c)) : l.prepend(a);\n }\n }\n }, function(t, o) {\n t.exports = `.ct{z-index:999;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-transition:opacity 50ms ease-in,-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,transform 70ms cubic-bezier(.215,.61,.355,1),-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);will-change:opacity,top,left;-webkit-box-shadow:0 8px 12px 0 rgba(29,32,43,.17),0 4px 5px -3px rgba(5,6,12,.49);box-shadow:0 8px 12px 0 rgba(29,32,43,.17),0 4px 5px -3px rgba(5,6,12,.49);border-radius:9px}.ct,.ct:before{position:absolute;top:0;left:0}.ct:before{content:\"\";bottom:0;right:0;background-color:#1d202b;z-index:-1;border-radius:4px}@supports(-webkit-mask-box-image:url(\"\")){.ct:before{border-radius:0;-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 48% 41% 37.9% 53.3%}}@media (--mobile){.ct{display:none}}.ct__content{padding:6px 10px;color:#cdd1e0;font-size:12px;text-align:center;letter-spacing:.02em;line-height:1em}.ct:after{content:\"\";width:8px;height:8px;position:absolute;background-color:#1d202b;z-index:-1}.ct--bottom{-webkit-transform:translateY(5px);transform:translateY(5px)}.ct--bottom:after{top:-3px;left:50%;-webkit-transform:translateX(-50%) rotate(-45deg);transform:translateX(-50%) rotate(-45deg)}.ct--top{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.ct--top:after{top:auto;bottom:-3px;left:50%;-webkit-transform:translateX(-50%) rotate(-45deg);transform:translateX(-50%) rotate(-45deg)}.ct--left{-webkit-transform:translateX(-5px);transform:translateX(-5px)}.ct--left:after{top:50%;left:auto;right:0;-webkit-transform:translate(41.6%,-50%) rotate(-45deg);transform:translate(41.6%,-50%) rotate(-45deg)}.ct--right{-webkit-transform:translateX(5px);transform:translateX(5px)}.ct--right:after{top:50%;left:0;-webkit-transform:translate(-41.6%,-50%) rotate(-45deg);transform:translate(-41.6%,-50%) rotate(-45deg)}.ct--shown{opacity:1;-webkit-transform:none;transform:none}`;\n }]).default;\n });\n})($t);\nvar di = $t.exports;\nconst hi = /* @__PURE__ */ Fe(di);\nlet U = null;\nfunction nt() {\n U || (U = new hi());\n}\nfunction ui(n, e, t) {\n nt(), U == null || U.show(n, e, t);\n}\nfunction Ne(n = !1) {\n nt(), U == null || U.hide(n);\n}\nfunction Pe(n, e, t) {\n nt(), U == null || U.onHover(n, e, t);\n}\nfunction pi() {\n U == null || U.destroy(), U = null;\n}\nclass fi extends y {\n /**\n * @class\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n });\n }\n /**\n * Available methods\n */\n get methods() {\n return {\n show: (e, t, o) => this.show(e, t, o),\n hide: () => this.hide(),\n onHover: (e, t, o) => this.onHover(e, t, o)\n };\n }\n /**\n * Method show tooltip on element with passed HTML content\n *\n * @param {HTMLElement} element - element on which tooltip should be shown\n * @param {TooltipContent} content - tooltip content\n * @param {TooltipOptions} options - tooltip options\n */\n show(e, t, o) {\n ui(e, t, o);\n }\n /**\n * Method hides tooltip on HTML page\n */\n hide() {\n Ne();\n }\n /**\n * Decorator for showing Tooltip by mouseenter/mouseleave\n *\n * @param {HTMLElement} element - element on which tooltip should be shown\n * @param {TooltipContent} content - tooltip content\n * @param {TooltipOptions} options - tooltip options\n */\n onHover(e, t, o) {\n Pe(e, t, o);\n }\n}\nclass gi extends y {\n /**\n * Available methods / getters\n */\n get methods() {\n return {\n nodes: this.editorNodes\n /**\n * There can be added some UI methods, like toggleThinMode() etc\n */\n };\n }\n /**\n * Exported classes\n */\n get editorNodes() {\n return {\n /**\n * Top-level editor instance wrapper\n */\n wrapper: this.Editor.UI.nodes.wrapper,\n /**\n * Element that holds all the Blocks\n */\n redactor: this.Editor.UI.nodes.redactor\n };\n }\n}\nfunction Yt(n, e) {\n const t = {};\n return Object.entries(n).forEach(([o, i]) => {\n if (R(i)) {\n const s = e ? `${e}.${o}` : o;\n Object.values(i).every((l) => Q(l)) ? t[o] = s : t[o] = Yt(i, s);\n return;\n }\n t[o] = i;\n }), t;\n}\nconst K = Yt(_t);\nfunction mi(n, e) {\n const t = {};\n return Object.keys(n).forEach((o) => {\n const i = e[o];\n i !== void 0 ? t[i] = n[o] : t[o] = n[o];\n }), t;\n}\nconst Wt = class ve {\n /**\n * @param {HTMLElement[]} nodeList — the list of iterable HTML-items\n * @param {string} focusedCssClass - user-provided CSS-class that will be set in flipping process\n */\n constructor(e, t) {\n this.cursor = -1, this.items = [], this.items = e || [], this.focusedCssClass = t;\n }\n /**\n * Returns Focused button Node\n *\n * @returns {HTMLElement}\n */\n get currentItem() {\n return this.cursor === -1 ? null : this.items[this.cursor];\n }\n /**\n * Sets cursor to specified position\n *\n * @param cursorPosition - new cursor position\n */\n setCursor(e) {\n e < this.items.length && e >= -1 && (this.dropCursor(), this.cursor = e, this.items[this.cursor].classList.add(this.focusedCssClass));\n }\n /**\n * Sets items. Can be used when iterable items changed dynamically\n *\n * @param {HTMLElement[]} nodeList - nodes to iterate\n */\n setItems(e) {\n this.items = e;\n }\n /**\n * Sets cursor next to the current\n */\n next() {\n this.cursor = this.leafNodesAndReturnIndex(ve.directions.RIGHT);\n }\n /**\n * Sets cursor before current\n */\n previous() {\n this.cursor = this.leafNodesAndReturnIndex(ve.directions.LEFT);\n }\n /**\n * Sets cursor to the default position and removes CSS-class from previously focused item\n */\n dropCursor() {\n this.cursor !== -1 && (this.items[this.cursor].classList.remove(this.focusedCssClass), this.cursor = -1);\n }\n /**\n * Leafs nodes inside the target list from active element\n *\n * @param {string} direction - leaf direction. Can be 'left' or 'right'\n * @returns {number} index of focused node\n */\n leafNodesAndReturnIndex(e) {\n if (this.items.length === 0)\n return this.cursor;\n let t = this.cursor;\n return t === -1 ? t = e === ve.directions.RIGHT ? -1 : 0 : this.items[t].classList.remove(this.focusedCssClass), e === ve.directions.RIGHT ? t = (t + 1) % this.items.length : t = (this.items.length + t - 1) % this.items.length, d.canSetCaret(this.items[t]) && Oe(() => b.setCursor(this.items[t]), 50)(), this.items[t].classList.add(this.focusedCssClass), t;\n }\n};\nWt.directions = {\n RIGHT: \"right\",\n LEFT: \"left\"\n};\nlet me = Wt;\nclass le {\n /**\n * @param options - different constructing settings\n */\n constructor(e) {\n this.iterator = null, this.activated = !1, this.flipCallbacks = [], this.onKeyDown = (t) => {\n if (this.isEventReadyForHandling(t))\n switch (le.usedKeys.includes(t.keyCode) && t.preventDefault(), t.keyCode) {\n case w.TAB:\n this.handleTabPress(t);\n break;\n case w.LEFT:\n case w.UP:\n this.flipLeft();\n break;\n case w.RIGHT:\n case w.DOWN:\n this.flipRight();\n break;\n case w.ENTER:\n this.handleEnterPress(t);\n break;\n }\n }, this.iterator = new me(e.items, e.focusedItemClass), this.activateCallback = e.activateCallback, this.allowedKeys = e.allowedKeys || le.usedKeys;\n }\n /**\n * True if flipper is currently activated\n */\n get isActivated() {\n return this.activated;\n }\n /**\n * Array of keys (codes) that is handled by Flipper\n * Used to:\n * - preventDefault only for this keys, not all keydowns (@see constructor)\n * - to skip external behaviours only for these keys, when filler is activated (@see BlockEvents@arrowRightAndDown)\n */\n static get usedKeys() {\n return [\n w.TAB,\n w.LEFT,\n w.RIGHT,\n w.ENTER,\n w.UP,\n w.DOWN\n ];\n }\n /**\n * Active tab/arrows handling by flipper\n *\n * @param items - Some modules (like, InlineToolbar, BlockSettings) might refresh buttons dynamically\n * @param cursorPosition - index of the item that should be focused once flipper is activated\n */\n activate(e, t) {\n this.activated = !0, e && this.iterator.setItems(e), t !== void 0 && this.iterator.setCursor(t), document.addEventListener(\"keydown\", this.onKeyDown, !0);\n }\n /**\n * Disable tab/arrows handling by flipper\n */\n deactivate() {\n this.activated = !1, this.dropCursor(), document.removeEventListener(\"keydown\", this.onKeyDown);\n }\n /**\n * Focus first item\n */\n focusFirst() {\n this.dropCursor(), this.flipRight();\n }\n /**\n * Focuses previous flipper iterator item\n */\n flipLeft() {\n this.iterator.previous(), this.flipCallback();\n }\n /**\n * Focuses next flipper iterator item\n */\n flipRight() {\n this.iterator.next(), this.flipCallback();\n }\n /**\n * Return true if some button is focused\n */\n hasFocus() {\n return !!this.iterator.currentItem;\n }\n /**\n * Registeres function that should be executed on each navigation action\n *\n * @param cb - function to execute\n */\n onFlip(e) {\n this.flipCallbacks.push(e);\n }\n /**\n * Unregisteres function that is executed on each navigation action\n *\n * @param cb - function to stop executing\n */\n removeOnFlip(e) {\n this.flipCallbacks = this.flipCallbacks.filter((t) => t !== e);\n }\n /**\n * Drops flipper's iterator cursor\n *\n * @see DomIterator#dropCursor\n */\n dropCursor() {\n this.iterator.dropCursor();\n }\n /**\n * This function is fired before handling flipper keycodes\n * The result of this function defines if it is need to be handled or not\n *\n * @param {KeyboardEvent} event - keydown keyboard event\n * @returns {boolean}\n */\n isEventReadyForHandling(e) {\n return this.activated && this.allowedKeys.includes(e.keyCode);\n }\n /**\n * When flipper is activated tab press will leaf the items\n *\n * @param {KeyboardEvent} event - tab keydown event\n */\n handleTabPress(e) {\n switch (e.shiftKey ? me.directions.LEFT : me.directions.RIGHT) {\n case me.directions.RIGHT:\n this.flipRight();\n break;\n case me.directions.LEFT:\n this.flipLeft();\n break;\n }\n }\n /**\n * Enter press will click current item if flipper is activated\n *\n * @param {KeyboardEvent} event - enter keydown event\n */\n handleEnterPress(e) {\n this.activated && (this.iterator.currentItem && (e.stopPropagation(), e.preventDefault(), this.iterator.currentItem.click()), O(this.activateCallback) && this.activateCallback(this.iterator.currentItem));\n }\n /**\n * Fired after flipping in any direction\n */\n flipCallback() {\n this.iterator.currentItem && this.iterator.currentItem.scrollIntoViewIfNeeded(), this.flipCallbacks.forEach((e) => e());\n }\n}\nconst bi = '', ki = '', vi = '', wi = '', xi = '', yi = '', Ei = '', Bi = '', yt = '', Ti = '', Ci = '', Kt = '', Si = '', Ii = '', Mi = '', Ai = \"__\", Oi = \"--\";\nfunction te(n) {\n return (e, t) => [[n, e].filter((i) => !!i).join(Ai), t].filter((i) => !!i).join(Oi);\n}\nconst be = te(\"ce-hint\"), ke = {\n root: be(),\n alignedStart: be(null, \"align-left\"),\n alignedCenter: be(null, \"align-center\"),\n title: be(\"title\"),\n description: be(\"description\")\n};\nclass Li {\n /**\n * Constructs the hint content instance\n *\n * @param params - hint content parameters\n */\n constructor(e) {\n this.nodes = {\n root: d.make(\"div\", [ke.root, e.alignment === \"center\" ? ke.alignedCenter : ke.alignedStart]),\n title: d.make(\"div\", ke.title, { textContent: e.title })\n }, this.nodes.root.appendChild(this.nodes.title), e.description !== void 0 && (this.nodes.description = d.make(\"div\", ke.description, { textContent: e.description }), this.nodes.root.appendChild(this.nodes.description));\n }\n /**\n * Returns the root element of the hint content\n */\n getElement() {\n return this.nodes.root;\n }\n}\nclass rt {\n /**\n * Constructs the instance\n *\n * @param params - instance parameters\n */\n constructor(e) {\n this.params = e;\n }\n /**\n * Item name if exists\n */\n get name() {\n if (this.params !== void 0 && \"name\" in this.params)\n return this.params.name;\n }\n /**\n * Destroys the instance\n */\n destroy() {\n Ne();\n }\n /**\n * Called when children popover is opened (if exists)\n */\n onChildrenOpen() {\n var e;\n this.params !== void 0 && \"children\" in this.params && typeof ((e = this.params.children) == null ? void 0 : e.onOpen) == \"function\" && this.params.children.onOpen();\n }\n /**\n * Called when children popover is closed (if exists)\n */\n onChildrenClose() {\n var e;\n this.params !== void 0 && \"children\" in this.params && typeof ((e = this.params.children) == null ? void 0 : e.onClose) == \"function\" && this.params.children.onClose();\n }\n /**\n * Called on popover item click\n */\n handleClick() {\n var e, t;\n this.params !== void 0 && \"onActivate\" in this.params && ((t = (e = this.params).onActivate) == null || t.call(e, this.params));\n }\n /**\n * Adds hint to the item element if hint data is provided\n *\n * @param itemElement - popover item root element to add hint to\n * @param hintData - hint data\n */\n addHint(e, t) {\n const o = new Li(t);\n Pe(e, o.getElement(), {\n placement: t.position,\n hidingDelay: 100\n });\n }\n /**\n * Returns item children that are represented as popover items\n */\n get children() {\n var e;\n return this.params !== void 0 && \"children\" in this.params && ((e = this.params.children) == null ? void 0 : e.items) !== void 0 ? this.params.children.items : [];\n }\n /**\n * Returns true if item has any type of children\n */\n get hasChildren() {\n return this.children.length > 0;\n }\n /**\n * Returns true if item children should be open instantly after popover is opened and not on item click/hover\n */\n get isChildrenOpen() {\n var e;\n return this.params !== void 0 && \"children\" in this.params && ((e = this.params.children) == null ? void 0 : e.isOpen) === !0;\n }\n /**\n * True if item children items should be navigatable via keyboard\n */\n get isChildrenFlippable() {\n var e;\n return !(this.params === void 0 || !(\"children\" in this.params) || ((e = this.params.children) == null ? void 0 : e.isFlippable) === !1);\n }\n /**\n * Returns true if item has children that should be searchable\n */\n get isChildrenSearchable() {\n var e;\n return this.params !== void 0 && \"children\" in this.params && ((e = this.params.children) == null ? void 0 : e.searchable) === !0;\n }\n /**\n * True if popover should close once item is activated\n */\n get closeOnActivate() {\n return this.params !== void 0 && \"closeOnActivate\" in this.params && this.params.closeOnActivate;\n }\n /**\n * True if item is active\n */\n get isActive() {\n return this.params === void 0 || !(\"isActive\" in this.params) ? !1 : typeof this.params.isActive == \"function\" ? this.params.isActive() : this.params.isActive === !0;\n }\n}\nconst W = te(\"ce-popover-item\"), L = {\n container: W(),\n active: W(null, \"active\"),\n disabled: W(null, \"disabled\"),\n focused: W(null, \"focused\"),\n hidden: W(null, \"hidden\"),\n confirmationState: W(null, \"confirmation\"),\n noHover: W(null, \"no-hover\"),\n noFocus: W(null, \"no-focus\"),\n title: W(\"title\"),\n secondaryTitle: W(\"secondary-title\"),\n icon: W(\"icon\"),\n iconTool: W(\"icon\", \"tool\"),\n iconChevronRight: W(\"icon\", \"chevron-right\"),\n wobbleAnimation: te(\"wobble\")()\n};\nclass se extends rt {\n /**\n * Constructs popover item instance\n *\n * @param params - popover item construction params\n * @param renderParams - popover item render params.\n * The parameters that are not set by user via popover api but rather depend on technical implementation\n */\n constructor(e, t) {\n super(e), this.params = e, this.nodes = {\n root: null,\n icon: null\n }, this.confirmationState = null, this.removeSpecialFocusBehavior = () => {\n var o;\n (o = this.nodes.root) == null || o.classList.remove(L.noFocus);\n }, this.removeSpecialHoverBehavior = () => {\n var o;\n (o = this.nodes.root) == null || o.classList.remove(L.noHover);\n }, this.onErrorAnimationEnd = () => {\n var o, i;\n (o = this.nodes.icon) == null || o.classList.remove(L.wobbleAnimation), (i = this.nodes.icon) == null || i.removeEventListener(\"animationend\", this.onErrorAnimationEnd);\n }, this.nodes.root = this.make(e, t);\n }\n /**\n * True if item is disabled and hence not clickable\n */\n get isDisabled() {\n return this.params.isDisabled === !0;\n }\n /**\n * Exposes popover item toggle parameter\n */\n get toggle() {\n return this.params.toggle;\n }\n /**\n * Item title\n */\n get title() {\n return this.params.title;\n }\n /**\n * True if confirmation state is enabled for popover item\n */\n get isConfirmationStateEnabled() {\n return this.confirmationState !== null;\n }\n /**\n * True if item is focused in keyboard navigation process\n */\n get isFocused() {\n return this.nodes.root === null ? !1 : this.nodes.root.classList.contains(L.focused);\n }\n /**\n * Returns popover item root element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Called on popover item click\n */\n handleClick() {\n if (this.isConfirmationStateEnabled && this.confirmationState !== null) {\n this.activateOrEnableConfirmationMode(this.confirmationState);\n return;\n }\n this.activateOrEnableConfirmationMode(this.params);\n }\n /**\n * Toggles item active state\n *\n * @param isActive - true if item should strictly should become active\n */\n toggleActive(e) {\n var t;\n (t = this.nodes.root) == null || t.classList.toggle(L.active, e);\n }\n /**\n * Toggles item hidden state\n *\n * @param isHidden - true if item should be hidden\n */\n toggleHidden(e) {\n var t;\n (t = this.nodes.root) == null || t.classList.toggle(L.hidden, e);\n }\n /**\n * Resets popover item to its original state\n */\n reset() {\n this.isConfirmationStateEnabled && this.disableConfirmationMode();\n }\n /**\n * Method called once item becomes focused during keyboard navigation\n */\n onFocus() {\n this.disableSpecialHoverAndFocusBehavior();\n }\n /**\n * Constructs HTML element corresponding to popover item params\n *\n * @param params - item construction params\n * @param renderParams - popover item render params\n */\n make(e, t) {\n var s, r;\n const o = (t == null ? void 0 : t.wrapperTag) || \"div\", i = d.make(o, L.container, {\n type: o === \"button\" ? \"button\" : void 0\n });\n return e.name && (i.dataset.itemName = e.name), this.nodes.icon = d.make(\"div\", [L.icon, L.iconTool], {\n innerHTML: e.icon || Ei\n }), i.appendChild(this.nodes.icon), e.title !== void 0 && i.appendChild(d.make(\"div\", L.title, {\n innerHTML: e.title || \"\"\n })), e.secondaryLabel && i.appendChild(d.make(\"div\", L.secondaryTitle, {\n textContent: e.secondaryLabel\n })), this.hasChildren && i.appendChild(d.make(\"div\", [L.icon, L.iconChevronRight], {\n innerHTML: wi\n })), this.isActive && i.classList.add(L.active), e.isDisabled && i.classList.add(L.disabled), e.hint !== void 0 && ((s = t == null ? void 0 : t.hint) == null ? void 0 : s.enabled) !== !1 && this.addHint(i, {\n ...e.hint,\n position: ((r = t == null ? void 0 : t.hint) == null ? void 0 : r.position) || \"right\"\n }), i;\n }\n /**\n * Activates confirmation mode for the item.\n *\n * @param newState - new popover item params that should be applied\n */\n enableConfirmationMode(e) {\n if (this.nodes.root === null)\n return;\n const t = {\n ...this.params,\n ...e,\n confirmation: \"confirmation\" in e ? e.confirmation : void 0\n }, o = this.make(t);\n this.nodes.root.innerHTML = o.innerHTML, this.nodes.root.classList.add(L.confirmationState), this.confirmationState = e, this.enableSpecialHoverAndFocusBehavior();\n }\n /**\n * Returns item to its original state\n */\n disableConfirmationMode() {\n if (this.nodes.root === null)\n return;\n const e = this.make(this.params);\n this.nodes.root.innerHTML = e.innerHTML, this.nodes.root.classList.remove(L.confirmationState), this.confirmationState = null, this.disableSpecialHoverAndFocusBehavior();\n }\n /**\n * Enables special focus and hover behavior for item in confirmation state.\n * This is needed to prevent item from being highlighted as hovered/focused just after click.\n */\n enableSpecialHoverAndFocusBehavior() {\n var e, t, o;\n (e = this.nodes.root) == null || e.classList.add(L.noHover), (t = this.nodes.root) == null || t.classList.add(L.noFocus), (o = this.nodes.root) == null || o.addEventListener(\"mouseleave\", this.removeSpecialHoverBehavior, { once: !0 });\n }\n /**\n * Disables special focus and hover behavior\n */\n disableSpecialHoverAndFocusBehavior() {\n var e;\n this.removeSpecialFocusBehavior(), this.removeSpecialHoverBehavior(), (e = this.nodes.root) == null || e.removeEventListener(\"mouseleave\", this.removeSpecialHoverBehavior);\n }\n /**\n * Executes item's onActivate callback if the item has no confirmation configured\n *\n * @param item - item to activate or bring to confirmation mode\n */\n activateOrEnableConfirmationMode(e) {\n var t;\n if (!(\"confirmation\" in e) || e.confirmation === void 0)\n try {\n (t = e.onActivate) == null || t.call(e, e), this.disableConfirmationMode();\n } catch {\n this.animateError();\n }\n else\n this.enableConfirmationMode(e.confirmation);\n }\n /**\n * Animates item which symbolizes that error occured while executing 'onActivate()' callback\n */\n animateError() {\n var e, t, o;\n (e = this.nodes.icon) != null && e.classList.contains(L.wobbleAnimation) || ((t = this.nodes.icon) == null || t.classList.add(L.wobbleAnimation), (o = this.nodes.icon) == null || o.addEventListener(\"animationend\", this.onErrorAnimationEnd));\n }\n}\nconst Ue = te(\"ce-popover-item-separator\"), je = {\n container: Ue(),\n line: Ue(\"line\"),\n hidden: Ue(null, \"hidden\")\n};\nclass Xt extends rt {\n /**\n * Constructs the instance\n */\n constructor() {\n super(), this.nodes = {\n root: d.make(\"div\", je.container),\n line: d.make(\"div\", je.line)\n }, this.nodes.root.appendChild(this.nodes.line);\n }\n /**\n * Returns popover separator root element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Toggles item hidden state\n *\n * @param isHidden - true if item should be hidden\n */\n toggleHidden(e) {\n var t;\n (t = this.nodes.root) == null || t.classList.toggle(je.hidden, e);\n }\n}\nvar Z = /* @__PURE__ */ ((n) => (n.Closed = \"closed\", n.ClosedOnActivate = \"closed-on-activate\", n))(Z || {});\nconst H = te(\"ce-popover\"), N = {\n popover: H(),\n popoverContainer: H(\"container\"),\n popoverOpenTop: H(null, \"open-top\"),\n popoverOpenLeft: H(null, \"open-left\"),\n popoverOpened: H(null, \"opened\"),\n search: H(\"search\"),\n nothingFoundMessage: H(\"nothing-found-message\"),\n nothingFoundMessageDisplayed: H(\"nothing-found-message\", \"displayed\"),\n items: H(\"items\"),\n overlay: H(\"overlay\"),\n overlayHidden: H(\"overlay\", \"hidden\"),\n popoverNested: H(null, \"nested\"),\n getPopoverNestedClass: (n) => H(null, `nested-level-${n.toString()}`),\n popoverInline: H(null, \"inline\"),\n popoverHeader: H(\"header\")\n};\nvar de = /* @__PURE__ */ ((n) => (n.NestingLevel = \"--nesting-level\", n.PopoverHeight = \"--popover-height\", n.InlinePopoverWidth = \"--inline-popover-width\", n.TriggerItemLeft = \"--trigger-item-left\", n.TriggerItemTop = \"--trigger-item-top\", n))(de || {});\nconst Et = te(\"ce-popover-item-html\"), Bt = {\n root: Et(),\n hidden: Et(null, \"hidden\")\n};\nclass Ee extends rt {\n /**\n * Constructs the instance\n *\n * @param params – instance parameters\n * @param renderParams – popover item render params.\n * The parameters that are not set by user via popover api but rather depend on technical implementation\n */\n constructor(e, t) {\n var o, i;\n super(e), this.nodes = {\n root: d.make(\"div\", Bt.root)\n }, this.nodes.root.appendChild(e.element), e.name && (this.nodes.root.dataset.itemName = e.name), e.hint !== void 0 && ((o = t == null ? void 0 : t.hint) == null ? void 0 : o.enabled) !== !1 && this.addHint(this.nodes.root, {\n ...e.hint,\n position: ((i = t == null ? void 0 : t.hint) == null ? void 0 : i.position) || \"right\"\n });\n }\n /**\n * Returns popover item root element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Toggles item hidden state\n *\n * @param isHidden - true if item should be hidden\n */\n toggleHidden(e) {\n var t;\n (t = this.nodes.root) == null || t.classList.toggle(Bt.hidden, e);\n }\n /**\n * Returns list of buttons and inputs inside custom content\n */\n getControls() {\n const e = this.nodes.root.querySelectorAll(\n `button, ${d.allInputsSelector}`\n );\n return Array.from(e);\n }\n}\nclass Vt extends Te {\n /**\n * Constructs the instance\n *\n * @param params - popover construction params\n * @param itemsRenderParams - popover item render params.\n * The parameters that are not set by user via popover api but rather depend on technical implementation\n */\n constructor(e, t = {}) {\n super(), this.params = e, this.itemsRenderParams = t, this.listeners = new Ce(), this.messages = {\n nothingFound: \"Nothing found\",\n search: \"Search\"\n }, this.items = this.buildItems(e.items), e.messages && (this.messages = {\n ...this.messages,\n ...e.messages\n }), this.nodes = {}, this.nodes.popoverContainer = d.make(\"div\", [N.popoverContainer]), this.nodes.nothingFoundMessage = d.make(\"div\", [N.nothingFoundMessage], {\n textContent: this.messages.nothingFound\n }), this.nodes.popoverContainer.appendChild(this.nodes.nothingFoundMessage), this.nodes.items = d.make(\"div\", [N.items]), this.items.forEach((o) => {\n const i = o.getElement();\n i !== null && this.nodes.items.appendChild(i);\n }), this.nodes.popoverContainer.appendChild(this.nodes.items), this.listeners.on(this.nodes.popoverContainer, \"click\", (o) => this.handleClick(o)), this.nodes.popover = d.make(\"div\", [\n N.popover,\n this.params.class\n ]), this.nodes.popover.appendChild(this.nodes.popoverContainer);\n }\n /**\n * List of default popover items that are searchable and may have confirmation state\n */\n get itemsDefault() {\n return this.items.filter((e) => e instanceof se);\n }\n /**\n * Returns HTML element corresponding to the popover\n */\n getElement() {\n return this.nodes.popover;\n }\n /**\n * Open popover\n */\n show() {\n this.nodes.popover.classList.add(N.popoverOpened), this.search !== void 0 && this.search.focus();\n }\n /**\n * Closes popover\n */\n hide() {\n this.nodes.popover.classList.remove(N.popoverOpened), this.nodes.popover.classList.remove(N.popoverOpenTop), this.itemsDefault.forEach((e) => e.reset()), this.search !== void 0 && this.search.clear(), this.emit(Z.Closed);\n }\n /**\n * Clears memory\n */\n destroy() {\n var e;\n this.items.forEach((t) => t.destroy()), this.nodes.popover.remove(), this.listeners.removeAll(), (e = this.search) == null || e.destroy();\n }\n /**\n * Looks for the item by name and imitates click on it\n *\n * @param name - name of the item to activate\n */\n activateItemByName(e) {\n const t = this.items.find((o) => o.name === e);\n this.handleItemClick(t);\n }\n /**\n * Factory method for creating popover items\n *\n * @param items - list of items params\n */\n buildItems(e) {\n return e.map((t) => {\n switch (t.type) {\n case A.Separator:\n return new Xt();\n case A.Html:\n return new Ee(t, this.itemsRenderParams[A.Html]);\n default:\n return new se(t, this.itemsRenderParams[A.Default]);\n }\n });\n }\n /**\n * Retrieves popover item that is the target of the specified event\n *\n * @param event - event to retrieve popover item from\n */\n getTargetItem(e) {\n return this.items.filter((t) => t instanceof se || t instanceof Ee).find((t) => {\n const o = t.getElement();\n return o === null ? !1 : e.composedPath().includes(o);\n });\n }\n /**\n * Handles popover item click\n *\n * @param item - item to handle click of\n */\n handleItemClick(e) {\n if (!(\"isDisabled\" in e && e.isDisabled)) {\n if (e.hasChildren) {\n this.showNestedItems(e), \"handleClick\" in e && typeof e.handleClick == \"function\" && e.handleClick();\n return;\n }\n this.itemsDefault.filter((t) => t !== e).forEach((t) => t.reset()), \"handleClick\" in e && typeof e.handleClick == \"function\" && e.handleClick(), this.toggleItemActivenessIfNeeded(e), e.closeOnActivate && (this.hide(), this.emit(Z.ClosedOnActivate));\n }\n }\n /**\n * Handles clicks inside popover\n *\n * @param event - item to handle click of\n */\n handleClick(e) {\n const t = this.getTargetItem(e);\n t !== void 0 && this.handleItemClick(t);\n }\n /**\n * - Toggles item active state, if clicked popover item has property 'toggle' set to true.\n *\n * - Performs radiobutton-like behavior if the item has property 'toggle' set to string key.\n * (All the other items with the same key get inactive, and the item gets active)\n *\n * @param clickedItem - popover item that was clicked\n */\n toggleItemActivenessIfNeeded(e) {\n if (e instanceof se && (e.toggle === !0 && e.toggleActive(), typeof e.toggle == \"string\")) {\n const t = this.itemsDefault.filter((o) => o.toggle === e.toggle);\n if (t.length === 1) {\n e.toggleActive();\n return;\n }\n t.forEach((o) => {\n o.toggleActive(o === e);\n });\n }\n }\n}\nvar De = /* @__PURE__ */ ((n) => (n.Search = \"search\", n))(De || {});\nconst $e = te(\"cdx-search-field\"), Ye = {\n wrapper: $e(),\n icon: $e(\"icon\"),\n input: $e(\"input\")\n};\nclass _i extends Te {\n /**\n * @param options - available config\n * @param options.items - searchable items list\n * @param options.placeholder - input placeholder\n */\n constructor({ items: e, placeholder: t }) {\n super(), this.listeners = new Ce(), this.items = e, this.wrapper = d.make(\"div\", Ye.wrapper);\n const o = d.make(\"div\", Ye.icon, {\n innerHTML: Si\n });\n this.input = d.make(\"input\", Ye.input, {\n placeholder: t,\n /**\n * Used to prevent focusing on the input by Tab key\n * (Popover in the Toolbar lays below the blocks,\n * so Tab in the last block will focus this hidden input if this property is not set)\n */\n tabIndex: -1\n }), this.wrapper.appendChild(o), this.wrapper.appendChild(this.input), this.listeners.on(this.input, \"input\", () => {\n this.searchQuery = this.input.value, this.emit(De.Search, {\n query: this.searchQuery,\n items: this.foundItems\n });\n });\n }\n /**\n * Returns search field element\n */\n getElement() {\n return this.wrapper;\n }\n /**\n * Sets focus to the input\n */\n focus() {\n this.input.focus();\n }\n /**\n * Clears search query and results\n */\n clear() {\n this.input.value = \"\", this.searchQuery = \"\", this.emit(De.Search, {\n query: \"\",\n items: this.foundItems\n });\n }\n /**\n * Clears memory\n */\n destroy() {\n this.listeners.removeAll();\n }\n /**\n * Returns list of found items for the current search query\n */\n get foundItems() {\n return this.items.filter((e) => this.checkItem(e));\n }\n /**\n * Contains logic for checking whether passed item conforms the search query\n *\n * @param item - item to be checked\n */\n checkItem(e) {\n var i, s;\n const t = ((i = e.title) == null ? void 0 : i.toLowerCase()) || \"\", o = (s = this.searchQuery) == null ? void 0 : s.toLowerCase();\n return o !== void 0 ? t.includes(o) : !1;\n }\n}\nvar Ni = Object.defineProperty, Pi = Object.getOwnPropertyDescriptor, Di = (n, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? Pi(e, t) : e, s = n.length - 1, r; s >= 0; s--)\n (r = n[s]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && Ni(e, t, i), i;\n};\nconst qt = class Zt extends Vt {\n /**\n * Construct the instance\n *\n * @param params - popover params\n * @param itemsRenderParams – popover item render params.\n * The parameters that are not set by user via popover api but rather depend on technical implementation\n */\n constructor(e, t) {\n super(e, t), this.nestingLevel = 0, this.nestedPopoverTriggerItem = null, this.previouslyHoveredItem = null, this.scopeElement = document.body, this.hide = () => {\n var o;\n super.hide(), this.destroyNestedPopoverIfExists(), (o = this.flipper) == null || o.deactivate(), this.previouslyHoveredItem = null;\n }, this.onFlip = () => {\n const o = this.itemsDefault.find((i) => i.isFocused);\n o == null || o.onFocus();\n }, this.onSearch = (o) => {\n var l;\n const i = o.query === \"\", s = o.items.length === 0;\n this.items.forEach((a) => {\n let c = !1;\n a instanceof se ? c = !o.items.includes(a) : (a instanceof Xt || a instanceof Ee) && (c = s || !i), a.toggleHidden(c);\n }), this.toggleNothingFoundMessage(s);\n const r = o.query === \"\" ? this.flippableElements : o.items.map((a) => a.getElement());\n (l = this.flipper) != null && l.isActivated && (this.flipper.deactivate(), this.flipper.activate(r));\n }, e.nestingLevel !== void 0 && (this.nestingLevel = e.nestingLevel), this.nestingLevel > 0 && this.nodes.popover.classList.add(N.popoverNested), e.scopeElement !== void 0 && (this.scopeElement = e.scopeElement), this.nodes.popoverContainer !== null && this.listeners.on(this.nodes.popoverContainer, \"mouseover\", (o) => this.handleHover(o)), e.searchable && this.addSearch(), e.flippable !== !1 && (this.flipper = new le({\n items: this.flippableElements,\n focusedItemClass: L.focused,\n allowedKeys: [\n w.TAB,\n w.UP,\n w.DOWN,\n w.ENTER\n ]\n }), this.flipper.onFlip(this.onFlip));\n }\n /**\n * Returns true if some item inside popover is focused\n */\n hasFocus() {\n return this.flipper === void 0 ? !1 : this.flipper.hasFocus();\n }\n /**\n * Scroll position inside items container of the popover\n */\n get scrollTop() {\n return this.nodes.items === null ? 0 : this.nodes.items.scrollTop;\n }\n /**\n * Returns visible element offset top\n */\n get offsetTop() {\n return this.nodes.popoverContainer === null ? 0 : this.nodes.popoverContainer.offsetTop;\n }\n /**\n * Open popover\n */\n show() {\n var e;\n this.nodes.popover.style.setProperty(de.PopoverHeight, this.size.height + \"px\"), this.shouldOpenBottom || this.nodes.popover.classList.add(N.popoverOpenTop), this.shouldOpenRight || this.nodes.popover.classList.add(N.popoverOpenLeft), super.show(), (e = this.flipper) == null || e.activate(this.flippableElements);\n }\n /**\n * Clears memory\n */\n destroy() {\n this.hide(), super.destroy();\n }\n /**\n * Handles displaying nested items for the item.\n *\n * @param item – item to show nested popover for\n */\n showNestedItems(e) {\n this.nestedPopover !== null && this.nestedPopover !== void 0 || (this.nestedPopoverTriggerItem = e, this.showNestedPopoverForItem(e));\n }\n /**\n * Handles hover events inside popover items container\n *\n * @param event - hover event data\n */\n handleHover(e) {\n const t = this.getTargetItem(e);\n t !== void 0 && this.previouslyHoveredItem !== t && (this.destroyNestedPopoverIfExists(), this.previouslyHoveredItem = t, t.hasChildren && this.showNestedPopoverForItem(t));\n }\n /**\n * Sets CSS variable with position of item near which nested popover should be displayed.\n * Is used for correct positioning of the nested popover\n *\n * @param nestedPopoverEl - nested popover element\n * @param item – item near which nested popover should be displayed\n */\n setTriggerItemPosition(e, t) {\n const o = t.getElement(), i = (o ? o.offsetTop : 0) - this.scrollTop, s = this.offsetTop + i;\n e.style.setProperty(de.TriggerItemTop, s + \"px\");\n }\n /**\n * Destroys existing nested popover\n */\n destroyNestedPopoverIfExists() {\n var e, t;\n this.nestedPopover === void 0 || this.nestedPopover === null || (this.nestedPopover.off(Z.ClosedOnActivate, this.hide), this.nestedPopover.hide(), this.nestedPopover.destroy(), this.nestedPopover.getElement().remove(), this.nestedPopover = null, (e = this.flipper) == null || e.activate(this.flippableElements), (t = this.nestedPopoverTriggerItem) == null || t.onChildrenClose());\n }\n /**\n * Creates and displays nested popover for specified item.\n * Is used only on desktop\n *\n * @param item - item to display nested popover by\n */\n showNestedPopoverForItem(e) {\n var o;\n this.nestedPopover = new Zt({\n searchable: e.isChildrenSearchable,\n items: e.children,\n nestingLevel: this.nestingLevel + 1,\n flippable: e.isChildrenFlippable,\n messages: this.messages\n }), e.onChildrenOpen(), this.nestedPopover.on(Z.ClosedOnActivate, this.hide);\n const t = this.nestedPopover.getElement();\n return this.nodes.popover.appendChild(t), this.setTriggerItemPosition(t, e), t.style.setProperty(de.NestingLevel, this.nestedPopover.nestingLevel.toString()), this.nestedPopover.show(), (o = this.flipper) == null || o.deactivate(), this.nestedPopover;\n }\n /**\n * Checks if popover should be opened bottom.\n * It should happen when there is enough space below or not enough space above\n */\n get shouldOpenBottom() {\n if (this.nodes.popover === void 0 || this.nodes.popover === null)\n return !1;\n const e = this.nodes.popoverContainer.getBoundingClientRect(), t = this.scopeElement.getBoundingClientRect(), o = this.size.height, i = e.top + o, s = e.top - o, r = Math.min(window.innerHeight, t.bottom);\n return s < t.top || i <= r;\n }\n /**\n * Checks if popover should be opened left.\n * It should happen when there is enough space in the right or not enough space in the left\n */\n get shouldOpenRight() {\n if (this.nodes.popover === void 0 || this.nodes.popover === null)\n return !1;\n const e = this.nodes.popover.getBoundingClientRect(), t = this.scopeElement.getBoundingClientRect(), o = this.size.width, i = e.right + o, s = e.left - o, r = Math.min(window.innerWidth, t.right);\n return s < t.left || i <= r;\n }\n get size() {\n var i;\n const e = {\n height: 0,\n width: 0\n };\n if (this.nodes.popover === null)\n return e;\n const t = this.nodes.popover.cloneNode(!0);\n t.style.visibility = \"hidden\", t.style.position = \"absolute\", t.style.top = \"-1000px\", t.classList.add(N.popoverOpened), (i = t.querySelector(\".\" + N.popoverNested)) == null || i.remove(), document.body.appendChild(t);\n const o = t.querySelector(\".\" + N.popoverContainer);\n return e.height = o.offsetHeight, e.width = o.offsetWidth, t.remove(), e;\n }\n /**\n * Returns list of elements available for keyboard navigation.\n */\n get flippableElements() {\n return this.items.map((t) => {\n if (t instanceof se)\n return t.getElement();\n if (t instanceof Ee)\n return t.getControls();\n }).flat().filter((t) => t != null);\n }\n /**\n * Adds search to the popover\n */\n addSearch() {\n this.search = new _i({\n items: this.itemsDefault,\n placeholder: this.messages.search\n }), this.search.on(De.Search, this.onSearch);\n const e = this.search.getElement();\n e.classList.add(N.search), this.nodes.popoverContainer.insertBefore(e, this.nodes.popoverContainer.firstChild);\n }\n /**\n * Toggles nothing found message visibility\n *\n * @param isDisplayed - true if the message should be displayed\n */\n toggleNothingFoundMessage(e) {\n this.nodes.nothingFoundMessage.classList.toggle(N.nothingFoundMessageDisplayed, e);\n }\n};\nDi([\n ue\n], qt.prototype, \"size\", 1);\nlet lt = qt;\nclass Ri extends lt {\n /**\n * Constructs the instance\n *\n * @param params - instance parameters\n */\n constructor(e) {\n const t = !pe();\n super(\n {\n ...e,\n class: N.popoverInline\n },\n {\n [A.Default]: {\n /**\n * We use button instead of div here to fix bug associated with focus loss (which leads to selection change) on click in safari\n *\n * @todo figure out better way to solve the issue\n */\n wrapperTag: \"button\",\n hint: {\n position: \"top\",\n alignment: \"center\",\n enabled: t\n }\n },\n [A.Html]: {\n hint: {\n position: \"top\",\n alignment: \"center\",\n enabled: t\n }\n }\n }\n ), this.items.forEach((o) => {\n !(o instanceof se) && !(o instanceof Ee) || o.hasChildren && o.isChildrenOpen && this.showNestedItems(o);\n });\n }\n /**\n * Returns visible element offset top\n */\n get offsetLeft() {\n return this.nodes.popoverContainer === null ? 0 : this.nodes.popoverContainer.offsetLeft;\n }\n /**\n * Open popover\n */\n show() {\n this.nestingLevel === 0 && this.nodes.popover.style.setProperty(\n de.InlinePopoverWidth,\n this.size.width + \"px\"\n ), super.show();\n }\n /**\n * Disable hover event handling.\n * Overrides parent's class behavior\n */\n handleHover() {\n }\n /**\n * Sets CSS variable with position of item near which nested popover should be displayed.\n * Is used to position nested popover right below clicked item\n *\n * @param nestedPopoverEl - nested popover element\n * @param item – item near which nested popover should be displayed\n */\n setTriggerItemPosition(e, t) {\n const o = t.getElement(), i = o ? o.offsetLeft : 0, s = this.offsetLeft + i;\n e.style.setProperty(\n de.TriggerItemLeft,\n s + \"px\"\n );\n }\n /**\n * Handles displaying nested items for the item.\n * Overriding in order to add toggling behaviour\n *\n * @param item – item to toggle nested popover for\n */\n showNestedItems(e) {\n if (this.nestedPopoverTriggerItem === e) {\n this.destroyNestedPopoverIfExists(), this.nestedPopoverTriggerItem = null;\n return;\n }\n super.showNestedItems(e);\n }\n /**\n * Creates and displays nested popover for specified item.\n * Is used only on desktop\n *\n * @param item - item to display nested popover by\n */\n showNestedPopoverForItem(e) {\n const t = super.showNestedPopoverForItem(e);\n return t.getElement().classList.add(N.getPopoverNestedClass(t.nestingLevel)), t;\n }\n /**\n * Overrides default item click handling.\n * Helps to close nested popover once other item is clicked.\n *\n * @param item - clicked item\n */\n handleItemClick(e) {\n var t;\n e !== this.nestedPopoverTriggerItem && ((t = this.nestedPopoverTriggerItem) == null || t.handleClick(), super.destroyNestedPopoverIfExists()), super.handleItemClick(e);\n }\n}\nconst Gt = class we {\n constructor() {\n this.scrollPosition = null;\n }\n /**\n * Locks body element scroll\n */\n lock() {\n Ge ? this.lockHard() : document.body.classList.add(we.CSS.scrollLocked);\n }\n /**\n * Unlocks body element scroll\n */\n unlock() {\n Ge ? this.unlockHard() : document.body.classList.remove(we.CSS.scrollLocked);\n }\n /**\n * Locks scroll in a hard way (via setting fixed position to body element)\n */\n lockHard() {\n this.scrollPosition = window.pageYOffset, document.documentElement.style.setProperty(\n \"--window-scroll-offset\",\n `${this.scrollPosition}px`\n ), document.body.classList.add(we.CSS.scrollLockedHard);\n }\n /**\n * Unlocks hard scroll lock\n */\n unlockHard() {\n document.body.classList.remove(we.CSS.scrollLockedHard), this.scrollPosition !== null && window.scrollTo(0, this.scrollPosition), this.scrollPosition = null;\n }\n};\nGt.CSS = {\n scrollLocked: \"ce-scroll-locked\",\n scrollLockedHard: \"ce-scroll-locked--hard\"\n};\nlet Fi = Gt;\nconst We = te(\"ce-popover-header\"), Ke = {\n root: We(),\n text: We(\"text\"),\n backButton: We(\"back-button\")\n};\nclass Hi {\n /**\n * Constructs the instance\n *\n * @param params - popover header params\n */\n constructor({ text: e, onBackButtonClick: t }) {\n this.listeners = new Ce(), this.text = e, this.onBackButtonClick = t, this.nodes = {\n root: d.make(\"div\", [Ke.root]),\n backButton: d.make(\"button\", [Ke.backButton]),\n text: d.make(\"div\", [Ke.text])\n }, this.nodes.backButton.innerHTML = vi, this.nodes.root.appendChild(this.nodes.backButton), this.listeners.on(this.nodes.backButton, \"click\", this.onBackButtonClick), this.nodes.text.innerText = this.text, this.nodes.root.appendChild(this.nodes.text);\n }\n /**\n * Returns popover header root html element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Destroys the instance\n */\n destroy() {\n this.nodes.root.remove(), this.listeners.destroy();\n }\n}\nclass zi {\n constructor() {\n this.history = [];\n }\n /**\n * Push new popover state\n *\n * @param state - new state\n */\n push(e) {\n this.history.push(e);\n }\n /**\n * Pop last popover state\n */\n pop() {\n return this.history.pop();\n }\n /**\n * Title retrieved from the current state\n */\n get currentTitle() {\n return this.history.length === 0 ? \"\" : this.history[this.history.length - 1].title;\n }\n /**\n * Items list retrieved from the current state\n */\n get currentItems() {\n return this.history.length === 0 ? [] : this.history[this.history.length - 1].items;\n }\n /**\n * Returns history to initial popover state\n */\n reset() {\n for (; this.history.length > 1; )\n this.pop();\n }\n}\nclass Jt extends Vt {\n /**\n * Construct the instance\n *\n * @param params - popover params\n */\n constructor(e) {\n super(e, {\n [A.Default]: {\n hint: {\n enabled: !1\n }\n },\n [A.Html]: {\n hint: {\n enabled: !1\n }\n }\n }), this.scrollLocker = new Fi(), this.history = new zi(), this.isHidden = !0, this.nodes.overlay = d.make(\"div\", [N.overlay, N.overlayHidden]), this.nodes.popover.insertBefore(this.nodes.overlay, this.nodes.popover.firstChild), this.listeners.on(this.nodes.overlay, \"click\", () => {\n this.hide();\n }), this.history.push({ items: e.items });\n }\n /**\n * Open popover\n */\n show() {\n this.nodes.overlay.classList.remove(N.overlayHidden), super.show(), this.scrollLocker.lock(), this.isHidden = !1;\n }\n /**\n * Closes popover\n */\n hide() {\n this.isHidden || (super.hide(), this.nodes.overlay.classList.add(N.overlayHidden), this.scrollLocker.unlock(), this.history.reset(), this.isHidden = !0);\n }\n /**\n * Clears memory\n */\n destroy() {\n super.destroy(), this.scrollLocker.unlock();\n }\n /**\n * Handles displaying nested items for the item\n *\n * @param item – item to show nested popover for\n */\n showNestedItems(e) {\n this.updateItemsAndHeader(e.children, e.title), this.history.push({\n title: e.title,\n items: e.children\n });\n }\n /**\n * Removes rendered popover items and header and displays new ones\n *\n * @param items - new popover items\n * @param title - new popover header text\n */\n updateItemsAndHeader(e, t) {\n if (this.header !== null && this.header !== void 0 && (this.header.destroy(), this.header = null), t !== void 0) {\n this.header = new Hi({\n text: t,\n onBackButtonClick: () => {\n this.history.pop(), this.updateItemsAndHeader(this.history.currentItems, this.history.currentTitle);\n }\n });\n const o = this.header.getElement();\n o !== null && this.nodes.popoverContainer.insertBefore(o, this.nodes.popoverContainer.firstChild);\n }\n this.items.forEach((o) => {\n var i;\n return (i = o.getElement()) == null ? void 0 : i.remove();\n }), this.items = this.buildItems(e), this.items.forEach((o) => {\n var s;\n const i = o.getElement();\n i !== null && ((s = this.nodes.items) == null || s.appendChild(i));\n });\n }\n}\nclass Ui extends y {\n constructor() {\n super(...arguments), this.opened = !1, this.selection = new b(), this.popover = null, this.close = () => {\n this.opened && (this.opened = !1, b.isAtEditor || this.selection.restore(), this.selection.clearSaved(), !this.Editor.CrossBlockSelection.isCrossBlockSelectionStarted && this.Editor.BlockManager.currentBlock && this.Editor.BlockSelection.unselectBlock(this.Editor.BlockManager.currentBlock), this.eventsDispatcher.emit(this.events.closed), this.popover && (this.popover.off(Z.Closed, this.onPopoverClose), this.popover.destroy(), this.popover.getElement().remove(), this.popover = null));\n }, this.onPopoverClose = () => {\n this.close();\n };\n }\n /**\n * Module Events\n */\n get events() {\n return {\n opened: \"block-settings-opened\",\n closed: \"block-settings-closed\"\n };\n }\n /**\n * Block Settings CSS\n */\n get CSS() {\n return {\n settings: \"ce-settings\"\n };\n }\n /**\n * Getter for inner popover's flipper instance\n *\n * @todo remove once BlockSettings becomes standalone non-module class\n */\n get flipper() {\n var e;\n if (this.popover !== null)\n return \"flipper\" in this.popover ? (e = this.popover) == null ? void 0 : e.flipper : void 0;\n }\n /**\n * Panel with block settings with 2 sections:\n * - Tool's Settings\n * - Default Settings [Move, Remove, etc]\n */\n make() {\n this.nodes.wrapper = d.make(\"div\", [this.CSS.settings]), this.eventsDispatcher.on(ye, this.close);\n }\n /**\n * Destroys module\n */\n destroy() {\n this.removeAllNodes(), this.listeners.destroy(), this.eventsDispatcher.off(ye, this.close);\n }\n /**\n * Open Block Settings pane\n *\n * @param targetBlock - near which Block we should open BlockSettings\n */\n async open(e = this.Editor.BlockManager.currentBlock) {\n var s;\n this.opened = !0, this.selection.save(), this.Editor.BlockSelection.selectBlock(e), this.Editor.BlockSelection.clearCache();\n const { toolTunes: t, commonTunes: o } = e.getTunes();\n this.eventsDispatcher.emit(this.events.opened);\n const i = pe() ? Jt : lt;\n this.popover = new i({\n searchable: !0,\n items: await this.getTunesItems(e, o, t),\n scopeElement: this.Editor.API.methods.ui.nodes.redactor,\n messages: {\n nothingFound: z.ui(K.ui.popover, \"Nothing found\"),\n search: z.ui(K.ui.popover, \"Filter\")\n }\n }), this.popover.on(Z.Closed, this.onPopoverClose), (s = this.nodes.wrapper) == null || s.append(this.popover.getElement()), this.popover.show();\n }\n /**\n * Returns root block settings element\n */\n getElement() {\n return this.nodes.wrapper;\n }\n /**\n * Returns list of items to be displayed in block tunes menu.\n * Merges tool specific tunes, conversion menu and common tunes in one list in predefined order\n *\n * @param currentBlock – block we are about to open block tunes for\n * @param commonTunes – common tunes\n * @param toolTunes - tool specific tunes\n */\n async getTunesItems(e, t, o) {\n const i = [];\n o !== void 0 && o.length > 0 && (i.push(...o), i.push({\n type: A.Separator\n }));\n const s = Array.from(this.Editor.Tools.blockTools.values()), l = (await zt(e, s)).reduce((a, c) => (c.toolbox.forEach((u) => {\n a.push({\n icon: u.icon,\n title: z.t(K.toolNames, u.title),\n name: c.name,\n closeOnActivate: !0,\n onActivate: async () => {\n const { BlockManager: h, Caret: p, Toolbar: g } = this.Editor, f = await h.convert(e, c.name, u.data);\n g.close(), p.setToBlock(f, p.positions.END);\n }\n });\n }), a), []);\n return l.length > 0 && (i.push({\n icon: Kt,\n name: \"convert-to\",\n title: z.ui(K.ui.popover, \"Convert to\"),\n children: {\n searchable: !0,\n items: l\n }\n }), i.push({\n type: A.Separator\n })), i.push(...t), i.map((a) => this.resolveTuneAliases(a));\n }\n /**\n * Resolves aliases in tunes menu items\n *\n * @param item - item with resolved aliases\n */\n resolveTuneAliases(e) {\n if (e.type === A.Separator || e.type === A.Html)\n return e;\n const t = mi(e, { label: \"title\" });\n return e.confirmation && (t.confirmation = this.resolveTuneAliases(e.confirmation)), t;\n }\n}\nvar Qt = { exports: {} };\n/*!\n * Library for handling keyboard shortcuts\n * @copyright CodeX (https://codex.so)\n * @license MIT\n * @author CodeX (https://codex.so)\n * @version 1.2.0\n */\n(function(n, e) {\n (function(t, o) {\n n.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(s) {\n if (o[s])\n return o[s].exports;\n var r = o[s] = { i: s, l: !1, exports: {} };\n return t[s].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(s, r, l) {\n i.o(s, r) || Object.defineProperty(s, r, { enumerable: !0, get: l });\n }, i.r = function(s) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(s, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(s, \"__esModule\", { value: !0 });\n }, i.t = function(s, r) {\n if (1 & r && (s = i(s)), 8 & r || 4 & r && typeof s == \"object\" && s && s.__esModule)\n return s;\n var l = /* @__PURE__ */ Object.create(null);\n if (i.r(l), Object.defineProperty(l, \"default\", { enumerable: !0, value: s }), 2 & r && typeof s != \"string\")\n for (var a in s)\n i.d(l, a, (function(c) {\n return s[c];\n }).bind(null, a));\n return l;\n }, i.n = function(s) {\n var r = s && s.__esModule ? function() {\n return s.default;\n } : function() {\n return s;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(s, r) {\n return Object.prototype.hasOwnProperty.call(s, r);\n }, i.p = \"\", i(i.s = 0);\n }([function(t, o, i) {\n function s(a, c) {\n for (var u = 0; u < c.length; u++) {\n var h = c[u];\n h.enumerable = h.enumerable || !1, h.configurable = !0, \"value\" in h && (h.writable = !0), Object.defineProperty(a, h.key, h);\n }\n }\n function r(a, c, u) {\n return c && s(a.prototype, c), u && s(a, u), a;\n }\n i.r(o);\n var l = function() {\n function a(c) {\n var u = this;\n (function(h, p) {\n if (!(h instanceof p))\n throw new TypeError(\"Cannot call a class as a function\");\n })(this, a), this.commands = {}, this.keys = {}, this.name = c.name, this.parseShortcutName(c.name), this.element = c.on, this.callback = c.callback, this.executeShortcut = function(h) {\n u.execute(h);\n }, this.element.addEventListener(\"keydown\", this.executeShortcut, !1);\n }\n return r(a, null, [{ key: \"supportedCommands\", get: function() {\n return { SHIFT: [\"SHIFT\"], CMD: [\"CMD\", \"CONTROL\", \"COMMAND\", \"WINDOWS\", \"CTRL\"], ALT: [\"ALT\", \"OPTION\"] };\n } }, { key: \"keyCodes\", get: function() {\n return { 0: 48, 1: 49, 2: 50, 3: 51, 4: 52, 5: 53, 6: 54, 7: 55, 8: 56, 9: 57, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, X: 88, Y: 89, Z: 90, BACKSPACE: 8, ENTER: 13, ESCAPE: 27, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, INSERT: 45, DELETE: 46, \".\": 190 };\n } }]), r(a, [{ key: \"parseShortcutName\", value: function(c) {\n c = c.split(\"+\");\n for (var u = 0; u < c.length; u++) {\n c[u] = c[u].toUpperCase();\n var h = !1;\n for (var p in a.supportedCommands)\n if (a.supportedCommands[p].includes(c[u])) {\n h = this.commands[p] = !0;\n break;\n }\n h || (this.keys[c[u]] = !0);\n }\n for (var g in a.supportedCommands)\n this.commands[g] || (this.commands[g] = !1);\n } }, { key: \"execute\", value: function(c) {\n var u, h = { CMD: c.ctrlKey || c.metaKey, SHIFT: c.shiftKey, ALT: c.altKey }, p = !0;\n for (u in this.commands)\n this.commands[u] !== h[u] && (p = !1);\n var g, f = !0;\n for (g in this.keys)\n f = f && c.keyCode === a.keyCodes[g];\n p && f && this.callback(c);\n } }, { key: \"remove\", value: function() {\n this.element.removeEventListener(\"keydown\", this.executeShortcut);\n } }]), a;\n }();\n o.default = l;\n }]).default;\n });\n})(Qt);\nvar ji = Qt.exports;\nconst $i = /* @__PURE__ */ Fe(ji);\nclass Yi {\n constructor() {\n this.registeredShortcuts = /* @__PURE__ */ new Map();\n }\n /**\n * Register shortcut\n *\n * @param shortcut - shortcut options\n */\n add(e) {\n if (this.findShortcut(e.on, e.name))\n throw Error(\n `Shortcut ${e.name} is already registered for ${e.on}. Please remove it before add a new handler.`\n );\n const o = new $i({\n name: e.name,\n on: e.on,\n callback: e.handler\n }), i = this.registeredShortcuts.get(e.on) || [];\n this.registeredShortcuts.set(e.on, [...i, o]);\n }\n /**\n * Remove shortcut\n *\n * @param element - Element shortcut is set for\n * @param name - shortcut name\n */\n remove(e, t) {\n const o = this.findShortcut(e, t);\n if (!o)\n return;\n o.remove();\n const i = this.registeredShortcuts.get(e);\n this.registeredShortcuts.set(e, i.filter((s) => s !== o));\n }\n /**\n * Get Shortcut instance if exist\n *\n * @param element - Element shorcut is set for\n * @param shortcut - shortcut name\n * @returns {number} index - shortcut index if exist\n */\n findShortcut(e, t) {\n return (this.registeredShortcuts.get(e) || []).find(({ name: i }) => i === t);\n }\n}\nconst he = new Yi();\nvar Wi = Object.defineProperty, Ki = Object.getOwnPropertyDescriptor, eo = (n, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? Ki(e, t) : e, s = n.length - 1, r; s >= 0; s--)\n (r = n[s]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && Wi(e, t, i), i;\n}, Se = /* @__PURE__ */ ((n) => (n.Opened = \"toolbox-opened\", n.Closed = \"toolbox-closed\", n.BlockAdded = \"toolbox-block-added\", n))(Se || {});\nconst at = class to extends Te {\n /**\n * Toolbox constructor\n *\n * @param options - available parameters\n * @param options.api - Editor API methods\n * @param options.tools - Tools available to check whether some of them should be displayed at the Toolbox or not\n */\n constructor({ api: e, tools: t, i18nLabels: o }) {\n super(), this.opened = !1, this.listeners = new Ce(), this.popover = null, this.handleMobileLayoutToggle = () => {\n this.destroyPopover(), this.initPopover();\n }, this.onPopoverClose = () => {\n this.opened = !1, this.emit(\n \"toolbox-closed\"\n /* Closed */\n );\n }, this.api = e, this.tools = t, this.i18nLabels = o, this.enableShortcuts(), this.nodes = {\n toolbox: d.make(\"div\", to.CSS.toolbox)\n }, this.initPopover(), this.api.events.on(ye, this.handleMobileLayoutToggle);\n }\n /**\n * Returns True if Toolbox is Empty and nothing to show\n *\n * @returns {boolean}\n */\n get isEmpty() {\n return this.toolsToBeDisplayed.length === 0;\n }\n /**\n * CSS styles\n */\n static get CSS() {\n return {\n toolbox: \"ce-toolbox\"\n };\n }\n /**\n * Returns root block settings element\n */\n getElement() {\n return this.nodes.toolbox;\n }\n /**\n * Returns true if the Toolbox has the Flipper activated and the Flipper has selected button\n */\n hasFocus() {\n if (this.popover !== null)\n return \"hasFocus\" in this.popover ? this.popover.hasFocus() : void 0;\n }\n /**\n * Destroy Module\n */\n destroy() {\n var e;\n super.destroy(), this.nodes && this.nodes.toolbox && this.nodes.toolbox.remove(), this.removeAllShortcuts(), (e = this.popover) == null || e.off(Z.Closed, this.onPopoverClose), this.listeners.destroy(), this.api.events.off(ye, this.handleMobileLayoutToggle);\n }\n /**\n * Toolbox Tool's button click handler\n *\n * @param toolName - tool type to be activated\n * @param blockDataOverrides - Block data predefined by the activated Toolbox item\n */\n toolButtonActivated(e, t) {\n this.insertNewBlock(e, t);\n }\n /**\n * Open Toolbox with Tools\n */\n open() {\n var e;\n this.isEmpty || ((e = this.popover) == null || e.show(), this.opened = !0, this.emit(\n \"toolbox-opened\"\n /* Opened */\n ));\n }\n /**\n * Close Toolbox\n */\n close() {\n var e;\n (e = this.popover) == null || e.hide(), this.opened = !1, this.emit(\n \"toolbox-closed\"\n /* Closed */\n );\n }\n /**\n * Close Toolbox\n */\n toggle() {\n this.opened ? this.close() : this.open();\n }\n /**\n * Creates toolbox popover and appends it inside wrapper element\n */\n initPopover() {\n var t;\n const e = pe() ? Jt : lt;\n this.popover = new e({\n scopeElement: this.api.ui.nodes.redactor,\n searchable: !0,\n messages: {\n nothingFound: this.i18nLabels.nothingFound,\n search: this.i18nLabels.filter\n },\n items: this.toolboxItemsToBeDisplayed\n }), this.popover.on(Z.Closed, this.onPopoverClose), (t = this.nodes.toolbox) == null || t.append(this.popover.getElement());\n }\n /**\n * Destroys popover instance and removes it from DOM\n */\n destroyPopover() {\n this.popover !== null && (this.popover.hide(), this.popover.off(Z.Closed, this.onPopoverClose), this.popover.destroy(), this.popover = null), this.nodes.toolbox !== null && (this.nodes.toolbox.innerHTML = \"\");\n }\n get toolsToBeDisplayed() {\n const e = [];\n return this.tools.forEach((t) => {\n t.toolbox && e.push(t);\n }), e;\n }\n get toolboxItemsToBeDisplayed() {\n const e = (t, o) => ({\n icon: t.icon,\n title: z.t(K.toolNames, t.title || Le(o.name)),\n name: o.name,\n onActivate: () => {\n this.toolButtonActivated(o.name, t.data);\n },\n secondaryLabel: o.shortcut ? tt(o.shortcut) : \"\"\n });\n return this.toolsToBeDisplayed.reduce((t, o) => (Array.isArray(o.toolbox) ? o.toolbox.forEach((i) => {\n t.push(e(i, o));\n }) : o.toolbox !== void 0 && t.push(e(o.toolbox, o)), t), []);\n }\n /**\n * Iterate all tools and enable theirs shortcuts if specified\n */\n enableShortcuts() {\n this.toolsToBeDisplayed.forEach((e) => {\n const t = e.shortcut;\n t && this.enableShortcutForTool(e.name, t);\n });\n }\n /**\n * Enable shortcut Block Tool implemented shortcut\n *\n * @param {string} toolName - Tool name\n * @param {string} shortcut - shortcut according to the ShortcutData Module format\n */\n enableShortcutForTool(e, t) {\n he.add({\n name: t,\n on: this.api.ui.nodes.redactor,\n handler: async (o) => {\n o.preventDefault();\n const i = this.api.blocks.getCurrentBlockIndex(), s = this.api.blocks.getBlockByIndex(i);\n if (s)\n try {\n const r = await this.api.blocks.convert(s.id, e);\n this.api.caret.setToBlock(r, \"end\");\n return;\n } catch {\n }\n this.insertNewBlock(e);\n }\n });\n }\n /**\n * Removes all added shortcuts\n * Fired when the Read-Only mode is activated\n */\n removeAllShortcuts() {\n this.toolsToBeDisplayed.forEach((e) => {\n const t = e.shortcut;\n t && he.remove(this.api.ui.nodes.redactor, t);\n });\n }\n /**\n * Inserts new block\n * Can be called when button clicked on Toolbox or by ShortcutData\n *\n * @param {string} toolName - Tool name\n * @param blockDataOverrides - predefined Block data\n */\n async insertNewBlock(e, t) {\n const o = this.api.blocks.getCurrentBlockIndex(), i = this.api.blocks.getBlockByIndex(o);\n if (!i)\n return;\n const s = i.isEmpty ? o : o + 1;\n let r;\n if (t) {\n const a = await this.api.blocks.composeBlockData(e);\n r = Object.assign(a, t);\n }\n const l = this.api.blocks.insert(\n e,\n r,\n void 0,\n s,\n void 0,\n i.isEmpty\n );\n l.call(J.APPEND_CALLBACK), this.api.caret.setToBlock(s), this.emit(\"toolbox-block-added\", {\n block: l\n }), this.api.toolbar.close();\n }\n};\neo([\n ue\n], at.prototype, \"toolsToBeDisplayed\", 1);\neo([\n ue\n], at.prototype, \"toolboxItemsToBeDisplayed\", 1);\nlet Xi = at;\nconst oo = \"block hovered\";\nasync function Vi(n, e) {\n const t = navigator.keyboard;\n if (!t)\n return e;\n try {\n return (await t.getLayoutMap()).get(n) || e;\n } catch (o) {\n return console.error(o), e;\n }\n}\nclass qi extends y {\n /**\n * @class\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.toolboxInstance = null;\n }\n /**\n * CSS styles\n *\n * @returns {object}\n */\n get CSS() {\n return {\n toolbar: \"ce-toolbar\",\n content: \"ce-toolbar__content\",\n actions: \"ce-toolbar__actions\",\n actionsOpened: \"ce-toolbar__actions--opened\",\n toolbarOpened: \"ce-toolbar--opened\",\n openedToolboxHolderModifier: \"codex-editor--toolbox-opened\",\n plusButton: \"ce-toolbar__plus\",\n plusButtonShortcut: \"ce-toolbar__plus-shortcut\",\n settingsToggler: \"ce-toolbar__settings-btn\",\n settingsTogglerHidden: \"ce-toolbar__settings-btn--hidden\"\n };\n }\n /**\n * Returns the Toolbar opening state\n *\n * @returns {boolean}\n */\n get opened() {\n return this.nodes.wrapper.classList.contains(this.CSS.toolbarOpened);\n }\n /**\n * Public interface for accessing the Toolbox\n */\n get toolbox() {\n var e;\n return {\n opened: (e = this.toolboxInstance) == null ? void 0 : e.opened,\n close: () => {\n var t;\n (t = this.toolboxInstance) == null || t.close();\n },\n open: () => {\n if (this.toolboxInstance === null) {\n I(\"toolbox.open() called before initialization is finished\", \"warn\");\n return;\n }\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, this.toolboxInstance.open();\n },\n toggle: () => {\n if (this.toolboxInstance === null) {\n I(\"toolbox.toggle() called before initialization is finished\", \"warn\");\n return;\n }\n this.toolboxInstance.toggle();\n },\n hasFocus: () => {\n var t;\n return (t = this.toolboxInstance) == null ? void 0 : t.hasFocus();\n }\n };\n }\n /**\n * Block actions appearance manipulations\n */\n get blockActions() {\n return {\n hide: () => {\n this.nodes.actions.classList.remove(this.CSS.actionsOpened);\n },\n show: () => {\n this.nodes.actions.classList.add(this.CSS.actionsOpened);\n }\n };\n }\n /**\n * Methods for working with Block Tunes toggler\n */\n get blockTunesToggler() {\n return {\n hide: () => this.nodes.settingsToggler.classList.add(this.CSS.settingsTogglerHidden),\n show: () => this.nodes.settingsToggler.classList.remove(this.CSS.settingsTogglerHidden)\n };\n }\n /**\n * Toggles read-only mode\n *\n * @param {boolean} readOnlyEnabled - read-only mode\n */\n toggleReadOnly(e) {\n e ? (this.destroy(), this.Editor.BlockSettings.destroy(), this.disableModuleBindings()) : window.requestIdleCallback(() => {\n this.drawUI(), this.enableModuleBindings();\n }, { timeout: 2e3 });\n }\n /**\n * Move Toolbar to the passed (or current) Block\n *\n * @param block - block to move Toolbar near it\n */\n moveAndOpen(e = this.Editor.BlockManager.currentBlock) {\n if (this.toolboxInstance === null) {\n I(\"Can't open Toolbar since Editor initialization is not finished yet\", \"warn\");\n return;\n }\n if (this.toolboxInstance.opened && this.toolboxInstance.close(), this.Editor.BlockSettings.opened && this.Editor.BlockSettings.close(), !e)\n return;\n this.hoveredBlock = e;\n const t = e.holder, { isMobile: o } = this.Editor.UI;\n let i;\n const s = 20, r = e.firstInput, l = t.getBoundingClientRect(), a = r !== void 0 ? r.getBoundingClientRect() : null, c = a !== null ? a.top - l.top : null, u = c !== null ? c > s : void 0;\n if (o)\n i = t.offsetTop + t.offsetHeight;\n else if (r === void 0 || u) {\n const h = parseInt(window.getComputedStyle(e.pluginsContent).paddingTop);\n i = t.offsetTop + h;\n } else {\n const h = _o(r), p = parseInt(window.getComputedStyle(this.nodes.plusButton).height, 10), g = 8;\n i = t.offsetTop + h - p + g + c;\n }\n this.nodes.wrapper.style.top = `${Math.floor(i)}px`, this.Editor.BlockManager.blocks.length === 1 && e.isEmpty ? this.blockTunesToggler.hide() : this.blockTunesToggler.show(), this.open();\n }\n /**\n * Close the Toolbar\n */\n close() {\n var e, t;\n this.Editor.ReadOnly.isEnabled || ((e = this.nodes.wrapper) == null || e.classList.remove(this.CSS.toolbarOpened), this.blockActions.hide(), (t = this.toolboxInstance) == null || t.close(), this.Editor.BlockSettings.close(), this.reset());\n }\n /**\n * Reset the Toolbar position to prevent DOM height growth, for example after blocks deletion\n */\n reset() {\n this.nodes.wrapper.style.top = \"unset\";\n }\n /**\n * Open Toolbar with Plus Button and Actions\n *\n * @param {boolean} withBlockActions - by default, Toolbar opens with Block Actions.\n * This flag allows to open Toolbar without Actions.\n */\n open(e = !0) {\n this.nodes.wrapper.classList.add(this.CSS.toolbarOpened), e ? this.blockActions.show() : this.blockActions.hide();\n }\n /**\n * Draws Toolbar elements\n */\n async make() {\n this.nodes.wrapper = d.make(\"div\", this.CSS.toolbar), [\"content\", \"actions\"].forEach((s) => {\n this.nodes[s] = d.make(\"div\", this.CSS[s]);\n }), d.append(this.nodes.wrapper, this.nodes.content), d.append(this.nodes.content, this.nodes.actions), this.nodes.plusButton = d.make(\"div\", this.CSS.plusButton, {\n innerHTML: Ci\n }), d.append(this.nodes.actions, this.nodes.plusButton), this.readOnlyMutableListeners.on(this.nodes.plusButton, \"click\", () => {\n Ne(!0), this.plusButtonClicked();\n }, !1);\n const e = d.make(\"div\");\n e.appendChild(document.createTextNode(z.ui(K.ui.toolbar.toolbox, \"Add\"))), e.appendChild(d.make(\"div\", this.CSS.plusButtonShortcut, {\n textContent: \"/\"\n })), Pe(this.nodes.plusButton, e, {\n hidingDelay: 400\n }), this.nodes.settingsToggler = d.make(\"span\", this.CSS.settingsToggler, {\n innerHTML: Ti\n }), d.append(this.nodes.actions, this.nodes.settingsToggler);\n const t = d.make(\"div\"), o = d.text(z.ui(K.ui.blockTunes.toggler, \"Click to tune\")), i = await Vi(\"Slash\", \"/\");\n t.appendChild(o), t.appendChild(d.make(\"div\", this.CSS.plusButtonShortcut, {\n textContent: tt(`CMD + ${i}`)\n })), Pe(this.nodes.settingsToggler, t, {\n hidingDelay: 400\n }), d.append(this.nodes.actions, this.makeToolbox()), d.append(this.nodes.actions, this.Editor.BlockSettings.getElement()), d.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper);\n }\n /**\n * Creates the Toolbox instance and return it's rendered element\n */\n makeToolbox() {\n return this.toolboxInstance = new Xi({\n api: this.Editor.API.methods,\n tools: this.Editor.Tools.blockTools,\n i18nLabels: {\n filter: z.ui(K.ui.popover, \"Filter\"),\n nothingFound: z.ui(K.ui.popover, \"Nothing found\")\n }\n }), this.toolboxInstance.on(Se.Opened, () => {\n this.Editor.UI.nodes.wrapper.classList.add(this.CSS.openedToolboxHolderModifier);\n }), this.toolboxInstance.on(Se.Closed, () => {\n this.Editor.UI.nodes.wrapper.classList.remove(this.CSS.openedToolboxHolderModifier);\n }), this.toolboxInstance.on(Se.BlockAdded, ({ block: e }) => {\n const { BlockManager: t, Caret: o } = this.Editor, i = t.getBlockById(e.id);\n i.inputs.length === 0 && (i === t.lastBlock ? (t.insertAtEnd(), o.setToBlock(t.lastBlock)) : o.setToBlock(t.nextBlock));\n }), this.toolboxInstance.getElement();\n }\n /**\n * Handler for Plus Button\n */\n plusButtonClicked() {\n var e;\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, (e = this.toolboxInstance) == null || e.toggle();\n }\n /**\n * Enable bindings\n */\n enableModuleBindings() {\n this.readOnlyMutableListeners.on(this.nodes.settingsToggler, \"mousedown\", (e) => {\n var t;\n e.stopPropagation(), this.settingsTogglerClicked(), (t = this.toolboxInstance) != null && t.opened && this.toolboxInstance.close(), Ne(!0);\n }, !0), pe() || this.eventsDispatcher.on(oo, (e) => {\n var t;\n this.Editor.BlockSettings.opened || (t = this.toolboxInstance) != null && t.opened || this.moveAndOpen(e.block);\n });\n }\n /**\n * Disable bindings\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Clicks on the Block Settings toggler\n */\n settingsTogglerClicked() {\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, this.Editor.BlockSettings.opened ? this.Editor.BlockSettings.close() : this.Editor.BlockSettings.open(this.hoveredBlock);\n }\n /**\n * Draws Toolbar UI\n *\n * Toolbar contains BlockSettings and Toolbox.\n * That's why at first we draw its components and then Toolbar itself\n *\n * Steps:\n * - Make Toolbar dependent components like BlockSettings, Toolbox and so on\n * - Make itself and append dependent nodes to itself\n *\n */\n drawUI() {\n this.Editor.BlockSettings.make(), this.make();\n }\n /**\n * Removes all created and saved HTMLElements\n * It is used in Read-Only mode\n */\n destroy() {\n this.removeAllNodes(), this.toolboxInstance && this.toolboxInstance.destroy();\n }\n}\nvar ne = /* @__PURE__ */ ((n) => (n[n.Block = 0] = \"Block\", n[n.Inline = 1] = \"Inline\", n[n.Tune = 2] = \"Tune\", n))(ne || {}), Ie = /* @__PURE__ */ ((n) => (n.Shortcut = \"shortcut\", n.Toolbox = \"toolbox\", n.EnabledInlineTools = \"inlineToolbar\", n.EnabledBlockTunes = \"tunes\", n.Config = \"config\", n))(Ie || {}), io = /* @__PURE__ */ ((n) => (n.Shortcut = \"shortcut\", n.SanitizeConfig = \"sanitize\", n))(io || {}), ce = /* @__PURE__ */ ((n) => (n.IsEnabledLineBreaks = \"enableLineBreaks\", n.Toolbox = \"toolbox\", n.ConversionConfig = \"conversionConfig\", n.IsReadOnlySupported = \"isReadOnlySupported\", n.PasteConfig = \"pasteConfig\", n))(ce || {}), ct = /* @__PURE__ */ ((n) => (n.IsInline = \"isInline\", n.Title = \"title\", n))(ct || {}), et = /* @__PURE__ */ ((n) => (n.IsTune = \"isTune\", n))(et || {});\nclass dt {\n /**\n * @class\n * @param {ConstructorOptions} options - Constructor options\n */\n constructor({\n name: e,\n constructable: t,\n config: o,\n api: i,\n isDefault: s,\n isInternal: r = !1,\n defaultPlaceholder: l\n }) {\n this.api = i, this.name = e, this.constructable = t, this.config = o, this.isDefault = s, this.isInternal = r, this.defaultPlaceholder = l;\n }\n /**\n * Returns Tool user configuration\n */\n get settings() {\n const e = this.config.config || {};\n return this.isDefault && !(\"placeholder\" in e) && this.defaultPlaceholder && (e.placeholder = this.defaultPlaceholder), e;\n }\n /**\n * Calls Tool's reset method\n */\n reset() {\n if (O(this.constructable.reset))\n return this.constructable.reset();\n }\n /**\n * Calls Tool's prepare method\n */\n prepare() {\n if (O(this.constructable.prepare))\n return this.constructable.prepare({\n toolName: this.name,\n config: this.settings\n });\n }\n /**\n * Returns shortcut for Tool (internal or specified by user)\n */\n get shortcut() {\n const e = this.constructable.shortcut;\n return this.config.shortcut || e;\n }\n /**\n * Returns Tool's sanitizer configuration\n */\n get sanitizeConfig() {\n return this.constructable.sanitize || {};\n }\n /**\n * Returns true if Tools is inline\n */\n isInline() {\n return this.type === ne.Inline;\n }\n /**\n * Returns true if Tools is block\n */\n isBlock() {\n return this.type === ne.Block;\n }\n /**\n * Returns true if Tools is tune\n */\n isTune() {\n return this.type === ne.Tune;\n }\n}\nclass Zi extends y {\n /**\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.CSS = {\n inlineToolbar: \"ce-inline-toolbar\"\n }, this.opened = !1, this.popover = null, this.toolbarVerticalMargin = pe() ? 20 : 6, this.toolsInstances = /* @__PURE__ */ new Map();\n }\n /**\n * Toggles read-only mode\n *\n * @param {boolean} readOnlyEnabled - read-only mode\n */\n toggleReadOnly(e) {\n e ? this.destroy() : window.requestIdleCallback(() => {\n this.make();\n }, { timeout: 2e3 });\n }\n /**\n * Moving / appearance\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n */\n /**\n * Shows Inline Toolbar if something is selected\n *\n * @param [needToClose] - pass true to close toolbar if it is not allowed.\n * Avoid to use it just for closing IT, better call .close() clearly.\n */\n async tryToShow(e = !1) {\n e && this.close(), this.allowedToShow() && (await this.open(), this.Editor.Toolbar.close());\n }\n /**\n * Hides Inline Toolbar\n */\n close() {\n var e, t;\n this.opened && (this.Editor.ReadOnly.isEnabled || (Array.from(this.toolsInstances.entries()).forEach(([o, i]) => {\n const s = this.getToolShortcut(o);\n s && he.remove(this.Editor.UI.nodes.redactor, s), O(i.clear) && i.clear();\n }), this.toolsInstances = null, this.reset(), this.opened = !1, (e = this.popover) == null || e.hide(), (t = this.popover) == null || t.destroy(), this.popover = null));\n }\n /**\n * Check if node is contained by Inline Toolbar\n *\n * @param {Node} node — node to check\n */\n containsNode(e) {\n return this.nodes.wrapper === void 0 ? !1 : this.nodes.wrapper.contains(e);\n }\n /**\n * Removes UI and its components\n */\n destroy() {\n var e;\n this.removeAllNodes(), (e = this.popover) == null || e.destroy(), this.popover = null;\n }\n /**\n * Making DOM\n */\n make() {\n this.nodes.wrapper = d.make(\"div\", [\n this.CSS.inlineToolbar,\n ...this.isRtl ? [this.Editor.UI.CSS.editorRtlFix] : []\n ]), d.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper);\n }\n /**\n * Shows Inline Toolbar\n */\n async open() {\n var t;\n if (this.opened)\n return;\n this.opened = !0, this.popover !== null && this.popover.destroy();\n const e = await this.getInlineTools();\n this.popover = new Ri({\n items: e,\n scopeElement: this.Editor.API.methods.ui.nodes.redactor,\n messages: {\n nothingFound: z.ui(K.ui.popover, \"Nothing found\"),\n search: z.ui(K.ui.popover, \"Filter\")\n }\n }), this.move(this.popover.size.width), (t = this.nodes.wrapper) == null || t.append(this.popover.getElement()), this.popover.show();\n }\n /**\n * Move Toolbar to the selected text\n *\n * @param popoverWidth - width of the toolbar popover\n */\n move(e) {\n const t = b.rect, o = this.Editor.UI.nodes.wrapper.getBoundingClientRect(), i = {\n x: t.x - o.x,\n y: t.y + t.height - // + window.scrollY\n o.top + this.toolbarVerticalMargin\n };\n i.x + e + o.x > this.Editor.UI.contentRect.right && (i.x = this.Editor.UI.contentRect.right - e - o.x), this.nodes.wrapper.style.left = Math.floor(i.x) + \"px\", this.nodes.wrapper.style.top = Math.floor(i.y) + \"px\";\n }\n /**\n * Clear orientation classes and reset position\n */\n reset() {\n this.nodes.wrapper.style.left = \"0\", this.nodes.wrapper.style.top = \"0\";\n }\n /**\n * Need to show Inline Toolbar or not\n */\n allowedToShow() {\n const e = [\"IMG\", \"INPUT\"], t = b.get(), o = b.text;\n if (!t || !t.anchorNode || t.isCollapsed || o.length < 1)\n return !1;\n const i = d.isElement(t.anchorNode) ? t.anchorNode : t.anchorNode.parentElement;\n if (i === null || t && e.includes(i.tagName) || i.closest('[contenteditable=\"true\"]') === null)\n return !1;\n const r = this.Editor.BlockManager.getBlock(t.anchorNode);\n return r ? r.tool.inlineTools.size !== 0 : !1;\n }\n /**\n * Working with Tools\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n */\n /**\n * Returns Inline Tools segregated by their appearance type: popover items and custom html elements.\n * Sets this.toolsInstances map\n */\n async getInlineTools() {\n const e = b.get(), t = this.Editor.BlockManager.getBlock(e.anchorNode), o = Array.from(t.tool.inlineTools.values()), i = [];\n this.toolsInstances === null && (this.toolsInstances = /* @__PURE__ */ new Map());\n for (let s = 0; s < o.length; s++) {\n const r = o[s], l = r.create(), a = await l.render();\n this.toolsInstances.set(r.name, l);\n const c = this.getToolShortcut(r.name);\n if (c)\n try {\n this.enableShortcuts(r.name, c);\n } catch {\n }\n const u = c !== void 0 ? tt(c) : void 0, h = z.t(\n K.toolNames,\n r.title || Le(r.name)\n );\n [a].flat().forEach((p) => {\n var f, k;\n const g = {\n name: r.name,\n onActivate: () => {\n this.toolClicked(l);\n },\n hint: {\n title: h,\n description: u\n }\n };\n if (d.isElement(p)) {\n const C = {\n ...g,\n element: p,\n type: A.Html\n };\n if (O(l.renderActions)) {\n const S = l.renderActions();\n C.children = {\n isOpen: (f = l.checkState) == null ? void 0 : f.call(l, b.get()),\n /** Disable keyboard navigation in actions, as it might conflict with enter press handling */\n isFlippable: !1,\n items: [\n {\n type: A.Html,\n element: S\n }\n ]\n };\n } else\n (k = l.checkState) == null || k.call(l, b.get());\n i.push(C);\n } else if (p.type === A.Html)\n i.push({\n ...g,\n ...p,\n type: A.Html\n });\n else if (p.type === A.Separator)\n i.push({\n type: A.Separator\n });\n else {\n const C = {\n ...g,\n ...p,\n type: A.Default\n };\n \"children\" in C && s !== 0 && i.push({\n type: A.Separator\n }), i.push(C), \"children\" in C && s < o.length - 1 && i.push({\n type: A.Separator\n });\n }\n });\n }\n return i;\n }\n /**\n * Get shortcut name for tool\n *\n * @param toolName — Tool name\n */\n getToolShortcut(e) {\n const { Tools: t } = this.Editor, o = t.inlineTools.get(e), i = t.internal.inlineTools;\n return Array.from(i.keys()).includes(e) ? this.inlineTools[e][io.Shortcut] : o == null ? void 0 : o.shortcut;\n }\n /**\n * Enable Tool shortcut with Editor Shortcuts Module\n *\n * @param toolName - tool name\n * @param shortcut - shortcut according to the ShortcutData Module format\n */\n enableShortcuts(e, t) {\n he.add({\n name: t,\n handler: (o) => {\n var s;\n const { currentBlock: i } = this.Editor.BlockManager;\n i && i.tool.enabledInlineTools && (o.preventDefault(), (s = this.popover) == null || s.activateItemByName(e));\n },\n on: this.Editor.UI.nodes.redactor\n });\n }\n /**\n * Inline Tool button clicks\n *\n * @param tool - Tool's instance\n */\n toolClicked(e) {\n var o;\n const t = b.range;\n (o = e.surround) == null || o.call(e, t), this.checkToolsState();\n }\n /**\n * Check Tools` state by selection\n */\n checkToolsState() {\n var e;\n (e = this.toolsInstances) == null || e.forEach((t) => {\n var o;\n (o = t.checkState) == null || o.call(t, b.get());\n });\n }\n /**\n * Get inline tools tools\n * Tools that has isInline is true\n */\n get inlineTools() {\n const e = {};\n return Array.from(this.Editor.Tools.inlineTools.entries()).forEach(([t, o]) => {\n e[t] = o.create();\n }), e;\n }\n}\nfunction so() {\n const n = window.getSelection();\n if (n === null)\n return [null, 0];\n let e = n.focusNode, t = n.focusOffset;\n return e === null ? [null, 0] : (e.nodeType !== Node.TEXT_NODE && e.childNodes.length > 0 && (e.childNodes[t] ? (e = e.childNodes[t], t = 0) : (e = e.childNodes[t - 1], t = e.textContent.length)), [e, t]);\n}\nfunction no(n, e, t, o) {\n const i = document.createRange();\n o === \"left\" ? (i.setStart(n, 0), i.setEnd(e, t)) : (i.setStart(e, t), i.setEnd(n, n.childNodes.length));\n const s = i.cloneContents(), r = document.createElement(\"div\");\n r.appendChild(s);\n const l = r.textContent || \"\";\n return Lo(l);\n}\nfunction Me(n) {\n const e = d.getDeepestNode(n);\n if (e === null || d.isEmpty(n))\n return !0;\n if (d.isNativeInput(e))\n return e.selectionEnd === 0;\n if (d.isEmpty(n))\n return !0;\n const [t, o] = so();\n return t === null ? !1 : no(n, t, o, \"left\");\n}\nfunction Ae(n) {\n const e = d.getDeepestNode(n, !0);\n if (e === null)\n return !0;\n if (d.isNativeInput(e))\n return e.selectionEnd === e.value.length;\n const [t, o] = so();\n return t === null ? !1 : no(n, t, o, \"right\");\n}\nclass Gi extends y {\n /**\n * All keydowns on Block\n *\n * @param {KeyboardEvent} event - keydown\n */\n keydown(e) {\n switch (this.beforeKeydownProcessing(e), e.keyCode) {\n case w.BACKSPACE:\n this.backspace(e);\n break;\n case w.DELETE:\n this.delete(e);\n break;\n case w.ENTER:\n this.enter(e);\n break;\n case w.DOWN:\n case w.RIGHT:\n this.arrowRightAndDown(e);\n break;\n case w.UP:\n case w.LEFT:\n this.arrowLeftAndUp(e);\n break;\n case w.TAB:\n this.tabPressed(e);\n break;\n }\n e.key === \"/\" && !e.ctrlKey && !e.metaKey && this.slashPressed(e), e.code === \"Slash\" && (e.ctrlKey || e.metaKey) && (e.preventDefault(), this.commandSlashPressed());\n }\n /**\n * Fires on keydown before event processing\n *\n * @param {KeyboardEvent} event - keydown\n */\n beforeKeydownProcessing(e) {\n this.needToolbarClosing(e) && Mt(e.keyCode) && (this.Editor.Toolbar.close(), e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || this.Editor.BlockSelection.clearSelection(e));\n }\n /**\n * Key up on Block:\n * - shows Inline Toolbar if something selected\n * - shows conversion toolbar with 85% of block selection\n *\n * @param {KeyboardEvent} event - keyup event\n */\n keyup(e) {\n e.shiftKey || this.Editor.UI.checkEmptiness();\n }\n /**\n * Add drop target styles\n *\n * @param {DragEvent} event - drag over event\n */\n dragOver(e) {\n const t = this.Editor.BlockManager.getBlockByChildNode(e.target);\n t.dropTarget = !0;\n }\n /**\n * Remove drop target style\n *\n * @param {DragEvent} event - drag leave event\n */\n dragLeave(e) {\n const t = this.Editor.BlockManager.getBlockByChildNode(e.target);\n t.dropTarget = !1;\n }\n /**\n * Copying selected blocks\n * Before putting to the clipboard we sanitize all blocks and then copy to the clipboard\n *\n * @param {ClipboardEvent} event - clipboard event\n */\n handleCommandC(e) {\n const { BlockSelection: t } = this.Editor;\n t.anyBlockSelected && t.copySelectedBlocks(e);\n }\n /**\n * Copy and Delete selected Blocks\n *\n * @param {ClipboardEvent} event - clipboard event\n */\n handleCommandX(e) {\n const { BlockSelection: t, BlockManager: o, Caret: i } = this.Editor;\n t.anyBlockSelected && t.copySelectedBlocks(e).then(() => {\n const s = o.removeSelectedBlocks(), r = o.insertDefaultBlockAtIndex(s, !0);\n i.setToBlock(r, i.positions.START), t.clearSelection(e);\n });\n }\n /**\n * Tab pressed inside a Block.\n *\n * @param {KeyboardEvent} event - keydown\n */\n tabPressed(e) {\n const { InlineToolbar: t, Caret: o } = this.Editor;\n if (t.opened)\n return;\n (e.shiftKey ? o.navigatePrevious(!0) : o.navigateNext(!0)) && e.preventDefault();\n }\n /**\n * '/' + 'command' keydown inside a Block\n */\n commandSlashPressed() {\n this.Editor.BlockSelection.selectedBlocks.length > 1 || this.activateBlockSettings();\n }\n /**\n * '/' keydown inside a Block\n *\n * @param event - keydown\n */\n slashPressed(e) {\n this.Editor.BlockManager.currentBlock.isEmpty && (e.preventDefault(), this.Editor.Caret.insertContentAtCaretPosition(\"/\"), this.activateToolbox());\n }\n /**\n * ENTER pressed on block\n *\n * @param {KeyboardEvent} event - keydown\n */\n enter(e) {\n const { BlockManager: t, UI: o } = this.Editor, i = t.currentBlock;\n if (i === void 0 || i.tool.isLineBreaksEnabled || o.someToolbarOpened && o.someFlipperButtonFocused || e.shiftKey && !Ge)\n return;\n let s = i;\n i.currentInput !== void 0 && Me(i.currentInput) && !i.hasMedia ? this.Editor.BlockManager.insertDefaultBlockAtIndex(this.Editor.BlockManager.currentBlockIndex) : i.currentInput && Ae(i.currentInput) ? s = this.Editor.BlockManager.insertDefaultBlockAtIndex(this.Editor.BlockManager.currentBlockIndex + 1) : s = this.Editor.BlockManager.split(), this.Editor.Caret.setToBlock(s), this.Editor.Toolbar.moveAndOpen(s), e.preventDefault();\n }\n /**\n * Handle backspace keydown on Block\n *\n * @param {KeyboardEvent} event - keydown\n */\n backspace(e) {\n const { BlockManager: t, Caret: o } = this.Editor, { currentBlock: i, previousBlock: s } = t;\n if (i === void 0 || !b.isCollapsed || !i.currentInput || !Me(i.currentInput))\n return;\n if (e.preventDefault(), this.Editor.Toolbar.close(), !(i.currentInput === i.firstInput)) {\n o.navigatePrevious();\n return;\n }\n if (s === null)\n return;\n if (s.isEmpty) {\n t.removeBlock(s);\n return;\n }\n if (i.isEmpty) {\n t.removeBlock(i);\n const a = t.currentBlock;\n o.setToBlock(a, o.positions.END);\n return;\n }\n wt(s, i) ? this.mergeBlocks(s, i) : o.setToBlock(s, o.positions.END);\n }\n /**\n * Handles delete keydown on Block\n * Removes char after the caret.\n * If caret is at the end of the block, merge next block with current\n *\n * @param {KeyboardEvent} event - keydown\n */\n delete(e) {\n const { BlockManager: t, Caret: o } = this.Editor, { currentBlock: i, nextBlock: s } = t;\n if (!b.isCollapsed || !Ae(i.currentInput))\n return;\n if (e.preventDefault(), this.Editor.Toolbar.close(), !(i.currentInput === i.lastInput)) {\n o.navigateNext();\n return;\n }\n if (s === null)\n return;\n if (s.isEmpty) {\n t.removeBlock(s);\n return;\n }\n if (i.isEmpty) {\n t.removeBlock(i), o.setToBlock(s, o.positions.START);\n return;\n }\n wt(i, s) ? this.mergeBlocks(i, s) : o.setToBlock(s, o.positions.START);\n }\n /**\n * Merge passed Blocks\n *\n * @param targetBlock - to which Block we want to merge\n * @param blockToMerge - what Block we want to merge\n */\n mergeBlocks(e, t) {\n const { BlockManager: o, Caret: i, Toolbar: s } = this.Editor;\n i.createShadow(e.lastInput), o.mergeBlocks(e, t).then(() => {\n i.restoreCaret(e.pluginsContent), s.close();\n });\n }\n /**\n * Handle right and down keyboard keys\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n arrowRightAndDown(e) {\n const t = le.usedKeys.includes(e.keyCode) && (!e.shiftKey || e.keyCode === w.TAB);\n if (this.Editor.UI.someToolbarOpened && t)\n return;\n this.Editor.Toolbar.close();\n const { currentBlock: o } = this.Editor.BlockManager, s = ((o == null ? void 0 : o.currentInput) !== void 0 ? Ae(o.currentInput) : void 0) || this.Editor.BlockSelection.anyBlockSelected;\n if (e.shiftKey && e.keyCode === w.DOWN && s) {\n this.Editor.CrossBlockSelection.toggleBlockSelectedState();\n return;\n }\n if (e.keyCode === w.DOWN || e.keyCode === w.RIGHT && !this.isRtl ? this.Editor.Caret.navigateNext() : this.Editor.Caret.navigatePrevious()) {\n e.preventDefault();\n return;\n }\n Oe(() => {\n this.Editor.BlockManager.currentBlock && this.Editor.BlockManager.currentBlock.updateCurrentInput();\n }, 20)(), this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Handle left and up keyboard keys\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n arrowLeftAndUp(e) {\n if (this.Editor.UI.someToolbarOpened) {\n if (le.usedKeys.includes(e.keyCode) && (!e.shiftKey || e.keyCode === w.TAB))\n return;\n this.Editor.UI.closeAllToolbars();\n }\n this.Editor.Toolbar.close();\n const { currentBlock: t } = this.Editor.BlockManager, i = ((t == null ? void 0 : t.currentInput) !== void 0 ? Me(t.currentInput) : void 0) || this.Editor.BlockSelection.anyBlockSelected;\n if (e.shiftKey && e.keyCode === w.UP && i) {\n this.Editor.CrossBlockSelection.toggleBlockSelectedState(!1);\n return;\n }\n if (e.keyCode === w.UP || e.keyCode === w.LEFT && !this.isRtl ? this.Editor.Caret.navigatePrevious() : this.Editor.Caret.navigateNext()) {\n e.preventDefault();\n return;\n }\n Oe(() => {\n this.Editor.BlockManager.currentBlock && this.Editor.BlockManager.currentBlock.updateCurrentInput();\n }, 20)(), this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Cases when we need to close Toolbar\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n needToolbarClosing(e) {\n const t = e.keyCode === w.ENTER && this.Editor.Toolbar.toolbox.opened, o = e.keyCode === w.ENTER && this.Editor.BlockSettings.opened, i = e.keyCode === w.ENTER && this.Editor.InlineToolbar.opened, s = e.keyCode === w.TAB;\n return !(e.shiftKey || s || t || o || i);\n }\n /**\n * If Toolbox is not open, then just open it and show plus button\n */\n activateToolbox() {\n this.Editor.Toolbar.opened || this.Editor.Toolbar.moveAndOpen(), this.Editor.Toolbar.toolbox.open();\n }\n /**\n * Open Toolbar and show BlockSettings before flipping Tools\n */\n activateBlockSettings() {\n this.Editor.Toolbar.opened || this.Editor.Toolbar.moveAndOpen(), this.Editor.BlockSettings.opened || this.Editor.BlockSettings.open();\n }\n}\nclass Xe {\n /**\n * @class\n * @param {HTMLElement} workingArea — editor`s working node\n */\n constructor(e) {\n this.blocks = [], this.workingArea = e;\n }\n /**\n * Get length of Block instances array\n *\n * @returns {number}\n */\n get length() {\n return this.blocks.length;\n }\n /**\n * Get Block instances array\n *\n * @returns {Block[]}\n */\n get array() {\n return this.blocks;\n }\n /**\n * Get blocks html elements array\n *\n * @returns {HTMLElement[]}\n */\n get nodes() {\n return At(this.workingArea.children);\n }\n /**\n * Proxy trap to implement array-like setter\n *\n * @example\n * blocks[0] = new Block(...)\n * @param {Blocks} instance — Blocks instance\n * @param {PropertyKey} property — block index or any Blocks class property key to set\n * @param {Block} value — value to set\n * @returns {boolean}\n */\n static set(e, t, o) {\n return isNaN(Number(t)) ? (Reflect.set(e, t, o), !0) : (e.insert(+t, o), !0);\n }\n /**\n * Proxy trap to implement array-like getter\n *\n * @param {Blocks} instance — Blocks instance\n * @param {PropertyKey} property — Blocks class property key\n * @returns {Block|*}\n */\n static get(e, t) {\n return isNaN(Number(t)) ? Reflect.get(e, t) : e.get(+t);\n }\n /**\n * Push new Block to the blocks array and append it to working area\n *\n * @param {Block} block - Block to add\n */\n push(e) {\n this.blocks.push(e), this.insertToDOM(e);\n }\n /**\n * Swaps blocks with indexes first and second\n *\n * @param {number} first - first block index\n * @param {number} second - second block index\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n const o = this.blocks[t];\n d.swap(this.blocks[e].holder, o.holder), this.blocks[t] = this.blocks[e], this.blocks[e] = o;\n }\n /**\n * Move a block from one to another index\n *\n * @param {number} toIndex - new index of the block\n * @param {number} fromIndex - block to move\n */\n move(e, t) {\n const o = this.blocks.splice(t, 1)[0], i = e - 1, s = Math.max(0, i), r = this.blocks[s];\n e > 0 ? this.insertToDOM(o, \"afterend\", r) : this.insertToDOM(o, \"beforebegin\", r), this.blocks.splice(e, 0, o);\n const l = this.composeBlockEvent(\"move\", {\n fromIndex: t,\n toIndex: e\n });\n o.call(J.MOVED, l);\n }\n /**\n * Insert new Block at passed index\n *\n * @param {number} index — index to insert Block\n * @param {Block} block — Block to insert\n * @param {boolean} replace — it true, replace block on given index\n */\n insert(e, t, o = !1) {\n if (!this.length) {\n this.push(t);\n return;\n }\n e > this.length && (e = this.length), o && (this.blocks[e].holder.remove(), this.blocks[e].call(J.REMOVED));\n const i = o ? 1 : 0;\n if (this.blocks.splice(e, i, t), e > 0) {\n const s = this.blocks[e - 1];\n this.insertToDOM(t, \"afterend\", s);\n } else {\n const s = this.blocks[e + 1];\n s ? this.insertToDOM(t, \"beforebegin\", s) : this.insertToDOM(t);\n }\n }\n /**\n * Replaces block under passed index with passed block\n *\n * @param index - index of existed block\n * @param block - new block\n */\n replace(e, t) {\n if (this.blocks[e] === void 0)\n throw Error(\"Incorrect index\");\n this.blocks[e].holder.replaceWith(t.holder), this.blocks[e] = t;\n }\n /**\n * Inserts several blocks at once\n *\n * @param blocks - blocks to insert\n * @param index - index to insert blocks at\n */\n insertMany(e, t) {\n const o = new DocumentFragment();\n for (const i of e)\n o.appendChild(i.holder);\n if (this.length > 0) {\n if (t > 0) {\n const i = Math.min(t - 1, this.length - 1);\n this.blocks[i].holder.after(o);\n } else\n t === 0 && this.workingArea.prepend(o);\n this.blocks.splice(t, 0, ...e);\n } else\n this.blocks.push(...e), this.workingArea.appendChild(o);\n e.forEach((i) => i.call(J.RENDERED));\n }\n /**\n * Remove block\n *\n * @param {number} index - index of Block to remove\n */\n remove(e) {\n isNaN(e) && (e = this.length - 1), this.blocks[e].holder.remove(), this.blocks[e].call(J.REMOVED), this.blocks.splice(e, 1);\n }\n /**\n * Remove all blocks\n */\n removeAll() {\n this.workingArea.innerHTML = \"\", this.blocks.forEach((e) => e.call(J.REMOVED)), this.blocks.length = 0;\n }\n /**\n * Insert Block after passed target\n *\n * @todo decide if this method is necessary\n * @param {Block} targetBlock — target after which Block should be inserted\n * @param {Block} newBlock — Block to insert\n */\n insertAfter(e, t) {\n const o = this.blocks.indexOf(e);\n this.insert(o + 1, t);\n }\n /**\n * Get Block by index\n *\n * @param {number} index — Block index\n * @returns {Block}\n */\n get(e) {\n return this.blocks[e];\n }\n /**\n * Return index of passed Block\n *\n * @param {Block} block - Block to find\n * @returns {number}\n */\n indexOf(e) {\n return this.blocks.indexOf(e);\n }\n /**\n * Insert new Block into DOM\n *\n * @param {Block} block - Block to insert\n * @param {InsertPosition} position — insert position (if set, will use insertAdjacentElement)\n * @param {Block} target — Block related to position\n */\n insertToDOM(e, t, o) {\n t ? o.holder.insertAdjacentElement(t, e.holder) : this.workingArea.appendChild(e.holder), e.call(J.RENDERED);\n }\n /**\n * Composes Block event with passed type and details\n *\n * @param {string} type - event type\n * @param {object} detail - event detail\n */\n composeBlockEvent(e, t) {\n return new CustomEvent(e, {\n detail: t\n });\n }\n}\nconst Tt = \"block-removed\", Ct = \"block-added\", Ji = \"block-moved\", St = \"block-changed\";\nclass Qi {\n constructor() {\n this.completed = Promise.resolve();\n }\n /**\n * Add new promise to queue\n *\n * @param operation - promise should be added to queue\n */\n add(e) {\n return new Promise((t, o) => {\n this.completed = this.completed.then(e).then(t).catch(o);\n });\n }\n}\nclass es extends y {\n constructor() {\n super(...arguments), this._currentBlockIndex = -1, this._blocks = null;\n }\n /**\n * Returns current Block index\n *\n * @returns {number}\n */\n get currentBlockIndex() {\n return this._currentBlockIndex;\n }\n /**\n * Set current Block index and fire Block lifecycle callbacks\n *\n * @param {number} newIndex - index of Block to set as current\n */\n set currentBlockIndex(e) {\n this._currentBlockIndex = e;\n }\n /**\n * returns first Block\n *\n * @returns {Block}\n */\n get firstBlock() {\n return this._blocks[0];\n }\n /**\n * returns last Block\n *\n * @returns {Block}\n */\n get lastBlock() {\n return this._blocks[this._blocks.length - 1];\n }\n /**\n * Get current Block instance\n *\n * @returns {Block}\n */\n get currentBlock() {\n return this._blocks[this.currentBlockIndex];\n }\n /**\n * Set passed Block as a current\n *\n * @param block - block to set as a current\n */\n set currentBlock(e) {\n this.currentBlockIndex = this.getBlockIndex(e);\n }\n /**\n * Returns next Block instance\n *\n * @returns {Block|null}\n */\n get nextBlock() {\n return this.currentBlockIndex === this._blocks.length - 1 ? null : this._blocks[this.currentBlockIndex + 1];\n }\n /**\n * Return first Block with inputs after current Block\n *\n * @returns {Block | undefined}\n */\n get nextContentfulBlock() {\n return this.blocks.slice(this.currentBlockIndex + 1).find((t) => !!t.inputs.length);\n }\n /**\n * Return first Block with inputs before current Block\n *\n * @returns {Block | undefined}\n */\n get previousContentfulBlock() {\n return this.blocks.slice(0, this.currentBlockIndex).reverse().find((t) => !!t.inputs.length);\n }\n /**\n * Returns previous Block instance\n *\n * @returns {Block|null}\n */\n get previousBlock() {\n return this.currentBlockIndex === 0 ? null : this._blocks[this.currentBlockIndex - 1];\n }\n /**\n * Get array of Block instances\n *\n * @returns {Block[]} {@link Blocks#array}\n */\n get blocks() {\n return this._blocks.array;\n }\n /**\n * Check if each Block is empty\n *\n * @returns {boolean}\n */\n get isEditorEmpty() {\n return this.blocks.every((e) => e.isEmpty);\n }\n /**\n * Should be called after Editor.UI preparation\n * Define this._blocks property\n */\n prepare() {\n const e = new Xe(this.Editor.UI.nodes.redactor);\n this._blocks = new Proxy(e, {\n set: Xe.set,\n get: Xe.get\n }), this.listeners.on(\n document,\n \"copy\",\n (t) => this.Editor.BlockEvents.handleCommandC(t)\n );\n }\n /**\n * Toggle read-only state\n *\n * If readOnly is true:\n * - Unbind event handlers from created Blocks\n *\n * if readOnly is false:\n * - Bind event handlers to all existing Blocks\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.disableModuleBindings() : this.enableModuleBindings();\n }\n /**\n * Creates Block instance by tool name\n *\n * @param {object} options - block creation options\n * @param {string} options.tool - tools passed in editor config {@link EditorConfig#tools}\n * @param {string} [options.id] - unique id for this block\n * @param {BlockToolData} [options.data] - constructor params\n * @returns {Block}\n */\n composeBlock({\n tool: e,\n data: t = {},\n id: o = void 0,\n tunes: i = {}\n }) {\n const s = this.Editor.ReadOnly.isEnabled, r = this.Editor.Tools.blockTools.get(e), l = new D({\n id: o,\n data: t,\n tool: r,\n api: this.Editor.API,\n readOnly: s,\n tunesData: i\n }, this.eventsDispatcher);\n return s || window.requestIdleCallback(() => {\n this.bindBlockEvents(l);\n }, { timeout: 2e3 }), l;\n }\n /**\n * Insert new block into _blocks\n *\n * @param {object} options - insert options\n * @param {string} [options.id] - block's unique id\n * @param {string} [options.tool] - plugin name, by default method inserts the default block type\n * @param {object} [options.data] - plugin data\n * @param {number} [options.index] - index where to insert new Block\n * @param {boolean} [options.needToFocus] - flag shows if needed to update current Block index\n * @param {boolean} [options.replace] - flag shows if block by passed index should be replaced with inserted one\n * @returns {Block}\n */\n insert({\n id: e = void 0,\n tool: t = this.config.defaultBlock,\n data: o = {},\n index: i,\n needToFocus: s = !0,\n replace: r = !1,\n tunes: l = {}\n } = {}) {\n let a = i;\n a === void 0 && (a = this.currentBlockIndex + (r ? 0 : 1));\n const c = this.composeBlock({\n id: e,\n tool: t,\n data: o,\n tunes: l\n });\n return r && this.blockDidMutated(Tt, this.getBlockByIndex(a), {\n index: a\n }), this._blocks.insert(a, c, r), this.blockDidMutated(Ct, c, {\n index: a\n }), s ? this.currentBlockIndex = a : a <= this.currentBlockIndex && this.currentBlockIndex++, c;\n }\n /**\n * Inserts several blocks at once\n *\n * @param blocks - blocks to insert\n * @param index - index where to insert\n */\n insertMany(e, t = 0) {\n this._blocks.insertMany(e, t);\n }\n /**\n * Update Block data.\n *\n * Currently we don't have an 'update' method in the Tools API, so we just create a new block with the same id and type\n * Should not trigger 'block-removed' or 'block-added' events.\n *\n * If neither data nor tunes is provided, return the provided block instead.\n *\n * @param block - block to update\n * @param data - (optional) new data\n * @param tunes - (optional) tune data\n */\n async update(e, t, o) {\n if (!t && !o)\n return e;\n const i = await e.data, s = this.composeBlock({\n id: e.id,\n tool: e.name,\n data: Object.assign({}, i, t ?? {}),\n tunes: o ?? e.tunes\n }), r = this.getBlockIndex(e);\n return this._blocks.replace(r, s), this.blockDidMutated(St, s, {\n index: r\n }), s;\n }\n /**\n * Replace passed Block with the new one with specified Tool and data\n *\n * @param block - block to replace\n * @param newTool - new Tool name\n * @param data - new Tool data\n */\n replace(e, t, o) {\n const i = this.getBlockIndex(e);\n return this.insert({\n tool: t,\n data: o,\n index: i,\n replace: !0\n });\n }\n /**\n * Insert pasted content. Call onPaste callback after insert.\n *\n * @param {string} toolName - name of Tool to insert\n * @param {PasteEvent} pasteEvent - pasted data\n * @param {boolean} replace - should replace current block\n */\n paste(e, t, o = !1) {\n const i = this.insert({\n tool: e,\n replace: o\n });\n try {\n window.requestIdleCallback(() => {\n i.call(J.ON_PASTE, t);\n });\n } catch (s) {\n I(`${e}: onPaste callback call is failed`, \"error\", s);\n }\n return i;\n }\n /**\n * Insert new default block at passed index\n *\n * @param {number} index - index where Block should be inserted\n * @param {boolean} needToFocus - if true, updates current Block index\n *\n * TODO: Remove method and use insert() with index instead (?)\n * @returns {Block} inserted Block\n */\n insertDefaultBlockAtIndex(e, t = !1) {\n const o = this.composeBlock({ tool: this.config.defaultBlock });\n return this._blocks[e] = o, this.blockDidMutated(Ct, o, {\n index: e\n }), t ? this.currentBlockIndex = e : e <= this.currentBlockIndex && this.currentBlockIndex++, o;\n }\n /**\n * Always inserts at the end\n *\n * @returns {Block}\n */\n insertAtEnd() {\n return this.currentBlockIndex = this.blocks.length - 1, this.insert();\n }\n /**\n * Merge two blocks\n *\n * @param {Block} targetBlock - previous block will be append to this block\n * @param {Block} blockToMerge - block that will be merged with target block\n * @returns {Promise} - the sequence that can be continued\n */\n async mergeBlocks(e, t) {\n let o;\n if (e.name === t.name && e.mergeable) {\n const i = await t.data;\n if (V(i)) {\n console.error(\"Could not merge Block. Failed to extract original Block data.\");\n return;\n }\n const [s] = it([i], e.tool.sanitizeConfig);\n o = s;\n } else if (e.mergeable && _e(t, \"export\") && _e(e, \"import\")) {\n const i = await t.exportDataAsString(), s = q(i, e.tool.sanitizeConfig);\n o = xt(s, e.tool.conversionConfig);\n }\n o !== void 0 && (await e.mergeWith(o), this.removeBlock(t), this.currentBlockIndex = this._blocks.indexOf(e));\n }\n /**\n * Remove passed Block\n *\n * @param block - Block to remove\n * @param addLastBlock - if true, adds new default block at the end. @todo remove this logic and use event-bus instead\n */\n removeBlock(e, t = !0) {\n return new Promise((o) => {\n const i = this._blocks.indexOf(e);\n if (!this.validateIndex(i))\n throw new Error(\"Can't find a Block to remove\");\n e.destroy(), this._blocks.remove(i), this.blockDidMutated(Tt, e, {\n index: i\n }), this.currentBlockIndex >= i && this.currentBlockIndex--, this.blocks.length ? i === 0 && (this.currentBlockIndex = 0) : (this.unsetCurrentBlock(), t && this.insert()), o();\n });\n }\n /**\n * Remove only selected Blocks\n * and returns first Block index where started removing...\n *\n * @returns {number|undefined}\n */\n removeSelectedBlocks() {\n let e;\n for (let t = this.blocks.length - 1; t >= 0; t--)\n this.blocks[t].selected && (this.removeBlock(this.blocks[t]), e = t);\n return e;\n }\n /**\n * Attention!\n * After removing insert the new default typed Block and focus on it\n * Removes all blocks\n */\n removeAllBlocks() {\n for (let e = this.blocks.length - 1; e >= 0; e--)\n this._blocks.remove(e);\n this.unsetCurrentBlock(), this.insert(), this.currentBlock.firstInput.focus();\n }\n /**\n * Split current Block\n * 1. Extract content from Caret position to the Block`s end\n * 2. Insert a new Block below current one with extracted content\n *\n * @returns {Block}\n */\n split() {\n const e = this.Editor.Caret.extractFragmentFromCaretPosition(), t = d.make(\"div\");\n t.appendChild(e);\n const o = {\n text: d.isEmpty(t) ? \"\" : t.innerHTML\n };\n return this.insert({ data: o });\n }\n /**\n * Returns Block by passed index\n *\n * @param {number} index - index to get. -1 to get last\n * @returns {Block}\n */\n getBlockByIndex(e) {\n return e === -1 && (e = this._blocks.length - 1), this._blocks[e];\n }\n /**\n * Returns an index for passed Block\n *\n * @param block - block to find index\n */\n getBlockIndex(e) {\n return this._blocks.indexOf(e);\n }\n /**\n * Returns the Block by passed id\n *\n * @param id - id of block to get\n * @returns {Block}\n */\n getBlockById(e) {\n return this._blocks.array.find((t) => t.id === e);\n }\n /**\n * Get Block instance by html element\n *\n * @param {Node} element - html element to get Block by\n */\n getBlock(e) {\n d.isElement(e) || (e = e.parentNode);\n const t = this._blocks.nodes, o = e.closest(`.${D.CSS.wrapper}`), i = t.indexOf(o);\n if (i >= 0)\n return this._blocks[i];\n }\n /**\n * 1) Find first-level Block from passed child Node\n * 2) Mark it as current\n *\n * @param {Node} childNode - look ahead from this node.\n * @returns {Block | undefined} can return undefined in case when the passed child note is not a part of the current editor instance\n */\n setCurrentBlockByChildNode(e) {\n d.isElement(e) || (e = e.parentNode);\n const t = e.closest(`.${D.CSS.wrapper}`);\n if (!t)\n return;\n const o = t.closest(`.${this.Editor.UI.CSS.editorWrapper}`);\n if (o != null && o.isEqualNode(this.Editor.UI.nodes.wrapper))\n return this.currentBlockIndex = this._blocks.nodes.indexOf(t), this.currentBlock.updateCurrentInput(), this.currentBlock;\n }\n /**\n * Return block which contents passed node\n *\n * @param {Node} childNode - node to get Block by\n * @returns {Block}\n */\n getBlockByChildNode(e) {\n if (!e || !(e instanceof Node))\n return;\n d.isElement(e) || (e = e.parentNode);\n const t = e.closest(`.${D.CSS.wrapper}`);\n return this.blocks.find((o) => o.holder === t);\n }\n /**\n * Swap Blocks Position\n *\n * @param {number} fromIndex - index of first block\n * @param {number} toIndex - index of second block\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n this._blocks.swap(e, t), this.currentBlockIndex = t;\n }\n /**\n * Move a block to a new index\n *\n * @param {number} toIndex - index where to move Block\n * @param {number} fromIndex - index of Block to move\n */\n move(e, t = this.currentBlockIndex) {\n if (isNaN(e) || isNaN(t)) {\n I(\"Warning during 'move' call: incorrect indices provided.\", \"warn\");\n return;\n }\n if (!this.validateIndex(e) || !this.validateIndex(t)) {\n I(\"Warning during 'move' call: indices cannot be lower than 0 or greater than the amount of blocks.\", \"warn\");\n return;\n }\n this._blocks.move(e, t), this.currentBlockIndex = e, this.blockDidMutated(Ji, this.currentBlock, {\n fromIndex: t,\n toIndex: e\n });\n }\n /**\n * Converts passed Block to the new Tool\n * Uses Conversion Config\n *\n * @param blockToConvert - Block that should be converted\n * @param targetToolName - name of the Tool to convert to\n * @param blockDataOverrides - optional new Block data overrides\n */\n async convert(e, t, o) {\n if (!await e.save())\n throw new Error(\"Could not convert Block. Failed to extract original Block data.\");\n const s = this.Editor.Tools.blockTools.get(t);\n if (!s)\n throw new Error(`Could not convert Block. Tool «${t}» not found.`);\n const r = await e.exportDataAsString(), l = q(\n r,\n s.sanitizeConfig\n );\n let a = xt(l, s.conversionConfig);\n return o && (a = Object.assign(a, o)), this.replace(e, s.name, a);\n }\n /**\n * Sets current Block Index -1 which means unknown\n * and clear highlights\n */\n unsetCurrentBlock() {\n this.currentBlockIndex = -1;\n }\n /**\n * Clears Editor\n *\n * @param {boolean} needToAddDefaultBlock - 1) in internal calls (for example, in api.blocks.render)\n * we don't need to add an empty default block\n * 2) in api.blocks.clear we should add empty block\n */\n async clear(e = !1) {\n const t = new Qi();\n this.blocks.forEach((o) => {\n t.add(async () => {\n await this.removeBlock(o, !1);\n });\n }), await t.completed, this.unsetCurrentBlock(), e && this.insert(), this.Editor.UI.checkEmptiness();\n }\n /**\n * Cleans up all the block tools' resources\n * This is called when editor is destroyed\n */\n async destroy() {\n await Promise.all(this.blocks.map((e) => e.destroy()));\n }\n /**\n * Bind Block events\n *\n * @param {Block} block - Block to which event should be bound\n */\n bindBlockEvents(e) {\n const { BlockEvents: t } = this.Editor;\n this.readOnlyMutableListeners.on(e.holder, \"keydown\", (o) => {\n t.keydown(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"keyup\", (o) => {\n t.keyup(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"dragover\", (o) => {\n t.dragOver(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"dragleave\", (o) => {\n t.dragLeave(o);\n }), e.on(\"didMutated\", (o) => this.blockDidMutated(St, o, {\n index: this.getBlockIndex(o)\n }));\n }\n /**\n * Disable mutable handlers and bindings\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Enables all module handlers and bindings for all Blocks\n */\n enableModuleBindings() {\n this.readOnlyMutableListeners.on(\n document,\n \"cut\",\n (e) => this.Editor.BlockEvents.handleCommandX(e)\n ), this.blocks.forEach((e) => {\n this.bindBlockEvents(e);\n });\n }\n /**\n * Validates that the given index is not lower than 0 or higher than the amount of blocks\n *\n * @param {number} index - index of blocks array to validate\n * @returns {boolean}\n */\n validateIndex(e) {\n return !(e < 0 || e >= this._blocks.length);\n }\n /**\n * Block mutation callback\n *\n * @param mutationType - what happened with block\n * @param block - mutated block\n * @param detailData - additional data to pass with change event\n */\n blockDidMutated(e, t, o) {\n const i = new CustomEvent(e, {\n detail: {\n target: new G(t),\n ...o\n }\n });\n return this.eventsDispatcher.emit(Dt, {\n event: i\n }), t;\n }\n}\nclass ts extends y {\n constructor() {\n super(...arguments), this.anyBlockSelectedCache = null, this.needToSelectAll = !1, this.nativeInputSelected = !1, this.readyToBlockSelection = !1;\n }\n /**\n * Sanitizer Config\n *\n * @returns {SanitizerConfig}\n */\n get sanitizerConfig() {\n return {\n p: {},\n h1: {},\n h2: {},\n h3: {},\n h4: {},\n h5: {},\n h6: {},\n ol: {},\n ul: {},\n li: {},\n br: !0,\n img: {\n src: !0,\n width: !0,\n height: !0\n },\n a: {\n href: !0\n },\n b: {},\n i: {},\n u: {}\n };\n }\n /**\n * Flag that identifies all Blocks selection\n *\n * @returns {boolean}\n */\n get allBlocksSelected() {\n const { BlockManager: e } = this.Editor;\n return e.blocks.every((t) => t.selected === !0);\n }\n /**\n * Set selected all blocks\n *\n * @param {boolean} state - state to set\n */\n set allBlocksSelected(e) {\n const { BlockManager: t } = this.Editor;\n t.blocks.forEach((o) => {\n o.selected = e;\n }), this.clearCache();\n }\n /**\n * Flag that identifies any Block selection\n *\n * @returns {boolean}\n */\n get anyBlockSelected() {\n const { BlockManager: e } = this.Editor;\n return this.anyBlockSelectedCache === null && (this.anyBlockSelectedCache = e.blocks.some((t) => t.selected === !0)), this.anyBlockSelectedCache;\n }\n /**\n * Return selected Blocks array\n *\n * @returns {Block[]}\n */\n get selectedBlocks() {\n return this.Editor.BlockManager.blocks.filter((e) => e.selected);\n }\n /**\n * Module Preparation\n * Registers Shortcuts CMD+A and CMD+C\n * to select all and copy them\n */\n prepare() {\n this.selection = new b(), he.add({\n name: \"CMD+A\",\n handler: (e) => {\n const { BlockManager: t, ReadOnly: o } = this.Editor;\n if (o.isEnabled) {\n e.preventDefault(), this.selectAllBlocks();\n return;\n }\n t.currentBlock && this.handleCommandA(e);\n },\n on: this.Editor.UI.nodes.redactor\n });\n }\n /**\n * Toggle read-only state\n *\n * - Remove all ranges\n * - Unselect all Blocks\n */\n toggleReadOnly() {\n b.get().removeAllRanges(), this.allBlocksSelected = !1;\n }\n /**\n * Remove selection of Block\n *\n * @param {number?} index - Block index according to the BlockManager's indexes\n */\n unSelectBlockByIndex(e) {\n const { BlockManager: t } = this.Editor;\n let o;\n isNaN(e) ? o = t.currentBlock : o = t.getBlockByIndex(e), o.selected = !1, this.clearCache();\n }\n /**\n * Clear selection from Blocks\n *\n * @param {Event} reason - event caused clear of selection\n * @param {boolean} restoreSelection - if true, restore saved selection\n */\n clearSelection(e, t = !1) {\n const { BlockManager: o, Caret: i, RectangleSelection: s } = this.Editor;\n this.needToSelectAll = !1, this.nativeInputSelected = !1, this.readyToBlockSelection = !1;\n const r = e && e instanceof KeyboardEvent, l = r && Mt(e.keyCode);\n if (this.anyBlockSelected && r && l && !b.isSelectionExists) {\n const a = o.removeSelectedBlocks();\n o.insertDefaultBlockAtIndex(a, !0), i.setToBlock(o.currentBlock), Oe(() => {\n const c = e.key;\n i.insertContentAtCaretPosition(c.length > 1 ? \"\" : c);\n }, 20)();\n }\n if (this.Editor.CrossBlockSelection.clear(e), !this.anyBlockSelected || s.isRectActivated()) {\n this.Editor.RectangleSelection.clearSelection();\n return;\n }\n t && this.selection.restore(), this.allBlocksSelected = !1;\n }\n /**\n * Reduce each Block and copy its content\n *\n * @param {ClipboardEvent} e - copy/cut event\n * @returns {Promise}\n */\n copySelectedBlocks(e) {\n e.preventDefault();\n const t = d.make(\"div\");\n this.selectedBlocks.forEach((s) => {\n const r = q(s.holder.innerHTML, this.sanitizerConfig), l = d.make(\"p\");\n l.innerHTML = r, t.appendChild(l);\n });\n const o = Array.from(t.childNodes).map((s) => s.textContent).join(`\n\n`), i = t.innerHTML;\n return e.clipboardData.setData(\"text/plain\", o), e.clipboardData.setData(\"text/html\", i), Promise.all(this.selectedBlocks.map((s) => s.save())).then((s) => {\n try {\n e.clipboardData.setData(this.Editor.Paste.MIME_TYPE, JSON.stringify(s));\n } catch {\n }\n });\n }\n /**\n * Select Block by its index\n *\n * @param {number?} index - Block index according to the BlockManager's indexes\n */\n selectBlockByIndex(e) {\n const { BlockManager: t } = this.Editor, o = t.getBlockByIndex(e);\n o !== void 0 && this.selectBlock(o);\n }\n /**\n * Select passed Block\n *\n * @param {Block} block - Block to select\n */\n selectBlock(e) {\n this.selection.save(), b.get().removeAllRanges(), e.selected = !0, this.clearCache(), this.Editor.InlineToolbar.close();\n }\n /**\n * Remove selection from passed Block\n *\n * @param {Block} block - Block to unselect\n */\n unselectBlock(e) {\n e.selected = !1, this.clearCache();\n }\n /**\n * Clear anyBlockSelected cache\n */\n clearCache() {\n this.anyBlockSelectedCache = null;\n }\n /**\n * Module destruction\n * De-registers Shortcut CMD+A\n */\n destroy() {\n he.remove(this.Editor.UI.nodes.redactor, \"CMD+A\");\n }\n /**\n * First CMD+A selects all input content by native behaviour,\n * next CMD+A keypress selects all blocks\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n handleCommandA(e) {\n if (this.Editor.RectangleSelection.clearSelection(), d.isNativeInput(e.target) && !this.readyToBlockSelection) {\n this.readyToBlockSelection = !0;\n return;\n }\n const t = this.Editor.BlockManager.getBlock(e.target), o = t.inputs;\n if (o.length > 1 && !this.readyToBlockSelection) {\n this.readyToBlockSelection = !0;\n return;\n }\n if (o.length === 1 && !this.needToSelectAll) {\n this.needToSelectAll = !0;\n return;\n }\n this.needToSelectAll ? (e.preventDefault(), this.selectAllBlocks(), this.needToSelectAll = !1, this.readyToBlockSelection = !1) : this.readyToBlockSelection && (e.preventDefault(), this.selectBlock(t), this.needToSelectAll = !0);\n }\n /**\n * Select All Blocks\n * Each Block has selected setter that makes Block copyable\n */\n selectAllBlocks() {\n this.selection.save(), b.get().removeAllRanges(), this.allBlocksSelected = !0, this.Editor.InlineToolbar.close();\n }\n}\nclass Re extends y {\n /**\n * Allowed caret positions in input\n *\n * @static\n * @returns {{START: string, END: string, DEFAULT: string}}\n */\n get positions() {\n return {\n START: \"start\",\n END: \"end\",\n DEFAULT: \"default\"\n };\n }\n /**\n * Elements styles that can be useful for Caret Module\n */\n static get CSS() {\n return {\n shadowCaret: \"cdx-shadow-caret\"\n };\n }\n /**\n * Method gets Block instance and puts caret to the text node with offset\n * There two ways that method applies caret position:\n * - first found text node: sets at the beginning, but you can pass an offset\n * - last found text node: sets at the end of the node. Also, you can customize the behaviour\n *\n * @param {Block} block - Block class\n * @param {string} position - position where to set caret.\n * If default - leave default behaviour and apply offset if it's passed\n * @param {number} offset - caret offset regarding to the text node\n */\n setToBlock(e, t = this.positions.DEFAULT, o = 0) {\n var c;\n const { BlockManager: i, BlockSelection: s } = this.Editor;\n if (s.clearSelection(), !e.focusable) {\n (c = window.getSelection()) == null || c.removeAllRanges(), s.selectBlock(e), i.currentBlock = e;\n return;\n }\n let r;\n switch (t) {\n case this.positions.START:\n r = e.firstInput;\n break;\n case this.positions.END:\n r = e.lastInput;\n break;\n default:\n r = e.currentInput;\n }\n if (!r)\n return;\n const l = d.getDeepestNode(r, t === this.positions.END), a = d.getContentLength(l);\n switch (!0) {\n case t === this.positions.START:\n o = 0;\n break;\n case t === this.positions.END:\n case o > a:\n o = a;\n break;\n }\n this.set(l, o), i.setCurrentBlockByChildNode(e.holder), i.currentBlock.currentInput = r;\n }\n /**\n * Set caret to the current input of current Block.\n *\n * @param {HTMLElement} input - input where caret should be set\n * @param {string} position - position of the caret.\n * If default - leave default behaviour and apply offset if it's passed\n * @param {number} offset - caret offset regarding to the text node\n */\n setToInput(e, t = this.positions.DEFAULT, o = 0) {\n const { currentBlock: i } = this.Editor.BlockManager, s = d.getDeepestNode(e);\n switch (t) {\n case this.positions.START:\n this.set(s, 0);\n break;\n case this.positions.END:\n this.set(s, d.getContentLength(s));\n break;\n default:\n o && this.set(s, o);\n }\n i.currentInput = e;\n }\n /**\n * Creates Document Range and sets caret to the element with offset\n *\n * @param {HTMLElement} element - target node.\n * @param {number} offset - offset\n */\n set(e, t = 0) {\n const { top: i, bottom: s } = b.setCursor(e, t), { innerHeight: r } = window;\n i < 0 ? window.scrollBy(0, i - 30) : s > r && window.scrollBy(0, s - r + 30);\n }\n /**\n * Set Caret to the last Block\n * If last block is not empty, append another empty block\n */\n setToTheLastBlock() {\n const e = this.Editor.BlockManager.lastBlock;\n if (e)\n if (e.tool.isDefault && e.isEmpty)\n this.setToBlock(e);\n else {\n const t = this.Editor.BlockManager.insertAtEnd();\n this.setToBlock(t);\n }\n }\n /**\n * Extract content fragment of current Block from Caret position to the end of the Block\n */\n extractFragmentFromCaretPosition() {\n const e = b.get();\n if (e.rangeCount) {\n const t = e.getRangeAt(0), o = this.Editor.BlockManager.currentBlock.currentInput;\n if (t.deleteContents(), o)\n if (d.isNativeInput(o)) {\n const i = o, s = document.createDocumentFragment(), r = i.value.substring(0, i.selectionStart), l = i.value.substring(i.selectionStart);\n return s.textContent = l, i.value = r, s;\n } else {\n const i = t.cloneRange();\n return i.selectNodeContents(o), i.setStart(t.endContainer, t.endOffset), i.extractContents();\n }\n }\n }\n /**\n * Set's caret to the next Block or Tool`s input\n * Before moving caret, we should check if caret position is at the end of Plugins node\n * Using {@link Dom#getDeepestNode} to get a last node and match with current selection\n *\n * @param {boolean} force - pass true to skip check for caret position\n */\n navigateNext(e = !1) {\n const { BlockManager: t } = this.Editor, { currentBlock: o, nextBlock: i } = t;\n if (o === void 0)\n return !1;\n const { nextInput: s, currentInput: r } = o, l = r !== void 0 ? Ae(r) : void 0;\n let a = i;\n const c = e || l || !o.focusable;\n if (s && c)\n return this.setToInput(s, this.positions.START), !0;\n if (a === null) {\n if (o.tool.isDefault || !c)\n return !1;\n a = t.insertAtEnd();\n }\n return c ? (this.setToBlock(a, this.positions.START), !0) : !1;\n }\n /**\n * Set's caret to the previous Tool`s input or Block\n * Before moving caret, we should check if caret position is start of the Plugins node\n * Using {@link Dom#getDeepestNode} to get a last node and match with current selection\n *\n * @param {boolean} force - pass true to skip check for caret position\n */\n navigatePrevious(e = !1) {\n const { currentBlock: t, previousBlock: o } = this.Editor.BlockManager;\n if (!t)\n return !1;\n const { previousInput: i, currentInput: s } = t, r = s !== void 0 ? Me(s) : void 0, l = e || r || !t.focusable;\n return i && l ? (this.setToInput(i, this.positions.END), !0) : o !== null && l ? (this.setToBlock(o, this.positions.END), !0) : !1;\n }\n /**\n * Inserts shadow element after passed element where caret can be placed\n *\n * @param {Element} element - element after which shadow caret should be inserted\n */\n createShadow(e) {\n const t = document.createElement(\"span\");\n t.classList.add(Re.CSS.shadowCaret), e.insertAdjacentElement(\"beforeend\", t);\n }\n /**\n * Restores caret position\n *\n * @param {HTMLElement} element - element where caret should be restored\n */\n restoreCaret(e) {\n const t = e.querySelector(`.${Re.CSS.shadowCaret}`);\n if (!t)\n return;\n new b().expandToTag(t);\n const i = document.createRange();\n i.selectNode(t), i.extractContents();\n }\n /**\n * Inserts passed content at caret position\n *\n * @param {string} content - content to insert\n */\n insertContentAtCaretPosition(e) {\n const t = document.createDocumentFragment(), o = document.createElement(\"div\"), i = b.get(), s = b.range;\n o.innerHTML = e, Array.from(o.childNodes).forEach((c) => t.appendChild(c)), t.childNodes.length === 0 && t.appendChild(new Text());\n const r = t.lastChild;\n s.deleteContents(), s.insertNode(t);\n const l = document.createRange(), a = r.nodeType === Node.TEXT_NODE ? r : r.firstChild;\n a !== null && a.textContent !== null && l.setStart(a, a.textContent.length), i.removeAllRanges(), i.addRange(l);\n }\n}\nclass os extends y {\n constructor() {\n super(...arguments), this.onMouseUp = () => {\n this.listeners.off(document, \"mouseover\", this.onMouseOver), this.listeners.off(document, \"mouseup\", this.onMouseUp);\n }, this.onMouseOver = (e) => {\n const { BlockManager: t, BlockSelection: o } = this.Editor;\n if (e.relatedTarget === null && e.target === null)\n return;\n const i = t.getBlockByChildNode(e.relatedTarget) || this.lastSelectedBlock, s = t.getBlockByChildNode(e.target);\n if (!(!i || !s) && s !== i) {\n if (i === this.firstSelectedBlock) {\n b.get().removeAllRanges(), i.selected = !0, s.selected = !0, o.clearCache();\n return;\n }\n if (s === this.firstSelectedBlock) {\n i.selected = !1, s.selected = !1, o.clearCache();\n return;\n }\n this.Editor.InlineToolbar.close(), this.toggleBlocksSelectedState(i, s), this.lastSelectedBlock = s;\n }\n };\n }\n /**\n * Module preparation\n *\n * @returns {Promise}\n */\n async prepare() {\n this.listeners.on(document, \"mousedown\", (e) => {\n this.enableCrossBlockSelection(e);\n });\n }\n /**\n * Sets up listeners\n *\n * @param {MouseEvent} event - mouse down event\n */\n watchSelection(e) {\n if (e.button !== wo.LEFT)\n return;\n const { BlockManager: t } = this.Editor;\n this.firstSelectedBlock = t.getBlock(e.target), this.lastSelectedBlock = this.firstSelectedBlock, this.listeners.on(document, \"mouseover\", this.onMouseOver), this.listeners.on(document, \"mouseup\", this.onMouseUp);\n }\n /**\n * Return boolean is cross block selection started:\n * there should be at least 2 selected blocks\n */\n get isCrossBlockSelectionStarted() {\n return !!this.firstSelectedBlock && !!this.lastSelectedBlock && this.firstSelectedBlock !== this.lastSelectedBlock;\n }\n /**\n * Change selection state of the next Block\n * Used for CBS via Shift + arrow keys\n *\n * @param {boolean} next - if true, toggle next block. Previous otherwise\n */\n toggleBlockSelectedState(e = !0) {\n const { BlockManager: t, BlockSelection: o } = this.Editor;\n this.lastSelectedBlock || (this.lastSelectedBlock = this.firstSelectedBlock = t.currentBlock), this.firstSelectedBlock === this.lastSelectedBlock && (this.firstSelectedBlock.selected = !0, o.clearCache(), b.get().removeAllRanges());\n const i = t.blocks.indexOf(this.lastSelectedBlock) + (e ? 1 : -1), s = t.blocks[i];\n s && (this.lastSelectedBlock.selected !== s.selected ? (s.selected = !0, o.clearCache()) : (this.lastSelectedBlock.selected = !1, o.clearCache()), this.lastSelectedBlock = s, this.Editor.InlineToolbar.close(), s.holder.scrollIntoView({\n block: \"nearest\"\n }));\n }\n /**\n * Clear saved state\n *\n * @param {Event} reason - event caused clear of selection\n */\n clear(e) {\n const { BlockManager: t, BlockSelection: o, Caret: i } = this.Editor, s = t.blocks.indexOf(this.firstSelectedBlock), r = t.blocks.indexOf(this.lastSelectedBlock);\n if (o.anyBlockSelected && s > -1 && r > -1 && e && e instanceof KeyboardEvent)\n switch (e.keyCode) {\n case w.DOWN:\n case w.RIGHT:\n i.setToBlock(t.blocks[Math.max(s, r)], i.positions.END);\n break;\n case w.UP:\n case w.LEFT:\n i.setToBlock(t.blocks[Math.min(s, r)], i.positions.START);\n break;\n default:\n i.setToBlock(t.blocks[Math.max(s, r)], i.positions.END);\n }\n this.firstSelectedBlock = this.lastSelectedBlock = null;\n }\n /**\n * Enables Cross Block Selection\n *\n * @param {MouseEvent} event - mouse down event\n */\n enableCrossBlockSelection(e) {\n const { UI: t } = this.Editor;\n b.isCollapsed || this.Editor.BlockSelection.clearSelection(e), t.nodes.redactor.contains(e.target) ? this.watchSelection(e) : this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Change blocks selection state between passed two blocks.\n *\n * @param {Block} firstBlock - first block in range\n * @param {Block} lastBlock - last block in range\n */\n toggleBlocksSelectedState(e, t) {\n const { BlockManager: o, BlockSelection: i } = this.Editor, s = o.blocks.indexOf(e), r = o.blocks.indexOf(t), l = e.selected !== t.selected;\n for (let a = Math.min(s, r); a <= Math.max(s, r); a++) {\n const c = o.blocks[a];\n c !== this.firstSelectedBlock && c !== (l ? e : t) && (o.blocks[a].selected = !o.blocks[a].selected, i.clearCache());\n }\n }\n}\nclass is extends y {\n constructor() {\n super(...arguments), this.isStartedAtEditor = !1;\n }\n /**\n * Toggle read-only state\n *\n * if state is true:\n * - disable all drag-n-drop event handlers\n *\n * if state is false:\n * - restore drag-n-drop event handlers\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.disableModuleBindings() : this.enableModuleBindings();\n }\n /**\n * Add drag events listeners to editor zone\n */\n enableModuleBindings() {\n const { UI: e } = this.Editor;\n this.readOnlyMutableListeners.on(e.nodes.holder, \"drop\", async (t) => {\n await this.processDrop(t);\n }, !0), this.readOnlyMutableListeners.on(e.nodes.holder, \"dragstart\", () => {\n this.processDragStart();\n }), this.readOnlyMutableListeners.on(e.nodes.holder, \"dragover\", (t) => {\n this.processDragOver(t);\n }, !0);\n }\n /**\n * Unbind drag-n-drop event handlers\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Handle drop event\n *\n * @param {DragEvent} dropEvent - drop event\n */\n async processDrop(e) {\n const {\n BlockManager: t,\n Paste: o,\n Caret: i\n } = this.Editor;\n e.preventDefault(), t.blocks.forEach((r) => {\n r.dropTarget = !1;\n }), b.isAtEditor && !b.isCollapsed && this.isStartedAtEditor && document.execCommand(\"delete\"), this.isStartedAtEditor = !1;\n const s = t.setCurrentBlockByChildNode(e.target);\n if (s)\n this.Editor.Caret.setToBlock(s, i.positions.END);\n else {\n const r = t.setCurrentBlockByChildNode(t.lastBlock.holder);\n this.Editor.Caret.setToBlock(r, i.positions.END);\n }\n await o.processDataTransfer(e.dataTransfer, !0);\n }\n /**\n * Handle drag start event\n */\n processDragStart() {\n b.isAtEditor && !b.isCollapsed && (this.isStartedAtEditor = !0), this.Editor.InlineToolbar.close();\n }\n /**\n * @param {DragEvent} dragEvent - drag event\n */\n processDragOver(e) {\n e.preventDefault();\n }\n}\nconst ss = 180, ns = 400;\nclass rs extends y {\n /**\n * Prepare the module\n *\n * @param options - options used by the modification observer module\n * @param options.config - Editor configuration object\n * @param options.eventsDispatcher - common Editor event bus\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.disabled = !1, this.batchingTimeout = null, this.batchingOnChangeQueue = /* @__PURE__ */ new Map(), this.batchTime = ns, this.mutationObserver = new MutationObserver((o) => {\n this.redactorChanged(o);\n }), this.eventsDispatcher.on(Dt, (o) => {\n this.particularBlockChanged(o.event);\n }), this.eventsDispatcher.on(Rt, () => {\n this.disable();\n }), this.eventsDispatcher.on(Ft, () => {\n this.enable();\n });\n }\n /**\n * Enables onChange event\n */\n enable() {\n this.mutationObserver.observe(\n this.Editor.UI.nodes.redactor,\n {\n childList: !0,\n subtree: !0,\n characterData: !0,\n attributes: !0\n }\n ), this.disabled = !1;\n }\n /**\n * Disables onChange event\n */\n disable() {\n this.mutationObserver.disconnect(), this.disabled = !0;\n }\n /**\n * Call onChange event passed to Editor.js configuration\n *\n * @param event - some of our custom change events\n */\n particularBlockChanged(e) {\n this.disabled || !O(this.config.onChange) || (this.batchingOnChangeQueue.set(`block:${e.detail.target.id}:event:${e.type}`, e), this.batchingTimeout && clearTimeout(this.batchingTimeout), this.batchingTimeout = setTimeout(() => {\n let t;\n this.batchingOnChangeQueue.size === 1 ? t = this.batchingOnChangeQueue.values().next().value : t = Array.from(this.batchingOnChangeQueue.values()), this.config.onChange && this.config.onChange(this.Editor.API.methods, t), this.batchingOnChangeQueue.clear();\n }, this.batchTime));\n }\n /**\n * Fired on every blocks wrapper dom change\n *\n * @param mutations - mutations happened\n */\n redactorChanged(e) {\n this.eventsDispatcher.emit(Je, {\n mutations: e\n });\n }\n}\nconst ro = class lo extends y {\n constructor() {\n super(...arguments), this.MIME_TYPE = \"application/x-editor-js\", this.toolsTags = {}, this.tagsByTool = {}, this.toolsPatterns = [], this.toolsFiles = {}, this.exceptionList = [], this.processTool = (e) => {\n try {\n const t = e.create({}, {}, !1);\n if (e.pasteConfig === !1) {\n this.exceptionList.push(e.name);\n return;\n }\n if (!O(t.onPaste))\n return;\n this.getTagsConfig(e), this.getFilesConfig(e), this.getPatternsConfig(e);\n } catch (t) {\n I(\n `Paste handling for «${e.name}» Tool hasn't been set up because of the error`,\n \"warn\",\n t\n );\n }\n }, this.handlePasteEvent = async (e) => {\n const { BlockManager: t, Toolbar: o } = this.Editor, i = t.setCurrentBlockByChildNode(e.target);\n !i || this.isNativeBehaviour(e.target) && !e.clipboardData.types.includes(\"Files\") || i && this.exceptionList.includes(i.name) || (e.preventDefault(), this.processDataTransfer(e.clipboardData), o.close());\n };\n }\n /**\n * Set onPaste callback and collect tools` paste configurations\n */\n async prepare() {\n this.processTools();\n }\n /**\n * Set read-only state\n *\n * @param {boolean} readOnlyEnabled - read only flag value\n */\n toggleReadOnly(e) {\n e ? this.unsetCallback() : this.setCallback();\n }\n /**\n * Handle pasted or dropped data transfer object\n *\n * @param {DataTransfer} dataTransfer - pasted or dropped data transfer object\n * @param {boolean} isDragNDrop - true if data transfer comes from drag'n'drop events\n */\n async processDataTransfer(e, t = !1) {\n const { Tools: o } = this.Editor, i = e.types;\n if ((i.includes ? i.includes(\"Files\") : i.contains(\"Files\")) && !V(this.toolsFiles)) {\n await this.processFiles(e.files);\n return;\n }\n const r = e.getData(this.MIME_TYPE), l = e.getData(\"text/plain\");\n let a = e.getData(\"text/html\");\n if (r)\n try {\n this.insertEditorJSData(JSON.parse(r));\n return;\n } catch {\n }\n t && l.trim() && a.trim() && (a = \"

\" + (a.trim() ? a : l) + \"

\");\n const c = Object.keys(this.toolsTags).reduce((p, g) => (p[g.toLowerCase()] = this.toolsTags[g].sanitizationConfig ?? {}, p), {}), u = Object.assign({}, c, o.getAllInlineToolsSanitizeConfig(), { br: {} }), h = q(a, u);\n !h.trim() || h.trim() === l || !d.isHTMLString(h) ? await this.processText(l) : await this.processText(h, !0);\n }\n /**\n * Process pasted text and divide them into Blocks\n *\n * @param {string} data - text to process. Can be HTML or plain.\n * @param {boolean} isHTML - if passed string is HTML, this parameter should be true\n */\n async processText(e, t = !1) {\n const { Caret: o, BlockManager: i } = this.Editor, s = t ? this.processHTML(e) : this.processPlain(e);\n if (!s.length)\n return;\n if (s.length === 1) {\n s[0].isBlock ? this.processSingleBlock(s.pop()) : this.processInlinePaste(s.pop());\n return;\n }\n const l = i.currentBlock && i.currentBlock.tool.isDefault && i.currentBlock.isEmpty;\n s.map(\n async (a, c) => this.insertBlock(a, c === 0 && l)\n ), i.currentBlock && o.setToBlock(i.currentBlock, o.positions.END);\n }\n /**\n * Set onPaste callback handler\n */\n setCallback() {\n this.listeners.on(this.Editor.UI.nodes.holder, \"paste\", this.handlePasteEvent);\n }\n /**\n * Unset onPaste callback handler\n */\n unsetCallback() {\n this.listeners.off(this.Editor.UI.nodes.holder, \"paste\", this.handlePasteEvent);\n }\n /**\n * Get and process tool`s paste configs\n */\n processTools() {\n const e = this.Editor.Tools.blockTools;\n Array.from(e.values()).forEach(this.processTool);\n }\n /**\n * Get tags name list from either tag name or sanitization config.\n *\n * @param {string | object} tagOrSanitizeConfig - tag name or sanitize config object.\n * @returns {string[]} array of tags.\n */\n collectTagNames(e) {\n return Q(e) ? [e] : R(e) ? Object.keys(e) : [];\n }\n /**\n * Get tags to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getTagsConfig(e) {\n if (e.pasteConfig === !1)\n return;\n const t = e.pasteConfig.tags || [], o = [];\n t.forEach((i) => {\n const s = this.collectTagNames(i);\n o.push(...s), s.forEach((r) => {\n if (Object.prototype.hasOwnProperty.call(this.toolsTags, r)) {\n I(\n `Paste handler for «${e.name}» Tool on «${r}» tag is skipped because it is already used by «${this.toolsTags[r].tool.name}» Tool.`,\n \"warn\"\n );\n return;\n }\n const l = R(i) ? i[r] : null;\n this.toolsTags[r.toUpperCase()] = {\n tool: e,\n sanitizationConfig: l\n };\n });\n }), this.tagsByTool[e.name] = o.map((i) => i.toUpperCase());\n }\n /**\n * Get files` types and extensions to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getFilesConfig(e) {\n if (e.pasteConfig === !1)\n return;\n const { files: t = {} } = e.pasteConfig;\n let { extensions: o, mimeTypes: i } = t;\n !o && !i || (o && !Array.isArray(o) && (I(`«extensions» property of the onDrop config for «${e.name}» Tool should be an array`), o = []), i && !Array.isArray(i) && (I(`«mimeTypes» property of the onDrop config for «${e.name}» Tool should be an array`), i = []), i && (i = i.filter((s) => To(s) ? !0 : (I(`MIME type value «${s}» for the «${e.name}» Tool is not a valid MIME type`, \"warn\"), !1))), this.toolsFiles[e.name] = {\n extensions: o || [],\n mimeTypes: i || []\n });\n }\n /**\n * Get RegExp patterns to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getPatternsConfig(e) {\n e.pasteConfig === !1 || !e.pasteConfig.patterns || V(e.pasteConfig.patterns) || Object.entries(e.pasteConfig.patterns).forEach(([t, o]) => {\n o instanceof RegExp || I(\n `Pattern ${o} for «${e.name}» Tool is skipped because it should be a Regexp instance.`,\n \"warn\"\n ), this.toolsPatterns.push({\n key: t,\n pattern: o,\n tool: e\n });\n });\n }\n /**\n * Check if browser behavior suits better\n *\n * @param {EventTarget} element - element where content has been pasted\n * @returns {boolean}\n */\n isNativeBehaviour(e) {\n return d.isNativeInput(e);\n }\n /**\n * Get files from data transfer object and insert related Tools\n *\n * @param {FileList} items - pasted or dropped items\n */\n async processFiles(e) {\n const { BlockManager: t } = this.Editor;\n let o;\n o = await Promise.all(\n Array.from(e).map((r) => this.processFile(r))\n ), o = o.filter((r) => !!r);\n const s = t.currentBlock.tool.isDefault && t.currentBlock.isEmpty;\n o.forEach(\n (r, l) => {\n t.paste(r.type, r.event, l === 0 && s);\n }\n );\n }\n /**\n * Get information about file and find Tool to handle it\n *\n * @param {File} file - file to process\n */\n async processFile(e) {\n const t = Bo(e), o = Object.entries(this.toolsFiles).find(([r, { mimeTypes: l, extensions: a }]) => {\n const [c, u] = e.type.split(\"/\"), h = a.find((g) => g.toLowerCase() === t.toLowerCase()), p = l.find((g) => {\n const [f, k] = g.split(\"/\");\n return f === c && (k === u || k === \"*\");\n });\n return !!h || !!p;\n });\n if (!o)\n return;\n const [i] = o;\n return {\n event: this.composePasteEvent(\"file\", {\n file: e\n }),\n type: i\n };\n }\n /**\n * Split HTML string to blocks and return it as array of Block data\n *\n * @param {string} innerHTML - html string to process\n * @returns {PasteData[]}\n */\n processHTML(e) {\n const { Tools: t } = this.Editor, o = d.make(\"DIV\");\n return o.innerHTML = e, this.getNodes(o).map((s) => {\n let r, l = t.defaultTool, a = !1;\n switch (s.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n r = d.make(\"div\"), r.appendChild(s);\n break;\n case Node.ELEMENT_NODE:\n r = s, a = !0, this.toolsTags[r.tagName] && (l = this.toolsTags[r.tagName].tool);\n break;\n }\n const { tags: c } = l.pasteConfig || { tags: [] }, u = c.reduce((g, f) => (this.collectTagNames(f).forEach((C) => {\n const S = R(f) ? f[C] : null;\n g[C.toLowerCase()] = S || {};\n }), g), {}), h = Object.assign({}, u, l.baseSanitizeConfig);\n if (r.tagName.toLowerCase() === \"table\") {\n const g = q(r.outerHTML, h);\n r = d.make(\"div\", void 0, {\n innerHTML: g\n }).firstChild;\n } else\n r.innerHTML = q(r.innerHTML, h);\n const p = this.composePasteEvent(\"tag\", {\n data: r\n });\n return {\n content: r,\n isBlock: a,\n tool: l.name,\n event: p\n };\n }).filter((s) => {\n const r = d.isEmpty(s.content), l = d.isSingleTag(s.content);\n return !r || l;\n });\n }\n /**\n * Split plain text by new line symbols and return it as array of Block data\n *\n * @param {string} plain - string to process\n * @returns {PasteData[]}\n */\n processPlain(e) {\n const { defaultBlock: t } = this.config;\n if (!e)\n return [];\n const o = t;\n return e.split(/\\r?\\n/).filter((i) => i.trim()).map((i) => {\n const s = d.make(\"div\");\n s.textContent = i;\n const r = this.composePasteEvent(\"tag\", {\n data: s\n });\n return {\n content: s,\n tool: o,\n isBlock: !1,\n event: r\n };\n });\n }\n /**\n * Process paste of single Block tool content\n *\n * @param {PasteData} dataToInsert - data of Block to insert\n */\n async processSingleBlock(e) {\n const { Caret: t, BlockManager: o } = this.Editor, { currentBlock: i } = o;\n if (!i || e.tool !== i.name || !d.containsOnlyInlineElements(e.content.innerHTML)) {\n this.insertBlock(e, (i == null ? void 0 : i.tool.isDefault) && i.isEmpty);\n return;\n }\n t.insertContentAtCaretPosition(e.content.innerHTML);\n }\n /**\n * Process paste to single Block:\n * 1. Find patterns` matches\n * 2. Insert new block if it is not the same type as current one\n * 3. Just insert text if there is no substitutions\n *\n * @param {PasteData} dataToInsert - data of Block to insert\n */\n async processInlinePaste(e) {\n const { BlockManager: t, Caret: o } = this.Editor, { content: i } = e;\n if (t.currentBlock && t.currentBlock.tool.isDefault && i.textContent.length < lo.PATTERN_PROCESSING_MAX_LENGTH) {\n const r = await this.processPattern(i.textContent);\n if (r) {\n const l = t.currentBlock && t.currentBlock.tool.isDefault && t.currentBlock.isEmpty, a = t.paste(r.tool, r.event, l);\n o.setToBlock(a, o.positions.END);\n return;\n }\n }\n if (t.currentBlock && t.currentBlock.currentInput) {\n const r = t.currentBlock.tool.baseSanitizeConfig;\n document.execCommand(\n \"insertHTML\",\n !1,\n q(i.innerHTML, r)\n );\n } else\n this.insertBlock(e);\n }\n /**\n * Get patterns` matches\n *\n * @param {string} text - text to process\n * @returns {Promise<{event: PasteEvent, tool: string}>}\n */\n async processPattern(e) {\n const t = this.toolsPatterns.find((i) => {\n const s = i.pattern.exec(e);\n return s ? e === s.shift() : !1;\n });\n return t ? {\n event: this.composePasteEvent(\"pattern\", {\n key: t.key,\n data: e\n }),\n tool: t.tool.name\n } : void 0;\n }\n /**\n * Insert pasted Block content to Editor\n *\n * @param {PasteData} data - data to insert\n * @param {boolean} canReplaceCurrentBlock - if true and is current Block is empty, will replace current Block\n * @returns {void}\n */\n insertBlock(e, t = !1) {\n const { BlockManager: o, Caret: i } = this.Editor, { currentBlock: s } = o;\n let r;\n if (t && s && s.isEmpty) {\n r = o.paste(e.tool, e.event, !0), i.setToBlock(r, i.positions.END);\n return;\n }\n r = o.paste(e.tool, e.event), i.setToBlock(r, i.positions.END);\n }\n /**\n * Insert data passed as application/x-editor-js JSON\n *\n * @param {Array} blocks — Blocks' data to insert\n * @returns {void}\n */\n insertEditorJSData(e) {\n const { BlockManager: t, Caret: o, Tools: i } = this.Editor;\n it(\n e,\n (r) => i.blockTools.get(r).sanitizeConfig\n ).forEach(({ tool: r, data: l }, a) => {\n let c = !1;\n a === 0 && (c = t.currentBlock && t.currentBlock.tool.isDefault && t.currentBlock.isEmpty);\n const u = t.insert({\n tool: r,\n data: l,\n replace: c\n });\n o.setToBlock(u, o.positions.END);\n });\n }\n /**\n * Fetch nodes from Element node\n *\n * @param {Node} node - current node\n * @param {Node[]} nodes - processed nodes\n * @param {Node} destNode - destination node\n */\n processElementNode(e, t, o) {\n const i = Object.keys(this.toolsTags), s = e, { tool: r } = this.toolsTags[s.tagName] || {}, l = this.tagsByTool[r == null ? void 0 : r.name] || [], a = i.includes(s.tagName), c = d.blockElements.includes(s.tagName.toLowerCase()), u = Array.from(s.children).some(\n ({ tagName: p }) => i.includes(p) && !l.includes(p)\n ), h = Array.from(s.children).some(\n ({ tagName: p }) => d.blockElements.includes(p.toLowerCase())\n );\n if (!c && !a && !u)\n return o.appendChild(s), [...t, o];\n if (a && !u || c && !h && !u)\n return [...t, o, s];\n }\n /**\n * Recursively divide HTML string to two types of nodes:\n * 1. Block element\n * 2. Document Fragments contained text and markup tags like a, b, i etc.\n *\n * @param {Node} wrapper - wrapper of paster HTML content\n * @returns {Node[]}\n */\n getNodes(e) {\n const t = Array.from(e.childNodes);\n let o;\n const i = (s, r) => {\n if (d.isEmpty(r) && !d.isSingleTag(r))\n return s;\n const l = s[s.length - 1];\n let a = new DocumentFragment();\n switch (l && d.isFragment(l) && (a = s.pop()), r.nodeType) {\n case Node.ELEMENT_NODE:\n if (o = this.processElementNode(r, s, a), o)\n return o;\n break;\n case Node.TEXT_NODE:\n return a.appendChild(r), [...s, a];\n default:\n return [...s, a];\n }\n return [...s, ...Array.from(r.childNodes).reduce(i, [])];\n };\n return t.reduce(i, []);\n }\n /**\n * Compose paste event with passed type and detail\n *\n * @param {string} type - event type\n * @param {PasteEventDetail} detail - event detail\n */\n composePasteEvent(e, t) {\n return new CustomEvent(e, {\n detail: t\n });\n }\n};\nro.PATTERN_PROCESSING_MAX_LENGTH = 450;\nlet ls = ro;\nclass as extends y {\n constructor() {\n super(...arguments), this.toolsDontSupportReadOnly = [], this.readOnlyEnabled = !1;\n }\n /**\n * Returns state of read only mode\n */\n get isEnabled() {\n return this.readOnlyEnabled;\n }\n /**\n * Set initial state\n */\n async prepare() {\n const { Tools: e } = this.Editor, { blockTools: t } = e, o = [];\n Array.from(t.entries()).forEach(([i, s]) => {\n s.isReadOnlySupported || o.push(i);\n }), this.toolsDontSupportReadOnly = o, this.config.readOnly && o.length > 0 && this.throwCriticalError(), this.toggle(this.config.readOnly, !0);\n }\n /**\n * Set read-only mode or toggle current state\n * Call all Modules `toggleReadOnly` method and re-render Editor\n *\n * @param state - (optional) read-only state or toggle\n * @param isInitial - (optional) true when editor is initializing\n */\n async toggle(e = !this.readOnlyEnabled, t = !1) {\n e && this.toolsDontSupportReadOnly.length > 0 && this.throwCriticalError();\n const o = this.readOnlyEnabled;\n this.readOnlyEnabled = e;\n for (const s in this.Editor)\n this.Editor[s].toggleReadOnly && this.Editor[s].toggleReadOnly(e);\n if (o === e)\n return this.readOnlyEnabled;\n if (t)\n return this.readOnlyEnabled;\n this.Editor.ModificationsObserver.disable();\n const i = await this.Editor.Saver.save();\n return await this.Editor.BlockManager.clear(), await this.Editor.Renderer.render(i.blocks), this.Editor.ModificationsObserver.enable(), this.readOnlyEnabled;\n }\n /**\n * Throws an error about tools which don't support read-only mode\n */\n throwCriticalError() {\n throw new Pt(\n `To enable read-only mode all connected tools should support it. Tools ${this.toolsDontSupportReadOnly.join(\", \")} don't support read-only mode.`\n );\n }\n}\nclass xe extends y {\n constructor() {\n super(...arguments), this.isRectSelectionActivated = !1, this.SCROLL_SPEED = 3, this.HEIGHT_OF_SCROLL_ZONE = 40, this.BOTTOM_SCROLL_ZONE = 1, this.TOP_SCROLL_ZONE = 2, this.MAIN_MOUSE_BUTTON = 0, this.mousedown = !1, this.isScrolling = !1, this.inScrollZone = null, this.startX = 0, this.startY = 0, this.mouseX = 0, this.mouseY = 0, this.stackOfSelected = [], this.listenerIds = [];\n }\n /**\n * CSS classes for the Block\n *\n * @returns {{wrapper: string, content: string}}\n */\n static get CSS() {\n return {\n overlay: \"codex-editor-overlay\",\n overlayContainer: \"codex-editor-overlay__container\",\n rect: \"codex-editor-overlay__rectangle\",\n topScrollZone: \"codex-editor-overlay__scroll-zone--top\",\n bottomScrollZone: \"codex-editor-overlay__scroll-zone--bottom\"\n };\n }\n /**\n * Module Preparation\n * Creating rect and hang handlers\n */\n prepare() {\n this.enableModuleBindings();\n }\n /**\n * Init rect params\n *\n * @param {number} pageX - X coord of mouse\n * @param {number} pageY - Y coord of mouse\n */\n startSelection(e, t) {\n const o = document.elementFromPoint(e - window.pageXOffset, t - window.pageYOffset);\n o.closest(`.${this.Editor.Toolbar.CSS.toolbar}`) || (this.Editor.BlockSelection.allBlocksSelected = !1, this.clearSelection(), this.stackOfSelected = []);\n const s = [\n `.${D.CSS.content}`,\n `.${this.Editor.Toolbar.CSS.toolbar}`,\n `.${this.Editor.InlineToolbar.CSS.inlineToolbar}`\n ], r = o.closest(\".\" + this.Editor.UI.CSS.editorWrapper), l = s.some((a) => !!o.closest(a));\n !r || l || (this.mousedown = !0, this.startX = e, this.startY = t);\n }\n /**\n * Clear all params to end selection\n */\n endSelection() {\n this.mousedown = !1, this.startX = 0, this.startY = 0, this.overlayRectangle.style.display = \"none\";\n }\n /**\n * is RectSelection Activated\n */\n isRectActivated() {\n return this.isRectSelectionActivated;\n }\n /**\n * Mark that selection is end\n */\n clearSelection() {\n this.isRectSelectionActivated = !1;\n }\n /**\n * Sets Module necessary event handlers\n */\n enableModuleBindings() {\n const { container: e } = this.genHTML();\n this.listeners.on(e, \"mousedown\", (t) => {\n this.processMouseDown(t);\n }, !1), this.listeners.on(document.body, \"mousemove\", Ve((t) => {\n this.processMouseMove(t);\n }, 10), {\n passive: !0\n }), this.listeners.on(document.body, \"mouseleave\", () => {\n this.processMouseLeave();\n }), this.listeners.on(window, \"scroll\", Ve((t) => {\n this.processScroll(t);\n }, 10), {\n passive: !0\n }), this.listeners.on(document.body, \"mouseup\", () => {\n this.processMouseUp();\n }, !1);\n }\n /**\n * Handle mouse down events\n *\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processMouseDown(e) {\n if (e.button !== this.MAIN_MOUSE_BUTTON)\n return;\n e.target.closest(d.allInputsSelector) !== null || this.startSelection(e.pageX, e.pageY);\n }\n /**\n * Handle mouse move events\n *\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processMouseMove(e) {\n this.changingRectangle(e), this.scrollByZones(e.clientY);\n }\n /**\n * Handle mouse leave\n */\n processMouseLeave() {\n this.clearSelection(), this.endSelection();\n }\n /**\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processScroll(e) {\n this.changingRectangle(e);\n }\n /**\n * Handle mouse up\n */\n processMouseUp() {\n this.clearSelection(), this.endSelection();\n }\n /**\n * Scroll If mouse in scroll zone\n *\n * @param {number} clientY - Y coord of mouse\n */\n scrollByZones(e) {\n if (this.inScrollZone = null, e <= this.HEIGHT_OF_SCROLL_ZONE && (this.inScrollZone = this.TOP_SCROLL_ZONE), document.documentElement.clientHeight - e <= this.HEIGHT_OF_SCROLL_ZONE && (this.inScrollZone = this.BOTTOM_SCROLL_ZONE), !this.inScrollZone) {\n this.isScrolling = !1;\n return;\n }\n this.isScrolling || (this.scrollVertical(this.inScrollZone === this.TOP_SCROLL_ZONE ? -this.SCROLL_SPEED : this.SCROLL_SPEED), this.isScrolling = !0);\n }\n /**\n * Generates required HTML elements\n *\n * @returns {Object}\n */\n genHTML() {\n const { UI: e } = this.Editor, t = e.nodes.holder.querySelector(\".\" + e.CSS.editorWrapper), o = d.make(\"div\", xe.CSS.overlay, {}), i = d.make(\"div\", xe.CSS.overlayContainer, {}), s = d.make(\"div\", xe.CSS.rect, {});\n return i.appendChild(s), o.appendChild(i), t.appendChild(o), this.overlayRectangle = s, {\n container: t,\n overlay: o\n };\n }\n /**\n * Activates scrolling if blockSelection is active and mouse is in scroll zone\n *\n * @param {number} speed - speed of scrolling\n */\n scrollVertical(e) {\n if (!(this.inScrollZone && this.mousedown))\n return;\n const t = window.pageYOffset;\n window.scrollBy(0, e), this.mouseY += window.pageYOffset - t, setTimeout(() => {\n this.scrollVertical(e);\n }, 0);\n }\n /**\n * Handles the change in the rectangle and its effect\n *\n * @param {MouseEvent} event - mouse event\n */\n changingRectangle(e) {\n if (!this.mousedown)\n return;\n e.pageY !== void 0 && (this.mouseX = e.pageX, this.mouseY = e.pageY);\n const { rightPos: t, leftPos: o, index: i } = this.genInfoForMouseSelection(), s = this.startX > t && this.mouseX > t, r = this.startX < o && this.mouseX < o;\n this.rectCrossesBlocks = !(s || r), this.isRectSelectionActivated || (this.rectCrossesBlocks = !1, this.isRectSelectionActivated = !0, this.shrinkRectangleToPoint(), this.overlayRectangle.style.display = \"block\"), this.updateRectangleSize(), this.Editor.Toolbar.close(), i !== void 0 && (this.trySelectNextBlock(i), this.inverseSelection(), b.get().removeAllRanges());\n }\n /**\n * Shrink rect to singular point\n */\n shrinkRectangleToPoint() {\n this.overlayRectangle.style.left = `${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.top = `${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.bottom = `calc(100% - ${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.right = `calc(100% - ${this.startX - window.pageXOffset}px`;\n }\n /**\n * Select or unselect all of blocks in array if rect is out or in selectable area\n */\n inverseSelection() {\n const t = this.Editor.BlockManager.getBlockByIndex(this.stackOfSelected[0]).selected;\n if (this.rectCrossesBlocks && !t)\n for (const o of this.stackOfSelected)\n this.Editor.BlockSelection.selectBlockByIndex(o);\n if (!this.rectCrossesBlocks && t)\n for (const o of this.stackOfSelected)\n this.Editor.BlockSelection.unSelectBlockByIndex(o);\n }\n /**\n * Updates size of rectangle\n */\n updateRectangleSize() {\n this.mouseY >= this.startY ? (this.overlayRectangle.style.top = `${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.bottom = `calc(100% - ${this.mouseY - window.pageYOffset}px`) : (this.overlayRectangle.style.bottom = `calc(100% - ${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.top = `${this.mouseY - window.pageYOffset}px`), this.mouseX >= this.startX ? (this.overlayRectangle.style.left = `${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.right = `calc(100% - ${this.mouseX - window.pageXOffset}px`) : (this.overlayRectangle.style.right = `calc(100% - ${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.left = `${this.mouseX - window.pageXOffset}px`);\n }\n /**\n * Collects information needed to determine the behavior of the rectangle\n *\n * @returns {object} index - index next Block, leftPos - start of left border of Block, rightPos - right border\n */\n genInfoForMouseSelection() {\n const t = document.body.offsetWidth / 2, o = this.mouseY - window.pageYOffset, i = document.elementFromPoint(t, o), s = this.Editor.BlockManager.getBlockByChildNode(i);\n let r;\n s !== void 0 && (r = this.Editor.BlockManager.blocks.findIndex((h) => h.holder === s.holder));\n const l = this.Editor.BlockManager.lastBlock.holder.querySelector(\".\" + D.CSS.content), a = Number.parseInt(window.getComputedStyle(l).width, 10) / 2, c = t - a, u = t + a;\n return {\n index: r,\n leftPos: c,\n rightPos: u\n };\n }\n /**\n * Select block with index index\n *\n * @param index - index of block in redactor\n */\n addBlockInSelection(e) {\n this.rectCrossesBlocks && this.Editor.BlockSelection.selectBlockByIndex(e), this.stackOfSelected.push(e);\n }\n /**\n * Adds a block to the selection and determines which blocks should be selected\n *\n * @param {object} index - index of new block in the reactor\n */\n trySelectNextBlock(e) {\n const t = this.stackOfSelected[this.stackOfSelected.length - 1] === e, o = this.stackOfSelected.length, i = 1, s = -1, r = 0;\n if (t)\n return;\n const l = this.stackOfSelected[o - 1] - this.stackOfSelected[o - 2] > 0;\n let a = r;\n o > 1 && (a = l ? i : s);\n const c = e > this.stackOfSelected[o - 1] && a === i, u = e < this.stackOfSelected[o - 1] && a === s, p = !(c || u || a === r);\n if (!p && (e > this.stackOfSelected[o - 1] || this.stackOfSelected[o - 1] === void 0)) {\n let k = this.stackOfSelected[o - 1] + 1 || e;\n for (k; k <= e; k++)\n this.addBlockInSelection(k);\n return;\n }\n if (!p && e < this.stackOfSelected[o - 1]) {\n for (let k = this.stackOfSelected[o - 1] - 1; k >= e; k--)\n this.addBlockInSelection(k);\n return;\n }\n if (!p)\n return;\n let g = o - 1, f;\n for (e > this.stackOfSelected[o - 1] ? f = () => e > this.stackOfSelected[g] : f = () => e < this.stackOfSelected[g]; f(); )\n this.rectCrossesBlocks && this.Editor.BlockSelection.unSelectBlockByIndex(this.stackOfSelected[g]), this.stackOfSelected.pop(), g--;\n }\n}\nclass cs extends y {\n /**\n * Renders passed blocks as one batch\n *\n * @param blocksData - blocks to render\n */\n async render(e) {\n return new Promise((t) => {\n const { Tools: o, BlockManager: i } = this.Editor;\n if (e.length === 0)\n i.insert();\n else {\n const s = e.map(({ type: r, data: l, tunes: a, id: c }) => {\n o.available.has(r) === !1 && (X(`Tool «${r}» is not found. Check 'tools' property at the Editor.js config.`, \"warn\"), l = this.composeStubDataForTool(r, l, c), r = o.stubTool);\n let u;\n try {\n u = i.composeBlock({\n id: c,\n tool: r,\n data: l,\n tunes: a\n });\n } catch (h) {\n I(`Block «${r}» skipped because of plugins error`, \"error\", {\n data: l,\n error: h\n }), l = this.composeStubDataForTool(r, l, c), r = o.stubTool, u = i.composeBlock({\n id: c,\n tool: r,\n data: l,\n tunes: a\n });\n }\n return u;\n });\n i.insertMany(s);\n }\n window.requestIdleCallback(() => {\n t();\n }, { timeout: 2e3 });\n });\n }\n /**\n * Create data for the Stub Tool that will be used instead of unavailable tool\n *\n * @param tool - unavailable tool name to stub\n * @param data - data of unavailable block\n * @param [id] - id of unavailable block\n */\n composeStubDataForTool(e, t, o) {\n const { Tools: i } = this.Editor;\n let s = e;\n if (i.unavailable.has(e)) {\n const r = i.unavailable.get(e).toolbox;\n r !== void 0 && r[0].title !== void 0 && (s = r[0].title);\n }\n return {\n savedData: {\n id: o,\n type: e,\n data: t\n },\n title: s\n };\n }\n}\nclass ds extends y {\n /**\n * Composes new chain of Promises to fire them alternatelly\n *\n * @returns {OutputData}\n */\n async save() {\n const { BlockManager: e, Tools: t } = this.Editor, o = e.blocks, i = [];\n try {\n o.forEach((l) => {\n i.push(this.getSavedData(l));\n });\n const s = await Promise.all(i), r = await it(s, (l) => t.blockTools.get(l).sanitizeConfig);\n return this.makeOutput(r);\n } catch (s) {\n X(\"Saving failed due to the Error %o\", \"error\", s);\n }\n }\n /**\n * Saves and validates\n *\n * @param {Block} block - Editor's Tool\n * @returns {ValidatedData} - Tool's validated data\n */\n async getSavedData(e) {\n const t = await e.save(), o = t && await e.validate(t.data);\n return {\n ...t,\n isValid: o\n };\n }\n /**\n * Creates output object with saved data, time and version of editor\n *\n * @param {ValidatedData} allExtractedData - data extracted from Blocks\n * @returns {OutputData}\n */\n makeOutput(e) {\n const t = [];\n return e.forEach(({ id: o, tool: i, data: s, tunes: r, isValid: l }) => {\n if (!l) {\n I(`Block «${i}» skipped because saved data is invalid`);\n return;\n }\n if (i === this.Editor.Tools.stubTool) {\n t.push(s);\n return;\n }\n const a = {\n id: o,\n type: i,\n data: s,\n ...!V(r) && {\n tunes: r\n }\n };\n t.push(a);\n }), {\n time: +/* @__PURE__ */ new Date(),\n blocks: t,\n version: \"2.30.7\"\n };\n }\n}\n(function() {\n try {\n if (typeof document < \"u\") {\n var n = document.createElement(\"style\");\n n.appendChild(document.createTextNode(\".ce-paragraph{line-height:1.6em;outline:none}.ce-block:only-of-type .ce-paragraph[data-placeholder-active]:empty:before,.ce-block:only-of-type .ce-paragraph[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active)}.ce-paragraph p:first-of-type{margin-top:0}.ce-paragraph p:last-of-type{margin-bottom:0}\")), document.head.appendChild(n);\n }\n } catch (e) {\n console.error(\"vite-plugin-css-injected-by-js\", e);\n }\n})();\nconst hs = '';\nfunction us(n) {\n const e = document.createElement(\"div\");\n e.innerHTML = n.trim();\n const t = document.createDocumentFragment();\n return t.append(...Array.from(e.childNodes)), t;\n}\n/**\n * Base Paragraph Block for the Editor.js.\n * Represents a regular text block\n *\n * @author CodeX (team@codex.so)\n * @copyright CodeX 2018\n * @license The MIT License (MIT)\n */\nclass ht {\n /**\n * Default placeholder for Paragraph Tool\n *\n * @returns {string}\n * @class\n */\n static get DEFAULT_PLACEHOLDER() {\n return \"\";\n }\n /**\n * Render plugin`s main Element and fill it with saved data\n *\n * @param {object} params - constructor params\n * @param {ParagraphData} params.data - previously saved data\n * @param {ParagraphConfig} params.config - user config for Tool\n * @param {object} params.api - editor.js api\n * @param {boolean} readOnly - read only mode flag\n */\n constructor({ data: e, config: t, api: o, readOnly: i }) {\n this.api = o, this.readOnly = i, this._CSS = {\n block: this.api.styles.block,\n wrapper: \"ce-paragraph\"\n }, this.readOnly || (this.onKeyUp = this.onKeyUp.bind(this)), this._placeholder = t.placeholder ? t.placeholder : ht.DEFAULT_PLACEHOLDER, this._data = e ?? {}, this._element = null, this._preserveBlank = t.preserveBlank ?? !1;\n }\n /**\n * Check if text content is empty and set empty string to inner html.\n * We need this because some browsers (e.g. Safari) insert
into empty contenteditanle elements\n *\n * @param {KeyboardEvent} e - key up event\n */\n onKeyUp(e) {\n if (e.code !== \"Backspace\" && e.code !== \"Delete\" || !this._element)\n return;\n const { textContent: t } = this._element;\n t === \"\" && (this._element.innerHTML = \"\");\n }\n /**\n * Create Tool's view\n *\n * @returns {HTMLDivElement}\n * @private\n */\n drawView() {\n const e = document.createElement(\"DIV\");\n return e.classList.add(this._CSS.wrapper, this._CSS.block), e.contentEditable = \"false\", e.dataset.placeholderActive = this.api.i18n.t(this._placeholder), this._data.text && (e.innerHTML = this._data.text), this.readOnly || (e.contentEditable = \"true\", e.addEventListener(\"keyup\", this.onKeyUp)), e;\n }\n /**\n * Return Tool's view\n *\n * @returns {HTMLDivElement}\n */\n render() {\n return this._element = this.drawView(), this._element;\n }\n /**\n * Method that specified how to merge two Text blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n *\n * @param {ParagraphData} data\n * @public\n */\n merge(e) {\n if (!this._element)\n return;\n this._data.text += e.text;\n const t = us(e.text);\n this._element.appendChild(t), this._element.normalize();\n }\n /**\n * Validate Paragraph block data:\n * - check for emptiness\n *\n * @param {ParagraphData} savedData — data received after saving\n * @returns {boolean} false if saved data is not correct, otherwise true\n * @public\n */\n validate(e) {\n return !(e.text.trim() === \"\" && !this._preserveBlank);\n }\n /**\n * Extract Tool's data from the view\n *\n * @param {HTMLDivElement} toolsContent - Paragraph tools rendered view\n * @returns {ParagraphData} - saved data\n * @public\n */\n save(e) {\n return {\n text: e.innerHTML\n };\n }\n /**\n * On paste callback fired from Editor.\n *\n * @param {HTMLPasteEvent} event - event with pasted data\n */\n onPaste(e) {\n const t = {\n text: e.detail.data.innerHTML\n };\n this._data = t, window.requestAnimationFrame(() => {\n this._element && (this._element.innerHTML = this._data.text || \"\");\n });\n }\n /**\n * Enable Conversion Toolbar. Paragraph can be converted to/from other tools\n * @returns {ConversionConfig}\n */\n static get conversionConfig() {\n return {\n export: \"text\",\n // to convert Paragraph to other block, use 'text' property of saved data\n import: \"text\"\n // to covert other block's exported string to Paragraph, fill 'text' property of tool data\n };\n }\n /**\n * Sanitizer rules\n * @returns {SanitizerConfig} - Edtior.js sanitizer config\n */\n static get sanitize() {\n return {\n text: {\n br: !0\n }\n };\n }\n /**\n * Returns true to notify the core that read-only mode is supported\n *\n * @returns {boolean}\n */\n static get isReadOnlySupported() {\n return !0;\n }\n /**\n * Used by Editor paste handling API.\n * Provides configuration to handle P tags.\n *\n * @returns {PasteConfig} - Paragraph Paste Setting\n */\n static get pasteConfig() {\n return {\n tags: [\"P\"]\n };\n }\n /**\n * Icon and title for displaying at the Toolbox\n *\n * @returns {ToolboxConfig} - Paragraph Toolbox Setting\n */\n static get toolbox() {\n return {\n icon: hs,\n title: \"Text\"\n };\n }\n}\nclass ut {\n constructor() {\n this.commandName = \"bold\";\n }\n /**\n * Sanitizer Rule\n * Leave tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n b: {}\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return {\n icon: bi,\n name: \"bold\",\n onActivate: () => {\n document.execCommand(this.commandName);\n },\n isActive: () => document.queryCommandState(this.commandName)\n };\n }\n /**\n * Set a shortcut\n *\n * @returns {boolean}\n */\n get shortcut() {\n return \"CMD+B\";\n }\n}\nut.isInline = !0;\nut.title = \"Bold\";\nclass pt {\n constructor() {\n this.commandName = \"italic\", this.CSS = {\n button: \"ce-inline-tool\",\n buttonActive: \"ce-inline-tool--active\",\n buttonModifier: \"ce-inline-tool--italic\"\n }, this.nodes = {\n button: null\n };\n }\n /**\n * Sanitizer Rule\n * Leave tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n i: {}\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return this.nodes.button = document.createElement(\"button\"), this.nodes.button.type = \"button\", this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier), this.nodes.button.innerHTML = Bi, this.nodes.button;\n }\n /**\n * Wrap range with tag\n */\n surround() {\n document.execCommand(this.commandName);\n }\n /**\n * Check selection and set activated state to button if there are tag\n */\n checkState() {\n const e = document.queryCommandState(this.commandName);\n return this.nodes.button.classList.toggle(this.CSS.buttonActive, e), e;\n }\n /**\n * Set a shortcut\n */\n get shortcut() {\n return \"CMD+I\";\n }\n}\npt.isInline = !0;\npt.title = \"Italic\";\nclass ft {\n /**\n * @param api - Editor.js API\n */\n constructor({ api: e }) {\n this.commandLink = \"createLink\", this.commandUnlink = \"unlink\", this.ENTER_KEY = 13, this.CSS = {\n button: \"ce-inline-tool\",\n buttonActive: \"ce-inline-tool--active\",\n buttonModifier: \"ce-inline-tool--link\",\n buttonUnlink: \"ce-inline-tool--unlink\",\n input: \"ce-inline-tool-input\",\n inputShowed: \"ce-inline-tool-input--showed\"\n }, this.nodes = {\n button: null,\n input: null\n }, this.inputOpened = !1, this.toolbar = e.toolbar, this.inlineToolbar = e.inlineToolbar, this.notifier = e.notifier, this.i18n = e.i18n, this.selection = new b();\n }\n /**\n * Sanitizer Rule\n * Leave tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n a: {\n href: !0,\n target: \"_blank\",\n rel: \"nofollow\"\n }\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return this.nodes.button = document.createElement(\"button\"), this.nodes.button.type = \"button\", this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier), this.nodes.button.innerHTML = yt, this.nodes.button;\n }\n /**\n * Input for the link\n */\n renderActions() {\n return this.nodes.input = document.createElement(\"input\"), this.nodes.input.placeholder = this.i18n.t(\"Add a link\"), this.nodes.input.enterKeyHint = \"done\", this.nodes.input.classList.add(this.CSS.input), this.nodes.input.addEventListener(\"keydown\", (e) => {\n e.keyCode === this.ENTER_KEY && this.enterPressed(e);\n }), this.nodes.input;\n }\n /**\n * Handle clicks on the Inline Toolbar icon\n *\n * @param {Range} range - range to wrap with link\n */\n surround(e) {\n if (e) {\n this.inputOpened ? (this.selection.restore(), this.selection.removeFakeBackground()) : (this.selection.setFakeBackground(), this.selection.save());\n const t = this.selection.findParentTag(\"A\");\n if (t) {\n this.selection.expandToTag(t), this.unlink(), this.closeActions(), this.checkState(), this.toolbar.close();\n return;\n }\n }\n this.toggleActions();\n }\n /**\n * Check selection and set activated state to button if there are tag\n */\n checkState() {\n const e = this.selection.findParentTag(\"A\");\n if (e) {\n this.nodes.button.innerHTML = Ii, this.nodes.button.classList.add(this.CSS.buttonUnlink), this.nodes.button.classList.add(this.CSS.buttonActive), this.openActions();\n const t = e.getAttribute(\"href\");\n this.nodes.input.value = t !== \"null\" ? t : \"\", this.selection.save();\n } else\n this.nodes.button.innerHTML = yt, this.nodes.button.classList.remove(this.CSS.buttonUnlink), this.nodes.button.classList.remove(this.CSS.buttonActive);\n return !!e;\n }\n /**\n * Function called with Inline Toolbar closing\n */\n clear() {\n this.closeActions();\n }\n /**\n * Set a shortcut\n */\n get shortcut() {\n return \"CMD+K\";\n }\n /**\n * Show/close link input\n */\n toggleActions() {\n this.inputOpened ? this.closeActions(!1) : this.openActions(!0);\n }\n /**\n * @param {boolean} needFocus - on link creation we need to focus input. On editing - nope.\n */\n openActions(e = !1) {\n this.nodes.input.classList.add(this.CSS.inputShowed), e && this.nodes.input.focus(), this.inputOpened = !0;\n }\n /**\n * Close input\n *\n * @param {boolean} clearSavedSelection — we don't need to clear saved selection\n * on toggle-clicks on the icon of opened Toolbar\n */\n closeActions(e = !0) {\n if (this.selection.isFakeBackgroundEnabled) {\n const t = new b();\n t.save(), this.selection.restore(), this.selection.removeFakeBackground(), t.restore();\n }\n this.nodes.input.classList.remove(this.CSS.inputShowed), this.nodes.input.value = \"\", e && this.selection.clearSaved(), this.inputOpened = !1;\n }\n /**\n * Enter pressed on input\n *\n * @param {KeyboardEvent} event - enter keydown event\n */\n enterPressed(e) {\n let t = this.nodes.input.value || \"\";\n if (!t.trim()) {\n this.selection.restore(), this.unlink(), e.preventDefault(), this.closeActions();\n return;\n }\n if (!this.validateURL(t)) {\n this.notifier.show({\n message: \"Pasted link is not valid.\",\n style: \"error\"\n }), I(\"Incorrect Link pasted\", \"warn\", t);\n return;\n }\n t = this.prepareLink(t), this.selection.restore(), this.selection.removeFakeBackground(), this.insertLink(t), e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation(), this.selection.collapseToEnd(), this.inlineToolbar.close();\n }\n /**\n * Detects if passed string is URL\n *\n * @param {string} str - string to validate\n * @returns {boolean}\n */\n validateURL(e) {\n return !/\\s/.test(e);\n }\n /**\n * Process link before injection\n * - sanitize\n * - add protocol for links like 'google.com'\n *\n * @param {string} link - raw user input\n */\n prepareLink(e) {\n return e = e.trim(), e = this.addProtocol(e), e;\n }\n /**\n * Add 'http' protocol to the links like 'vc.ru', 'google.com'\n *\n * @param {string} link - string to process\n */\n addProtocol(e) {\n if (/^(\\w+):(\\/\\/)?/.test(e))\n return e;\n const t = /^\\/[^/\\s]/.test(e), o = e.substring(0, 1) === \"#\", i = /^\\/\\/[^/\\s]/.test(e);\n return !t && !o && !i && (e = \"http://\" + e), e;\n }\n /**\n * Inserts tag with \"href\"\n *\n * @param {string} link - \"href\" value\n */\n insertLink(e) {\n const t = this.selection.findParentTag(\"A\");\n t && this.selection.expandToTag(t), document.execCommand(this.commandLink, !1, e);\n }\n /**\n * Removes tag\n */\n unlink() {\n document.execCommand(this.commandUnlink);\n }\n}\nft.isInline = !0;\nft.title = \"Link\";\nclass ao {\n /**\n * @param api - Editor.js API\n */\n constructor({ api: e }) {\n this.i18nAPI = e.i18n, this.blocksAPI = e.blocks, this.selectionAPI = e.selection, this.toolsAPI = e.tools, this.caretAPI = e.caret;\n }\n /**\n * Returns tool's UI config\n */\n async render() {\n const e = b.get(), t = this.blocksAPI.getBlockByElement(e.anchorNode);\n if (t === void 0)\n return [];\n const o = this.toolsAPI.getBlockTools(), i = await zt(t, o);\n if (i.length === 0)\n return [];\n const s = i.reduce((c, u) => {\n var h;\n return (h = u.toolbox) == null || h.forEach((p) => {\n c.push({\n icon: p.icon,\n title: z.t(K.toolNames, p.title),\n name: u.name,\n closeOnActivate: !0,\n onActivate: async () => {\n const g = await this.blocksAPI.convert(t.id, u.name, p.data);\n this.caretAPI.setToBlock(g, \"end\");\n }\n });\n }), c;\n }, []), r = await t.getActiveToolboxEntry(), l = r !== void 0 ? r.icon : Kt, a = !pe();\n return {\n icon: l,\n name: \"convert-to\",\n hint: {\n title: this.i18nAPI.t(\"Convert to\")\n },\n children: {\n searchable: a,\n items: s,\n onOpen: () => {\n a && (this.selectionAPI.setFakeBackground(), this.selectionAPI.save());\n },\n onClose: () => {\n a && (this.selectionAPI.restore(), this.selectionAPI.removeFakeBackground());\n }\n }\n };\n }\n}\nao.isInline = !0;\nclass co {\n /**\n * @param options - constructor options\n * @param options.data - stub tool data\n * @param options.api - Editor.js API\n */\n constructor({ data: e, api: t }) {\n this.CSS = {\n wrapper: \"ce-stub\",\n info: \"ce-stub__info\",\n title: \"ce-stub__title\",\n subtitle: \"ce-stub__subtitle\"\n }, this.api = t, this.title = e.title || this.api.i18n.t(\"Error\"), this.subtitle = this.api.i18n.t(\"The block can not be displayed correctly.\"), this.savedData = e.savedData, this.wrapper = this.make();\n }\n /**\n * Returns stub holder\n *\n * @returns {HTMLElement}\n */\n render() {\n return this.wrapper;\n }\n /**\n * Return original Tool data\n *\n * @returns {BlockToolData}\n */\n save() {\n return this.savedData;\n }\n /**\n * Create Tool html markup\n *\n * @returns {HTMLElement}\n */\n make() {\n const e = d.make(\"div\", this.CSS.wrapper), t = Mi, o = d.make(\"div\", this.CSS.info), i = d.make(\"div\", this.CSS.title, {\n textContent: this.title\n }), s = d.make(\"div\", this.CSS.subtitle, {\n textContent: this.subtitle\n });\n return e.innerHTML = t, o.appendChild(i), o.appendChild(s), e.appendChild(o), e;\n }\n}\nco.isReadOnlySupported = !0;\nclass ps extends dt {\n constructor() {\n super(...arguments), this.type = ne.Inline;\n }\n /**\n * Returns title for Inline Tool if specified by user\n */\n get title() {\n return this.constructable[ct.Title];\n }\n /**\n * Constructs new InlineTool instance from constructable\n */\n create() {\n return new this.constructable({\n api: this.api,\n config: this.settings\n });\n }\n}\nclass fs extends dt {\n constructor() {\n super(...arguments), this.type = ne.Tune;\n }\n /**\n * Constructs new BlockTune instance from constructable\n *\n * @param data - Tune data\n * @param block - Block API object\n */\n create(e, t) {\n return new this.constructable({\n api: this.api,\n config: this.settings,\n block: t,\n data: e\n });\n }\n}\nclass F extends Map {\n /**\n * Returns Block Tools collection\n */\n get blockTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isBlock());\n return new F(e);\n }\n /**\n * Returns Inline Tools collection\n */\n get inlineTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isInline());\n return new F(e);\n }\n /**\n * Returns Block Tunes collection\n */\n get blockTunes() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isTune());\n return new F(e);\n }\n /**\n * Returns internal Tools collection\n */\n get internalTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isInternal);\n return new F(e);\n }\n /**\n * Returns Tools collection provided by user\n */\n get externalTools() {\n const e = Array.from(this.entries()).filter(([, t]) => !t.isInternal);\n return new F(e);\n }\n}\nvar gs = Object.defineProperty, ms = Object.getOwnPropertyDescriptor, ho = (n, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? ms(e, t) : e, s = n.length - 1, r; s >= 0; s--)\n (r = n[s]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && gs(e, t, i), i;\n};\nclass gt extends dt {\n constructor() {\n super(...arguments), this.type = ne.Block, this.inlineTools = new F(), this.tunes = new F();\n }\n /**\n * Creates new Tool instance\n *\n * @param data - Tool data\n * @param block - BlockAPI for current Block\n * @param readOnly - True if Editor is in read-only mode\n */\n create(e, t, o) {\n return new this.constructable({\n data: e,\n block: t,\n readOnly: o,\n api: this.api,\n config: this.settings\n });\n }\n /**\n * Returns true if read-only mode is supported by Tool\n */\n get isReadOnlySupported() {\n return this.constructable[ce.IsReadOnlySupported] === !0;\n }\n /**\n * Returns true if Tool supports linebreaks\n */\n get isLineBreaksEnabled() {\n return this.constructable[ce.IsEnabledLineBreaks];\n }\n /**\n * Returns Tool toolbox configuration (internal or user-specified).\n *\n * Merges internal and user-defined toolbox configs based on the following rules:\n *\n * - If both internal and user-defined toolbox configs are arrays their items are merged.\n * Length of the second one is kept.\n *\n * - If both are objects their properties are merged.\n *\n * - If one is an object and another is an array than internal config is replaced with user-defined\n * config. This is made to allow user to override default tool's toolbox representation (single/multiple entries)\n */\n get toolbox() {\n const e = this.constructable[ce.Toolbox], t = this.config[Ie.Toolbox];\n if (!V(e) && t !== !1)\n return t ? Array.isArray(e) ? Array.isArray(t) ? t.map((o, i) => {\n const s = e[i];\n return s ? {\n ...s,\n ...o\n } : o;\n }) : [t] : Array.isArray(t) ? t : [\n {\n ...e,\n ...t\n }\n ] : Array.isArray(e) ? e : [e];\n }\n /**\n * Returns Tool conversion configuration\n */\n get conversionConfig() {\n return this.constructable[ce.ConversionConfig];\n }\n /**\n * Returns enabled inline tools for Tool\n */\n get enabledInlineTools() {\n return this.config[Ie.EnabledInlineTools] || !1;\n }\n /**\n * Returns enabled tunes for Tool\n */\n get enabledBlockTunes() {\n return this.config[Ie.EnabledBlockTunes];\n }\n /**\n * Returns Tool paste configuration\n */\n get pasteConfig() {\n return this.constructable[ce.PasteConfig] ?? {};\n }\n get sanitizeConfig() {\n const e = super.sanitizeConfig, t = this.baseSanitizeConfig;\n if (V(e))\n return t;\n const o = {};\n for (const i in e)\n if (Object.prototype.hasOwnProperty.call(e, i)) {\n const s = e[i];\n R(s) ? o[i] = Object.assign({}, t, s) : o[i] = s;\n }\n return o;\n }\n get baseSanitizeConfig() {\n const e = {};\n return Array.from(this.inlineTools.values()).forEach((t) => Object.assign(e, t.sanitizeConfig)), Array.from(this.tunes.values()).forEach((t) => Object.assign(e, t.sanitizeConfig)), e;\n }\n}\nho([\n ue\n], gt.prototype, \"sanitizeConfig\", 1);\nho([\n ue\n], gt.prototype, \"baseSanitizeConfig\", 1);\nclass bs {\n /**\n * @class\n * @param config - tools config\n * @param editorConfig - EditorJS config\n * @param api - EditorJS API module\n */\n constructor(e, t, o) {\n this.api = o, this.config = e, this.editorConfig = t;\n }\n /**\n * Returns Tool object based on it's type\n *\n * @param name - tool name\n */\n get(e) {\n const { class: t, isInternal: o = !1, ...i } = this.config[e], s = this.getConstructor(t), r = t[et.IsTune];\n return new s({\n name: e,\n constructable: t,\n config: i,\n api: this.api.getMethodsForTool(e, r),\n isDefault: e === this.editorConfig.defaultBlock,\n defaultPlaceholder: this.editorConfig.placeholder,\n isInternal: o\n });\n }\n /**\n * Find appropriate Tool object constructor for Tool constructable\n *\n * @param constructable - Tools constructable\n */\n getConstructor(e) {\n switch (!0) {\n case e[ct.IsInline]:\n return ps;\n case e[et.IsTune]:\n return fs;\n default:\n return gt;\n }\n }\n}\nclass uo {\n /**\n * MoveDownTune constructor\n *\n * @param {API} api — Editor's API\n */\n constructor({ api: e }) {\n this.CSS = {\n animation: \"wobble\"\n }, this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: ki,\n title: this.api.i18n.t(\"Move down\"),\n onActivate: () => this.handleClick(),\n name: \"move-down\"\n };\n }\n /**\n * Handle clicks on 'move down' button\n */\n handleClick() {\n const e = this.api.blocks.getCurrentBlockIndex(), t = this.api.blocks.getBlockByIndex(e + 1);\n if (!t)\n throw new Error(\"Unable to move Block down since it is already the last\");\n const o = t.holder, i = o.getBoundingClientRect();\n let s = Math.abs(window.innerHeight - o.offsetHeight);\n i.top < window.innerHeight && (s = window.scrollY + o.offsetHeight), window.scrollTo(0, s), this.api.blocks.move(e + 1), this.api.toolbar.toggleBlockSettings(!0);\n }\n}\nuo.isTune = !0;\nclass po {\n /**\n * DeleteTune constructor\n *\n * @param {API} api - Editor's API\n */\n constructor({ api: e }) {\n this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: yi,\n title: this.api.i18n.t(\"Delete\"),\n name: \"delete\",\n confirmation: {\n title: this.api.i18n.t(\"Click to delete\"),\n onActivate: () => this.handleClick()\n }\n };\n }\n /**\n * Delete block conditions passed\n */\n handleClick() {\n this.api.blocks.delete();\n }\n}\npo.isTune = !0;\nclass fo {\n /**\n * MoveUpTune constructor\n *\n * @param {API} api - Editor's API\n */\n constructor({ api: e }) {\n this.CSS = {\n animation: \"wobble\"\n }, this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: xi,\n title: this.api.i18n.t(\"Move up\"),\n onActivate: () => this.handleClick(),\n name: \"move-up\"\n };\n }\n /**\n * Move current block up\n */\n handleClick() {\n const e = this.api.blocks.getCurrentBlockIndex(), t = this.api.blocks.getBlockByIndex(e), o = this.api.blocks.getBlockByIndex(e - 1);\n if (e === 0 || !t || !o)\n throw new Error(\"Unable to move Block up since it is already the first\");\n const i = t.holder, s = o.holder, r = i.getBoundingClientRect(), l = s.getBoundingClientRect();\n let a;\n l.top > 0 ? a = Math.abs(r.top) - Math.abs(l.top) : a = Math.abs(r.top) + l.height, window.scrollBy(0, -1 * a), this.api.blocks.move(e - 1), this.api.toolbar.toggleBlockSettings(!0);\n }\n}\nfo.isTune = !0;\nvar ks = Object.defineProperty, vs = Object.getOwnPropertyDescriptor, ws = (n, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? vs(e, t) : e, s = n.length - 1, r; s >= 0; s--)\n (r = n[s]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && ks(e, t, i), i;\n};\nclass go extends y {\n constructor() {\n super(...arguments), this.stubTool = \"stub\", this.toolsAvailable = new F(), this.toolsUnavailable = new F();\n }\n /**\n * Returns available Tools\n */\n get available() {\n return this.toolsAvailable;\n }\n /**\n * Returns unavailable Tools\n */\n get unavailable() {\n return this.toolsUnavailable;\n }\n /**\n * Return Tools for the Inline Toolbar\n */\n get inlineTools() {\n return this.available.inlineTools;\n }\n /**\n * Return editor block tools\n */\n get blockTools() {\n return this.available.blockTools;\n }\n /**\n * Return available Block Tunes\n *\n * @returns {object} - object of Inline Tool's classes\n */\n get blockTunes() {\n return this.available.blockTunes;\n }\n /**\n * Returns default Tool object\n */\n get defaultTool() {\n return this.blockTools.get(this.config.defaultBlock);\n }\n /**\n * Returns internal tools\n */\n get internal() {\n return this.available.internalTools;\n }\n /**\n * Creates instances via passed or default configuration\n *\n * @returns {Promise}\n */\n async prepare() {\n if (this.validateTools(), this.config.tools = qe({}, this.internalTools, this.config.tools), !Object.prototype.hasOwnProperty.call(this.config, \"tools\") || Object.keys(this.config.tools).length === 0)\n throw Error(\"Can't start without tools\");\n const e = this.prepareConfig();\n this.factory = new bs(e, this.config, this.Editor.API);\n const t = this.getListOfPrepareFunctions(e);\n if (t.length === 0)\n return Promise.resolve();\n await Eo(t, (o) => {\n this.toolPrepareMethodSuccess(o);\n }, (o) => {\n this.toolPrepareMethodFallback(o);\n }), this.prepareBlockTools();\n }\n getAllInlineToolsSanitizeConfig() {\n const e = {};\n return Array.from(this.inlineTools.values()).forEach((t) => {\n Object.assign(e, t.sanitizeConfig);\n }), e;\n }\n /**\n * Calls each Tool reset method to clean up anything set by Tool\n */\n destroy() {\n Object.values(this.available).forEach(async (e) => {\n O(e.reset) && await e.reset();\n });\n }\n /**\n * Returns internal tools\n * Includes Bold, Italic, Link and Paragraph\n */\n get internalTools() {\n return {\n convertTo: {\n class: ao,\n isInternal: !0\n },\n link: {\n class: ft,\n isInternal: !0\n },\n bold: {\n class: ut,\n isInternal: !0\n },\n italic: {\n class: pt,\n isInternal: !0\n },\n paragraph: {\n class: ht,\n inlineToolbar: !0,\n isInternal: !0\n },\n stub: {\n class: co,\n isInternal: !0\n },\n moveUp: {\n class: fo,\n isInternal: !0\n },\n delete: {\n class: po,\n isInternal: !0\n },\n moveDown: {\n class: uo,\n isInternal: !0\n }\n };\n }\n /**\n * Tool prepare method success callback\n *\n * @param {object} data - append tool to available list\n */\n toolPrepareMethodSuccess(e) {\n const t = this.factory.get(e.toolName);\n if (t.isInline()) {\n const i = [\"render\"].filter((s) => !t.create()[s]);\n if (i.length) {\n I(\n `Incorrect Inline Tool: ${t.name}. Some of required methods is not implemented %o`,\n \"warn\",\n i\n ), this.toolsUnavailable.set(t.name, t);\n return;\n }\n }\n this.toolsAvailable.set(t.name, t);\n }\n /**\n * Tool prepare method fail callback\n *\n * @param {object} data - append tool to unavailable list\n */\n toolPrepareMethodFallback(e) {\n this.toolsUnavailable.set(e.toolName, this.factory.get(e.toolName));\n }\n /**\n * Binds prepare function of plugins with user or default config\n *\n * @returns {Array} list of functions that needs to be fired sequentially\n * @param config - tools config\n */\n getListOfPrepareFunctions(e) {\n const t = [];\n return Object.entries(e).forEach(([o, i]) => {\n t.push({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n function: O(i.class.prepare) ? i.class.prepare : () => {\n },\n data: {\n toolName: o,\n config: i.config\n }\n });\n }), t;\n }\n /**\n * Assign enabled Inline Tools and Block Tunes for Block Tool\n */\n prepareBlockTools() {\n Array.from(this.blockTools.values()).forEach((e) => {\n this.assignInlineToolsToBlockTool(e), this.assignBlockTunesToBlockTool(e);\n });\n }\n /**\n * Assign enabled Inline Tools for Block Tool\n *\n * @param tool - Block Tool\n */\n assignInlineToolsToBlockTool(e) {\n if (this.config.inlineToolbar !== !1) {\n if (e.enabledInlineTools === !0) {\n e.inlineTools = new F(\n Array.isArray(this.config.inlineToolbar) ? this.config.inlineToolbar.map((t) => [t, this.inlineTools.get(t)]) : Array.from(this.inlineTools.entries())\n );\n return;\n }\n Array.isArray(e.enabledInlineTools) && (e.inlineTools = new F(\n /** Prepend ConvertTo Inline Tool */\n [\"convertTo\", ...e.enabledInlineTools].map((t) => [t, this.inlineTools.get(t)])\n ));\n }\n }\n /**\n * Assign enabled Block Tunes for Block Tool\n *\n * @param tool — Block Tool\n */\n assignBlockTunesToBlockTool(e) {\n if (e.enabledBlockTunes !== !1) {\n if (Array.isArray(e.enabledBlockTunes)) {\n const t = new F(\n e.enabledBlockTunes.map((o) => [o, this.blockTunes.get(o)])\n );\n e.tunes = new F([...t, ...this.blockTunes.internalTools]);\n return;\n }\n if (Array.isArray(this.config.tunes)) {\n const t = new F(\n this.config.tunes.map((o) => [o, this.blockTunes.get(o)])\n );\n e.tunes = new F([...t, ...this.blockTunes.internalTools]);\n return;\n }\n e.tunes = this.blockTunes.internalTools;\n }\n }\n /**\n * Validate Tools configuration objects and throw Error for user if it is invalid\n */\n validateTools() {\n for (const e in this.config.tools)\n if (Object.prototype.hasOwnProperty.call(this.config.tools, e)) {\n if (e in this.internalTools)\n return;\n const t = this.config.tools[e];\n if (!O(t) && !O(t.class))\n throw Error(\n `Tool «${e}» must be a constructor function or an object with function in the «class» property`\n );\n }\n }\n /**\n * Unify tools config\n */\n prepareConfig() {\n const e = {};\n for (const t in this.config.tools)\n R(this.config.tools[t]) ? e[t] = this.config.tools[t] : e[t] = { class: this.config.tools[t] };\n return e;\n }\n}\nws([\n ue\n], go.prototype, \"getAllInlineToolsSanitizeConfig\", 1);\nconst xs = `:root{--selectionColor: #e1f2ff;--inlineSelectionColor: #d4ecff;--bg-light: #eff2f5;--grayText: #707684;--color-dark: #1D202B;--color-active-icon: #388AE5;--color-gray-border: rgba(201, 201, 204, .48);--content-width: 650px;--narrow-mode-right-padding: 50px;--toolbox-buttons-size: 26px;--toolbox-buttons-size--mobile: 36px;--icon-size: 20px;--icon-size--mobile: 28px;--block-padding-vertical: .4em;--color-line-gray: #EFF0F1 }.codex-editor{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:1}.codex-editor .hide{display:none}.codex-editor__redactor [contenteditable]:empty:after{content:\"\\\\feff\"}@media (min-width: 651px){.codex-editor--narrow .codex-editor__redactor{margin-right:50px}}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .codex-editor__redactor{margin-left:50px;margin-right:0}}@media (min-width: 651px){.codex-editor--narrow .ce-toolbar__actions{right:-5px}}.codex-editor-copyable{position:absolute;height:1px;width:1px;top:-400%;opacity:.001}.codex-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999;pointer-events:none;overflow:hidden}.codex-editor-overlay__container{position:relative;pointer-events:auto;z-index:0}.codex-editor-overlay__rectangle{position:absolute;pointer-events:none;background-color:#2eaadc33;border:1px solid transparent}.codex-editor svg{max-height:100%}.codex-editor path{stroke:currentColor}.codex-editor ::-moz-selection{background-color:#d4ecff}.codex-editor ::selection{background-color:#d4ecff}.codex-editor--toolbox-opened [contentEditable=true][data-placeholder]:focus:before{opacity:0!important}.ce-scroll-locked{overflow:hidden}.ce-scroll-locked--hard{overflow:hidden;top:calc(-1 * var(--window-scroll-offset));position:fixed;width:100%}.ce-toolbar{position:absolute;left:0;right:0;top:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;will-change:opacity,top;display:none}.ce-toolbar--opened{display:block}.ce-toolbar__content{max-width:650px;margin:0 auto;position:relative}.ce-toolbar__plus{color:#1d202b;cursor:pointer;width:26px;height:26px;border-radius:7px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0}@media (max-width: 650px){.ce-toolbar__plus{width:36px;height:36px}}@media (hover: hover){.ce-toolbar__plus:hover{background-color:#eff2f5}}.ce-toolbar__plus--active{background-color:#eff2f5;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.ce-toolbar__plus-shortcut{opacity:.6;word-spacing:-2px;margin-top:5px}@media (max-width: 650px){.ce-toolbar__plus{position:absolute;background-color:#fff;border:1px solid #E8E8EB;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;z-index:2;position:static}.ce-toolbar__plus--left-oriented:before{left:15px;margin-left:0}.ce-toolbar__plus--right-oriented:before{left:auto;right:15px;margin-left:0}}.ce-toolbar__actions{position:absolute;right:100%;opacity:0;display:-webkit-box;display:-ms-flexbox;display:flex;padding-right:5px}.ce-toolbar__actions--opened{opacity:1}@media (max-width: 650px){.ce-toolbar__actions{right:auto}}.ce-toolbar__settings-btn{color:#1d202b;width:26px;height:26px;border-radius:7px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;margin-left:3px;cursor:pointer;user-select:none}@media (max-width: 650px){.ce-toolbar__settings-btn{width:36px;height:36px}}@media (hover: hover){.ce-toolbar__settings-btn:hover{background-color:#eff2f5}}.ce-toolbar__settings-btn--active{background-color:#eff2f5;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@media (min-width: 651px){.ce-toolbar__settings-btn{width:24px}}.ce-toolbar__settings-btn--hidden{display:none}@media (max-width: 650px){.ce-toolbar__settings-btn{position:absolute;background-color:#fff;border:1px solid #E8E8EB;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;z-index:2;position:static}.ce-toolbar__settings-btn--left-oriented:before{left:15px;margin-left:0}.ce-toolbar__settings-btn--right-oriented:before{left:auto;right:15px;margin-left:0}}.ce-toolbar__plus svg,.ce-toolbar__settings-btn svg{width:24px;height:24px}@media (min-width: 651px){.codex-editor--narrow .ce-toolbar__plus{left:5px}}@media (min-width: 651px){.codex-editor--narrow .ce-toolbox .ce-popover{right:0;left:auto;left:initial}}.ce-inline-toolbar{--y-offset: 8px;--color-background-icon-active: rgba(56, 138, 229, .1);--color-text-icon-active: #388AE5;--color-text-primary: black;position:absolute;visibility:hidden;-webkit-transition:opacity .25s ease;transition:opacity .25s ease;will-change:opacity,left,top;top:0;left:0;z-index:3;opacity:1;visibility:visible}.ce-inline-toolbar [hidden]{display:none!important}.ce-inline-toolbar__toggler-and-button-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;padding:0 6px}.ce-inline-toolbar__buttons{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-inline-toolbar__dropdown{display:-webkit-box;display:-ms-flexbox;display:flex;padding:6px;margin:0 6px 0 -6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;border-right:1px solid rgba(201,201,204,.48);-webkit-box-sizing:border-box;box-sizing:border-box}@media (hover: hover){.ce-inline-toolbar__dropdown:hover{background:#eff2f5}}.ce-inline-toolbar__dropdown--hidden{display:none}.ce-inline-toolbar__dropdown-content,.ce-inline-toolbar__dropdown-arrow{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-inline-toolbar__dropdown-content svg,.ce-inline-toolbar__dropdown-arrow svg{width:20px;height:20px}.ce-inline-toolbar__shortcut{opacity:.6;word-spacing:-3px;margin-top:3px}.ce-inline-tool{color:var(--color-text-primary);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;border-radius:4px;line-height:normal;height:100%;padding:0;width:28px;background-color:transparent;cursor:pointer}@media (max-width: 650px){.ce-inline-tool{width:36px;height:36px}}@media (hover: hover){.ce-inline-tool:hover{background-color:#f8f8f8}}.ce-inline-tool svg{display:block;width:20px;height:20px}@media (max-width: 650px){.ce-inline-tool svg{width:28px;height:28px}}.ce-inline-tool--link .icon--unlink,.ce-inline-tool--unlink .icon--link{display:none}.ce-inline-tool--unlink .icon--unlink{display:inline-block;margin-bottom:-1px}.ce-inline-tool-input{background:#F8F8F8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:4px 8px;font-size:14px;line-height:22px;outline:none;margin:0;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;display:none;font-weight:500;-webkit-appearance:none;font-family:inherit}@media (max-width: 650px){.ce-inline-tool-input{font-size:15px;font-weight:500}}.ce-inline-tool-input::-webkit-input-placeholder{color:#707684}.ce-inline-tool-input::-moz-placeholder{color:#707684}.ce-inline-tool-input:-ms-input-placeholder{color:#707684}.ce-inline-tool-input::-ms-input-placeholder{color:#707684}.ce-inline-tool-input::placeholder{color:#707684}.ce-inline-tool-input--showed{display:block}.ce-inline-tool--active{background:var(--color-background-icon-active);color:var(--color-text-icon-active)}@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.ce-block{-webkit-animation:fade-in .3s ease;animation:fade-in .3s ease;-webkit-animation-fill-mode:none;animation-fill-mode:none;-webkit-animation-fill-mode:initial;animation-fill-mode:initial}.ce-block:first-of-type{margin-top:0}.ce-block--selected .ce-block__content{background:#e1f2ff}.ce-block--selected .ce-block__content [contenteditable]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ce-block--selected .ce-block__content img,.ce-block--selected .ce-block__content .ce-stub{opacity:.55}.ce-block--stretched .ce-block__content{max-width:none}.ce-block__content{position:relative;max-width:650px;margin:0 auto;-webkit-transition:background-color .15s ease;transition:background-color .15s ease}.ce-block--drop-target .ce-block__content:before{content:\"\";position:absolute;top:100%;left:-20px;margin-top:-1px;height:8px;width:8px;border:solid #388AE5;border-width:1px 1px 0 0;-webkit-transform-origin:right;transform-origin:right;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ce-block--drop-target .ce-block__content:after{content:\"\";position:absolute;top:100%;height:1px;width:100%;color:#388ae5;background:repeating-linear-gradient(90deg,#388AE5,#388AE5 1px,#fff 1px,#fff 6px)}.ce-block a{cursor:pointer;-webkit-text-decoration:underline;text-decoration:underline}.ce-block b{font-weight:700}.ce-block i{font-style:italic}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}20%{-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}20%{-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@-webkit-keyframes selectionBounce{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}50%{-webkit-transform:scale3d(1.01,1.01,1.01);transform:scale3d(1.01,1.01,1.01)}70%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes selectionBounce{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}50%{-webkit-transform:scale3d(1.01,1.01,1.01);transform:scale3d(1.01,1.01,1.01)}70%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@-webkit-keyframes buttonClicked{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.95,.95,.95);transform:scale3d(.95,.95,.95)}60%{-webkit-transform:scale3d(1.02,1.02,1.02);transform:scale3d(1.02,1.02,1.02)}80%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes buttonClicked{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.95,.95,.95);transform:scale3d(.95,.95,.95)}60%{-webkit-transform:scale3d(1.02,1.02,1.02);transform:scale3d(1.02,1.02,1.02)}80%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}.cdx-block{padding:.4em 0}.cdx-block::-webkit-input-placeholder{line-height:normal!important}.cdx-input{border:1px solid rgba(201,201,204,.48);-webkit-box-shadow:inset 0 1px 2px 0 rgba(35,44,72,.06);box-shadow:inset 0 1px 2px #232c480f;border-radius:3px;padding:10px 12px;outline:none;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.cdx-input[data-placeholder]:before{position:static!important}.cdx-input[data-placeholder]:before{display:inline-block;width:0;white-space:nowrap;pointer-events:none}.cdx-settings-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:3px;cursor:pointer;border:0;outline:none;background-color:transparent;vertical-align:bottom;color:inherit;margin:0;min-width:26px;min-height:26px}.cdx-settings-button--focused{background:rgba(34,186,255,.08)!important}.cdx-settings-button--focused{-webkit-box-shadow:inset 0 0 0px 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px #07a1e314}.cdx-settings-button--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.cdx-settings-button--active{color:#388ae5}.cdx-settings-button svg{width:auto;height:auto}@media (max-width: 650px){.cdx-settings-button svg{width:28px;height:28px}}@media (max-width: 650px){.cdx-settings-button{width:36px;height:36px;border-radius:8px}}@media (hover: hover){.cdx-settings-button:hover{background-color:#eff2f5}}.cdx-loader{position:relative;border:1px solid rgba(201,201,204,.48)}.cdx-loader:before{content:\"\";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-11px 0 0 -11px;border:2px solid rgba(201,201,204,.48);border-left-color:#388ae5;border-radius:50%;-webkit-animation:cdxRotation 1.2s infinite linear;animation:cdxRotation 1.2s infinite linear}@-webkit-keyframes cdxRotation{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes cdxRotation{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cdx-button{padding:13px;border-radius:3px;border:1px solid rgba(201,201,204,.48);font-size:14.9px;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(18,30,57,.04);box-shadow:0 2px 2px #121e390a;color:#707684;text-align:center;cursor:pointer}@media (hover: hover){.cdx-button:hover{background:#FBFCFE;-webkit-box-shadow:0 1px 3px 0 rgba(18,30,57,.08);box-shadow:0 1px 3px #121e3914}}.cdx-button svg{height:20px;margin-right:.2em;margin-top:-2px}.ce-stub{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 18px;margin:10px 0;border-radius:10px;background:#eff2f5;border:1px solid #EFF0F1;color:#707684;font-size:14px}.ce-stub svg{width:20px;height:20px}.ce-stub__info{margin-left:14px}.ce-stub__title{font-weight:500;text-transform:capitalize}.codex-editor.codex-editor--rtl{direction:rtl}.codex-editor.codex-editor--rtl .cdx-list{padding-left:0;padding-right:40px}.codex-editor.codex-editor--rtl .ce-toolbar__plus{right:-26px;left:auto}.codex-editor.codex-editor--rtl .ce-toolbar__actions{right:auto;left:-26px}@media (max-width: 650px){.codex-editor.codex-editor--rtl .ce-toolbar__actions{margin-left:0;margin-right:auto;padding-right:0;padding-left:10px}}.codex-editor.codex-editor--rtl .ce-settings{left:5px;right:auto}.codex-editor.codex-editor--rtl .ce-settings:before{right:auto;left:25px}.codex-editor.codex-editor--rtl .ce-settings__button:not(:nth-child(3n+3)){margin-left:3px;margin-right:0}.codex-editor.codex-editor--rtl .ce-conversion-tool__icon{margin-right:0;margin-left:10px}.codex-editor.codex-editor--rtl .ce-inline-toolbar__dropdown{border-right:0px solid transparent;border-left:1px solid rgba(201,201,204,.48);margin:0 -6px 0 6px}.codex-editor.codex-editor--rtl .ce-inline-toolbar__dropdown .icon--toggler-down{margin-left:0;margin-right:4px}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .ce-toolbar__plus{left:0;right:5px}}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .ce-toolbar__actions{left:-5px}}.cdx-search-field{--icon-margin-right: 10px;background:#F8F8F8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-search-field__icon{width:26px;height:26px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:var(--icon-margin-right)}.cdx-search-field__icon svg{width:20px;height:20px;color:#707684}.cdx-search-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - 26px - var(--icon-margin-right))}.cdx-search-field__input::-webkit-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::-moz-placeholder{color:#707684;font-weight:500}.cdx-search-field__input:-ms-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::-ms-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::placeholder{color:#707684;font-weight:500}.ce-popover{--border-radius: 6px;--width: 200px;--max-height: 270px;--padding: 6px;--offset-from-target: 8px;--color-border: #EFF0F1;--color-shadow: rgba(13, 20, 33, .1);--color-background: white;--color-text-primary: black;--color-text-secondary: #707684;--color-border-icon: rgba(201, 201, 204, .48);--color-border-icon-disabled: #EFF0F1;--color-text-icon-active: #388AE5;--color-background-icon-active: rgba(56, 138, 229, .1);--color-background-item-focus: rgba(34, 186, 255, .08);--color-shadow-item-focus: rgba(7, 161, 227, .08);--color-background-item-hover: #F8F8F8;--color-background-item-confirm: #E24A4A;--color-background-item-confirm-hover: #CE4343;--popover-top: calc(100% + var(--offset-from-target));--popover-left: 0;--nested-popover-overlap: 4px;--icon-size: 20px;--item-padding: 3px;--item-height: calc(var(--icon-size) + 2 * var(--item-padding))}.ce-popover__container{min-width:var(--width);width:var(--width);max-height:var(--max-height);border-radius:var(--border-radius);overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0px 3px 15px -3px var(--color-shadow);box-shadow:0 3px 15px -3px var(--color-shadow);position:absolute;left:var(--popover-left);top:var(--popover-top);background:var(--color-background);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;z-index:4;opacity:0;max-height:0;pointer-events:none;padding:0;border:none}.ce-popover--opened>.ce-popover__container{opacity:1;padding:var(--padding);max-height:var(--max-height);pointer-events:auto;-webkit-animation:panelShowing .1s ease;animation:panelShowing .1s ease;border:1px solid var(--color-border)}@media (max-width: 650px){.ce-popover--opened>.ce-popover__container{-webkit-animation:panelShowingMobile .25s ease;animation:panelShowingMobile .25s ease}}.ce-popover--open-top .ce-popover__container{--popover-top: calc(-1 * (var(--offset-from-target) + var(--popover-height)))}.ce-popover--open-left .ce-popover__container{--popover-left: calc(-1 * var(--width) + 100%)}.ce-popover__items{overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain}@media (max-width: 650px){.ce-popover__overlay{position:fixed;top:0;bottom:0;left:0;right:0;background:#1D202B;z-index:3;opacity:.5;-webkit-transition:opacity .12s ease-in;transition:opacity .12s ease-in;will-change:opacity;visibility:visible}}.ce-popover__overlay--hidden{display:none}@media (max-width: 650px){.ce-popover .ce-popover__container{--offset: 5px;position:fixed;max-width:none;min-width:calc(100% - var(--offset) * 2);left:var(--offset);right:var(--offset);bottom:calc(var(--offset) + env(safe-area-inset-bottom));top:auto;border-radius:10px}}.ce-popover__search{margin-bottom:5px}.ce-popover__nothing-found-message{color:#707684;display:none;cursor:default;padding:3px;font-size:14px;line-height:20px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ce-popover__nothing-found-message--displayed{display:block}.ce-popover--nested .ce-popover__container{--popover-left: calc(var(--nesting-level) * (var(--width) - var(--nested-popover-overlap)));top:calc(var(--trigger-item-top) - var(--nested-popover-overlap));position:absolute}.ce-popover--open-top.ce-popover--nested .ce-popover__container{top:calc(var(--trigger-item-top) - var(--popover-height) + var(--item-height) + var(--offset-from-target) + var(--nested-popover-overlap))}.ce-popover--open-left .ce-popover--nested .ce-popover__container{--popover-left: calc(-1 * (var(--nesting-level) + 1) * var(--width) + 100%)}.ce-popover-item-separator{padding:4px 3px}.ce-popover-item-separator--hidden{display:none}.ce-popover-item-separator__line{height:1px;background:var(--color-border);width:100%}.ce-popover-item-html--hidden{display:none}.ce-popover-item{--border-radius: 6px;border-radius:var(--border-radius);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--item-padding);color:var(--color-text-primary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;background:transparent}@media (max-width: 650px){.ce-popover-item{padding:4px}}.ce-popover-item:not(:last-of-type){margin-bottom:1px}.ce-popover-item__icon{width:26px;height:26px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ce-popover-item__icon svg{width:20px;height:20px}@media (max-width: 650px){.ce-popover-item__icon{width:36px;height:36px;border-radius:8px}.ce-popover-item__icon svg{width:28px;height:28px}}.ce-popover-item__icon--tool{margin-right:4px}.ce-popover-item__title{font-size:14px;line-height:20px;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:auto}@media (max-width: 650px){.ce-popover-item__title{font-size:16px}}.ce-popover-item__secondary-title{color:var(--color-text-secondary);font-size:12px;white-space:nowrap;letter-spacing:-.1em;padding-right:5px;opacity:.6}@media (max-width: 650px){.ce-popover-item__secondary-title{display:none}}.ce-popover-item--active{background:var(--color-background-icon-active);color:var(--color-text-icon-active)}.ce-popover-item--disabled{color:var(--color-text-secondary);cursor:default;pointer-events:none}.ce-popover-item--focused:not(.ce-popover-item--no-focus){background:var(--color-background-item-focus)!important}.ce-popover-item--hidden{display:none}@media (hover: hover){.ce-popover-item:hover{cursor:pointer}.ce-popover-item:hover:not(.ce-popover-item--no-hover){background-color:var(--color-background-item-hover)}}.ce-popover-item--confirmation{background:var(--color-background-item-confirm)}.ce-popover-item--confirmation .ce-popover-item__title,.ce-popover-item--confirmation .ce-popover-item__icon{color:#fff}@media (hover: hover){.ce-popover-item--confirmation:not(.ce-popover-item--no-hover):hover{background:var(--color-background-item-confirm-hover)}}.ce-popover-item--confirmation:not(.ce-popover-item--no-focus).ce-popover-item--focused{background:var(--color-background-item-confirm-hover)!important}@-webkit-keyframes panelShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes panelShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes panelShowingMobile{0%{opacity:0;-webkit-transform:translateY(14px) scale(.98);transform:translateY(14px) scale(.98)}70%{opacity:1;-webkit-transform:translateY(-4px);transform:translateY(-4px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes panelShowingMobile{0%{opacity:0;-webkit-transform:translateY(14px) scale(.98);transform:translateY(14px) scale(.98)}70%{opacity:1;-webkit-transform:translateY(-4px);transform:translateY(-4px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble;-webkit-animation-duration:.4s;animation-duration:.4s}@-webkit-keyframes wobble{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-9%,0,0);transform:translate3d(-9%,0,0)}30%{-webkit-transform:translate3d(9%,0,0);transform:translate3d(9%,0,0)}45%{-webkit-transform:translate3d(-4%,0,0);transform:translate3d(-4%,0,0)}60%{-webkit-transform:translate3d(4%,0,0);transform:translate3d(4%,0,0)}75%{-webkit-transform:translate3d(-1%,0,0);transform:translate3d(-1%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-9%,0,0);transform:translate3d(-9%,0,0)}30%{-webkit-transform:translate3d(9%,0,0);transform:translate3d(9%,0,0)}45%{-webkit-transform:translate3d(-4%,0,0);transform:translate3d(-4%,0,0)}60%{-webkit-transform:translate3d(4%,0,0);transform:translate3d(4%,0,0)}75%{-webkit-transform:translate3d(-1%,0,0);transform:translate3d(-1%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.ce-popover-header{margin-bottom:8px;margin-top:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ce-popover-header__text{font-size:18px;font-weight:600}.ce-popover-header__back-button{border:0;background:transparent;width:36px;height:36px;color:var(--color-text-primary)}.ce-popover-header__back-button svg{display:block;width:28px;height:28px}.ce-popover--inline{--height: 38px;--height-mobile: 46px;--container-padding: 4px;position:relative}.ce-popover--inline .ce-popover__custom-content{margin-bottom:0}.ce-popover--inline .ce-popover__items{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-popover--inline .ce-popover__container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:var(--container-padding);height:var(--height);top:0;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;width:-webkit-max-content;width:-moz-max-content;width:max-content;-webkit-animation:none;animation:none}@media (max-width: 650px){.ce-popover--inline .ce-popover__container{height:var(--height-mobile);position:absolute}}.ce-popover--inline .ce-popover-item-separator{padding:0 4px}.ce-popover--inline .ce-popover-item-separator__line{height:100%;width:1px}.ce-popover--inline .ce-popover-item{border-radius:4px;padding:4px}.ce-popover--inline .ce-popover-item__icon--tool{-webkit-box-shadow:none;box-shadow:none;background:transparent;margin-right:0}.ce-popover--inline .ce-popover-item__icon{width:auto;width:initial;height:auto;height:initial}.ce-popover--inline .ce-popover-item__icon svg{width:20px;height:20px}@media (max-width: 650px){.ce-popover--inline .ce-popover-item__icon svg{width:28px;height:28px}}.ce-popover--inline .ce-popover-item:not(:last-of-type){margin-bottom:0;margin-bottom:initial}.ce-popover--inline .ce-popover-item-html{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ce-popover--inline .ce-popover-item__icon--chevron-right{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ce-popover--inline .ce-popover--nested-level-1 .ce-popover__container{--offset: 3px;left:0;top:calc(var(--height) + var(--offset))}@media (max-width: 650px){.ce-popover--inline .ce-popover--nested-level-1 .ce-popover__container{top:calc(var(--height-mobile) + var(--offset))}}.ce-popover--inline .ce-popover--nested .ce-popover__container{min-width:var(--width);width:var(--width);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;padding:6px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ce-popover--inline .ce-popover--nested .ce-popover__items{display:block;width:100%}.ce-popover--inline .ce-popover--nested .ce-popover-item{border-radius:6px;padding:3px}@media (max-width: 650px){.ce-popover--inline .ce-popover--nested .ce-popover-item{padding:4px}}.ce-popover--inline .ce-popover--nested .ce-popover-item__icon--tool{margin-right:4px}.ce-popover--inline .ce-popover--nested .ce-popover-item__icon{width:26px;height:26px}.ce-popover--inline .ce-popover--nested .ce-popover-item-separator{padding:4px 3px}.ce-popover--inline .ce-popover--nested .ce-popover-item-separator__line{width:100%;height:1px}.codex-editor [data-placeholder]:empty:before,.codex-editor [data-placeholder][data-empty=true]:before{pointer-events:none;color:#707684;cursor:text;content:attr(data-placeholder)}.codex-editor [data-placeholder-active]:empty:before,.codex-editor [data-placeholder-active][data-empty=true]:before{pointer-events:none;color:#707684;cursor:text}.codex-editor [data-placeholder-active]:empty:focus:before,.codex-editor [data-placeholder-active][data-empty=true]:focus:before{content:attr(data-placeholder-active)}\n`;\nclass ys extends y {\n constructor() {\n super(...arguments), this.isMobile = !1, this.contentRectCache = void 0, this.resizeDebouncer = vt(() => {\n this.windowResize();\n }, 200);\n }\n /**\n * Editor.js UI CSS class names\n *\n * @returns {{editorWrapper: string, editorZone: string}}\n */\n get CSS() {\n return {\n editorWrapper: \"codex-editor\",\n editorWrapperNarrow: \"codex-editor--narrow\",\n editorZone: \"codex-editor__redactor\",\n editorZoneHidden: \"codex-editor__redactor--hidden\",\n editorEmpty: \"codex-editor--empty\",\n editorRtlFix: \"codex-editor--rtl\"\n };\n }\n /**\n * Return Width of center column of Editor\n *\n * @returns {DOMRect}\n */\n get contentRect() {\n if (this.contentRectCache)\n return this.contentRectCache;\n const e = this.nodes.wrapper.querySelector(`.${D.CSS.content}`);\n return e ? (this.contentRectCache = e.getBoundingClientRect(), this.contentRectCache) : {\n width: 650,\n left: 0,\n right: 0\n };\n }\n /**\n * Making main interface\n */\n async prepare() {\n this.setIsMobile(), this.make(), this.loadStyles();\n }\n /**\n * Toggle read-only state\n *\n * If readOnly is true:\n * - removes all listeners from main UI module elements\n *\n * if readOnly is false:\n * - enables all listeners to UI module elements\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.disableModuleBindings() : window.requestIdleCallback(() => {\n this.enableModuleBindings();\n }, {\n timeout: 2e3\n });\n }\n /**\n * Check if Editor is empty and set CSS class to wrapper\n */\n checkEmptiness() {\n const { BlockManager: e } = this.Editor;\n this.nodes.wrapper.classList.toggle(this.CSS.editorEmpty, e.isEditorEmpty);\n }\n /**\n * Check if one of Toolbar is opened\n * Used to prevent global keydowns (for example, Enter) conflicts with Enter-on-toolbar\n *\n * @returns {boolean}\n */\n get someToolbarOpened() {\n const { Toolbar: e, BlockSettings: t, InlineToolbar: o } = this.Editor;\n return !!(t.opened || o.opened || e.toolbox.opened);\n }\n /**\n * Check for some Flipper-buttons is under focus\n */\n get someFlipperButtonFocused() {\n return this.Editor.Toolbar.toolbox.hasFocus() ? !0 : Object.entries(this.Editor).filter(([e, t]) => t.flipper instanceof le).some(([e, t]) => t.flipper.hasFocus());\n }\n /**\n * Clean editor`s UI\n */\n destroy() {\n this.nodes.holder.innerHTML = \"\";\n }\n /**\n * Close all Editor's toolbars\n */\n closeAllToolbars() {\n const { Toolbar: e, BlockSettings: t, InlineToolbar: o } = this.Editor;\n t.close(), o.close(), e.toolbox.close();\n }\n /**\n * Check for mobile mode and save the result\n */\n setIsMobile() {\n const e = window.innerWidth < Ot;\n e !== this.isMobile && this.eventsDispatcher.emit(ye, {\n isEnabled: this.isMobile\n }), this.isMobile = e;\n }\n /**\n * Makes Editor.js interface\n */\n make() {\n this.nodes.holder = d.getHolder(this.config.holder), this.nodes.wrapper = d.make(\"div\", [\n this.CSS.editorWrapper,\n ...this.isRtl ? [this.CSS.editorRtlFix] : []\n ]), this.nodes.redactor = d.make(\"div\", this.CSS.editorZone), this.nodes.holder.offsetWidth < this.contentRect.width && this.nodes.wrapper.classList.add(this.CSS.editorWrapperNarrow), this.nodes.redactor.style.paddingBottom = this.config.minHeight + \"px\", this.nodes.wrapper.appendChild(this.nodes.redactor), this.nodes.holder.appendChild(this.nodes.wrapper);\n }\n /**\n * Appends CSS\n */\n loadStyles() {\n const e = \"editor-js-styles\";\n if (d.get(e))\n return;\n const t = d.make(\"style\", null, {\n id: e,\n textContent: xs.toString()\n });\n this.config.style && !V(this.config.style) && this.config.style.nonce && t.setAttribute(\"nonce\", this.config.style.nonce), d.prepend(document.head, t);\n }\n /**\n * Bind events on the Editor.js interface\n */\n enableModuleBindings() {\n this.readOnlyMutableListeners.on(this.nodes.redactor, \"click\", (t) => {\n this.redactorClicked(t);\n }, !1), this.readOnlyMutableListeners.on(this.nodes.redactor, \"mousedown\", (t) => {\n this.documentTouched(t);\n }, {\n capture: !0,\n passive: !0\n }), this.readOnlyMutableListeners.on(this.nodes.redactor, \"touchstart\", (t) => {\n this.documentTouched(t);\n }, {\n capture: !0,\n passive: !0\n }), this.readOnlyMutableListeners.on(document, \"keydown\", (t) => {\n this.documentKeydown(t);\n }, !0), this.readOnlyMutableListeners.on(document, \"mousedown\", (t) => {\n this.documentClicked(t);\n }, !0);\n const e = vt(() => {\n this.selectionChanged();\n }, ss);\n this.readOnlyMutableListeners.on(document, \"selectionchange\", e, !0), this.readOnlyMutableListeners.on(window, \"resize\", () => {\n this.resizeDebouncer();\n }, {\n passive: !0\n }), this.watchBlockHoveredEvents(), this.enableInputsEmptyMark();\n }\n /**\n * Listen redactor mousemove to emit 'block-hovered' event\n */\n watchBlockHoveredEvents() {\n let e;\n this.readOnlyMutableListeners.on(this.nodes.redactor, \"mousemove\", Ve((t) => {\n const o = t.target.closest(\".ce-block\");\n this.Editor.BlockSelection.anyBlockSelected || o && e !== o && (e = o, this.eventsDispatcher.emit(oo, {\n block: this.Editor.BlockManager.getBlockByChildNode(o)\n }));\n }, 20), {\n passive: !0\n });\n }\n /**\n * Unbind events on the Editor.js interface\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Resize window handler\n */\n windowResize() {\n this.contentRectCache = null, this.setIsMobile();\n }\n /**\n * All keydowns on document\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n documentKeydown(e) {\n switch (e.keyCode) {\n case w.ENTER:\n this.enterPressed(e);\n break;\n case w.BACKSPACE:\n case w.DELETE:\n this.backspacePressed(e);\n break;\n case w.ESC:\n this.escapePressed(e);\n break;\n default:\n this.defaultBehaviour(e);\n break;\n }\n }\n /**\n * Ignore all other document's keydown events\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n defaultBehaviour(e) {\n const { currentBlock: t } = this.Editor.BlockManager, o = e.target.closest(`.${this.CSS.editorWrapper}`), i = e.altKey || e.ctrlKey || e.metaKey || e.shiftKey;\n if (t !== void 0 && o === null) {\n this.Editor.BlockEvents.keydown(e);\n return;\n }\n o || t && i || (this.Editor.BlockManager.unsetCurrentBlock(), this.Editor.Toolbar.close());\n }\n /**\n * @param {KeyboardEvent} event - keyboard event\n */\n backspacePressed(e) {\n const { BlockManager: t, BlockSelection: o, Caret: i } = this.Editor;\n if (o.anyBlockSelected && !b.isSelectionExists) {\n const s = t.removeSelectedBlocks(), r = t.insertDefaultBlockAtIndex(s, !0);\n i.setToBlock(r, i.positions.START), o.clearSelection(e), e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation();\n }\n }\n /**\n * Escape pressed\n * If some of Toolbar components are opened, then close it otherwise close Toolbar\n *\n * @param {Event} event - escape keydown event\n */\n escapePressed(e) {\n this.Editor.BlockSelection.clearSelection(e), this.Editor.Toolbar.toolbox.opened ? (this.Editor.Toolbar.toolbox.close(), this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock, this.Editor.Caret.positions.END)) : this.Editor.BlockSettings.opened ? this.Editor.BlockSettings.close() : this.Editor.InlineToolbar.opened ? this.Editor.InlineToolbar.close() : this.Editor.Toolbar.close();\n }\n /**\n * Enter pressed on document\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n enterPressed(e) {\n const { BlockManager: t, BlockSelection: o } = this.Editor;\n if (this.someToolbarOpened)\n return;\n const i = t.currentBlockIndex >= 0;\n if (o.anyBlockSelected && !b.isSelectionExists) {\n o.clearSelection(e), e.preventDefault(), e.stopImmediatePropagation(), e.stopPropagation();\n return;\n }\n if (!this.someToolbarOpened && i && e.target.tagName === \"BODY\") {\n const s = this.Editor.BlockManager.insert();\n e.preventDefault(), this.Editor.Caret.setToBlock(s), this.Editor.Toolbar.moveAndOpen(s);\n }\n this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * All clicks on document\n *\n * @param {MouseEvent} event - Click event\n */\n documentClicked(e) {\n var l, a;\n if (!e.isTrusted)\n return;\n const t = e.target;\n this.nodes.holder.contains(t) || b.isAtEditor || (this.Editor.BlockManager.unsetCurrentBlock(), this.Editor.Toolbar.close());\n const i = (l = this.Editor.BlockSettings.nodes.wrapper) == null ? void 0 : l.contains(t), s = (a = this.Editor.Toolbar.nodes.settingsToggler) == null ? void 0 : a.contains(t), r = i || s;\n if (this.Editor.BlockSettings.opened && !r) {\n this.Editor.BlockSettings.close();\n const c = this.Editor.BlockManager.getBlockByChildNode(t);\n this.Editor.Toolbar.moveAndOpen(c);\n }\n this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * First touch on editor\n * Fired before click\n *\n * Used to change current block — we need to do it before 'selectionChange' event.\n * Also:\n * - Move and show the Toolbar\n * - Set a Caret\n *\n * @param {MouseEvent | TouchEvent} event - touch or mouse event\n */\n documentTouched(e) {\n let t = e.target;\n if (t === this.nodes.redactor) {\n const o = e instanceof MouseEvent ? e.clientX : e.touches[0].clientX, i = e instanceof MouseEvent ? e.clientY : e.touches[0].clientY;\n t = document.elementFromPoint(o, i);\n }\n try {\n this.Editor.BlockManager.setCurrentBlockByChildNode(t);\n } catch {\n this.Editor.RectangleSelection.isRectActivated() || this.Editor.Caret.setToTheLastBlock();\n }\n this.Editor.Toolbar.moveAndOpen();\n }\n /**\n * All clicks on the redactor zone\n *\n * @param {MouseEvent} event - click event\n * @description\n * - By clicks on the Editor's bottom zone:\n * - if last Block is empty, set a Caret to this\n * - otherwise, add a new empty Block and set a Caret to that\n */\n redactorClicked(e) {\n if (!b.isCollapsed)\n return;\n const t = e.target, o = e.metaKey || e.ctrlKey;\n if (d.isAnchor(t) && o) {\n e.stopImmediatePropagation(), e.stopPropagation();\n const i = t.getAttribute(\"href\"), s = So(i);\n Mo(s);\n return;\n }\n this.processBottomZoneClick(e);\n }\n /**\n * Check if user clicks on the Editor's bottom zone:\n * - set caret to the last block\n * - or add new empty block\n *\n * @param event - click event\n */\n processBottomZoneClick(e) {\n const t = this.Editor.BlockManager.getBlockByIndex(-1), o = d.offset(t.holder).bottom, i = e.pageY, { BlockSelection: s } = this.Editor;\n if (e.target instanceof Element && e.target.isEqualNode(this.nodes.redactor) && /**\n * If there is cross block selection started, target will be equal to redactor so we need additional check\n */\n !s.anyBlockSelected && /**\n * Prevent caret jumping (to last block) when clicking between blocks\n */\n o < i) {\n e.stopImmediatePropagation(), e.stopPropagation();\n const { BlockManager: l, Caret: a, Toolbar: c } = this.Editor;\n (!l.lastBlock.tool.isDefault || !l.lastBlock.isEmpty) && l.insertAtEnd(), a.setToTheLastBlock(), c.moveAndOpen(l.lastBlock);\n }\n }\n /**\n * Handle selection changes on mobile devices\n * Uses for showing the Inline Toolbar\n */\n selectionChanged() {\n const { CrossBlockSelection: e, BlockSelection: t } = this.Editor, o = b.anchorElement;\n if (e.isCrossBlockSelectionStarted && t.anyBlockSelected && b.get().removeAllRanges(), !o) {\n b.range || this.Editor.InlineToolbar.close();\n return;\n }\n const i = o.closest(`.${D.CSS.content}`);\n (i === null || i.closest(`.${b.CSS.editorWrapper}`) !== this.nodes.wrapper) && (this.Editor.InlineToolbar.containsNode(o) || this.Editor.InlineToolbar.close(), !(o.dataset.inlineToolbar === \"true\")) || (this.Editor.BlockManager.currentBlock || this.Editor.BlockManager.setCurrentBlockByChildNode(o), this.Editor.InlineToolbar.tryToShow(!0));\n }\n /**\n * Editor.js provides and ability to show placeholders for empty contenteditable elements\n *\n * This method watches for input and focus events and toggles 'data-empty' attribute\n * to workaroud the case, when inputs contains only
s and has no visible content\n * Then, CSS could rely on this attribute to show placeholders\n */\n enableInputsEmptyMark() {\n function e(t) {\n const o = t.target;\n Lt(o);\n }\n this.readOnlyMutableListeners.on(this.nodes.wrapper, \"input\", e), this.readOnlyMutableListeners.on(this.nodes.wrapper, \"focusin\", e), this.readOnlyMutableListeners.on(this.nodes.wrapper, \"focusout\", e);\n }\n}\nconst Es = {\n // API Modules\n BlocksAPI: zo,\n CaretAPI: jo,\n EventsAPI: $o,\n I18nAPI: ot,\n API: Yo,\n InlineToolbarAPI: Wo,\n ListenersAPI: Ko,\n NotifierAPI: Zo,\n ReadOnlyAPI: Go,\n SanitizerAPI: si,\n SaverAPI: ni,\n SelectionAPI: ri,\n ToolsAPI: li,\n StylesAPI: ai,\n ToolbarAPI: ci,\n TooltipAPI: fi,\n UiAPI: gi,\n // Toolbar Modules\n BlockSettings: Ui,\n Toolbar: qi,\n InlineToolbar: Zi,\n // Modules\n BlockEvents: Gi,\n BlockManager: es,\n BlockSelection: ts,\n Caret: Re,\n CrossBlockSelection: os,\n DragNDrop: is,\n ModificationsObserver: rs,\n Paste: ls,\n ReadOnly: as,\n RectangleSelection: xe,\n Renderer: cs,\n Saver: ds,\n Tools: go,\n UI: ys\n};\nclass Bs {\n /**\n * @param {EditorConfig} config - user configuration\n */\n constructor(e) {\n this.moduleInstances = {}, this.eventsDispatcher = new Te();\n let t, o;\n this.isReady = new Promise((i, s) => {\n t = i, o = s;\n }), Promise.resolve().then(async () => {\n this.configuration = e, this.validate(), this.init(), await this.start(), await this.render();\n const { BlockManager: i, Caret: s, UI: r, ModificationsObserver: l } = this.moduleInstances;\n r.checkEmptiness(), l.enable(), this.configuration.autofocus && s.setToBlock(i.blocks[0], s.positions.START), t();\n }).catch((i) => {\n I(`Editor.js is not ready because of ${i}`, \"error\"), o(i);\n });\n }\n /**\n * Setting for configuration\n *\n * @param {EditorConfig|string} config - Editor's config to set\n */\n set configuration(e) {\n var o, i;\n R(e) ? this.config = {\n ...e\n } : this.config = {\n holder: e\n }, Ze(!!this.config.holderId, \"config.holderId\", \"config.holder\"), this.config.holderId && !this.config.holder && (this.config.holder = this.config.holderId, this.config.holderId = null), this.config.holder == null && (this.config.holder = \"editorjs\"), this.config.logLevel || (this.config.logLevel = It.VERBOSE), xo(this.config.logLevel), Ze(!!this.config.initialBlock, \"config.initialBlock\", \"config.defaultBlock\"), this.config.defaultBlock = this.config.defaultBlock || this.config.initialBlock || \"paragraph\", this.config.minHeight = this.config.minHeight !== void 0 ? this.config.minHeight : 300;\n const t = {\n type: this.config.defaultBlock,\n data: {}\n };\n this.config.placeholder = this.config.placeholder || !1, this.config.sanitizer = this.config.sanitizer || {\n p: !0,\n b: !0,\n a: !0\n }, this.config.hideToolbar = this.config.hideToolbar ? this.config.hideToolbar : !1, this.config.tools = this.config.tools || {}, this.config.i18n = this.config.i18n || {}, this.config.data = this.config.data || { blocks: [] }, this.config.onReady = this.config.onReady || (() => {\n }), this.config.onChange = this.config.onChange || (() => {\n }), this.config.inlineToolbar = this.config.inlineToolbar !== void 0 ? this.config.inlineToolbar : !0, (V(this.config.data) || !this.config.data.blocks || this.config.data.blocks.length === 0) && (this.config.data = { blocks: [t] }), this.config.readOnly = this.config.readOnly || !1, (o = this.config.i18n) != null && o.messages && z.setDictionary(this.config.i18n.messages), this.config.i18n.direction = ((i = this.config.i18n) == null ? void 0 : i.direction) || \"ltr\";\n }\n /**\n * Returns private property\n *\n * @returns {EditorConfig}\n */\n get configuration() {\n return this.config;\n }\n /**\n * Checks for required fields in Editor's config\n */\n validate() {\n const { holderId: e, holder: t } = this.config;\n if (e && t)\n throw Error(\"«holderId» and «holder» param can't assign at the same time.\");\n if (Q(t) && !d.get(t))\n throw Error(`element with ID «${t}» is missing. Pass correct holder's ID.`);\n if (t && R(t) && !d.isElement(t))\n throw Error(\"«holder» value must be an Element node\");\n }\n /**\n * Initializes modules:\n * - make and save instances\n * - configure\n */\n init() {\n this.constructModules(), this.configureModules();\n }\n /**\n * Start Editor!\n *\n * Get list of modules that needs to be prepared and return a sequence (Promise)\n *\n * @returns {Promise}\n */\n async start() {\n await [\n \"Tools\",\n \"UI\",\n \"BlockManager\",\n \"Paste\",\n \"BlockSelection\",\n \"RectangleSelection\",\n \"CrossBlockSelection\",\n \"ReadOnly\"\n ].reduce(\n (t, o) => t.then(async () => {\n try {\n await this.moduleInstances[o].prepare();\n } catch (i) {\n if (i instanceof Pt)\n throw new Error(i.message);\n I(`Module ${o} was skipped because of %o`, \"warn\", i);\n }\n }),\n Promise.resolve()\n );\n }\n /**\n * Render initial data\n */\n render() {\n return this.moduleInstances.Renderer.render(this.config.data.blocks);\n }\n /**\n * Make modules instances and save it to the @property this.moduleInstances\n */\n constructModules() {\n Object.entries(Es).forEach(([e, t]) => {\n try {\n this.moduleInstances[e] = new t({\n config: this.configuration,\n eventsDispatcher: this.eventsDispatcher\n });\n } catch (o) {\n I(\"[constructModules]\", `Module ${e} skipped because`, \"error\", o);\n }\n });\n }\n /**\n * Modules instances configuration:\n * - pass other modules to the 'state' property\n * - ...\n */\n configureModules() {\n for (const e in this.moduleInstances)\n Object.prototype.hasOwnProperty.call(this.moduleInstances, e) && (this.moduleInstances[e].state = this.getModulesDiff(e));\n }\n /**\n * Return modules without passed name\n *\n * @param {string} name - module for witch modules difference should be calculated\n */\n getModulesDiff(e) {\n const t = {};\n for (const o in this.moduleInstances)\n o !== e && (t[o] = this.moduleInstances[o]);\n return t;\n }\n}\n/**\n * Editor.js\n *\n * @license Apache-2.0\n * @see Editor.js \n * @author CodeX Team \n */\nclass Ts {\n /** Editor version */\n static get version() {\n return \"2.30.7\";\n }\n /**\n * @param {EditorConfig|string|undefined} [configuration] - user configuration\n */\n constructor(e) {\n let t = () => {\n };\n R(e) && O(e.onReady) && (t = e.onReady);\n const o = new Bs(e);\n this.isReady = o.isReady.then(() => {\n this.exportAPI(o), t();\n });\n }\n /**\n * Export external API methods\n *\n * @param {Core} editor — Editor's instance\n */\n exportAPI(e) {\n const t = [\"configuration\"], o = () => {\n Object.values(e.moduleInstances).forEach((s) => {\n O(s.destroy) && s.destroy(), s.listeners.removeAll();\n }), pi(), e = null;\n for (const s in this)\n Object.prototype.hasOwnProperty.call(this, s) && delete this[s];\n Object.setPrototypeOf(this, null);\n };\n t.forEach((s) => {\n this[s] = e[s];\n }), this.destroy = o, Object.setPrototypeOf(this, e.moduleInstances.API.methods), delete this.exportAPI, Object.entries({\n blocks: {\n clear: \"clear\",\n render: \"render\"\n },\n caret: {\n focus: \"focus\"\n },\n events: {\n on: \"on\",\n off: \"off\",\n emit: \"emit\"\n },\n saver: {\n save: \"save\"\n }\n }).forEach(([s, r]) => {\n Object.entries(r).forEach(([l, a]) => {\n this[a] = e.moduleInstances.API.methods[s][l];\n });\n });\n }\n}\nexport {\n Ts as default\n};\n","(function(){\"use strict\";try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.appendChild(document.createTextNode(\".ce-header{padding:.6em 0 3px;margin:0;line-height:1.25em;outline:none}.ce-header p,.ce-header div{padding:0!important;margin:0!important}\")),document.head.appendChild(e)}}catch(n){console.error(\"vite-plugin-css-injected-by-js\",n)}})();\nconst a = '', l = '', o = '', h = '', d = '', u = '', g = '';\n/**\n * Header block for the Editor.js.\n *\n * @author CodeX (team@ifmo.su)\n * @copyright CodeX 2018\n * @license MIT\n * @version 2.0.0\n */\nclass v {\n constructor({ data: e, config: t, api: s, readOnly: r }) {\n this.api = s, this.readOnly = r, this._settings = t, this._data = this.normalizeData(e), this._element = this.getTag();\n }\n /**\n * Styles\n */\n get _CSS() {\n return {\n block: this.api.styles.block,\n wrapper: \"ce-header\"\n };\n }\n /**\n * Check if data is valid\n * \n * @param {any} data - data to check\n * @returns {data is HeaderData}\n * @private\n */\n isHeaderData(e) {\n return e.text !== void 0;\n }\n /**\n * Normalize input data\n *\n * @param {HeaderData} data - saved data to process\n *\n * @returns {HeaderData}\n * @private\n */\n normalizeData(e) {\n const t = { text: \"\", level: this.defaultLevel.number };\n return this.isHeaderData(e) && (t.text = e.text || \"\", e.level !== void 0 && !isNaN(parseInt(e.level.toString())) && (t.level = parseInt(e.level.toString()))), t;\n }\n /**\n * Return Tool's view\n *\n * @returns {HTMLHeadingElement}\n * @public\n */\n render() {\n return this._element;\n }\n /**\n * Returns header block tunes config\n *\n * @returns {Array}\n */\n renderSettings() {\n return this.levels.map((e) => ({\n icon: e.svg,\n label: this.api.i18n.t(`Heading ${e.number}`),\n onActivate: () => this.setLevel(e.number),\n closeOnActivate: !0,\n isActive: this.currentLevel.number === e.number,\n render: () => document.createElement(\"div\")\n }));\n }\n /**\n * Callback for Block's settings buttons\n *\n * @param {number} level - level to set\n */\n setLevel(e) {\n this.data = {\n level: e,\n text: this.data.text\n };\n }\n /**\n * Method that specified how to merge two Text blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n *\n * @param {HeaderData} data - saved data to merger with current block\n * @public\n */\n merge(e) {\n this._element.insertAdjacentHTML(\"beforeend\", e.text);\n }\n /**\n * Validate Text block data:\n * - check for emptiness\n *\n * @param {HeaderData} blockData — data received after saving\n * @returns {boolean} false if saved data is not correct, otherwise true\n * @public\n */\n validate(e) {\n return e.text.trim() !== \"\";\n }\n /**\n * Extract Tool's data from the view\n *\n * @param {HTMLHeadingElement} toolsContent - Text tools rendered view\n * @returns {HeaderData} - saved data\n * @public\n */\n save(e) {\n return {\n text: e.innerHTML,\n level: this.currentLevel.number\n };\n }\n /**\n * Allow Header to be converted to/from other blocks\n */\n static get conversionConfig() {\n return {\n export: \"text\",\n // use 'text' property for other blocks\n import: \"text\"\n // fill 'text' property from other block's export string\n };\n }\n /**\n * Sanitizer Rules\n */\n static get sanitize() {\n return {\n level: !1,\n text: {}\n };\n }\n /**\n * Returns true to notify core that read-only is supported\n *\n * @returns {boolean}\n */\n static get isReadOnlySupported() {\n return !0;\n }\n /**\n * Get current Tools`s data\n *\n * @returns {HeaderData} Current data\n * @private\n */\n get data() {\n return this._data.text = this._element.innerHTML, this._data.level = this.currentLevel.number, this._data;\n }\n /**\n * Store data in plugin:\n * - at the this._data property\n * - at the HTML\n *\n * @param {HeaderData} data — data to set\n * @private\n */\n set data(e) {\n if (this._data = this.normalizeData(e), e.level !== void 0 && this._element.parentNode) {\n const t = this.getTag();\n t.innerHTML = this._element.innerHTML, this._element.parentNode.replaceChild(t, this._element), this._element = t;\n }\n e.text !== void 0 && (this._element.innerHTML = this._data.text || \"\");\n }\n /**\n * Get tag for target level\n * By default returns second-leveled header\n *\n * @returns {HTMLElement}\n */\n getTag() {\n const e = document.createElement(this.currentLevel.tag);\n return e.innerHTML = this._data.text || \"\", e.classList.add(this._CSS.wrapper), e.contentEditable = this.readOnly ? \"false\" : \"true\", e.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || \"\"), e;\n }\n /**\n * Get current level\n *\n * @returns {level}\n */\n get currentLevel() {\n let e = this.levels.find((t) => t.number === this._data.level);\n return e || (e = this.defaultLevel), e;\n }\n /**\n * Return default level\n *\n * @returns {level}\n */\n get defaultLevel() {\n if (this._settings.defaultLevel) {\n const e = this.levels.find((t) => t.number === this._settings.defaultLevel);\n if (e)\n return e;\n console.warn(\"(ง'̀-'́)ง Heading Tool: the default level specified was not found in available levels\");\n }\n return this.levels[1];\n }\n /**\n * @typedef {object} level\n * @property {number} number - level number\n * @property {string} tag - tag corresponds with level number\n * @property {string} svg - icon\n */\n /**\n * Available header levels\n *\n * @returns {level[]}\n */\n get levels() {\n const e = [\n {\n number: 1,\n tag: \"H1\",\n svg: a\n },\n {\n number: 2,\n tag: \"H2\",\n svg: l\n },\n {\n number: 3,\n tag: \"H3\",\n svg: o\n },\n {\n number: 4,\n tag: \"H4\",\n svg: h\n },\n {\n number: 5,\n tag: \"H5\",\n svg: d\n },\n {\n number: 6,\n tag: \"H6\",\n svg: u\n }\n ];\n return this._settings.levels ? e.filter(\n (t) => this._settings.levels.includes(t.number)\n ) : e;\n }\n /**\n * Handle H1-H6 tags on paste to substitute it with header Tool\n *\n * @param {PasteEvent} event - event with pasted content\n */\n onPaste(e) {\n const t = e.detail;\n if (\"data\" in t) {\n const s = t.data;\n let r = this.defaultLevel.number;\n switch (s.tagName) {\n case \"H1\":\n r = 1;\n break;\n case \"H2\":\n r = 2;\n break;\n case \"H3\":\n r = 3;\n break;\n case \"H4\":\n r = 4;\n break;\n case \"H5\":\n r = 5;\n break;\n case \"H6\":\n r = 6;\n break;\n }\n this._settings.levels && (r = this._settings.levels.reduce((n, i) => Math.abs(i - r) < Math.abs(n - r) ? i : n)), this.data = {\n level: r,\n text: s.innerHTML\n };\n }\n }\n /**\n * Used by Editor.js paste handling API.\n * Provides configuration to handle H1-H6 tags.\n *\n * @returns {{handler: (function(HTMLElement): {text: string}), tags: string[]}}\n */\n static get pasteConfig() {\n return {\n tags: [\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"]\n };\n }\n /**\n * Get Tool toolbox settings\n * icon - Tool icon's SVG\n * title - title to show in toolbox\n *\n * @returns {{icon: string, title: string}}\n */\n static get toolbox() {\n return {\n icon: g,\n title: \"Heading\"\n };\n }\n}\nexport {\n v as default\n};\n","(function(){\"use strict\";try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.appendChild(document.createTextNode('.cdx-list{margin:0;padding:0;outline:none;display:grid;counter-reset:item;gap:var(--spacing-s);padding:var(--spacing-xs);--spacing-s: 8px;--spacing-xs: 6px;--list-counter-type: numeric;--radius-border: 5px;--checkbox-background: #fff;--color-border: #C9C9C9;--color-bg-checked: #369FFF;--line-height: 1.45em;--color-bg-checked-hover: #0059AB;--color-tick: #fff;--size-checkbox: 1.2em}.cdx-list__item{line-height:var(--line-height);display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;grid-template-areas:\"checkbox content\" \". child\"}.cdx-list__item-children{display:grid;grid-area:child;gap:var(--spacing-s);padding-top:var(--spacing-s)}.cdx-list__item [contenteditable]{outline:none}.cdx-list__item-content{word-break:break-word;white-space:pre-wrap;grid-area:content;padding-left:var(--spacing-s)}.cdx-list__item:before{counter-increment:item;white-space:nowrap}.cdx-list-ordered .cdx-list__item:before{content:counters(item,\".\",var(--list-counter-type)) \".\"}.cdx-list-ordered{counter-reset:item}.cdx-list-unordered .cdx-list__item:before{content:\"•\"}.cdx-list-checklist .cdx-list__item:before{content:\"\"}.cdx-list__settings .cdx-settings-button{width:50%}.cdx-list__checkbox{padding-top:calc((var(--line-height) - var(--size-checkbox)) / 2);grid-area:checkbox;width:var(--size-checkbox);height:var(--size-checkbox);display:flex;cursor:pointer}.cdx-list__checkbox svg{opacity:0;height:var(--size-checkbox);width:var(--size-checkbox);left:-1px;top:-1px;position:absolute}@media (hover: hover){.cdx-list__checkbox:not(.cdx-list__checkbox--no-hover):hover .cdx-list__checkbox-check svg{opacity:1}}.cdx-list__checkbox--checked{line-height:var(--line-height)}@media (hover: hover){.cdx-list__checkbox--checked:not(.cdx-list__checkbox--checked--no-hover):hover .cdx-checklist__checkbox-check{background:var(--color-bg-checked-hover);border-color:var(--color-bg-checked-hover)}}.cdx-list__checkbox--checked .cdx-list__checkbox-check{background:var(--color-bg-checked);border-color:var(--color-bg-checked)}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg{opacity:1}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg path{stroke:var(--color-tick)}.cdx-list__checkbox--checked .cdx-list__checkbox-check:before{opacity:0;visibility:visible;transform:scale(2.5)}.cdx-list__checkbox-check{cursor:pointer;display:inline-block;position:relative;margin:0 auto;width:var(--size-checkbox);height:var(--size-checkbox);box-sizing:border-box;border-radius:var(--radius-border);border:1px solid var(--color-border);background:var(--checkbox-background)}.cdx-list__checkbox-check:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:100%;background-color:var(--color-bg-checked);visibility:hidden;pointer-events:none;transform:scale(1);transition:transform .4s ease-out,opacity .4s}.cdx-list-start-with-field{background:#F8F8F8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-list-start-with-field--invalid{background:#FFECED;border:1px solid #E13F3F}.cdx-list-start-with-field--invalid .cdx-list-start-with-field__input{color:#e13f3f}.cdx-list-start-with-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - var(--toolbox-buttons-size) - var(--icon-margin-right))}.cdx-list-start-with-field__input::placeholder{color:var(--grayText);font-weight:500}')),document.head.appendChild(e)}}catch(c){console.error(\"vite-plugin-css-injected-by-js\",c)}})();\nconst Ct = '', Ae = '', $e = '', Be = '', St = '', Ot = '', kt = '', _t = '', Et = '', It = '';\nvar A = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction wt(e) {\n if (e.__esModule)\n return e;\n var t = e.default;\n if (typeof t == \"function\") {\n var n = function r() {\n return this instanceof r ? Reflect.construct(t, arguments, this.constructor) : t.apply(this, arguments);\n };\n n.prototype = t.prototype;\n } else\n n = {};\n return Object.defineProperty(n, \"__esModule\", { value: !0 }), Object.keys(e).forEach(function(r) {\n var i = Object.getOwnPropertyDescriptor(e, r);\n Object.defineProperty(n, r, i.get ? i : {\n enumerable: !0,\n get: function() {\n return e[r];\n }\n });\n }), n;\n}\nvar c = {}, V = {}, Y = {};\nObject.defineProperty(Y, \"__esModule\", { value: !0 });\nY.allInputsSelector = Pt;\nfunction Pt() {\n var e = [\"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", \"url\"];\n return \"[contenteditable=true], textarea, input:not([type]), \" + e.map(function(t) {\n return 'input[type=\"'.concat(t, '\"]');\n }).join(\", \");\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.allInputsSelector = void 0;\n var t = Y;\n Object.defineProperty(e, \"allInputsSelector\", { enumerable: !0, get: function() {\n return t.allInputsSelector;\n } });\n})(V);\nvar k = {}, J = {};\nObject.defineProperty(J, \"__esModule\", { value: !0 });\nJ.isNativeInput = jt;\nfunction jt(e) {\n var t = [\n \"INPUT\",\n \"TEXTAREA\"\n ];\n return e && e.tagName ? t.includes(e.tagName) : !1;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isNativeInput = void 0;\n var t = J;\n Object.defineProperty(e, \"isNativeInput\", { enumerable: !0, get: function() {\n return t.isNativeInput;\n } });\n})(k);\nvar Fe = {}, Q = {};\nObject.defineProperty(Q, \"__esModule\", { value: !0 });\nQ.append = Tt;\nfunction Tt(e, t) {\n Array.isArray(t) ? t.forEach(function(n) {\n e.appendChild(n);\n }) : e.appendChild(t);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.append = void 0;\n var t = Q;\n Object.defineProperty(e, \"append\", { enumerable: !0, get: function() {\n return t.append;\n } });\n})(Fe);\nvar Z = {}, x = {};\nObject.defineProperty(x, \"__esModule\", { value: !0 });\nx.blockElements = Mt;\nfunction Mt() {\n return [\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"canvas\",\n \"div\",\n \"dl\",\n \"dt\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"li\",\n \"main\",\n \"nav\",\n \"noscript\",\n \"ol\",\n \"output\",\n \"p\",\n \"pre\",\n \"ruby\",\n \"section\",\n \"table\",\n \"tbody\",\n \"thead\",\n \"tr\",\n \"tfoot\",\n \"ul\",\n \"video\"\n ];\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.blockElements = void 0;\n var t = x;\n Object.defineProperty(e, \"blockElements\", { enumerable: !0, get: function() {\n return t.blockElements;\n } });\n})(Z);\nvar Re = {}, ee = {};\nObject.defineProperty(ee, \"__esModule\", { value: !0 });\nee.calculateBaseline = Lt;\nfunction Lt(e) {\n var t = window.getComputedStyle(e), n = parseFloat(t.fontSize), r = parseFloat(t.lineHeight) || n * 1.2, i = parseFloat(t.paddingTop), a = parseFloat(t.borderTopWidth), l = parseFloat(t.marginTop), s = n * 0.8, o = (r - n) / 2, d = l + a + i + o + s;\n return d;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.calculateBaseline = void 0;\n var t = ee;\n Object.defineProperty(e, \"calculateBaseline\", { enumerable: !0, get: function() {\n return t.calculateBaseline;\n } });\n})(Re);\nvar qe = {}, te = {}, ne = {}, re = {};\nObject.defineProperty(re, \"__esModule\", { value: !0 });\nre.isContentEditable = Nt;\nfunction Nt(e) {\n return e.contentEditable === \"true\";\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isContentEditable = void 0;\n var t = re;\n Object.defineProperty(e, \"isContentEditable\", { enumerable: !0, get: function() {\n return t.isContentEditable;\n } });\n})(ne);\nObject.defineProperty(te, \"__esModule\", { value: !0 });\nte.canSetCaret = Bt;\nvar At = k, $t = ne;\nfunction Bt(e) {\n var t = !0;\n if ((0, At.isNativeInput)(e))\n switch (e.type) {\n case \"file\":\n case \"checkbox\":\n case \"radio\":\n case \"hidden\":\n case \"submit\":\n case \"button\":\n case \"image\":\n case \"reset\":\n t = !1;\n break;\n }\n else\n t = (0, $t.isContentEditable)(e);\n return t;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.canSetCaret = void 0;\n var t = te;\n Object.defineProperty(e, \"canSetCaret\", { enumerable: !0, get: function() {\n return t.canSetCaret;\n } });\n})(qe);\nvar $ = {}, ie = {};\nfunction Wt(e, t, n) {\n const r = n.value !== void 0 ? \"value\" : \"get\", i = n[r], a = `#${t}Cache`;\n if (n[r] = function(...l) {\n return this[a] === void 0 && (this[a] = i.apply(this, l)), this[a];\n }, r === \"get\" && n.set) {\n const l = n.set;\n n.set = function(s) {\n delete e[a], l.apply(this, s);\n };\n }\n return n;\n}\nfunction Ue() {\n const e = {\n win: !1,\n mac: !1,\n x11: !1,\n linux: !1\n }, t = Object.keys(e).find((n) => window.navigator.appVersion.toLowerCase().indexOf(n) !== -1);\n return t !== void 0 && (e[t] = !0), e;\n}\nfunction ae(e) {\n return e != null && e !== \"\" && (typeof e != \"object\" || Object.keys(e).length > 0);\n}\nfunction Dt(e) {\n return !ae(e);\n}\nconst Ht = () => typeof window < \"u\" && window.navigator !== null && ae(window.navigator.platform) && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 1);\nfunction Ft(e) {\n const t = Ue();\n return e = e.replace(/shift/gi, \"⇧\").replace(/backspace/gi, \"⌫\").replace(/enter/gi, \"⏎\").replace(/up/gi, \"↑\").replace(/left/gi, \"→\").replace(/down/gi, \"↓\").replace(/right/gi, \"←\").replace(/escape/gi, \"⎋\").replace(/insert/gi, \"Ins\").replace(/delete/gi, \"␡\").replace(/\\+/gi, \"+\"), t.mac ? e = e.replace(/ctrl|cmd/gi, \"⌘\").replace(/alt/gi, \"⌥\") : e = e.replace(/cmd/gi, \"Ctrl\").replace(/windows/gi, \"WIN\"), e;\n}\nfunction Rt(e) {\n return e[0].toUpperCase() + e.slice(1);\n}\nfunction qt(e) {\n const t = document.createElement(\"div\");\n t.style.position = \"absolute\", t.style.left = \"-999px\", t.style.bottom = \"-999px\", t.innerHTML = e, document.body.appendChild(t);\n const n = window.getSelection(), r = document.createRange();\n if (r.selectNode(t), n === null)\n throw new Error(\"Cannot copy text to clipboard\");\n n.removeAllRanges(), n.addRange(r), document.execCommand(\"copy\"), document.body.removeChild(t);\n}\nfunction Ut(e, t, n) {\n let r;\n return (...i) => {\n const a = this, l = () => {\n r = void 0, n !== !0 && e.apply(a, i);\n }, s = n === !0 && r !== void 0;\n window.clearTimeout(r), r = window.setTimeout(l, t), s && e.apply(a, i);\n };\n}\nfunction S(e) {\n return Object.prototype.toString.call(e).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}\nfunction zt(e) {\n return S(e) === \"boolean\";\n}\nfunction ze(e) {\n return S(e) === \"function\" || S(e) === \"asyncfunction\";\n}\nfunction Kt(e) {\n return ze(e) && /^\\s*class\\s+/.test(e.toString());\n}\nfunction Xt(e) {\n return S(e) === \"number\";\n}\nfunction L(e) {\n return S(e) === \"object\";\n}\nfunction Gt(e) {\n return Promise.resolve(e) === e;\n}\nfunction Vt(e) {\n return S(e) === \"string\";\n}\nfunction Yt(e) {\n return S(e) === \"undefined\";\n}\nfunction X(e, ...t) {\n if (!t.length)\n return e;\n const n = t.shift();\n if (L(e) && L(n))\n for (const r in n)\n L(n[r]) ? (e[r] === void 0 && Object.assign(e, { [r]: {} }), X(e[r], n[r])) : Object.assign(e, { [r]: n[r] });\n return X(e, ...t);\n}\nfunction Jt(e, t, n) {\n const r = `«${t}» is deprecated and will be removed in the next major release. Please use the «${n}» instead.`;\n e && console.warn(r);\n}\nfunction Qt(e) {\n try {\n return new URL(e).href;\n } catch {\n }\n return e.substring(0, 2) === \"//\" ? window.location.protocol + e : window.location.origin + e;\n}\nfunction Zt(e) {\n return e > 47 && e < 58 || e === 32 || e === 13 || e === 229 || e > 64 && e < 91 || e > 95 && e < 112 || e > 185 && e < 193 || e > 218 && e < 223;\n}\nconst xt = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n DOWN: 40,\n RIGHT: 39,\n DELETE: 46,\n META: 91,\n SLASH: 191\n}, en = {\n LEFT: 0,\n WHEEL: 1,\n RIGHT: 2,\n BACKWARD: 3,\n FORWARD: 4\n};\nclass tn {\n constructor() {\n this.completed = Promise.resolve();\n }\n /**\n * Add new promise to queue\n * @param operation - promise should be added to queue\n */\n add(t) {\n return new Promise((n, r) => {\n this.completed = this.completed.then(t).then(n).catch(r);\n });\n }\n}\nfunction nn(e, t, n = void 0) {\n let r, i, a, l = null, s = 0;\n n || (n = {});\n const o = function() {\n s = n.leading === !1 ? 0 : Date.now(), l = null, a = e.apply(r, i), l === null && (r = i = null);\n };\n return function() {\n const d = Date.now();\n !s && n.leading === !1 && (s = d);\n const u = t - (d - s);\n return r = this, i = arguments, u <= 0 || u > t ? (l && (clearTimeout(l), l = null), s = d, a = e.apply(r, i), l === null && (r = i = null)) : !l && n.trailing !== !1 && (l = setTimeout(o, u)), a;\n };\n}\nconst rn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n PromiseQueue: tn,\n beautifyShortcut: Ft,\n cacheable: Wt,\n capitalize: Rt,\n copyTextToClipboard: qt,\n debounce: Ut,\n deepMerge: X,\n deprecationAssert: Jt,\n getUserOS: Ue,\n getValidUrl: Qt,\n isBoolean: zt,\n isClass: Kt,\n isEmpty: Dt,\n isFunction: ze,\n isIosDevice: Ht,\n isNumber: Xt,\n isObject: L,\n isPrintableKey: Zt,\n isPromise: Gt,\n isString: Vt,\n isUndefined: Yt,\n keyCodes: xt,\n mouseButtons: en,\n notEmpty: ae,\n throttle: nn,\n typeOf: S\n}, Symbol.toStringTag, { value: \"Module\" })), le = /* @__PURE__ */ wt(rn);\nObject.defineProperty(ie, \"__esModule\", { value: !0 });\nie.containsOnlyInlineElements = sn;\nvar an = le, ln = Z;\nfunction sn(e) {\n var t;\n (0, an.isString)(e) ? (t = document.createElement(\"div\"), t.innerHTML = e) : t = e;\n var n = function(r) {\n return !(0, ln.blockElements)().includes(r.tagName.toLowerCase()) && Array.from(r.children).every(n);\n };\n return Array.from(t.children).every(n);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.containsOnlyInlineElements = void 0;\n var t = ie;\n Object.defineProperty(e, \"containsOnlyInlineElements\", { enumerable: !0, get: function() {\n return t.containsOnlyInlineElements;\n } });\n})($);\nvar Ke = {}, se = {}, B = {}, oe = {};\nObject.defineProperty(oe, \"__esModule\", { value: !0 });\noe.make = on;\nfunction on(e, t, n) {\n var r;\n t === void 0 && (t = null), n === void 0 && (n = {});\n var i = document.createElement(e);\n if (Array.isArray(t)) {\n var a = t.filter(function(s) {\n return s !== void 0;\n });\n (r = i.classList).add.apply(r, a);\n } else\n t !== null && i.classList.add(t);\n for (var l in n)\n Object.prototype.hasOwnProperty.call(n, l) && (i[l] = n[l]);\n return i;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.make = void 0;\n var t = oe;\n Object.defineProperty(e, \"make\", { enumerable: !0, get: function() {\n return t.make;\n } });\n})(B);\nObject.defineProperty(se, \"__esModule\", { value: !0 });\nse.fragmentToString = cn;\nvar un = B;\nfunction cn(e) {\n var t = (0, un.make)(\"div\");\n return t.appendChild(e), t.innerHTML;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.fragmentToString = void 0;\n var t = se;\n Object.defineProperty(e, \"fragmentToString\", { enumerable: !0, get: function() {\n return t.fragmentToString;\n } });\n})(Ke);\nvar Xe = {}, ue = {};\nObject.defineProperty(ue, \"__esModule\", { value: !0 });\nue.getContentLength = fn;\nvar dn = k;\nfunction fn(e) {\n var t, n;\n return (0, dn.isNativeInput)(e) ? e.value.length : e.nodeType === Node.TEXT_NODE ? e.length : (n = (t = e.textContent) === null || t === void 0 ? void 0 : t.length) !== null && n !== void 0 ? n : 0;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getContentLength = void 0;\n var t = ue;\n Object.defineProperty(e, \"getContentLength\", { enumerable: !0, get: function() {\n return t.getContentLength;\n } });\n})(Xe);\nvar ce = {}, de = {}, We = A && A.__spreadArray || function(e, t, n) {\n if (n || arguments.length === 2)\n for (var r = 0, i = t.length, a; r < i; r++)\n (a || !(r in t)) && (a || (a = Array.prototype.slice.call(t, 0, r)), a[r] = t[r]);\n return e.concat(a || Array.prototype.slice.call(t));\n};\nObject.defineProperty(de, \"__esModule\", { value: !0 });\nde.getDeepestBlockElements = Ge;\nvar pn = $;\nfunction Ge(e) {\n return (0, pn.containsOnlyInlineElements)(e) ? [e] : Array.from(e.children).reduce(function(t, n) {\n return We(We([], t, !0), Ge(n), !0);\n }, []);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getDeepestBlockElements = void 0;\n var t = de;\n Object.defineProperty(e, \"getDeepestBlockElements\", { enumerable: !0, get: function() {\n return t.getDeepestBlockElements;\n } });\n})(ce);\nvar Ve = {}, fe = {}, W = {}, pe = {};\nObject.defineProperty(pe, \"__esModule\", { value: !0 });\npe.isLineBreakTag = hn;\nfunction hn(e) {\n return [\n \"BR\",\n \"WBR\"\n ].includes(e.tagName);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isLineBreakTag = void 0;\n var t = pe;\n Object.defineProperty(e, \"isLineBreakTag\", { enumerable: !0, get: function() {\n return t.isLineBreakTag;\n } });\n})(W);\nvar D = {}, he = {};\nObject.defineProperty(he, \"__esModule\", { value: !0 });\nhe.isSingleTag = mn;\nfunction mn(e) {\n return [\n \"AREA\",\n \"BASE\",\n \"BR\",\n \"COL\",\n \"COMMAND\",\n \"EMBED\",\n \"HR\",\n \"IMG\",\n \"INPUT\",\n \"KEYGEN\",\n \"LINK\",\n \"META\",\n \"PARAM\",\n \"SOURCE\",\n \"TRACK\",\n \"WBR\"\n ].includes(e.tagName);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isSingleTag = void 0;\n var t = he;\n Object.defineProperty(e, \"isSingleTag\", { enumerable: !0, get: function() {\n return t.isSingleTag;\n } });\n})(D);\nObject.defineProperty(fe, \"__esModule\", { value: !0 });\nfe.getDeepestNode = Ye;\nvar gn = k, vn = W, bn = D;\nfunction Ye(e, t) {\n t === void 0 && (t = !1);\n var n = t ? \"lastChild\" : \"firstChild\", r = t ? \"previousSibling\" : \"nextSibling\";\n if (e.nodeType === Node.ELEMENT_NODE && e[n]) {\n var i = e[n];\n if ((0, bn.isSingleTag)(i) && !(0, gn.isNativeInput)(i) && !(0, vn.isLineBreakTag)(i))\n if (i[r])\n i = i[r];\n else if (i.parentNode !== null && i.parentNode[r])\n i = i.parentNode[r];\n else\n return i.parentNode;\n return Ye(i, t);\n }\n return e;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getDeepestNode = void 0;\n var t = fe;\n Object.defineProperty(e, \"getDeepestNode\", { enumerable: !0, get: function() {\n return t.getDeepestNode;\n } });\n})(Ve);\nvar Je = {}, me = {}, j = A && A.__spreadArray || function(e, t, n) {\n if (n || arguments.length === 2)\n for (var r = 0, i = t.length, a; r < i; r++)\n (a || !(r in t)) && (a || (a = Array.prototype.slice.call(t, 0, r)), a[r] = t[r]);\n return e.concat(a || Array.prototype.slice.call(t));\n};\nObject.defineProperty(me, \"__esModule\", { value: !0 });\nme.findAllInputs = kn;\nvar yn = $, Cn = ce, Sn = V, On = k;\nfunction kn(e) {\n return Array.from(e.querySelectorAll((0, Sn.allInputsSelector)())).reduce(function(t, n) {\n return (0, On.isNativeInput)(n) || (0, yn.containsOnlyInlineElements)(n) ? j(j([], t, !0), [n], !1) : j(j([], t, !0), (0, Cn.getDeepestBlockElements)(n), !0);\n }, []);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.findAllInputs = void 0;\n var t = me;\n Object.defineProperty(e, \"findAllInputs\", { enumerable: !0, get: function() {\n return t.findAllInputs;\n } });\n})(Je);\nvar Qe = {}, ge = {};\nObject.defineProperty(ge, \"__esModule\", { value: !0 });\nge.isCollapsedWhitespaces = _n;\nfunction _n(e) {\n return !/[^\\t\\n\\r ]/.test(e);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isCollapsedWhitespaces = void 0;\n var t = ge;\n Object.defineProperty(e, \"isCollapsedWhitespaces\", { enumerable: !0, get: function() {\n return t.isCollapsedWhitespaces;\n } });\n})(Qe);\nvar ve = {}, be = {};\nObject.defineProperty(be, \"__esModule\", { value: !0 });\nbe.isElement = In;\nvar En = le;\nfunction In(e) {\n return (0, En.isNumber)(e) ? !1 : !!e && !!e.nodeType && e.nodeType === Node.ELEMENT_NODE;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isElement = void 0;\n var t = be;\n Object.defineProperty(e, \"isElement\", { enumerable: !0, get: function() {\n return t.isElement;\n } });\n})(ve);\nvar Ze = {}, ye = {}, Ce = {}, Se = {};\nObject.defineProperty(Se, \"__esModule\", { value: !0 });\nSe.isLeaf = wn;\nfunction wn(e) {\n return e === null ? !1 : e.childNodes.length === 0;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isLeaf = void 0;\n var t = Se;\n Object.defineProperty(e, \"isLeaf\", { enumerable: !0, get: function() {\n return t.isLeaf;\n } });\n})(Ce);\nvar Oe = {}, ke = {};\nObject.defineProperty(ke, \"__esModule\", { value: !0 });\nke.isNodeEmpty = Ln;\nvar Pn = W, jn = ve, Tn = k, Mn = D;\nfunction Ln(e, t) {\n var n = \"\";\n return (0, Mn.isSingleTag)(e) && !(0, Pn.isLineBreakTag)(e) ? !1 : ((0, jn.isElement)(e) && (0, Tn.isNativeInput)(e) ? n = e.value : e.textContent !== null && (n = e.textContent.replace(\"​\", \"\")), t !== void 0 && (n = n.replace(new RegExp(t, \"g\"), \"\")), n.trim().length === 0);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isNodeEmpty = void 0;\n var t = ke;\n Object.defineProperty(e, \"isNodeEmpty\", { enumerable: !0, get: function() {\n return t.isNodeEmpty;\n } });\n})(Oe);\nObject.defineProperty(ye, \"__esModule\", { value: !0 });\nye.isEmpty = $n;\nvar Nn = Ce, An = Oe;\nfunction $n(e, t) {\n e.normalize();\n for (var n = [e]; n.length > 0; ) {\n var r = n.shift();\n if (r) {\n if (e = r, (0, Nn.isLeaf)(e) && !(0, An.isNodeEmpty)(e, t))\n return !1;\n n.push.apply(n, Array.from(e.childNodes));\n }\n }\n return !0;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isEmpty = void 0;\n var t = ye;\n Object.defineProperty(e, \"isEmpty\", { enumerable: !0, get: function() {\n return t.isEmpty;\n } });\n})(Ze);\nvar xe = {}, _e = {};\nObject.defineProperty(_e, \"__esModule\", { value: !0 });\n_e.isFragment = Wn;\nvar Bn = le;\nfunction Wn(e) {\n return (0, Bn.isNumber)(e) ? !1 : !!e && !!e.nodeType && e.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isFragment = void 0;\n var t = _e;\n Object.defineProperty(e, \"isFragment\", { enumerable: !0, get: function() {\n return t.isFragment;\n } });\n})(xe);\nvar et = {}, Ee = {};\nObject.defineProperty(Ee, \"__esModule\", { value: !0 });\nEe.isHTMLString = Hn;\nvar Dn = B;\nfunction Hn(e) {\n var t = (0, Dn.make)(\"div\");\n return t.innerHTML = e, t.childElementCount > 0;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isHTMLString = void 0;\n var t = Ee;\n Object.defineProperty(e, \"isHTMLString\", { enumerable: !0, get: function() {\n return t.isHTMLString;\n } });\n})(et);\nvar tt = {}, Ie = {};\nObject.defineProperty(Ie, \"__esModule\", { value: !0 });\nIe.offset = Fn;\nfunction Fn(e) {\n var t = e.getBoundingClientRect(), n = window.pageXOffset || document.documentElement.scrollLeft, r = window.pageYOffset || document.documentElement.scrollTop, i = t.top + r, a = t.left + n;\n return {\n top: i,\n left: a,\n bottom: i + t.height,\n right: a + t.width\n };\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.offset = void 0;\n var t = Ie;\n Object.defineProperty(e, \"offset\", { enumerable: !0, get: function() {\n return t.offset;\n } });\n})(tt);\nvar nt = {}, we = {};\nObject.defineProperty(we, \"__esModule\", { value: !0 });\nwe.prepend = Rn;\nfunction Rn(e, t) {\n Array.isArray(t) ? (t = t.reverse(), t.forEach(function(n) {\n return e.prepend(n);\n })) : e.prepend(t);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.prepend = void 0;\n var t = we;\n Object.defineProperty(e, \"prepend\", { enumerable: !0, get: function() {\n return t.prepend;\n } });\n})(nt);\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.prepend = e.offset = e.make = e.isLineBreakTag = e.isSingleTag = e.isNodeEmpty = e.isLeaf = e.isHTMLString = e.isFragment = e.isEmpty = e.isElement = e.isContentEditable = e.isCollapsedWhitespaces = e.findAllInputs = e.isNativeInput = e.allInputsSelector = e.getDeepestNode = e.getDeepestBlockElements = e.getContentLength = e.fragmentToString = e.containsOnlyInlineElements = e.canSetCaret = e.calculateBaseline = e.blockElements = e.append = void 0;\n var t = V;\n Object.defineProperty(e, \"allInputsSelector\", { enumerable: !0, get: function() {\n return t.allInputsSelector;\n } });\n var n = k;\n Object.defineProperty(e, \"isNativeInput\", { enumerable: !0, get: function() {\n return n.isNativeInput;\n } });\n var r = Fe;\n Object.defineProperty(e, \"append\", { enumerable: !0, get: function() {\n return r.append;\n } });\n var i = Z;\n Object.defineProperty(e, \"blockElements\", { enumerable: !0, get: function() {\n return i.blockElements;\n } });\n var a = Re;\n Object.defineProperty(e, \"calculateBaseline\", { enumerable: !0, get: function() {\n return a.calculateBaseline;\n } });\n var l = qe;\n Object.defineProperty(e, \"canSetCaret\", { enumerable: !0, get: function() {\n return l.canSetCaret;\n } });\n var s = $;\n Object.defineProperty(e, \"containsOnlyInlineElements\", { enumerable: !0, get: function() {\n return s.containsOnlyInlineElements;\n } });\n var o = Ke;\n Object.defineProperty(e, \"fragmentToString\", { enumerable: !0, get: function() {\n return o.fragmentToString;\n } });\n var d = Xe;\n Object.defineProperty(e, \"getContentLength\", { enumerable: !0, get: function() {\n return d.getContentLength;\n } });\n var u = ce;\n Object.defineProperty(e, \"getDeepestBlockElements\", { enumerable: !0, get: function() {\n return u.getDeepestBlockElements;\n } });\n var p = Ve;\n Object.defineProperty(e, \"getDeepestNode\", { enumerable: !0, get: function() {\n return p.getDeepestNode;\n } });\n var g = Je;\n Object.defineProperty(e, \"findAllInputs\", { enumerable: !0, get: function() {\n return g.findAllInputs;\n } });\n var w = Qe;\n Object.defineProperty(e, \"isCollapsedWhitespaces\", { enumerable: !0, get: function() {\n return w.isCollapsedWhitespaces;\n } });\n var _ = ne;\n Object.defineProperty(e, \"isContentEditable\", { enumerable: !0, get: function() {\n return _.isContentEditable;\n } });\n var ut = ve;\n Object.defineProperty(e, \"isElement\", { enumerable: !0, get: function() {\n return ut.isElement;\n } });\n var ct = Ze;\n Object.defineProperty(e, \"isEmpty\", { enumerable: !0, get: function() {\n return ct.isEmpty;\n } });\n var dt = xe;\n Object.defineProperty(e, \"isFragment\", { enumerable: !0, get: function() {\n return dt.isFragment;\n } });\n var ft = et;\n Object.defineProperty(e, \"isHTMLString\", { enumerable: !0, get: function() {\n return ft.isHTMLString;\n } });\n var pt = Ce;\n Object.defineProperty(e, \"isLeaf\", { enumerable: !0, get: function() {\n return pt.isLeaf;\n } });\n var ht = Oe;\n Object.defineProperty(e, \"isNodeEmpty\", { enumerable: !0, get: function() {\n return ht.isNodeEmpty;\n } });\n var mt = W;\n Object.defineProperty(e, \"isLineBreakTag\", { enumerable: !0, get: function() {\n return mt.isLineBreakTag;\n } });\n var gt = D;\n Object.defineProperty(e, \"isSingleTag\", { enumerable: !0, get: function() {\n return gt.isSingleTag;\n } });\n var vt = B;\n Object.defineProperty(e, \"make\", { enumerable: !0, get: function() {\n return vt.make;\n } });\n var bt = tt;\n Object.defineProperty(e, \"offset\", { enumerable: !0, get: function() {\n return bt.offset;\n } });\n var yt = nt;\n Object.defineProperty(e, \"prepend\", { enumerable: !0, get: function() {\n return yt.prepend;\n } });\n})(c);\nconst m = \"cdx-list\", h = {\n wrapper: m,\n item: `${m}__item`,\n itemContent: `${m}__item-content`,\n itemChildren: `${m}__item-children`\n};\nclass v {\n /**\n * Getter for all CSS classes used in unordered list rendering\n */\n static get CSS() {\n return {\n ...h,\n orderedList: `${m}-ordered`\n };\n }\n /**\n * Assign passed readonly mode and config to relevant class properties\n * @param readonly - read-only mode flag\n * @param config - user config for Tool\n */\n constructor(t, n) {\n this.config = n, this.readOnly = t;\n }\n /**\n * Renders ol wrapper for list\n * @param isRoot - boolean variable that represents level of the wrappre (root or childList)\n * @returns - created html ol element\n */\n renderWrapper(t) {\n let n;\n return t === !0 ? n = c.make(\"ol\", [v.CSS.wrapper, v.CSS.orderedList]) : n = c.make(\"ol\", [v.CSS.orderedList, v.CSS.itemChildren]), n;\n }\n /**\n * Redners list item element\n * @param content - content used in list item rendering\n * @param _meta - meta of the list item unused in rendering of the ordered list\n * @returns - created html list item element\n */\n renderItem(t, n) {\n const r = c.make(\"li\", v.CSS.item), i = c.make(\"div\", v.CSS.itemContent, {\n innerHTML: t,\n contentEditable: (!this.readOnly).toString()\n });\n return r.appendChild(i), r;\n }\n /**\n * Return the item content\n * @param item - item wrapper (
  • )\n * @returns - item content string\n */\n getItemContent(t) {\n const n = t.querySelector(`.${v.CSS.itemContent}`);\n return !n || c.isEmpty(n) ? \"\" : n.innerHTML;\n }\n /**\n * Returns item meta, for ordered list\n * @returns item meta object\n */\n getItemMeta() {\n return {};\n }\n /**\n * Returns default item meta used on creation of the new item\n */\n composeDefaultMeta() {\n return {};\n }\n}\nclass b {\n /**\n * Getter for all CSS classes used in unordered list rendering\n */\n static get CSS() {\n return {\n ...h,\n unorderedList: `${m}-unordered`\n };\n }\n /**\n * Assign passed readonly mode and config to relevant class properties\n * @param readonly - read-only mode flag\n * @param config - user config for Tool\n */\n constructor(t, n) {\n this.config = n, this.readOnly = t;\n }\n /**\n * Renders ol wrapper for list\n * @param isRoot - boolean variable that represents level of the wrappre (root or childList)\n * @returns - created html ul element\n */\n renderWrapper(t) {\n let n;\n return t === !0 ? n = c.make(\"ul\", [b.CSS.wrapper, b.CSS.unorderedList]) : n = c.make(\"ul\", [b.CSS.unorderedList, b.CSS.itemChildren]), n;\n }\n /**\n * Redners list item element\n * @param content - content used in list item rendering\n * @param _meta - meta of the list item unused in rendering of the unordered list\n * @returns - created html list item element\n */\n renderItem(t, n) {\n const r = c.make(\"li\", b.CSS.item), i = c.make(\"div\", b.CSS.itemContent, {\n innerHTML: t,\n contentEditable: (!this.readOnly).toString()\n });\n return r.appendChild(i), r;\n }\n /**\n * Return the item content\n * @param item - item wrapper (
  • )\n * @returns - item content string\n */\n getItemContent(t) {\n const n = t.querySelector(`.${b.CSS.itemContent}`);\n return !n || c.isEmpty(n) ? \"\" : n.innerHTML;\n }\n /**\n * Returns item meta, for unordered list\n * @returns Item meta object\n */\n getItemMeta() {\n return {};\n }\n /**\n * Returns default item meta used on creation of the new item\n */\n composeDefaultMeta() {\n return {};\n }\n}\nfunction O(e) {\n return e.nodeType === Node.ELEMENT_NODE;\n}\nvar P = {}, Pe = {}, H = {}, F = {};\nObject.defineProperty(F, \"__esModule\", { value: !0 });\nF.getContenteditableSlice = Un;\nvar qn = c;\nfunction Un(e, t, n, r, i) {\n var a;\n i === void 0 && (i = !1);\n var l = document.createRange();\n if (r === \"left\" ? (l.setStart(e, 0), l.setEnd(t, n)) : (l.setStart(t, n), l.setEnd(e, e.childNodes.length)), i === !0) {\n var s = l.extractContents();\n return (0, qn.fragmentToString)(s);\n }\n var o = l.cloneContents(), d = document.createElement(\"div\");\n d.appendChild(o);\n var u = (a = d.textContent) !== null && a !== void 0 ? a : \"\";\n return u;\n}\nObject.defineProperty(H, \"__esModule\", { value: !0 });\nH.checkContenteditableSliceForEmptiness = Xn;\nvar zn = c, Kn = F;\nfunction Xn(e, t, n, r) {\n var i = (0, Kn.getContenteditableSlice)(e, t, n, r);\n return (0, zn.isCollapsedWhitespaces)(i);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.checkContenteditableSliceForEmptiness = void 0;\n var t = H;\n Object.defineProperty(e, \"checkContenteditableSliceForEmptiness\", { enumerable: !0, get: function() {\n return t.checkContenteditableSliceForEmptiness;\n } });\n})(Pe);\nvar rt = {};\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getContenteditableSlice = void 0;\n var t = F;\n Object.defineProperty(e, \"getContenteditableSlice\", { enumerable: !0, get: function() {\n return t.getContenteditableSlice;\n } });\n})(rt);\nvar it = {}, je = {};\nObject.defineProperty(je, \"__esModule\", { value: !0 });\nje.focus = Vn;\nvar Gn = c;\nfunction Vn(e, t) {\n var n, r;\n if (t === void 0 && (t = !0), (0, Gn.isNativeInput)(e)) {\n e.focus();\n var i = t ? 0 : e.value.length;\n e.setSelectionRange(i, i);\n } else {\n var a = document.createRange(), l = window.getSelection();\n if (!l)\n return;\n var s = function(g, w) {\n w === void 0 && (w = !1);\n var _ = document.createTextNode(\"\");\n w ? g.insertBefore(_, g.firstChild) : g.appendChild(_), a.setStart(_, 0), a.setEnd(_, 0);\n }, o = function(g) {\n return g != null;\n }, d = e.childNodes, u = t ? d[0] : d[d.length - 1];\n if (o(u)) {\n for (; o(u) && u.nodeType !== Node.TEXT_NODE; )\n u = t ? u.firstChild : u.lastChild;\n if (o(u) && u.nodeType === Node.TEXT_NODE) {\n var p = (r = (n = u.textContent) === null || n === void 0 ? void 0 : n.length) !== null && r !== void 0 ? r : 0, i = t ? 0 : p;\n a.setStart(u, i), a.setEnd(u, i);\n } else\n s(e, t);\n } else\n s(e);\n l.removeAllRanges(), l.addRange(a);\n }\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.focus = void 0;\n var t = je;\n Object.defineProperty(e, \"focus\", { enumerable: !0, get: function() {\n return t.focus;\n } });\n})(it);\nvar Te = {}, R = {};\nObject.defineProperty(R, \"__esModule\", { value: !0 });\nR.getCaretNodeAndOffset = Yn;\nfunction Yn() {\n var e = window.getSelection();\n if (e === null)\n return [null, 0];\n var t = e.focusNode, n = e.focusOffset;\n return t === null ? [null, 0] : (t.nodeType !== Node.TEXT_NODE && t.childNodes.length > 0 && (t.childNodes[n] !== void 0 ? (t = t.childNodes[n], n = 0) : (t = t.childNodes[n - 1], t.textContent !== null && (n = t.textContent.length))), [t, n]);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getCaretNodeAndOffset = void 0;\n var t = R;\n Object.defineProperty(e, \"getCaretNodeAndOffset\", { enumerable: !0, get: function() {\n return t.getCaretNodeAndOffset;\n } });\n})(Te);\nvar at = {}, q = {};\nObject.defineProperty(q, \"__esModule\", { value: !0 });\nq.getRange = Jn;\nfunction Jn() {\n var e = window.getSelection();\n return e && e.rangeCount ? e.getRangeAt(0) : null;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getRange = void 0;\n var t = q;\n Object.defineProperty(e, \"getRange\", { enumerable: !0, get: function() {\n return t.getRange;\n } });\n})(at);\nvar lt = {}, Me = {};\nObject.defineProperty(Me, \"__esModule\", { value: !0 });\nMe.isCaretAtEndOfInput = xn;\nvar De = c, Qn = Te, Zn = Pe;\nfunction xn(e) {\n var t = (0, De.getDeepestNode)(e, !0);\n if (t === null)\n return !0;\n if ((0, De.isNativeInput)(t))\n return t.selectionEnd === t.value.length;\n var n = (0, Qn.getCaretNodeAndOffset)(), r = n[0], i = n[1];\n return r === null ? !1 : (0, Zn.checkContenteditableSliceForEmptiness)(e, r, i, \"right\");\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isCaretAtEndOfInput = void 0;\n var t = Me;\n Object.defineProperty(e, \"isCaretAtEndOfInput\", { enumerable: !0, get: function() {\n return t.isCaretAtEndOfInput;\n } });\n})(lt);\nvar st = {}, Le = {};\nObject.defineProperty(Le, \"__esModule\", { value: !0 });\nLe.isCaretAtStartOfInput = nr;\nvar T = c, er = R, tr = H;\nfunction nr(e) {\n var t = (0, T.getDeepestNode)(e);\n if (t === null || (0, T.isEmpty)(e))\n return !0;\n if ((0, T.isNativeInput)(t))\n return t.selectionEnd === 0;\n if ((0, T.isEmpty)(e))\n return !0;\n var n = (0, er.getCaretNodeAndOffset)(), r = n[0], i = n[1];\n return r === null ? !1 : (0, tr.checkContenteditableSliceForEmptiness)(e, r, i, \"left\");\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isCaretAtStartOfInput = void 0;\n var t = Le;\n Object.defineProperty(e, \"isCaretAtStartOfInput\", { enumerable: !0, get: function() {\n return t.isCaretAtStartOfInput;\n } });\n})(st);\nvar ot = {}, Ne = {};\nObject.defineProperty(Ne, \"__esModule\", { value: !0 });\nNe.save = ar;\nvar rr = c, ir = q;\nfunction ar() {\n var e = (0, ir.getRange)(), t = (0, rr.make)(\"span\");\n if (t.id = \"cursor\", t.hidden = !0, !!e)\n return e.insertNode(t), function() {\n var r = window.getSelection();\n r && (e.setStartAfter(t), e.setEndAfter(t), r.removeAllRanges(), r.addRange(e), setTimeout(function() {\n t.remove();\n }, 150));\n };\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.save = void 0;\n var t = Ne;\n Object.defineProperty(e, \"save\", { enumerable: !0, get: function() {\n return t.save;\n } });\n})(ot);\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.save = e.isCaretAtStartOfInput = e.isCaretAtEndOfInput = e.getRange = e.getCaretNodeAndOffset = e.focus = e.getContenteditableSlice = e.checkContenteditableSliceForEmptiness = void 0;\n var t = Pe;\n Object.defineProperty(e, \"checkContenteditableSliceForEmptiness\", { enumerable: !0, get: function() {\n return t.checkContenteditableSliceForEmptiness;\n } });\n var n = rt;\n Object.defineProperty(e, \"getContenteditableSlice\", { enumerable: !0, get: function() {\n return n.getContenteditableSlice;\n } });\n var r = it;\n Object.defineProperty(e, \"focus\", { enumerable: !0, get: function() {\n return r.focus;\n } });\n var i = Te;\n Object.defineProperty(e, \"getCaretNodeAndOffset\", { enumerable: !0, get: function() {\n return i.getCaretNodeAndOffset;\n } });\n var a = at;\n Object.defineProperty(e, \"getRange\", { enumerable: !0, get: function() {\n return a.getRange;\n } });\n var l = lt;\n Object.defineProperty(e, \"isCaretAtEndOfInput\", { enumerable: !0, get: function() {\n return l.isCaretAtEndOfInput;\n } });\n var s = st;\n Object.defineProperty(e, \"isCaretAtStartOfInput\", { enumerable: !0, get: function() {\n return s.isCaretAtStartOfInput;\n } });\n var o = ot;\n Object.defineProperty(e, \"save\", { enumerable: !0, get: function() {\n return o.save;\n } });\n})(P);\nclass f {\n /**\n * Getter for all CSS classes used in unordered list rendering\n */\n static get CSS() {\n return {\n ...h,\n checklist: `${m}-checklist`,\n itemChecked: `${m}__checkbox--checked`,\n noHover: `${m}__checkbox--no-hover`,\n checkbox: `${m}__checkbox-check`,\n checkboxContainer: `${m}__checkbox`\n };\n }\n /**\n * Assign passed readonly mode and config to relevant class properties\n * @param readonly - read-only mode flag\n * @param config - user config for Tool\n */\n constructor(t, n) {\n this.config = n, this.readOnly = t;\n }\n /**\n * Renders ul wrapper for list\n * @param isRoot - boolean variable that represents level of the wrappre (root or childList)\n * @returns - created html ul element\n */\n renderWrapper(t) {\n let n;\n return t === !0 ? (n = c.make(\"ul\", [f.CSS.wrapper, f.CSS.checklist]), n.addEventListener(\"click\", (r) => {\n const i = r.target;\n if (i) {\n const a = i.closest(`.${f.CSS.checkboxContainer}`);\n a && a.contains(i) && this.toggleCheckbox(a);\n }\n })) : n = c.make(\"ul\", [f.CSS.checklist, f.CSS.itemChildren]), n;\n }\n /**\n * Redners list item element\n * @param content - content used in list item rendering\n * @param meta - meta of the list item used in rendering of the checklist\n * @returns - created html list item element\n */\n renderItem(t, n) {\n const r = c.make(\"li\", [f.CSS.item, f.CSS.item]), i = c.make(\"div\", f.CSS.itemContent, {\n innerHTML: t,\n contentEditable: (!this.readOnly).toString()\n }), a = c.make(\"span\", f.CSS.checkbox), l = c.make(\"div\", f.CSS.checkboxContainer);\n return n.checked === !0 && l.classList.add(f.CSS.itemChecked), a.innerHTML = Ct, l.appendChild(a), r.appendChild(l), r.appendChild(i), r;\n }\n /**\n * Return the item content\n * @param item - item wrapper (
  • )\n * @returns - item content string\n */\n getItemContent(t) {\n const n = t.querySelector(`.${f.CSS.itemContent}`);\n return !n || c.isEmpty(n) ? \"\" : n.innerHTML;\n }\n /**\n * Return meta object of certain element\n * @param item - will be returned meta information of this item\n * @returns Item meta object\n */\n getItemMeta(t) {\n const n = t.querySelector(`.${f.CSS.checkboxContainer}`);\n return {\n checked: n ? n.classList.contains(f.CSS.itemChecked) : !1\n };\n }\n /**\n * Returns default item meta used on creation of the new item\n */\n composeDefaultMeta() {\n return { checked: !1 };\n }\n /**\n * Toggle checklist item state\n * @param checkbox - checkbox element to be toggled\n */\n toggleCheckbox(t) {\n t.classList.toggle(f.CSS.itemChecked), t.classList.add(f.CSS.noHover), t.addEventListener(\"mouseleave\", () => this.removeSpecialHoverBehavior(t), { once: !0 });\n }\n /**\n * Removes class responsible for special hover behavior on an item\n * @param el - item wrapper\n */\n removeSpecialHoverBehavior(t) {\n t.classList.remove(f.CSS.noHover);\n }\n}\nfunction U(e, t = \"after\") {\n const n = [];\n let r;\n function i(a) {\n switch (t) {\n case \"after\":\n return a.nextElementSibling;\n case \"before\":\n return a.previousElementSibling;\n }\n }\n for (r = i(e); r !== null; )\n n.push(r), r = i(r);\n return n.length !== 0 ? n : null;\n}\nfunction y(e, t = !0) {\n let n = e;\n return e.classList.contains(h.item) && (n = e.querySelector(`.${h.itemChildren}`)), n === null ? [] : t ? Array.from(n.querySelectorAll(`:scope > .${h.item}`)) : Array.from(n.querySelectorAll(`.${h.item}`));\n}\nfunction lr(e) {\n return e.nextElementSibling === null;\n}\nfunction sr(e) {\n return e.querySelector(`.${h.itemChildren}`) !== null;\n}\nfunction C(e) {\n return e.querySelector(`.${h.itemChildren}`);\n}\nfunction z(e) {\n let t = e;\n e.classList.contains(h.item) && (t = C(e)), t !== null && y(t).length === 0 && t.remove();\n}\nfunction N(e) {\n return e.querySelector(`.${h.itemContent}`);\n}\nfunction E(e, t = !0) {\n const n = N(e);\n n && P.focus(n, t);\n}\nclass K {\n /**\n * Getter method to get current item\n * @returns current list item or null if caret position is not undefined\n */\n get currentItem() {\n const t = window.getSelection();\n if (!t)\n return null;\n let n = t.anchorNode;\n return !n || (O(n) || (n = n.parentNode), !n) || !O(n) ? null : n.closest(`.${h.item}`);\n }\n /**\n * Method that returns nesting level of the current item, null if there is no selection\n */\n get currentItemLevel() {\n const t = this.currentItem;\n if (t === null)\n return null;\n let n = t.parentNode, r = 0;\n for (; n !== null && n !== this.listWrapper; )\n O(n) && n.classList.contains(h.item) && (r += 1), n = n.parentNode;\n return r + 1;\n }\n /**\n * Assign all passed params and renderer to relevant class properties\n * @param params - tool constructor options\n * @param params.data - previously saved data\n * @param params.config - user config for Tool\n * @param params.api - Editor.js API\n * @param params.readOnly - read-only mode flag\n * @param renderer - renderer instance initialized in tool class\n */\n constructor({ data: t, config: n, api: r, readOnly: i, block: a }, l) {\n this.config = n, this.data = t, this.readOnly = i, this.api = r, this.block = a, this.renderer = l;\n }\n /**\n * Function that is responsible for rendering list with contents\n * @returns Filled with content wrapper element of the list\n */\n render() {\n return this.listWrapper = this.renderer.renderWrapper(!0), this.data.items.length ? this.appendItems(this.data.items, this.listWrapper) : this.appendItems(\n [\n {\n content: \"\",\n meta: {},\n items: []\n }\n ],\n this.listWrapper\n ), this.readOnly || this.listWrapper.addEventListener(\n \"keydown\",\n (t) => {\n switch (t.key) {\n case \"Enter\":\n this.enterPressed(t);\n break;\n case \"Backspace\":\n this.backspace(t);\n break;\n case \"Tab\":\n t.shiftKey ? this.shiftTab(t) : this.addTab(t);\n break;\n }\n },\n !1\n ), \"start\" in this.data.meta && this.data.meta.start !== void 0 && this.changeStartWith(this.data.meta.start), \"counterType\" in this.data.meta && this.data.meta.counterType !== void 0 && this.changeCounters(this.data.meta.counterType), this.listWrapper;\n }\n /**\n * Function that is responsible for list content saving\n * @param wrapper - optional argument wrapper\n * @returns whole list saved data if wrapper not passes, otherwise will return data of the passed wrapper\n */\n save(t) {\n const n = t ?? this.listWrapper, r = (l) => y(l).map((o) => {\n const d = C(o), u = this.renderer.getItemContent(o), p = this.renderer.getItemMeta(o), g = d ? r(d) : [];\n return {\n content: u,\n meta: p,\n items: g\n };\n }), i = n ? r(n) : [];\n let a = {\n style: this.data.style,\n meta: {},\n items: i\n };\n return this.data.style === \"ordered\" && (a.meta = {\n start: this.data.meta.start,\n counterType: this.data.meta.counterType\n }), a;\n }\n /**\n * On paste sanitzation config. Allow only tags that are allowed in the Tool.\n * @returns - config that determines tags supposted by paste handler\n * @todo - refactor and move to list instance\n */\n static get pasteConfig() {\n return {\n tags: [\"OL\", \"UL\", \"LI\"]\n };\n }\n /**\n * Method that specified hot to merge two List blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n *\n * Content of the first item of the next List would be merged with deepest item in current list\n * Other items of the next List would be appended to the current list without any changes in nesting levels\n * @param data - data of the second list to be merged with current\n */\n merge(t) {\n const n = this.block.holder.querySelectorAll(`.${h.item}`), r = n[n.length - 1], i = N(r);\n if (r === null || i === null || (i.insertAdjacentHTML(\"beforeend\", t.items[0].content), this.listWrapper === void 0))\n return;\n const a = y(this.listWrapper);\n if (a.length === 0)\n return;\n const l = a[a.length - 1];\n let s = C(l);\n const o = t.items.shift();\n o !== void 0 && (o.items.length !== 0 && (s === null && (s = this.renderer.renderWrapper(!1)), this.appendItems(o.items, s)), t.items.length > 0 && this.appendItems(t.items, this.listWrapper));\n }\n /**\n * On paste callback that is fired from Editor.\n * @param event - event with pasted data\n * @todo - refactor and move to list instance\n */\n onPaste(t) {\n const n = t.detail.data;\n this.data = this.pasteHandler(n);\n const r = this.listWrapper;\n r && r.parentNode && r.parentNode.replaceChild(this.render(), r);\n }\n /**\n * Handle UL, OL and LI tags paste and returns List data\n * @param element - html element that contains whole list\n * @todo - refactor and move to list instance\n */\n pasteHandler(t) {\n const { tagName: n } = t;\n let r = \"unordered\", i;\n switch (n) {\n case \"OL\":\n r = \"ordered\", i = \"ol\";\n break;\n case \"UL\":\n case \"LI\":\n r = \"unordered\", i = \"ul\";\n }\n const a = {\n style: r,\n meta: {},\n items: []\n };\n r === \"ordered\" && (this.data.meta.counterType = \"numeric\", this.data.meta.start = 1);\n const l = (s) => Array.from(s.querySelectorAll(\":scope > li\")).map((d) => {\n const u = d.querySelector(`:scope > ${i}`), p = u ? l(u) : [];\n return {\n content: d.innerHTML ?? \"\",\n meta: {},\n items: p\n };\n });\n return a.items = l(t), a;\n }\n /**\n * Changes ordered list start property value\n * @param index - new value of the start property\n */\n changeStartWith(t) {\n this.listWrapper.style.setProperty(\"counter-reset\", `item ${t - 1}`), this.data.meta.start = t;\n }\n /**\n * Changes ordered list counterType property value\n * @param counterType - new value of the counterType value\n */\n changeCounters(t) {\n this.listWrapper.style.setProperty(\"--list-counter-type\", t), this.data.meta.counterType = t;\n }\n /**\n * Handles Enter keypress\n * @param event - keydown\n */\n enterPressed(t) {\n var s;\n const n = this.currentItem;\n if (t.stopPropagation(), t.preventDefault(), t.isComposing || n === null)\n return;\n const r = ((s = this.renderer) == null ? void 0 : s.getItemContent(n).trim().length) === 0, i = n.parentNode === this.listWrapper, a = n.previousElementSibling === null, l = this.api.blocks.getCurrentBlockIndex();\n if (i && r)\n if (lr(n) && !sr(n)) {\n a ? this.convertItemToDefaultBlock(l, !0) : this.convertItemToDefaultBlock();\n return;\n } else {\n this.splitList(n);\n return;\n }\n else if (r) {\n this.unshiftItem(n);\n return;\n } else\n this.splitItem(n);\n }\n /**\n * Handle backspace\n * @param event - keydown\n */\n backspace(t) {\n const n = this.currentItem;\n if (n !== null && P.isCaretAtStartOfInput(n)) {\n if (t.stopPropagation(), n.parentNode === this.listWrapper && n.previousElementSibling === null) {\n this.convertFirstItemToDefaultBlock();\n return;\n }\n t.preventDefault(), this.mergeItemWithPrevious(n);\n }\n }\n /**\n * Reduce indentation for current item\n * @param event - keydown\n */\n shiftTab(t) {\n t.stopPropagation(), t.preventDefault(), this.currentItem !== null && this.unshiftItem(this.currentItem);\n }\n /**\n * Decrease indentation of the passed item\n * @param item - list item to be unshifted\n */\n unshiftItem(t) {\n if (!t.parentNode || !O(t.parentNode))\n return;\n const n = t.parentNode.closest(`.${h.item}`);\n if (!n)\n return;\n let r = C(t);\n if (t.parentElement === null)\n return;\n const i = U(t);\n i !== null && (r === null && (r = this.renderer.renderWrapper(!1)), i.forEach((a) => {\n r.appendChild(a);\n }), t.appendChild(r)), n.after(t), E(t, !1), z(n);\n }\n /**\n * Method that is used for list splitting and moving trailing items to the new separated list\n * @param item - current item html element\n */\n splitList(t) {\n const n = y(t), r = this.block, i = this.api.blocks.getCurrentBlockIndex();\n if (n.length !== 0) {\n const o = n[0];\n this.unshiftItem(o), E(t, !1);\n }\n if (t.previousElementSibling === null && t.parentNode === this.listWrapper) {\n this.convertItemToDefaultBlock(i);\n return;\n }\n const a = U(t);\n if (a === null)\n return;\n const l = this.renderer.renderWrapper(!0);\n a.forEach((o) => {\n l.appendChild(o);\n });\n const s = this.save(l);\n s.meta.start = this.data.style == \"ordered\" ? 1 : void 0, this.api.blocks.insert(r == null ? void 0 : r.name, s, this.config, i + 1), this.convertItemToDefaultBlock(i + 1), l.remove();\n }\n /**\n * Method that is used for splitting item content and moving trailing content to the new sibling item\n * @param currentItem - current item html element\n */\n splitItem(t) {\n const [n, r] = P.getCaretNodeAndOffset();\n if (n === null)\n return;\n const i = N(t);\n let a;\n i === null ? a = \"\" : a = P.getContenteditableSlice(i, n, r, \"right\", !0);\n const l = C(t), s = this.renderItem(a);\n t == null || t.after(s), l && s.appendChild(l), E(s);\n }\n /**\n * Method that is used for merging current item with previous one\n * Content of the current item would be appended to the previous item\n * Current item children would not change nesting level\n * @param item - current item html element\n */\n mergeItemWithPrevious(t) {\n const n = t.previousElementSibling, r = t.parentNode;\n if (r === null || !O(r))\n return;\n const i = r.closest(`.${h.item}`);\n if (!n && !i || n && !O(n))\n return;\n let a;\n if (n) {\n const p = y(n, !1);\n p.length !== 0 && p.length !== 0 ? a = p[p.length - 1] : a = n;\n } else\n a = i;\n const l = this.renderer.getItemContent(t);\n if (!a)\n return;\n E(a, !1);\n const s = N(a);\n if (s === null)\n return;\n s.insertAdjacentHTML(\"beforeend\", l);\n const o = y(t);\n if (o.length === 0) {\n t.remove(), z(a);\n return;\n }\n const d = n || i, u = C(d) ?? this.renderer.renderWrapper(!1);\n n ? o.forEach((p) => {\n u.appendChild(p);\n }) : o.forEach((p) => {\n u.prepend(p);\n }), C(d) === null && a.appendChild(u), t.remove();\n }\n /**\n * Add indentation to current item\n * @param event - keydown\n */\n addTab(t) {\n var a;\n t.stopPropagation(), t.preventDefault();\n const n = this.currentItem;\n if (!n)\n return;\n if (((a = this.config) == null ? void 0 : a.maxLevel) !== void 0) {\n const l = this.currentItemLevel;\n if (l !== null && l === this.config.maxLevel)\n return;\n }\n const r = n.previousSibling;\n if (r === null || !O(r))\n return;\n const i = C(r);\n if (i)\n i.appendChild(n), y(n).forEach((s) => {\n i.appendChild(s);\n });\n else {\n const l = this.renderer.renderWrapper(!1);\n l.appendChild(n), y(n).forEach((o) => {\n l.appendChild(o);\n }), r.appendChild(l);\n }\n z(n), E(n, !1);\n }\n /**\n * Convert current item to default block with passed index\n * @param newBloxkIndex - optional parameter represents index, where would be inseted default block\n * @param removeList - optional parameter, that represents condition, if List should be removed\n */\n convertItemToDefaultBlock(t, n) {\n let r;\n const i = this.currentItem, a = i !== null ? this.renderer.getItemContent(i) : \"\";\n n === !0 && this.api.blocks.delete(), t !== void 0 ? r = this.api.blocks.insert(void 0, { text: a }, void 0, t) : r = this.api.blocks.insert(), i == null || i.remove(), this.api.caret.setToBlock(r, \"start\");\n }\n /**\n * Convert first item of the list to default block\n * This method could be called when backspace button pressed at start of the first item of the list\n * First item of the list would be converted to the paragraph and first item children would be unshifted\n */\n convertFirstItemToDefaultBlock() {\n const t = this.currentItem;\n if (t === null)\n return;\n const n = y(t);\n if (n.length !== 0) {\n const l = n[0];\n this.unshiftItem(l), E(t);\n }\n const r = U(t), i = this.api.blocks.getCurrentBlockIndex(), a = r === null;\n this.convertItemToDefaultBlock(i, a);\n }\n /**\n * Method that calls render function of the renderer with a necessary item meta cast\n * @param itemContent - content to be rendered in new item\n * @param meta - meta used in list item rendering\n * @returns html element of the rendered item\n */\n renderItem(t, n) {\n const r = n ?? this.renderer.composeDefaultMeta();\n switch (!0) {\n case this.renderer instanceof v:\n return this.renderer.renderItem(t, r);\n case this.renderer instanceof b:\n return this.renderer.renderItem(t, r);\n default:\n return this.renderer.renderItem(t, r);\n }\n }\n /**\n * Renders children list\n * @param items - list data used in item rendering\n * @param parentElement - where to append passed items\n */\n appendItems(t, n) {\n t.forEach((r) => {\n var a;\n const i = this.renderItem(r.content, r.meta);\n if (n.appendChild(i), r.items.length) {\n const l = (a = this.renderer) == null ? void 0 : a.renderWrapper(!1);\n this.appendItems(r.items, l), i.appendChild(l);\n }\n });\n }\n}\nconst I = {\n wrapper: `${m}-start-with-field`,\n input: `${m}-start-with-field__input`,\n startWithElementWrapperInvalid: `${m}-start-with-field--invalid`\n};\nfunction or(e, { value: t, placeholder: n, attributes: r, sanitize: i }) {\n const a = c.make(\"div\", I.wrapper), l = c.make(\"input\", I.input, {\n placeholder: n,\n /**\n * Used to prevent focusing on the input by Tab key\n * (Popover in the Toolbar lays below the blocks,\n * so Tab in the last block will focus this hidden input if this property is not set)\n */\n tabIndex: -1,\n /**\n * Value of the start property, if it is not specified, then it is set to one\n */\n value: t\n });\n for (const s in r)\n l.setAttribute(s, r[s]);\n return a.appendChild(l), l.addEventListener(\"input\", () => {\n i !== void 0 && (l.value = i(l.value));\n const s = l.checkValidity();\n !s && !a.classList.contains(I.startWithElementWrapperInvalid) && a.classList.add(I.startWithElementWrapperInvalid), s && a.classList.contains(I.startWithElementWrapperInvalid) && a.classList.remove(I.startWithElementWrapperInvalid), s && e(l.value);\n }), a;\n}\nconst M = /* @__PURE__ */ new Map([\n /**\n * Value that represents default arabic numbers for counters\n */\n [\"Numeric\", \"numeric\"],\n /**\n * Value that represents lower roman numbers for counteres\n */\n [\"Lower Roman\", \"lower-roman\"],\n /**\n * Value that represents upper roman numbers for counters\n */\n [\"Upper Roman\", \"upper-roman\"],\n /**\n * Value that represents lower alpha characters for counters\n */\n [\"Lower Alpha\", \"lower-alpha\"],\n /**\n * Value that represents upper alpha characters for counters\n */\n [\"Upper Alpha\", \"upper-alpha\"]\n]), He = /* @__PURE__ */ new Map([\n /**\n * Value that represents Icon for Numeric counter type\n */\n [\"numeric\", St],\n /**\n * Value that represents Icon for Lower Roman counter type\n */\n [\"lower-roman\", Ot],\n /**\n * Value that represents Icon for Upper Roman counter type\n */\n [\"upper-roman\", kt],\n /**\n * Value that represents Icon for Lower Alpha counter type\n */\n [\"lower-alpha\", Et],\n /**\n * Value that represents Icon for Upper Alpha counter type\n */\n [\"upper-alpha\", _t]\n]);\nfunction ur(e) {\n return e.replace(/\\D+/g, \"\");\n}\nfunction cr(e) {\n return typeof e.items[0] == \"string\";\n}\nfunction dr(e) {\n return typeof e.items[0] != \"string\" && \"text\" in e.items[0] && \"checked\" in e.items[0] && typeof e.items[0].text == \"string\" && typeof e.items[0].checked == \"boolean\";\n}\nfunction fr(e) {\n const t = [];\n return cr(e) ? (e.items.forEach((n) => {\n t.push({\n content: n,\n meta: {},\n items: []\n });\n }), {\n style: e.style,\n meta: {},\n items: t\n }) : dr(e) ? (e.items.forEach((n) => {\n t.push({\n content: n.text,\n meta: {\n checked: n.checked\n },\n items: []\n });\n }), {\n style: \"checklist\",\n meta: {},\n items: t\n }) : e;\n}\nclass G {\n /**\n * Notify core that read-only mode is supported\n */\n static get isReadOnlySupported() {\n return !0;\n }\n /**\n * Allow to use native Enter behaviour\n */\n static get enableLineBreaks() {\n return !0;\n }\n /**\n * Get Tool toolbox settings\n * icon - Tool icon's SVG\n * title - title to show in toolbox\n */\n static get toolbox() {\n return [\n {\n icon: $e,\n title: \"Unordered List\",\n data: {\n style: \"unordered\"\n }\n },\n {\n icon: Be,\n title: \"Ordered List\",\n data: {\n style: \"ordered\"\n }\n },\n {\n icon: Ae,\n title: \"Checklist\",\n data: {\n style: \"checklist\"\n }\n }\n ];\n }\n /**\n * On paste sanitzation config. Allow only tags that are allowed in the Tool.\n * @returns - paste config object used in editor\n */\n static get pasteConfig() {\n return {\n tags: [\"OL\", \"UL\", \"LI\"]\n };\n }\n /**\n * Convert from text to list with import and export list to text\n */\n static get conversionConfig() {\n return {\n export: (t) => G.joinRecursive(t),\n import: (t, n) => ({\n meta: {},\n items: [\n {\n content: t,\n meta: {},\n items: []\n }\n ],\n style: (n == null ? void 0 : n.defaultStyle) !== void 0 ? n.defaultStyle : \"unordered\"\n })\n };\n }\n /**\n * Get list style name\n */\n get listStyle() {\n return this.data.style || this.defaultListStyle;\n }\n /**\n * Set list style\n * @param style - new style to set\n */\n set listStyle(t) {\n var r;\n this.data.style = t, this.changeTabulatorByStyle();\n const n = this.list.render();\n (r = this.listElement) == null || r.replaceWith(n), this.listElement = n;\n }\n /**\n * Render plugin`s main Element and fill it with saved data\n * @param params - tool constructor options\n * @param params.data - previously saved data\n * @param params.config - user config for Tool\n * @param params.api - Editor.js API\n * @param params.readOnly - read-only mode flag\n */\n constructor({ data: t, config: n, api: r, readOnly: i, block: a }) {\n var s;\n this.api = r, this.readOnly = i, this.config = n, this.block = a, this.defaultListStyle = ((s = this.config) == null ? void 0 : s.defaultStyle) || \"unordered\";\n const l = {\n style: this.defaultListStyle,\n meta: {},\n items: []\n };\n this.data = Object.keys(t).length ? fr(t) : l, this.listStyle === \"ordered\" && this.data.meta.counterType === void 0 && (this.data.meta.counterType = \"numeric\"), this.changeTabulatorByStyle();\n }\n /**\n * Convert from list to text for conversionConfig\n * @param data - current data of the list\n * @returns - string of the recursively merged contents of the items of the list\n */\n static joinRecursive(t) {\n return t.items.map((n) => `${n.content} ${G.joinRecursive(n)}`).join(\"\");\n }\n /**\n * Function that is responsible for content rendering\n * @returns rendered list wrapper with all contents\n */\n render() {\n return this.listElement = this.list.render(), this.listElement;\n }\n /**\n * Function that is responsible for content saving\n * @returns formatted content used in editor\n */\n save() {\n return this.data = this.list.save(), this.data;\n }\n /**\n * Function that is responsible for mergind two lists into one\n * @param data - data of the next standing list, that should be merged with current\n */\n merge(t) {\n this.list.merge(t);\n }\n /**\n * Creates Block Tune allowing to change the list style\n * @returns array of tune configs\n */\n renderSettings() {\n const t = [\n {\n label: this.api.i18n.t(\"Unordered\"),\n icon: $e,\n closeOnActivate: !0,\n isActive: this.listStyle == \"unordered\",\n onActivate: () => {\n this.listStyle = \"unordered\";\n }\n },\n {\n label: this.api.i18n.t(\"Ordered\"),\n icon: Be,\n closeOnActivate: !0,\n isActive: this.listStyle == \"ordered\",\n onActivate: () => {\n this.listStyle = \"ordered\";\n }\n },\n {\n label: this.api.i18n.t(\"Checklist\"),\n icon: Ae,\n closeOnActivate: !0,\n isActive: this.listStyle == \"checklist\",\n onActivate: () => {\n this.listStyle = \"checklist\";\n }\n }\n ];\n if (this.listStyle === \"ordered\") {\n const n = or(\n (a) => this.changeStartWith(Number(a)),\n {\n value: String(this.data.meta.start ?? 1),\n placeholder: \"\",\n attributes: {\n required: \"true\"\n },\n sanitize: (a) => ur(a)\n }\n ), r = [\n {\n label: this.api.i18n.t(\"Start with\"),\n icon: It,\n children: {\n items: [\n {\n element: n,\n // @ts-expect-error ts(2820) can not use PopoverItem enum from editor.js types\n type: \"html\"\n }\n ]\n }\n }\n ], i = {\n label: this.api.i18n.t(\"Counter type\"),\n icon: He.get(this.data.meta.counterType),\n children: {\n items: []\n }\n };\n M.forEach((a, l) => {\n i.children.items.push({\n title: this.api.i18n.t(l),\n icon: He.get(M.get(l)),\n isActive: this.data.meta.counterType === M.get(l),\n closeOnActivate: !0,\n onActivate: () => {\n this.changeCounters(M.get(l));\n }\n });\n }), t.push({ type: \"separator\" }, ...r, i);\n }\n return t;\n }\n /**\n * On paste callback that is fired from Editor.\n * @param event - event with pasted data\n */\n onPaste(t) {\n const { tagName: n } = t.detail.data;\n switch (n) {\n case \"OL\":\n this.listStyle = \"ordered\";\n break;\n case \"UL\":\n case \"LI\":\n this.listStyle = \"unordered\";\n }\n this.list.onPaste(t);\n }\n /**\n * Handle UL, OL and LI tags paste and returns List data\n * @param element - html element that contains whole list\n */\n pasteHandler(t) {\n return this.list.pasteHandler(t);\n }\n /**\n * Changes ordered list counterType property value\n * @param counterType - new value of the counterType value\n */\n changeCounters(t) {\n var n;\n (n = this.list) == null || n.changeCounters(t), this.data.meta.counterType = t;\n }\n /**\n * Changes ordered list start property value\n * @param index - new value of the start property\n */\n changeStartWith(t) {\n var n;\n (n = this.list) == null || n.changeStartWith(t), this.data.meta.start = t;\n }\n /**\n * This method allows changing tabulator respectfully to passed style\n */\n changeTabulatorByStyle() {\n switch (this.listStyle) {\n case \"ordered\":\n this.list = new K(\n {\n data: this.data,\n readOnly: this.readOnly,\n api: this.api,\n config: this.config,\n block: this.block\n },\n new v(this.readOnly, this.config)\n );\n break;\n case \"unordered\":\n this.list = new K(\n {\n data: this.data,\n readOnly: this.readOnly,\n api: this.api,\n config: this.config,\n block: this.block\n },\n new b(this.readOnly, this.config)\n );\n break;\n case \"checklist\":\n this.list = new K(\n {\n data: this.data,\n readOnly: this.readOnly,\n api: this.api,\n config: this.config,\n block: this.block\n },\n new f(this.readOnly, this.config)\n );\n break;\n }\n }\n}\nexport {\n G as default\n};\n","import { Controller } from \"@hotwired/stimulus\";\nimport EditorJS from \"@editorjs/editorjs\";\nimport Header from \"@editorjs/header\";\nimport List from \"@editorjs/list\";\n\nexport default class extends Controller {\n static targets = [\"editorContainer\", \"hiddenInput\"];\n static values = {\n jsonData: String,\n };\n connect() {\n this.observer = new MutationObserver(this.initializeEditors.bind(this));\n this.observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n\n this.initializeEditors();\n }\n\n disconnect() {\n this.observer.disconnect();\n }\n\n initializeEditors() {\n const uninitialized = document.querySelectorAll(\".editor:not(.editor-initialized)\");\n uninitialized.forEach(this.initializeEditor.bind(this));\n }\n\n initializeEditor(editorElement) {\n const hiddenInput = editorElement.nextElementSibling;\n\n console.log(\"INITIALISE EDITOR::::::: \", JSON.parse(this.jsonDataValue));\n if (!hiddenInput) return;\n\n const editor = new EditorJS({\n holder: editorElement.id,\n tools: {\n header: Header,\n list: List,\n },\n onChange: async () => {\n const content = await editor.save();\n hiddenInput.value = JSON.stringify(content);\n },\n minHeight: 300,\n placeholder: \"Type text or paste link\",\n // Custom placeholder for new blocks\n blockStyles: {\n paragraph: {\n placeholder: \"Type text or paste link\",\n },\n },\n data: JSON.parse(this.jsonDataValue),\n });\n\n editorElement.classList.add(\"editor-initialized\");\n }\n}\n","import { Application } from \"@hotwired/stimulus\";\nimport { definitionsFromContext } from \"@hotwired/stimulus-webpack-helpers\";\n\nconst application = Application.start();\nconst context = require.context(\".\", true, /\\.js$/);\napplication.load(definitionsFromContext(context));\n","/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"loader\"];\n\n initialize() {\n console.log(\"INITIALISING INFINTIE SCROLL CONTROLLER::::::\", this.element.dataset, this.loaderTargets);\n this.handleTurboStreamLoad = this.handleTurboStreamLoad.bind(this);\n this.handleTurboStreamFetchRequest = this.handleTurboStreamFetchRequest.bind(this);\n }\n\n connect() {\n // this.createIntersectionObserver();\n document.addEventListener(\"turbo:before-fetch-request\", this.handleTurboStreamFetchRequest);\n document.addEventListener(\"turbo:before-stream-render\", this.handleTurboStreamLoad);\n }\n\n disconnect() {\n document.addEventListener(\"turbo:before-fetch-request\", this.handleTurboStreamFetchRequest);\n document.removeEventListener(\"turbo:before-stream-render\", this.handleTurboStreamLoad);\n }\n\n handleTurboStreamFetchRequest(event) {\n console.log(\"handleTurboStreamFetchRequest:::::: \", event, this.element);\n const streamElement = event.target;\n\n // Check if the stream element has a target frame\n const turboFrameTarget = streamElement.getAttribute(\"id\");\n\n const feedType = this.element.dataset.feedType;\n\n // If feed_type matches the turbo frame target\n if (`${feedType}_pagination` === turboFrameTarget) {\n // Add the hidden class to the loader target\n this.loaderTarget.classList.remove(\"hidden\");\n console.log(\"Loader revealed for controller with feed_type:\", feedType);\n }\n }\n\n handleTurboStreamLoad(event) {\n console.log(\"handleTurboStreamLoad:::::: \", event, this.element);\n const streamElement = event.target;\n\n // Check if the stream element has a target frame\n const turboFrameTarget = streamElement.getAttribute(\"target\");\n\n const feedType = this.element.dataset.feedType;\n\n // If feed_type matches the turbo frame target\n if (`${feedType}_pagination` === turboFrameTarget) {\n // Add the hidden class to the loader target\n this.loaderTarget.classList.add(\"hidden\");\n console.log(\"Loader hidden for controller with feed_type:\", feedType);\n }\n }\n\n // ... (rest of the code remains the same)\n}\n","import { Controller } from \"@hotwired/stimulus\";\n// // import videojs from \"video.js\";\n\nexport default class extends Controller {\n // static targets = [\"unitialisedAudio\"];\n // connect() {\n // this.initialiseAudioPlayers();\n // const self = this;\n // this.element.addEventListener(\"pagination::itemsLoaded\", function () {\n // setTimeout(() => self.initialiseAudioPlayers(), 300);\n // });\n // this.element.addEventListener(\"contentLoader::loaded\", function () {\n // setTimeout(() => self.initialiseAudioPlayers(), 300);\n // });\n // this.element.addEventListener(\"pagination::itemsLoaded\", function () {\n // setTimeout(() => self.initialiseAudioPlayers(), 300);\n // });\n // }\n // initialiseAudioPlayers() {\n // // this.unitialisedAudioTargets.forEach((target) => {\n // // target.dataset.target = target.dataset.target.replace(\"initialise-audio.unitialisedAudio\", \"\");\n // // var player = videojs(target, {\n // // controlBar: {\n // // fullscreenToggle: false,\n // // pictureInPictureToggle: false,\n // // },\n // // });\n // // var bpb = player.getChild(\"BigPlayButton\");\n // // bpb.controlText(\"Play audio\");\n // // });\n // }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"image\", \"dialog\", \"zoomedImage\", \"download\", \"share\", \"title\"];\n\n open(event) {\n event.preventDefault();\n\n this.dialogTarget.showModal();\n this.dialogTarget.classList.toggle(\"hidden\");\n this.element.classList.toggle(\"overflow-y-hidden\");\n this.#set(event.target.closest(\"a\"));\n }\n\n reset() {\n this.dialogTarget.classList.toggle(\"hidden\");\n this.element.classList.toggle(\"overflow-y-hidden\");\n this.zoomedImageTarget.src = \"\";\n this.downloadTarget.href = \"\";\n this.shareTarget.dataset.webShareFilesValue = \"\";\n }\n\n #set(target) {\n this.zoomedImageTarget.src = target.href;\n this.titleTarget.textContent = target.dataset.title;\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"content\", \"dialog\", \"overlay\"];\n\n open(event) {\n event.preventDefault();\n const url = event.currentTarget.getAttribute(\"href\") || event.currentTarget.dataset.href;\n const frame = event.currentTarget.dataset.modalFrame || \"modal-content\";\n console.log(\"FRAME:::::: \", url, frame);\n // console.log(\"OVERLAY TARGET::::: \", this.overlayTarget);\n this.overlayTarget.classList.toggle(\"hidden\");\n this.element.classList.toggle(\"overflow-y-hidden\");\n\n // Fetch content from the URL\n fetch(url)\n .then((response) => response.text())\n .then((html) => {\n // Inject the fetched content into the content target\n this.contentTarget.innerHTML = html;\n })\n .catch((error) => {\n console.error(\"Error loading content:\", error);\n });\n\n // const adjacentElement = event.target.nextElementSibling;\n\n // console.log(\"VISITING TURBO FRAME::::: \", url, frame);\n\n // // Wait for the frame to load completely\n // document.addEventListener(\n // \"turbo:frame-load\",\n // (event) => {\n // console.log(\"TURBO FRAME LOADED:::::: \", event.target);\n // if (event.target.id === frame) {\n // console.log(\"EVENT TARGET::::: \", event.target.id);\n // console.log(\"ADJACENT ELEMENT:::: \", adjacentElement);\n // // This arrow function ensures that `adjacentElement` and `this` are properly captured\n // this.contentTarget.innerHTML = adjacentElement.innerHTML;\n // console.log(\"Content set to:\", adjacentElement.innerHTML);\n // }\n // },\n // { once: true }\n // ); // Listen once to the event, then stop listening\n\n // Turbo.visit(url, { frame: frame });\n }\n\n close() {\n this.overlayTarget.classList.toggle(\"hidden\");\n this.element.classList.toggle(\"overflow-y-hidden\");\n this.contentTarget.innerHTML = \"\";\n }\n}\n","/**\n * Low-pass filter using Exponential Moving Averages (aka exponential smoothing)\n * Filters a sequence of values by updating the mixing the previous output value\n * with the new input using the exponential window function\n *\n * @param newValue the n-th value of the sequence\n * @param previousSmoothedValue the exponential average of the first n-1 values\n * @param halfLife value of `dt` to move the smoothed value halfway between `previousFilteredValue` and `newValue`\n * @param dt time elapsed between adding the (n-1)th and the n-th values\n * @returns the exponential average of the first n values\n */\nexport default function emaFilter(newValue, previousSmoothedValue, halfLife, dt) {\n if (halfLife === 0 || newValue === previousSmoothedValue) return newValue;\n if (dt === 0) return previousSmoothedValue;\n return newValue + (previousSmoothedValue - newValue) * 2 ** (-dt / halfLife);\n}","export default {\n STATE_ERROR: 'error',\n STATE_WAITING: 'waiting',\n STATE_PREPROCESSING: 'preprocessing',\n STATE_UPLOADING: 'uploading',\n STATE_POSTPROCESSING: 'postprocessing',\n STATE_COMPLETE: 'complete'\n};","export default function calculateProcessingProgress(files) {\n const values = [];\n let mode = 'indeterminate';\n let message;\n for (const {\n progress\n } of Object.values(files)) {\n const {\n preprocess,\n postprocess\n } = progress;\n // In the future we should probably do this differently. For now we'll take the\n // mode and message from the first file…\n if (message == null && (preprocess || postprocess)) {\n ;\n ({\n mode,\n message\n } = preprocess || postprocess);\n }\n if ((preprocess == null ? void 0 : preprocess.mode) === 'determinate') values.push(preprocess.value);\n if ((postprocess == null ? void 0 : postprocess.mode) === 'determinate') values.push(postprocess.value);\n }\n const value = values.reduce((total, progressValue) => {\n return total + progressValue / values.length;\n }, 0);\n return {\n mode,\n message,\n value\n };\n}","import secondsToTime from \"./secondsToTime.js\";\nexport default function prettyETA(seconds) {\n const time = secondsToTime(seconds);\n\n // Only display hours and minutes if they are greater than 0 but always\n // display minutes if hours is being displayed\n // Display a leading zero if the there is a preceding unit: 1m 05s, but 5s\n const hoursStr = time.hours === 0 ? '' : `${time.hours}h`;\n const minutesStr = time.minutes === 0 ? '' : `${time.hours === 0 ? time.minutes : ` ${time.minutes.toString(10).padStart(2, '0')}`}m`;\n const secondsStr = time.hours !== 0 ? '' : `${time.minutes === 0 ? time.seconds : ` ${time.seconds.toString(10).padStart(2, '0')}`}s`;\n return `${hoursStr}${minutesStr}${secondsStr}`;\n}","export default function secondsToTime(rawSeconds) {\n const hours = Math.floor(rawSeconds / 3600) % 24;\n const minutes = Math.floor(rawSeconds / 60) % 60;\n const seconds = Math.floor(rawSeconds % 60);\n return {\n hours,\n minutes,\n seconds\n };\n}","import { h } from 'preact';\nimport classNames from 'classnames';\nimport prettierBytes from '@transloadit/prettier-bytes';\nimport prettyETA from '@uppy/utils/lib/prettyETA';\nimport statusBarStates from \"./StatusBarStates.js\";\nconst DOT = `\\u00B7`;\nconst renderDot = () => ` ${DOT} `;\nfunction UploadBtn(props) {\n const {\n newFiles,\n isUploadStarted,\n recoveredState,\n i18n,\n uploadState,\n isSomeGhost,\n startUpload\n } = props;\n const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--upload', {\n 'uppy-c-btn-primary': uploadState === statusBarStates.STATE_WAITING\n }, {\n 'uppy-StatusBar-actionBtn--disabled': isSomeGhost\n });\n const uploadBtnText = newFiles && isUploadStarted && !recoveredState ? i18n('uploadXNewFiles', {\n smart_count: newFiles\n }) : i18n('uploadXFiles', {\n smart_count: newFiles\n });\n return h(\"button\", {\n type: \"button\",\n className: uploadBtnClassNames,\n \"aria-label\": i18n('uploadXFiles', {\n smart_count: newFiles\n }),\n onClick: startUpload,\n disabled: isSomeGhost,\n \"data-uppy-super-focusable\": true\n }, uploadBtnText);\n}\nfunction RetryBtn(props) {\n const {\n i18n,\n uppy\n } = props;\n return h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry\",\n \"aria-label\": i18n('retryUpload'),\n onClick: () => uppy.retryAll().catch(() => {\n /* Error reported and handled via an event */\n }),\n \"data-uppy-super-focusable\": true,\n \"data-cy\": \"retry\"\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"8\",\n height: \"10\",\n viewBox: \"0 0 8 10\"\n }, h(\"path\", {\n d: \"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z\"\n })), i18n('retry'));\n}\nfunction CancelBtn(props) {\n const {\n i18n,\n uppy\n } = props;\n return h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n title: i18n('cancel'),\n \"aria-label\": i18n('cancel'),\n onClick: () => uppy.cancelAll(),\n \"data-cy\": \"cancel\",\n \"data-uppy-super-focusable\": true\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\"\n }, h(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, h(\"circle\", {\n fill: \"#888\",\n cx: \"8\",\n cy: \"8\",\n r: \"8\"\n }), h(\"path\", {\n fill: \"#FFF\",\n d: \"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z\"\n }))));\n}\nfunction PauseResumeButton(props) {\n const {\n isAllPaused,\n i18n,\n isAllComplete,\n resumableUploads,\n uppy\n } = props;\n const title = isAllPaused ? i18n('resume') : i18n('pause');\n function togglePauseResume() {\n if (isAllComplete) return;\n if (!resumableUploads) {\n uppy.cancelAll();\n return;\n }\n if (isAllPaused) {\n uppy.resumeAll();\n return;\n }\n uppy.pauseAll();\n }\n return h(\"button\", {\n title: title,\n \"aria-label\": title,\n className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n type: \"button\",\n onClick: togglePauseResume,\n \"data-cy\": \"togglePauseResume\",\n \"data-uppy-super-focusable\": true\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\"\n }, h(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, h(\"circle\", {\n fill: \"#888\",\n cx: \"8\",\n cy: \"8\",\n r: \"8\"\n }), h(\"path\", {\n fill: \"#FFF\",\n d: isAllPaused ? 'M6 4.25L11.5 8 6 11.75z' : 'M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z'\n }))));\n}\nfunction DoneBtn(props) {\n const {\n i18n,\n doneButtonHandler\n } = props;\n return h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done\",\n onClick: doneButtonHandler,\n \"data-uppy-super-focusable\": true\n }, i18n('done'));\n}\nfunction LoadingSpinner() {\n return h(\"svg\", {\n className: \"uppy-StatusBar-spinner\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"14\",\n height: \"14\"\n }, h(\"path\", {\n d: \"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0\",\n fillRule: \"evenodd\"\n }));\n}\nfunction ProgressBarProcessing(props) {\n const {\n progress\n } = props;\n const {\n value,\n mode,\n message\n } = progress;\n const dot = `\\u00B7`;\n return h(\"div\", {\n className: \"uppy-StatusBar-content\"\n }, h(LoadingSpinner, null), mode === 'determinate' ? `${Math.round(value * 100)}% ${dot} ` : '', message);\n}\nfunction ProgressDetails(props) {\n const {\n numUploads,\n complete,\n totalUploadedSize,\n totalSize,\n totalETA,\n i18n\n } = props;\n const ifShowFilesUploadedOfTotal = numUploads > 1;\n return h(\"div\", {\n className: \"uppy-StatusBar-statusSecondary\"\n }, ifShowFilesUploadedOfTotal && i18n('filesUploadedOfTotal', {\n complete,\n smart_count: numUploads\n }), h(\"span\", {\n className: \"uppy-StatusBar-additionalInfo\"\n }, ifShowFilesUploadedOfTotal && renderDot(), i18n('dataUploadedOfTotal', {\n complete: prettierBytes(totalUploadedSize),\n total: prettierBytes(totalSize)\n }), renderDot(), i18n('xTimeLeft', {\n time: prettyETA(totalETA)\n })));\n}\nfunction FileUploadCount(props) {\n const {\n i18n,\n complete,\n numUploads\n } = props;\n return h(\"div\", {\n className: \"uppy-StatusBar-statusSecondary\"\n }, i18n('filesUploadedOfTotal', {\n complete,\n smart_count: numUploads\n }));\n}\nfunction UploadNewlyAddedFiles(props) {\n const {\n i18n,\n newFiles,\n startUpload\n } = props;\n const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--uploadNewlyAdded');\n return h(\"div\", {\n className: \"uppy-StatusBar-statusSecondary\"\n }, h(\"div\", {\n className: \"uppy-StatusBar-statusSecondaryHint\"\n }, i18n('xMoreFilesAdded', {\n smart_count: newFiles\n })), h(\"button\", {\n type: \"button\",\n className: uploadBtnClassNames,\n \"aria-label\": i18n('uploadXFiles', {\n smart_count: newFiles\n }),\n onClick: startUpload\n }, i18n('upload')));\n}\nfunction ProgressBarUploading(props) {\n const {\n i18n,\n supportsUploadProgress,\n totalProgress,\n showProgressDetails,\n isUploadStarted,\n isAllComplete,\n isAllPaused,\n newFiles,\n numUploads,\n complete,\n totalUploadedSize,\n totalSize,\n totalETA,\n startUpload\n } = props;\n const showUploadNewlyAddedFiles = newFiles && isUploadStarted;\n if (!isUploadStarted || isAllComplete) {\n return null;\n }\n const title = isAllPaused ? i18n('paused') : i18n('uploading');\n function renderProgressDetails() {\n if (!isAllPaused && !showUploadNewlyAddedFiles && showProgressDetails) {\n if (supportsUploadProgress) {\n return h(ProgressDetails, {\n numUploads: numUploads,\n complete: complete,\n totalUploadedSize: totalUploadedSize,\n totalSize: totalSize,\n totalETA: totalETA,\n i18n: i18n\n });\n }\n return h(FileUploadCount, {\n i18n: i18n,\n complete: complete,\n numUploads: numUploads\n });\n }\n return null;\n }\n return h(\"div\", {\n className: \"uppy-StatusBar-content\",\n \"aria-label\": title,\n title: title\n }, !isAllPaused ? h(LoadingSpinner, null) : null, h(\"div\", {\n className: \"uppy-StatusBar-status\"\n }, h(\"div\", {\n className: \"uppy-StatusBar-statusPrimary\"\n }, supportsUploadProgress ? `${title}: ${totalProgress}%` : title), renderProgressDetails(), showUploadNewlyAddedFiles ? h(UploadNewlyAddedFiles, {\n i18n: i18n,\n newFiles: newFiles,\n startUpload: startUpload\n }) : null));\n}\nfunction ProgressBarComplete(props) {\n const {\n i18n\n } = props;\n return h(\"div\", {\n className: \"uppy-StatusBar-content\",\n role: \"status\",\n title: i18n('complete')\n }, h(\"div\", {\n className: \"uppy-StatusBar-status\"\n }, h(\"div\", {\n className: \"uppy-StatusBar-statusPrimary\"\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n width: \"15\",\n height: \"11\",\n viewBox: \"0 0 15 11\"\n }, h(\"path\", {\n d: \"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z\"\n })), i18n('complete'))));\n}\nfunction ProgressBarError(props) {\n const {\n error,\n i18n,\n complete,\n numUploads\n } = props;\n function displayErrorAlert() {\n const errorMessage = `${i18n('uploadFailed')} \\n\\n ${error}`;\n // eslint-disable-next-line no-alert\n alert(errorMessage); // TODO: move to custom alert implementation\n }\n return h(\"div\", {\n className: \"uppy-StatusBar-content\",\n title: i18n('uploadFailed')\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n width: \"11\",\n height: \"11\",\n viewBox: \"0 0 11 11\"\n }, h(\"path\", {\n d: \"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z\"\n })), h(\"div\", {\n className: \"uppy-StatusBar-status\"\n }, h(\"div\", {\n className: \"uppy-StatusBar-statusPrimary\"\n }, i18n('uploadFailed'), h(\"button\", {\n className: \"uppy-u-reset uppy-StatusBar-details\",\n \"aria-label\": i18n('showErrorDetails'),\n \"data-microtip-position\": \"top-right\",\n \"data-microtip-size\": \"medium\",\n onClick: displayErrorAlert,\n type: \"button\"\n }, \"?\")), h(FileUploadCount, {\n i18n: i18n,\n complete: complete,\n numUploads: numUploads\n })));\n}\nexport { UploadBtn, RetryBtn, CancelBtn, PauseResumeButton, DoneBtn, LoadingSpinner, ProgressDetails, ProgressBarProcessing, ProgressBarError, ProgressBarUploading, ProgressBarComplete };","import { h } from 'preact';\nimport classNames from 'classnames';\nimport statusBarStates from \"./StatusBarStates.js\";\nimport calculateProcessingProgress from \"./calculateProcessingProgress.js\";\nimport { UploadBtn, RetryBtn, CancelBtn, PauseResumeButton, DoneBtn, ProgressBarProcessing, ProgressBarError, ProgressBarUploading, ProgressBarComplete } from \"./Components.js\";\nconst {\n STATE_ERROR,\n STATE_WAITING,\n STATE_PREPROCESSING,\n STATE_UPLOADING,\n STATE_POSTPROCESSING,\n STATE_COMPLETE\n} = statusBarStates;\nexport default function StatusBarUI(_ref) {\n let {\n newFiles,\n allowNewUpload,\n isUploadInProgress,\n isAllPaused,\n resumableUploads,\n error,\n hideUploadButton = undefined,\n hidePauseResumeButton = false,\n hideCancelButton = false,\n hideRetryButton = false,\n recoveredState,\n uploadState,\n totalProgress,\n files,\n supportsUploadProgress,\n hideAfterFinish = false,\n isSomeGhost,\n doneButtonHandler = undefined,\n isUploadStarted,\n i18n,\n startUpload,\n uppy,\n isAllComplete,\n showProgressDetails = undefined,\n numUploads,\n complete,\n totalSize,\n totalETA,\n totalUploadedSize\n } = _ref;\n function getProgressValue() {\n switch (uploadState) {\n case STATE_POSTPROCESSING:\n case STATE_PREPROCESSING:\n {\n const progress = calculateProcessingProgress(files);\n if (progress.mode === 'determinate') {\n return progress.value * 100;\n }\n return totalProgress;\n }\n case STATE_ERROR:\n {\n return null;\n }\n case STATE_UPLOADING:\n {\n if (!supportsUploadProgress) {\n return null;\n }\n return totalProgress;\n }\n default:\n return totalProgress;\n }\n }\n function getIsIndeterminate() {\n switch (uploadState) {\n case STATE_POSTPROCESSING:\n case STATE_PREPROCESSING:\n {\n const {\n mode\n } = calculateProcessingProgress(files);\n return mode === 'indeterminate';\n }\n case STATE_UPLOADING:\n {\n if (!supportsUploadProgress) {\n return true;\n }\n return false;\n }\n default:\n return false;\n }\n }\n const progressValue = getProgressValue();\n const width = progressValue != null ? progressValue : 100;\n const showUploadBtn = !error && newFiles && (!isUploadInProgress && !isAllPaused || recoveredState) && allowNewUpload && !hideUploadButton;\n const showCancelBtn = !hideCancelButton && uploadState !== STATE_WAITING && uploadState !== STATE_COMPLETE;\n const showPauseResumeBtn = resumableUploads && !hidePauseResumeButton && uploadState === STATE_UPLOADING;\n const showRetryBtn = error && !isAllComplete && !hideRetryButton;\n const showDoneBtn = doneButtonHandler && uploadState === STATE_COMPLETE;\n const progressClassNames = classNames('uppy-StatusBar-progress', {\n 'is-indeterminate': getIsIndeterminate()\n });\n const statusBarClassNames = classNames('uppy-StatusBar', `is-${uploadState}`, {\n 'has-ghosts': isSomeGhost\n });\n const progressBarStateEl = (() => {\n switch (uploadState) {\n case STATE_PREPROCESSING:\n case STATE_POSTPROCESSING:\n return h(ProgressBarProcessing, {\n progress: calculateProcessingProgress(files)\n });\n case STATE_COMPLETE:\n return h(ProgressBarComplete, {\n i18n: i18n\n });\n case STATE_ERROR:\n return h(ProgressBarError, {\n error: error,\n i18n: i18n,\n numUploads: numUploads,\n complete: complete\n });\n case STATE_UPLOADING:\n return h(ProgressBarUploading, {\n i18n: i18n,\n supportsUploadProgress: supportsUploadProgress,\n totalProgress: totalProgress,\n showProgressDetails: showProgressDetails,\n isUploadStarted: isUploadStarted,\n isAllComplete: isAllComplete,\n isAllPaused: isAllPaused,\n newFiles: newFiles,\n numUploads: numUploads,\n complete: complete,\n totalUploadedSize: totalUploadedSize,\n totalSize: totalSize,\n totalETA: totalETA,\n startUpload: startUpload\n });\n default:\n return null;\n }\n })();\n const atLeastOneAction = showUploadBtn || showRetryBtn || showPauseResumeBtn || showCancelBtn || showDoneBtn;\n const thereIsNothingInside = !atLeastOneAction && !progressBarStateEl;\n const isHidden = thereIsNothingInside || uploadState === STATE_COMPLETE && hideAfterFinish;\n return h(\"div\", {\n className: statusBarClassNames,\n \"aria-hidden\": isHidden\n }, h(\"div\", {\n className: progressClassNames,\n style: {\n width: `${width}%`\n },\n role: \"progressbar\",\n \"aria-label\": `${width}%`,\n \"aria-valuetext\": `${width}%`,\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100,\n \"aria-valuenow\": progressValue\n }), progressBarStateEl, h(\"div\", {\n className: \"uppy-StatusBar-actions\"\n }, showUploadBtn ? h(UploadBtn, {\n newFiles: newFiles,\n isUploadStarted: isUploadStarted,\n recoveredState: recoveredState,\n i18n: i18n,\n isSomeGhost: isSomeGhost,\n startUpload: startUpload,\n uploadState: uploadState\n }) : null, showRetryBtn ? h(RetryBtn, {\n i18n: i18n,\n uppy: uppy\n }) : null, showPauseResumeBtn ? h(PauseResumeButton, {\n isAllPaused: isAllPaused,\n i18n: i18n,\n isAllComplete: isAllComplete,\n resumableUploads: resumableUploads,\n uppy: uppy\n }) : null, showCancelBtn ? h(CancelBtn, {\n i18n: i18n,\n uppy: uppy\n }) : null, showDoneBtn ? h(DoneBtn, {\n i18n: i18n,\n doneButtonHandler: doneButtonHandler\n }) : null));\n}","export default {\n strings: {\n // Shown in the status bar while files are being uploaded.\n uploading: 'Uploading',\n // Shown in the status bar once all files have been uploaded.\n complete: 'Complete',\n // Shown in the status bar if an upload failed.\n uploadFailed: 'Upload failed',\n // Shown in the status bar while the upload is paused.\n paused: 'Paused',\n // Used as the label for the button that retries an upload.\n retry: 'Retry',\n // Used as the label for the button that cancels an upload.\n cancel: 'Cancel',\n // Used as the label for the button that pauses an upload.\n pause: 'Pause',\n // Used as the label for the button that resumes an upload.\n resume: 'Resume',\n // Used as the label for the button that resets the upload state after an upload\n done: 'Done',\n // When `showProgressDetails` is set, shows the number of files that have been fully uploaded so far.\n filesUploadedOfTotal: {\n 0: '%{complete} of %{smart_count} file uploaded',\n 1: '%{complete} of %{smart_count} files uploaded'\n },\n // When `showProgressDetails` is set, shows the amount of bytes that have been uploaded so far.\n dataUploadedOfTotal: '%{complete} of %{total}',\n // When `showProgressDetails` is set, shows an estimation of how long the upload will take to complete.\n xTimeLeft: '%{time} left',\n // Used as the label for the button that starts an upload.\n uploadXFiles: {\n 0: 'Upload %{smart_count} file',\n 1: 'Upload %{smart_count} files'\n },\n // Used as the label for the button that starts an upload, if another upload has been started in the past\n // and new files were added later.\n uploadXNewFiles: {\n 0: 'Upload +%{smart_count} file',\n 1: 'Upload +%{smart_count} files'\n },\n upload: 'Upload',\n retryUpload: 'Retry upload',\n xMoreFilesAdded: {\n 0: '%{smart_count} more file added',\n 1: '%{smart_count} more files added'\n },\n showErrorDetails: 'Show error details'\n }\n};","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport { UIPlugin } from '@uppy/core';\nimport emaFilter from '@uppy/utils/lib/emaFilter';\nimport getTextDirection from '@uppy/utils/lib/getTextDirection';\nimport statusBarStates from \"./StatusBarStates.js\";\nimport StatusBarUI from \"./StatusBarUI.js\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.0.3\"\n};\nimport locale from \"./locale.js\";\nconst speedFilterHalfLife = 2000;\nconst ETAFilterHalfLife = 2000;\nfunction getUploadingState(error, isAllComplete, recoveredState, files) {\n if (error) {\n return statusBarStates.STATE_ERROR;\n }\n if (isAllComplete) {\n return statusBarStates.STATE_COMPLETE;\n }\n if (recoveredState) {\n return statusBarStates.STATE_WAITING;\n }\n let state = statusBarStates.STATE_WAITING;\n const fileIDs = Object.keys(files);\n for (let i = 0; i < fileIDs.length; i++) {\n const {\n progress\n } = files[fileIDs[i]];\n // If ANY files are being uploaded right now, show the uploading state.\n if (progress.uploadStarted && !progress.uploadComplete) {\n return statusBarStates.STATE_UPLOADING;\n }\n // If files are being preprocessed AND postprocessed at this time, we show the\n // preprocess state. If any files are being uploaded we show uploading.\n if (progress.preprocess) {\n state = statusBarStates.STATE_PREPROCESSING;\n }\n // If NO files are being preprocessed or uploaded right now, but some files are\n // being postprocessed, show the postprocess state.\n if (progress.postprocess && state !== statusBarStates.STATE_PREPROCESSING) {\n state = statusBarStates.STATE_POSTPROCESSING;\n }\n }\n return state;\n}\nconst defaultOptions = {\n hideUploadButton: false,\n hideRetryButton: false,\n hidePauseResumeButton: false,\n hideCancelButton: false,\n showProgressDetails: false,\n hideAfterFinish: true,\n doneButtonHandler: null\n};\n\n/**\n * StatusBar: renders a status bar with upload/pause/resume/cancel/retry buttons,\n * progress percentage and time remaining.\n */\nvar _lastUpdateTime = /*#__PURE__*/_classPrivateFieldLooseKey(\"lastUpdateTime\");\nvar _previousUploadedBytes = /*#__PURE__*/_classPrivateFieldLooseKey(\"previousUploadedBytes\");\nvar _previousSpeed = /*#__PURE__*/_classPrivateFieldLooseKey(\"previousSpeed\");\nvar _previousETA = /*#__PURE__*/_classPrivateFieldLooseKey(\"previousETA\");\nvar _computeSmoothETA = /*#__PURE__*/_classPrivateFieldLooseKey(\"computeSmoothETA\");\nvar _onUploadStart = /*#__PURE__*/_classPrivateFieldLooseKey(\"onUploadStart\");\nexport default class StatusBar extends UIPlugin {\n constructor(uppy, opts) {\n super(uppy, {\n ...defaultOptions,\n ...opts\n });\n Object.defineProperty(this, _computeSmoothETA, {\n value: _computeSmoothETA2\n });\n Object.defineProperty(this, _lastUpdateTime, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _previousUploadedBytes, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _previousSpeed, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _previousETA, {\n writable: true,\n value: void 0\n });\n this.startUpload = () => {\n return this.uppy.upload().catch(() => {\n // Error logged in Core\n });\n };\n Object.defineProperty(this, _onUploadStart, {\n writable: true,\n value: () => {\n const {\n recoveredState\n } = this.uppy.getState();\n _classPrivateFieldLooseBase(this, _previousSpeed)[_previousSpeed] = null;\n _classPrivateFieldLooseBase(this, _previousETA)[_previousETA] = null;\n if (recoveredState) {\n _classPrivateFieldLooseBase(this, _previousUploadedBytes)[_previousUploadedBytes] = Object.values(recoveredState.files).reduce((pv, _ref) => {\n let {\n progress\n } = _ref;\n return pv + progress.bytesUploaded;\n }, 0);\n\n // We don't set `#lastUpdateTime` at this point because the upload won't\n // actually resume until the user asks for it.\n\n this.uppy.emit('restore-confirmed');\n return;\n }\n _classPrivateFieldLooseBase(this, _lastUpdateTime)[_lastUpdateTime] = performance.now();\n _classPrivateFieldLooseBase(this, _previousUploadedBytes)[_previousUploadedBytes] = 0;\n }\n });\n this.id = this.opts.id || 'StatusBar';\n this.title = 'StatusBar';\n this.type = 'progressindicator';\n this.defaultLocale = locale;\n this.i18nInit();\n this.render = this.render.bind(this);\n this.install = this.install.bind(this);\n }\n render(state) {\n const {\n capabilities,\n files,\n allowNewUpload,\n totalProgress,\n error,\n recoveredState\n } = state;\n const {\n newFiles,\n startedFiles,\n completeFiles,\n isUploadStarted,\n isAllComplete,\n isAllPaused,\n isUploadInProgress,\n isSomeGhost\n } = this.uppy.getObjectOfFilesPerState();\n\n // If some state was recovered, we want to show Upload button/counter\n // for all the files, because in this case it’s not an Upload button,\n // but “Confirm Restore Button”\n const newFilesOrRecovered = recoveredState ? Object.values(files) : newFiles;\n const resumableUploads = !!capabilities.resumableUploads;\n const supportsUploadProgress = capabilities.uploadProgress !== false;\n let totalSize = 0;\n let totalUploadedSize = 0;\n startedFiles.forEach(file => {\n totalSize += file.progress.bytesTotal || 0;\n totalUploadedSize += file.progress.bytesUploaded || 0;\n });\n const totalETA = _classPrivateFieldLooseBase(this, _computeSmoothETA)[_computeSmoothETA]({\n uploaded: totalUploadedSize,\n total: totalSize,\n remaining: totalSize - totalUploadedSize\n });\n return StatusBarUI({\n error,\n uploadState: getUploadingState(error, isAllComplete, recoveredState, state.files || {}),\n allowNewUpload,\n totalProgress,\n totalSize,\n totalUploadedSize,\n isAllComplete: false,\n isAllPaused,\n isUploadStarted,\n isUploadInProgress,\n isSomeGhost,\n recoveredState,\n complete: completeFiles.length,\n newFiles: newFilesOrRecovered.length,\n numUploads: startedFiles.length,\n totalETA,\n files,\n i18n: this.i18n,\n uppy: this.uppy,\n startUpload: this.startUpload,\n doneButtonHandler: this.opts.doneButtonHandler,\n resumableUploads,\n supportsUploadProgress,\n showProgressDetails: this.opts.showProgressDetails,\n hideUploadButton: this.opts.hideUploadButton,\n hideRetryButton: this.opts.hideRetryButton,\n hidePauseResumeButton: this.opts.hidePauseResumeButton,\n hideCancelButton: this.opts.hideCancelButton,\n hideAfterFinish: this.opts.hideAfterFinish\n });\n }\n onMount() {\n // Set the text direction if the page has not defined one.\n const element = this.el;\n const direction = getTextDirection(element);\n if (!direction) {\n element.dir = 'ltr';\n }\n }\n install() {\n const {\n target\n } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n this.uppy.on('upload', _classPrivateFieldLooseBase(this, _onUploadStart)[_onUploadStart]);\n\n // To cover the use case where the status bar is installed while the upload\n // has started, we set `lastUpdateTime` right away.\n _classPrivateFieldLooseBase(this, _lastUpdateTime)[_lastUpdateTime] = performance.now();\n _classPrivateFieldLooseBase(this, _previousUploadedBytes)[_previousUploadedBytes] = this.uppy.getFiles().reduce((pv, file) => pv + file.progress.bytesUploaded, 0);\n }\n uninstall() {\n this.unmount();\n this.uppy.off('upload', _classPrivateFieldLooseBase(this, _onUploadStart)[_onUploadStart]);\n }\n}\nfunction _computeSmoothETA2(totalBytes) {\n var _classPrivateFieldLoo, _classPrivateFieldLoo2;\n if (totalBytes.total === 0 || totalBytes.remaining === 0) {\n return 0;\n }\n\n // When state is restored, lastUpdateTime is still nullish at this point.\n (_classPrivateFieldLoo2 = (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _lastUpdateTime))[_lastUpdateTime]) != null ? _classPrivateFieldLoo2 : _classPrivateFieldLoo[_lastUpdateTime] = performance.now();\n const dt = performance.now() - _classPrivateFieldLooseBase(this, _lastUpdateTime)[_lastUpdateTime];\n if (dt === 0) {\n var _classPrivateFieldLoo3;\n return Math.round(((_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _previousETA)[_previousETA]) != null ? _classPrivateFieldLoo3 : 0) / 100) / 10;\n }\n const uploadedBytesSinceLastTick = totalBytes.uploaded - _classPrivateFieldLooseBase(this, _previousUploadedBytes)[_previousUploadedBytes];\n _classPrivateFieldLooseBase(this, _previousUploadedBytes)[_previousUploadedBytes] = totalBytes.uploaded;\n\n // uploadedBytesSinceLastTick can be negative in some cases (packet loss?)\n // in which case, we wait for next tick to update ETA.\n if (uploadedBytesSinceLastTick <= 0) {\n var _classPrivateFieldLoo4;\n return Math.round(((_classPrivateFieldLoo4 = _classPrivateFieldLooseBase(this, _previousETA)[_previousETA]) != null ? _classPrivateFieldLoo4 : 0) / 100) / 10;\n }\n const currentSpeed = uploadedBytesSinceLastTick / dt;\n const filteredSpeed = _classPrivateFieldLooseBase(this, _previousSpeed)[_previousSpeed] == null ? currentSpeed : emaFilter(currentSpeed, _classPrivateFieldLooseBase(this, _previousSpeed)[_previousSpeed], speedFilterHalfLife, dt);\n _classPrivateFieldLooseBase(this, _previousSpeed)[_previousSpeed] = filteredSpeed;\n const instantETA = totalBytes.remaining / filteredSpeed;\n const updatedPreviousETA = Math.max(_classPrivateFieldLooseBase(this, _previousETA)[_previousETA] - dt, 0);\n const filteredETA = _classPrivateFieldLooseBase(this, _previousETA)[_previousETA] == null ? instantETA : emaFilter(instantETA, updatedPreviousETA, ETAFilterHalfLife, dt);\n _classPrivateFieldLooseBase(this, _previousETA)[_previousETA] = filteredETA;\n _classPrivateFieldLooseBase(this, _lastUpdateTime)[_lastUpdateTime] = performance.now();\n return Math.round(filteredETA / 100) / 10;\n}\nStatusBar.VERSION = packageJson.version;","import isDOMElement from \"./isDOMElement.js\";\n/**\n * Find one or more DOM elements.\n */\nfunction findAllDOMElements(element) {\n if (typeof element === 'string') {\n const elements = document.querySelectorAll(element);\n return elements.length === 0 ? null : Array.from(elements);\n }\n if (typeof element === 'object' && isDOMElement(element)) {\n return [element];\n }\n return null;\n}\nexport default findAllDOMElements;","/**\n * Recursive function, calls the original callback() when the directory is entirely parsed.\n */\nexport default function getFilesAndDirectoriesFromDirectory(directoryReader, oldEntries, logDropError, _ref) {\n let {\n onSuccess\n } = _ref;\n directoryReader.readEntries(entries => {\n const newEntries = [...oldEntries, ...entries];\n // According to the FileSystem API spec, getFilesAndDirectoriesFromDirectory()\n // must be called until it calls the onSuccess with an empty array.\n if (entries.length) {\n queueMicrotask(() => {\n getFilesAndDirectoriesFromDirectory(directoryReader, newEntries, logDropError, {\n onSuccess\n });\n });\n // Done iterating this particular directory\n } else {\n onSuccess(newEntries);\n }\n },\n // Make sure we resolve on error anyway, it's fine if only one directory couldn't be parsed!\n error => {\n logDropError(error);\n onSuccess(oldEntries);\n });\n}","import getFilesAndDirectoriesFromDirectory from \"./getFilesAndDirectoriesFromDirectory.js\";\n/**\n * Polyfill for the new (experimental) getAsFileSystemHandle API (using the popular webkitGetAsEntry behind the scenes)\n * so that we can switch to the getAsFileSystemHandle API once it (hopefully) becomes standard\n */\nfunction getAsFileSystemHandleFromEntry(entry, logDropError) {\n if (entry == null) return entry;\n return {\n kind:\n // eslint-disable-next-line no-nested-ternary\n entry.isFile ? 'file' : entry.isDirectory ? 'directory' : undefined,\n name: entry.name,\n getFile() {\n return new Promise((resolve, reject) => entry.file(resolve, reject));\n },\n async *values() {\n // If the file is a directory.\n const directoryReader = entry.createReader();\n const entries = await new Promise(resolve => {\n getFilesAndDirectoriesFromDirectory(directoryReader, [], logDropError, {\n onSuccess: dirEntries => resolve(dirEntries.map(file => getAsFileSystemHandleFromEntry(file, logDropError)))\n });\n });\n yield* entries;\n },\n isSameEntry: undefined\n };\n}\nfunction createPromiseToAddFileOrParseDirectory(entry, relativePath, lastResortFile) {\n try {\n if (lastResortFile === void 0) {\n lastResortFile = undefined;\n }\n return async function* () {\n const getNextRelativePath = () => `${relativePath}/${entry.name}`;\n\n // For each dropped item, - make sure it's a file/directory, and start deepening in!\n if (entry.kind === 'file') {\n const file = await entry.getFile();\n if (file != null) {\n ;\n file.relativePath = relativePath ? getNextRelativePath() : null;\n yield file;\n } else if (lastResortFile != null) yield lastResortFile;\n } else if (entry.kind === 'directory') {\n for await (const handle of entry.values()) {\n // Recurse on the directory, appending the dir name to the relative path\n yield* createPromiseToAddFileOrParseDirectory(handle, relativePath ? getNextRelativePath() : entry.name);\n }\n } else if (lastResortFile != null) yield lastResortFile;\n }();\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\n/**\n * Load all files from data transfer, and recursively read any directories.\n * Note that IE is not supported for drag-drop, because IE doesn't support Data Transfers\n *\n * @param {DataTransfer} dataTransfer\n * @param {*} logDropError on error\n */\nexport default async function* getFilesFromDataTransfer(dataTransfer, logDropError) {\n // Retrieving the dropped items must happen synchronously\n // otherwise only the first item gets treated and the other ones are garbage collected.\n // https://github.com/transloadit/uppy/pull/3998\n const fileSystemHandles = await Promise.all(Array.from(dataTransfer.items, async item => {\n var _fileSystemHandle;\n let fileSystemHandle;\n\n // TODO enable getAsFileSystemHandle API once we can get it working with subdirectories\n // IMPORTANT: Need to check isSecureContext *before* calling getAsFileSystemHandle\n // or else Chrome will crash when running in HTTP: https://github.com/transloadit/uppy/issues/4133\n // if (window.isSecureContext && item.getAsFileSystemHandle != null)\n // fileSystemHandle = await item.getAsFileSystemHandle()\n\n // `webkitGetAsEntry` exists in all popular browsers (including non-WebKit browsers),\n // however it may be renamed to getAsEntry() in the future, so you should code defensively, looking for both.\n // from https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry\n const getAsEntry = () => typeof item.getAsEntry === 'function' ? item.getAsEntry() : item.webkitGetAsEntry();\n // eslint-disable-next-line prefer-const\n (_fileSystemHandle = fileSystemHandle) != null ? _fileSystemHandle : fileSystemHandle = getAsFileSystemHandleFromEntry(getAsEntry(), logDropError);\n return {\n fileSystemHandle,\n lastResortFile: item.getAsFile() // can be used as a fallback in case other methods fail\n };\n }));\n for (const {\n lastResortFile,\n fileSystemHandle\n } of fileSystemHandles) {\n // fileSystemHandle and lastResortFile can be null when we drop an url.\n if (fileSystemHandle != null) {\n try {\n yield* createPromiseToAddFileOrParseDirectory(fileSystemHandle, '', lastResortFile);\n } catch (err) {\n // Example: If dropping a symbolic link, Chromium will throw:\n // \"DOMException: A requested file or directory could not be found at the time an operation was processed.\",\n // So we will use lastResortFile instead. See https://github.com/transloadit/uppy/issues/3505.\n if (lastResortFile != null) {\n yield lastResortFile;\n } else {\n logDropError(err);\n }\n }\n } else if (lastResortFile != null) yield lastResortFile;\n }\n}","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function d(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function h(n){return o=1,p(D,n)}function p(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=d(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__H.__h.push(i))}function _(n,u){var i=d(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function T(n,r){var u=d(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=d(t++,10),i=h();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.i=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.i=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,p as useReducer,A as useRef,h as useState};\n//# sourceMappingURL=hooks.module.js.map\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/**\n * Adapted from preact-virtual-list: https://github.com/developit/preact-virtual-list\n *\n * © 2016 Jason Miller\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * Adaptations:\n * - Added role=presentation to helper elements\n * - Tweaked styles for Uppy's Dashboard use case\n */\n\nimport { h, Component } from 'preact';\nconst STYLE_INNER = {\n position: 'relative',\n // Disabled for our use case: the wrapper elements around FileList already deal with overflow,\n // and this additional property would hide things that we want to show.\n //\n // overflow: 'hidden',\n width: '100%',\n minHeight: '100%'\n};\nconst STYLE_CONTENT = {\n position: 'absolute',\n top: 0,\n left: 0,\n // Because the `top` value gets set to some offset, this `height` being 100% would make the scrollbar\n // stretch far beyond the content. For our use case, the content div actually can get its height from\n // the elements inside it, so we don't need to specify a `height` property at all.\n //\n // height: '100%',\n width: '100%',\n overflow: 'visible'\n};\nclass VirtualList extends Component {\n constructor(props) {\n super(props);\n\n // The currently focused node, used to retain focus when the visible rows change.\n // To avoid update loops, this should not cause state updates, so it's kept as a plain property.\n this.handleScroll = () => {\n this.setState({\n offset: this.base.scrollTop\n });\n };\n this.handleResize = () => {\n this.resize();\n };\n this.focusElement = null;\n this.state = {\n offset: 0,\n height: 0\n };\n }\n componentDidMount() {\n this.resize();\n window.addEventListener('resize', this.handleResize);\n }\n\n // TODO: refactor to stable lifecycle method\n // eslint-disable-next-line\n componentWillUpdate() {\n if (this.base.contains(document.activeElement)) {\n this.focusElement = document.activeElement;\n }\n }\n componentDidUpdate() {\n // Maintain focus when rows are added and removed.\n if (this.focusElement && this.focusElement.parentNode && document.activeElement !== this.focusElement) {\n this.focusElement.focus();\n }\n this.focusElement = null;\n this.resize();\n }\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n }\n resize() {\n const {\n height\n } = this.state;\n if (height !== this.base.offsetHeight) {\n this.setState({\n height: this.base.offsetHeight\n });\n }\n }\n render(_ref) {\n let {\n data,\n rowHeight,\n renderRow,\n overscanCount = 10,\n ...props\n } = _ref;\n const {\n offset,\n height\n } = this.state;\n // first visible row index\n let start = Math.floor(offset / rowHeight);\n\n // actual number of visible rows (without overscan)\n let visibleRowCount = Math.floor(height / rowHeight);\n\n // Overscan: render blocks of rows modulo an overscan row count\n // This dramatically reduces DOM writes during scrolling\n if (overscanCount) {\n start = Math.max(0, start - start % overscanCount);\n visibleRowCount += overscanCount;\n }\n\n // last visible + overscan row index + padding to allow keyboard focus to travel past the visible area\n const end = start + visibleRowCount + 4;\n\n // data slice currently in viewport plus overscan items\n const selection = data.slice(start, end);\n const styleInner = {\n ...STYLE_INNER,\n height: data.length * rowHeight\n };\n const styleContent = {\n ...STYLE_CONTENT,\n top: start * rowHeight\n };\n\n // The `role=\"presentation\"` attributes ensure that these wrapper elements are not treated as list\n // items by accessibility and outline tools.\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n h(\"div\", _extends({\n onScroll: this.handleScroll\n }, props), h(\"div\", {\n role: \"presentation\",\n style: styleInner\n }, h(\"div\", {\n role: \"presentation\",\n style: styleContent\n }, selection.map(renderRow))))\n );\n }\n}\nexport default VirtualList;","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this,\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nexport { memoizeOne as default };\n","export default ['a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'input:not([disabled]):not([inert]):not([aria-hidden])', 'select:not([disabled]):not([inert]):not([aria-hidden])', 'textarea:not([disabled]):not([inert]):not([aria-hidden])', 'button:not([disabled]):not([inert]):not([aria-hidden])', 'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])'];","/**\n * @returns {HTMLElement} - either dashboard element, or the overlay that's most on top\n */\nexport default function getActiveOverlayEl(dashboardEl, activeOverlayType) {\n if (activeOverlayType) {\n const overlayEl = dashboardEl.querySelector(`[data-uppy-paneltype=\"${activeOverlayType}\"]`);\n // if an overlay is already mounted\n if (overlayEl) return overlayEl;\n }\n return dashboardEl;\n}","import toArray from '@uppy/utils/lib/toArray';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\nimport FOCUSABLE_ELEMENTS from '@uppy/utils/lib/FOCUSABLE_ELEMENTS';\nimport getActiveOverlayEl from \"./getActiveOverlayEl.js\";\nfunction focusOnFirstNode(event, nodes) {\n const node = nodes[0];\n if (node) {\n node.focus();\n event.preventDefault();\n }\n}\nfunction focusOnLastNode(event, nodes) {\n const node = nodes[nodes.length - 1];\n if (node) {\n node.focus();\n event.preventDefault();\n }\n}\n\n// ___Why not just use (focusedItemIndex === -1)?\n// Firefox thinks
      is focusable, but we don't have
        s in our FOCUSABLE_ELEMENTS. Which means that if we tab into\n// the
          , code will think that we are not in the active overlay, and we should focusOnFirstNode() of the currently\n// active overlay!\n// [Practical check] if we use (focusedItemIndex === -1), instagram provider in firefox will never get focus on its pics\n// in the
            .\nfunction isFocusInOverlay(activeOverlayEl) {\n return activeOverlayEl.contains(document.activeElement);\n}\nfunction trapFocus(event, activeOverlayType, dashboardEl) {\n const activeOverlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n const focusableNodes = toArray(activeOverlayEl.querySelectorAll(FOCUSABLE_ELEMENTS));\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n // If we pressed tab, and focus is not yet within the current overlay - focus on\n // the first element within the current overlay.\n // This is a safety measure (for when user returns from another tab e.g.), most\n // plugins will try to focus on some important element as it loads.\n if (!isFocusInOverlay(activeOverlayEl)) {\n focusOnFirstNode(event, focusableNodes);\n // If we pressed shift + tab, and we're on the first element of a modal\n } else if (event.shiftKey && focusedItemIndex === 0) {\n focusOnLastNode(event, focusableNodes);\n // If we pressed tab, and we're on the last element of the modal\n } else if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n focusOnFirstNode(event, focusableNodes);\n }\n}\n\n// Traps focus inside of the currently open overlay (e.g. Dashboard, or e.g. Instagram),\n// never lets focus disappear from the modal.\nexport { trapFocus as forModal };\n\n// Traps focus inside of the currently open overlay, unless overlay is null - then let the user tab away.\nexport function forInline(event, activeOverlayType, dashboardEl) {\n // ___When we're in the bare 'Drop files here, paste, browse or import from' screen\n if (activeOverlayType === null) {\n // Do nothing and let the browser handle it, user can tab away from Uppy to other elements on the page\n // ___When there is some overlay with 'Done' button\n } else {\n // Trap the focus inside this overlay!\n // User can close the overlay (click 'Done') if they want to travel away from Uppy.\n trapFocus(event, activeOverlayType, dashboardEl);\n }\n}","/**\n * Checks if the browser supports Drag & Drop (not supported on mobile devices, for example).\n */\nexport default function isDragDropSupported() {\n const div = document.body;\n if (!('draggable' in div) || !('ondragstart' in div && 'ondrop' in div)) {\n return false;\n }\n if (!('FormData' in window)) {\n return false;\n }\n if (!('FileReader' in window)) {\n return false;\n }\n return true;\n}","import { h } from 'preact';\nfunction iconImage() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"25\",\n height: \"25\",\n viewBox: \"0 0 25 25\"\n }, h(\"g\", {\n fill: \"#686DE0\",\n fillRule: \"evenodd\"\n }, h(\"path\", {\n d: \"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\",\n fillRule: \"nonzero\"\n }), h(\"path\", {\n d: \"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\",\n fillRule: \"nonzero\"\n }), h(\"circle\", {\n cx: \"7.5\",\n cy: \"9.5\",\n r: \"1.5\"\n })));\n}\nfunction iconAudio() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"25\",\n height: \"25\",\n viewBox: \"0 0 25 25\"\n }, h(\"path\", {\n d: \"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\",\n fill: \"#049BCF\",\n fillRule: \"nonzero\"\n }));\n}\nfunction iconVideo() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"25\",\n height: \"25\",\n viewBox: \"0 0 25 25\"\n }, h(\"path\", {\n d: \"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\",\n fill: \"#19AF67\",\n fillRule: \"nonzero\"\n }));\n}\nfunction iconPDF() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"25\",\n height: \"25\",\n viewBox: \"0 0 25 25\"\n }, h(\"path\", {\n d: \"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\",\n fill: \"#E2514A\",\n fillRule: \"nonzero\"\n }));\n}\nfunction iconArchive() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"25\",\n height: \"25\",\n viewBox: \"0 0 25 25\"\n }, h(\"path\", {\n d: \"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\",\n fill: \"#00C469\",\n fillRule: \"nonzero\"\n }));\n}\nfunction iconFile() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"25\",\n height: \"25\",\n viewBox: \"0 0 25 25\"\n }, h(\"g\", {\n fill: \"#A7AFB7\",\n fillRule: \"nonzero\"\n }, h(\"path\", {\n d: \"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\"\n }), h(\"path\", {\n d: \"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\"\n })));\n}\nfunction iconText() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"25\",\n height: \"25\",\n viewBox: \"0 0 25 25\"\n }, h(\"path\", {\n d: \"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\",\n fill: \"#5A5E69\",\n fillRule: \"nonzero\"\n }));\n}\nexport default function getIconByMime(fileType) {\n const defaultChoice = {\n color: '#838999',\n icon: iconFile()\n };\n if (!fileType) return defaultChoice;\n const fileTypeGeneral = fileType.split('/')[0];\n const fileTypeSpecific = fileType.split('/')[1];\n\n // Text\n if (fileTypeGeneral === 'text') {\n return {\n color: '#5a5e69',\n icon: iconText()\n };\n }\n\n // Image\n if (fileTypeGeneral === 'image') {\n return {\n color: '#686de0',\n icon: iconImage()\n };\n }\n\n // Audio\n if (fileTypeGeneral === 'audio') {\n return {\n color: '#068dbb',\n icon: iconAudio()\n };\n }\n\n // Video\n if (fileTypeGeneral === 'video') {\n return {\n color: '#19af67',\n icon: iconVideo()\n };\n }\n\n // PDF\n if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') {\n return {\n color: '#e25149',\n icon: iconPDF()\n };\n }\n\n // Archive\n const archiveTypes = ['zip', 'x-7z-compressed', 'x-zip-compressed', 'x-rar-compressed', 'x-tar', 'x-gzip', 'x-apple-diskimage'];\n if (fileTypeGeneral === 'application' && archiveTypes.indexOf(fileTypeSpecific) !== -1) {\n return {\n color: '#00C469',\n icon: iconArchive()\n };\n }\n return defaultChoice;\n}","import { h } from 'preact';\nimport getFileTypeIcon from \"../utils/getFileTypeIcon.js\";\nexport default function FilePreview(props) {\n const {\n file\n } = props;\n if (file.preview) {\n return h(\"img\", {\n className: \"uppy-Dashboard-Item-previewImg\",\n alt: file.name,\n src: file.preview\n });\n }\n const {\n color,\n icon\n } = getFileTypeIcon(file.type);\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-previewIconWrap\"\n }, h(\"span\", {\n className: \"uppy-Dashboard-Item-previewIcon\",\n style: {\n color\n }\n }, icon), h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-Dashboard-Item-previewIconBg\",\n width: \"58\",\n height: \"76\",\n viewBox: \"0 0 58 76\"\n }, h(\"rect\", {\n fill: \"#FFF\",\n width: \"58\",\n height: \"76\",\n rx: \"3\",\n fillRule: \"evenodd\"\n })));\n}","import { h } from 'preact';\nconst metaFieldIdToName = (metaFieldId, metaFields) => {\n const fields = typeof metaFields === 'function' ? metaFields() : metaFields;\n const field = fields.filter(f => f.id === metaFieldId);\n return field[0].name;\n};\nexport default function MetaErrorMessage(props) {\n const {\n file,\n toggleFileCard,\n i18n,\n metaFields\n } = props;\n const {\n missingRequiredMetaFields\n } = file;\n if (!(missingRequiredMetaFields != null && missingRequiredMetaFields.length)) {\n return null;\n }\n const metaFieldsString = missingRequiredMetaFields.map(missingMetaField => metaFieldIdToName(missingMetaField, metaFields)).join(', ');\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-errorMessage\"\n }, i18n('missingRequiredMetaFields', {\n smart_count: missingRequiredMetaFields.length,\n fields: metaFieldsString\n }), ' ', h(\"button\", {\n type: \"button\",\n class: \"uppy-u-reset uppy-Dashboard-Item-errorMessageBtn\",\n onClick: () => toggleFileCard(true, file.id)\n }, i18n('editFile')));\n}","import { h } from 'preact';\nimport FilePreview from \"../../FilePreview.js\";\nimport MetaErrorMessage from \"../MetaErrorMessage.js\";\nimport getFileTypeIcon from \"../../../utils/getFileTypeIcon.js\";\nexport default function FilePreviewAndLink(props) {\n const {\n file,\n i18n,\n toggleFileCard,\n metaFields,\n showLinkToFileUploadResult\n } = props;\n const white = 'rgba(255, 255, 255, 0.5)';\n const previewBackgroundColor = file.preview ? white : getFileTypeIcon(file.type).color;\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-previewInnerWrap\",\n style: {\n backgroundColor: previewBackgroundColor\n }\n }, showLinkToFileUploadResult && file.uploadURL && h(\"a\", {\n className: \"uppy-Dashboard-Item-previewLink\",\n href: file.uploadURL,\n rel: \"noreferrer noopener\",\n target: \"_blank\",\n \"aria-label\": file.meta.name\n }, h(\"span\", {\n hidden: true\n }, file.meta.name)), h(FilePreview, {\n file: file\n }), h(MetaErrorMessage, {\n file: file,\n i18n: i18n,\n toggleFileCard: toggleFileCard,\n metaFields: metaFields\n }));\n}","/* eslint-disable react/no-unused-prop-types */\n/* eslint-disable react/destructuring-assignment */\n\nimport { h } from 'preact';\nfunction onPauseResumeCancelRetry(props) {\n if (props.isUploaded) return;\n if (props.error && !props.hideRetryButton) {\n props.uppy.retryUpload(props.file.id);\n return;\n }\n if (props.resumableUploads && !props.hidePauseResumeButton) {\n props.uppy.pauseResume(props.file.id);\n } else if (props.individualCancellation && !props.hideCancelButton) {\n props.uppy.removeFile(props.file.id);\n }\n}\nfunction progressIndicatorTitle(props) {\n if (props.isUploaded) {\n return props.i18n('uploadComplete');\n }\n if (props.error) {\n return props.i18n('retryUpload');\n }\n if (props.resumableUploads) {\n if (props.file.isPaused) {\n return props.i18n('resumeUpload');\n }\n return props.i18n('pauseUpload');\n }\n if (props.individualCancellation) {\n return props.i18n('cancelUpload');\n }\n return '';\n}\nfunction ProgressIndicatorButton(props) {\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-progress\"\n }, h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-progressIndicator\",\n type: \"button\",\n \"aria-label\": progressIndicatorTitle(props),\n title: progressIndicatorTitle(props),\n onClick: () => onPauseResumeCancelRetry(props)\n }, props.children));\n}\nfunction ProgressCircleContainer(_ref) {\n let {\n children\n } = _ref;\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"70\",\n height: \"70\",\n viewBox: \"0 0 36 36\",\n className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle\"\n }, children);\n}\nfunction ProgressCircle(_ref2) {\n let {\n progress\n } = _ref2;\n // circle length equals 2 * PI * R\n const circleLength = 2 * Math.PI * 15;\n return h(\"g\", null, h(\"circle\", {\n className: \"uppy-Dashboard-Item-progressIcon--bg\",\n r: \"15\",\n cx: \"18\",\n cy: \"18\",\n \"stroke-width\": \"2\",\n fill: \"none\"\n }), h(\"circle\", {\n className: \"uppy-Dashboard-Item-progressIcon--progress\",\n r: \"15\",\n cx: \"18\",\n cy: \"18\",\n transform: \"rotate(-90, 18, 18)\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-dasharray\": circleLength,\n \"stroke-dashoffset\": circleLength - circleLength / 100 * progress\n }));\n}\nexport default function FileProgress(props) {\n // Nothing if upload has not started\n if (!props.file.progress.uploadStarted) {\n return null;\n }\n if (props.file.progress.percentage === undefined) {\n return null;\n }\n\n // Green checkmark when complete\n if (props.isUploaded) {\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-progress\"\n }, h(\"div\", {\n className: \"uppy-Dashboard-Item-progressIndicator\"\n }, h(ProgressCircleContainer, null, h(\"circle\", {\n r: \"15\",\n cx: \"18\",\n cy: \"18\",\n fill: \"#1bb240\"\n }), h(\"polygon\", {\n className: \"uppy-Dashboard-Item-progressIcon--check\",\n transform: \"translate(2, 3)\",\n points: \"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634\"\n }))));\n }\n if (props.recoveredState) {\n return null;\n }\n\n // Retry button for error\n if (props.error && !props.hideRetryButton) {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n h(ProgressIndicatorButton, props, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry\",\n width: \"28\",\n height: \"31\",\n viewBox: \"0 0 16 19\"\n }, h(\"path\", {\n d: \"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z\"\n }), h(\"path\", {\n d: \"M7.9 3H10v2H7.9z\"\n }), h(\"path\", {\n d: \"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z\"\n }), h(\"path\", {\n d: \"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z\"\n })))\n );\n }\n\n // Pause/resume button for resumable uploads\n if (props.resumableUploads && !props.hidePauseResumeButton) {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n h(ProgressIndicatorButton, props, h(ProgressCircleContainer, null, h(ProgressCircle, {\n progress: props.file.progress.percentage\n }), props.file.isPaused ? h(\"polygon\", {\n className: \"uppy-Dashboard-Item-progressIcon--play\",\n transform: \"translate(3, 3)\",\n points: \"12 20 12 10 20 15\"\n }) : h(\"g\", {\n className: \"uppy-Dashboard-Item-progressIcon--pause\",\n transform: \"translate(14.5, 13)\"\n }, h(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"2\",\n height: \"10\",\n rx: \"0\"\n }), h(\"rect\", {\n x: \"5\",\n y: \"0\",\n width: \"2\",\n height: \"10\",\n rx: \"0\"\n }))))\n );\n }\n\n // Cancel button for non-resumable uploads if individualCancellation is supported (not bundled)\n if (!props.resumableUploads && props.individualCancellation && !props.hideCancelButton) {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n h(ProgressIndicatorButton, props, h(ProgressCircleContainer, null, h(ProgressCircle, {\n progress: props.file.progress.percentage\n }), h(\"polygon\", {\n className: \"cancel\",\n transform: \"translate(2, 2)\",\n points: \"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12\"\n })))\n );\n }\n\n // Just progress when buttons are disabled\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-progress\"\n }, h(\"div\", {\n className: \"uppy-Dashboard-Item-progressIndicator\"\n }, h(ProgressCircleContainer, null, h(ProgressCircle, {\n progress: props.file.progress.percentage\n }))));\n}","/**\n * Truncates a string to the given number of chars (maxLength) by inserting '...' in the middle of that string.\n * Partially taken from https://stackoverflow.com/a/5723274/3192470.\n */\nconst separator = '...';\nexport default function truncateString(string, maxLength) {\n // Return the empty string if maxLength is zero\n if (maxLength === 0) return '';\n // Return original string if it's already shorter than maxLength\n if (string.length <= maxLength) return string;\n // Return truncated substring appended of the ellipsis char if string can't be meaningfully truncated\n if (maxLength <= separator.length + 1) return `${string.slice(0, maxLength - 1)}…`;\n const charsToShow = maxLength - separator.length;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return string.slice(0, frontChars) + separator + string.slice(-backChars);\n}","/* eslint-disable react/destructuring-assignment */\nimport { h } from 'preact';\nimport prettierBytes from '@transloadit/prettier-bytes';\nimport truncateString from '@uppy/utils/lib/truncateString';\nimport MetaErrorMessage from \"../MetaErrorMessage.js\";\nconst renderFileName = props => {\n const {\n author,\n name\n } = props.file.meta;\n function getMaxNameLength() {\n if (props.isSingleFile && props.containerHeight >= 350) {\n return 90;\n }\n if (props.containerWidth <= 352) {\n return 35;\n }\n if (props.containerWidth <= 576) {\n return 60;\n }\n // When `author` is present, we want to make sure\n // the file name fits on one line so we can place\n // the author on the second line.\n return author ? 20 : 30;\n }\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-name\",\n title: name\n }, truncateString(name, getMaxNameLength()));\n};\nconst renderAuthor = props => {\n var _props$file$remote;\n const {\n author\n } = props.file.meta;\n const providerName = (_props$file$remote = props.file.remote) == null ? void 0 : _props$file$remote.providerName;\n const dot = `\\u00B7`;\n if (!author) {\n return null;\n }\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-author\"\n }, h(\"a\", {\n href: `${author.url}?utm_source=Companion&utm_medium=referral`,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, truncateString(author.name, 13)), providerName ? h(Fragment, null, ` ${dot} `, providerName, ` ${dot} `) : null);\n};\nconst renderFileSize = props => props.file.size && h(\"div\", {\n className: \"uppy-Dashboard-Item-statusSize\"\n}, prettierBytes(props.file.size));\nconst ReSelectButton = props => props.file.isGhost && h(\"span\", null, ' \\u2022 ', h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect\",\n type: \"button\",\n onClick: () => props.toggleAddFilesPanel(true)\n}, props.i18n('reSelect')));\nconst ErrorButton = _ref => {\n let {\n file,\n onClick\n } = _ref;\n if (file.error) {\n return h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-errorDetails\",\n \"aria-label\": file.error,\n \"data-microtip-position\": \"bottom\",\n \"data-microtip-size\": \"medium\",\n onClick: onClick,\n type: \"button\"\n }, \"?\");\n }\n return null;\n};\nexport default function FileInfo(props) {\n const {\n file,\n i18n,\n toggleFileCard,\n metaFields,\n toggleAddFilesPanel,\n isSingleFile,\n containerHeight,\n containerWidth\n } = props;\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-fileInfo\",\n \"data-uppy-file-source\": file.source\n }, h(\"div\", {\n className: \"uppy-Dashboard-Item-fileName\"\n }, renderFileName({\n file,\n isSingleFile,\n containerHeight,\n containerWidth\n }), h(ErrorButton, {\n file: file,\n onClick: () => alert(file.error)\n })), h(\"div\", {\n className: \"uppy-Dashboard-Item-status\"\n }, renderAuthor({\n file\n }), renderFileSize({\n file\n }), ReSelectButton({\n file,\n toggleAddFilesPanel,\n i18n\n })), h(MetaErrorMessage, {\n file: file,\n i18n: i18n,\n toggleFileCard: toggleFileCard,\n metaFields: metaFields\n }));\n}","import { h } from 'preact';\nimport copyToClipboard from \"../../../utils/copyToClipboard.js\";\nfunction EditButton(_ref) {\n let {\n file,\n uploadInProgressOrComplete,\n metaFields,\n canEditFile,\n i18n,\n onClick\n } = _ref;\n if (!uploadInProgressOrComplete && metaFields && metaFields.length > 0 || !uploadInProgressOrComplete && canEditFile(file)) {\n return h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit\",\n type: \"button\",\n \"aria-label\": i18n('editFileWithFilename', {\n file: file.meta.name\n }),\n title: i18n('editFileWithFilename', {\n file: file.meta.name\n }),\n onClick: () => onClick()\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 14 14\"\n }, h(\"g\", {\n fillRule: \"evenodd\"\n }, h(\"path\", {\n d: \"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z\",\n fillRule: \"nonzero\"\n }), h(\"rect\", {\n x: \"1\",\n y: \"12.293\",\n width: \"11\",\n height: \"1\",\n rx: \".5\"\n }), h(\"path\", {\n fillRule: \"nonzero\",\n d: \"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z\"\n }))));\n }\n return null;\n}\nfunction RemoveButton(_ref2) {\n let {\n i18n,\n onClick,\n file\n } = _ref2;\n return h(\"button\", {\n className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove\",\n type: \"button\",\n \"aria-label\": i18n('removeFile', {\n file: file.meta.name\n }),\n title: i18n('removeFile', {\n file: file.meta.name\n }),\n onClick: () => onClick()\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\"\n }, h(\"path\", {\n d: \"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z\"\n }), h(\"path\", {\n fill: \"#FFF\",\n d: \"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z\"\n })));\n}\nfunction CopyLinkButton(_ref3) {\n let {\n file,\n uppy,\n i18n\n } = _ref3;\n const copyLinkToClipboard = event => {\n copyToClipboard(file.uploadURL, i18n('copyLinkToClipboardFallback')).then(() => {\n uppy.log('Link copied to clipboard.');\n uppy.info(i18n('copyLinkToClipboardSuccess'), 'info', 3000);\n }).catch(uppy.log)\n // avoid losing focus\n .then(() => event.target.focus({\n preventScroll: true\n }));\n };\n return h(\"button\", {\n className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink\",\n type: \"button\",\n \"aria-label\": i18n('copyLink'),\n title: i18n('copyLink'),\n onClick: event => copyLinkToClipboard(event)\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 14 12\"\n }, h(\"path\", {\n d: \"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z\"\n })));\n}\nexport default function Buttons(props) {\n const {\n uppy,\n file,\n uploadInProgressOrComplete,\n canEditFile,\n metaFields,\n showLinkToFileUploadResult,\n showRemoveButton,\n i18n,\n toggleFileCard,\n openFileEditor\n } = props;\n const editAction = () => {\n if (metaFields && metaFields.length > 0) {\n toggleFileCard(true, file.id);\n } else {\n openFileEditor(file);\n }\n };\n return h(\"div\", {\n className: \"uppy-Dashboard-Item-actionWrapper\"\n }, h(EditButton, {\n i18n: i18n,\n file: file,\n uploadInProgressOrComplete: uploadInProgressOrComplete,\n canEditFile: canEditFile,\n metaFields: metaFields,\n onClick: editAction\n }), showLinkToFileUploadResult && file.uploadURL ? h(CopyLinkButton, {\n file: file,\n uppy: uppy,\n i18n: i18n\n }) : null, showRemoveButton ? h(RemoveButton, {\n i18n: i18n,\n file: file,\n onClick: () => uppy.removeFile(file.id)\n }) : null);\n}","/**\n * Copies text to clipboard by creating an almost invisible textarea,\n * adding text there, then running execCommand('copy').\n * Falls back to prompt() when the easy way fails (hello, Safari!)\n * From http://stackoverflow.com/a/30810322\n *\n * @param {string} textToCopy\n * @param {string} fallbackString\n * @returns {Promise}\n */\n\nexport default function copyToClipboard(textToCopy, fallbackString) {\n if (fallbackString === void 0) {\n fallbackString = 'Copy the URL below';\n }\n return new Promise(resolve => {\n const textArea = document.createElement('textarea');\n textArea.setAttribute('style', {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '2em',\n height: '2em',\n padding: 0,\n border: 'none',\n outline: 'none',\n boxShadow: 'none',\n background: 'transparent'\n });\n textArea.value = textToCopy;\n document.body.appendChild(textArea);\n textArea.select();\n const magicCopyFailed = () => {\n document.body.removeChild(textArea);\n // eslint-disable-next-line no-alert\n window.prompt(fallbackString, textToCopy);\n resolve();\n };\n try {\n const successful = document.execCommand('copy');\n if (!successful) {\n return magicCopyFailed();\n }\n document.body.removeChild(textArea);\n return resolve();\n } catch (err) {\n document.body.removeChild(textArea);\n return magicCopyFailed();\n }\n });\n}","/* eslint-disable react/destructuring-assignment */\nimport { h, Component } from 'preact';\nimport classNames from 'classnames';\nimport { shallowEqualObjects } from 'shallow-equal';\nimport FilePreviewAndLink from \"./FilePreviewAndLink/index.js\";\nimport FileProgress from \"./FileProgress/index.js\";\nimport FileInfo from \"./FileInfo/index.js\";\nimport Buttons from \"./Buttons/index.js\";\nexport default class FileItem extends Component {\n componentDidMount() {\n const {\n file\n } = this.props;\n if (!file.preview) {\n this.props.handleRequestThumbnail(file);\n }\n }\n shouldComponentUpdate(nextProps) {\n return !shallowEqualObjects(this.props, nextProps);\n }\n\n // VirtualList mounts FileItems again and they emit `thumbnail:request`\n // Otherwise thumbnails are broken or missing after Golden Retriever restores files\n componentDidUpdate() {\n const {\n file\n } = this.props;\n if (!file.preview) {\n this.props.handleRequestThumbnail(file);\n }\n }\n componentWillUnmount() {\n const {\n file\n } = this.props;\n if (!file.preview) {\n this.props.handleCancelThumbnail(file);\n }\n }\n render() {\n const {\n file\n } = this.props;\n const isProcessing = file.progress.preprocess || file.progress.postprocess;\n const isUploaded = !!file.progress.uploadComplete && !isProcessing && !file.error;\n const uploadInProgressOrComplete = !!file.progress.uploadStarted || !!isProcessing;\n const uploadInProgress = file.progress.uploadStarted && !file.progress.uploadComplete || isProcessing;\n const error = file.error || false;\n\n // File that Golden Retriever was able to partly restore (only meta, not blob),\n // users still need to re-add it, so it’s a ghost\n const {\n isGhost\n } = file;\n let showRemoveButton = this.props.individualCancellation ? !isUploaded : !uploadInProgress && !isUploaded;\n if (isUploaded && this.props.showRemoveButtonAfterComplete) {\n showRemoveButton = true;\n }\n const dashboardItemClass = classNames({\n 'uppy-Dashboard-Item': true,\n 'is-inprogress': uploadInProgress && !this.props.recoveredState,\n 'is-processing': isProcessing,\n 'is-complete': isUploaded,\n 'is-error': !!error,\n 'is-resumable': this.props.resumableUploads,\n 'is-noIndividualCancellation': !this.props.individualCancellation,\n 'is-ghost': isGhost\n });\n return h(\"div\", {\n className: dashboardItemClass,\n id: `uppy_${file.id}`,\n role: this.props.role\n }, h(\"div\", {\n className: \"uppy-Dashboard-Item-preview\"\n }, h(FilePreviewAndLink, {\n file: file,\n showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n i18n: this.props.i18n,\n toggleFileCard: this.props.toggleFileCard,\n metaFields: this.props.metaFields\n }), h(FileProgress, {\n uppy: this.props.uppy,\n file: file,\n error: error,\n isUploaded: isUploaded,\n hideRetryButton: this.props.hideRetryButton,\n hideCancelButton: this.props.hideCancelButton,\n hidePauseResumeButton: this.props.hidePauseResumeButton,\n recoveredState: this.props.recoveredState,\n resumableUploads: this.props.resumableUploads,\n individualCancellation: this.props.individualCancellation,\n i18n: this.props.i18n\n })), h(\"div\", {\n className: \"uppy-Dashboard-Item-fileInfoAndButtons\"\n }, h(FileInfo, {\n file: file,\n containerWidth: this.props.containerWidth,\n containerHeight: this.props.containerHeight,\n i18n: this.props.i18n,\n toggleAddFilesPanel: this.props.toggleAddFilesPanel,\n toggleFileCard: this.props.toggleFileCard,\n metaFields: this.props.metaFields,\n isSingleFile: this.props.isSingleFile\n }), h(Buttons, {\n file: file,\n metaFields: this.props.metaFields,\n showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n showRemoveButton: showRemoveButton,\n canEditFile: this.props.canEditFile,\n uploadInProgressOrComplete: uploadInProgressOrComplete,\n toggleFileCard: this.props.toggleFileCard,\n openFileEditor: this.props.openFileEditor,\n uppy: this.props.uppy,\n i18n: this.props.i18n\n })));\n }\n}","function shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n if (!arrA || !arrB) {\n return false;\n }\n const len = arrA.length;\n if (arrB.length !== len) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowEqualObjects(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (!objA || !objB) {\n return false;\n }\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objB);\n const len = aKeys.length;\n if (bKeys.length !== len) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n const key = aKeys[i];\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowEqual(a, b) {\n const aIsArr = Array.isArray(a);\n const bIsArr = Array.isArray(b);\n if (aIsArr !== bIsArr) {\n return false;\n }\n if (aIsArr && bIsArr) {\n return shallowEqualArrays(a, b);\n }\n return shallowEqualObjects(a, b);\n}\n\nexport { shallowEqual, shallowEqualArrays, shallowEqualObjects };\n//# sourceMappingURL=index.modern.mjs.map\n","import { h } from 'preact';\nimport { useMemo } from 'preact/hooks';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\nimport VirtualList from '@uppy/utils/lib/VirtualList';\nimport FileItem from \"./FileItem/index.js\";\nfunction chunks(list, size) {\n const chunked = [];\n let currentChunk = [];\n list.forEach(item => {\n if (currentChunk.length < size) {\n currentChunk.push(item);\n } else {\n chunked.push(currentChunk);\n currentChunk = [item];\n }\n });\n if (currentChunk.length) chunked.push(currentChunk);\n return chunked;\n}\nexport default function FileList(_ref) {\n let {\n id,\n i18n,\n uppy,\n files,\n resumableUploads,\n hideRetryButton,\n hidePauseResumeButton,\n hideCancelButton,\n showLinkToFileUploadResult,\n showRemoveButtonAfterComplete,\n metaFields,\n isSingleFile,\n toggleFileCard,\n handleRequestThumbnail,\n handleCancelThumbnail,\n recoveredState,\n individualCancellation,\n itemsPerRow,\n openFileEditor,\n canEditFile,\n toggleAddFilesPanel,\n containerWidth,\n containerHeight\n } = _ref;\n // It's not great that this is hardcoded!\n // It's ESPECIALLY not great that this is checking against `itemsPerRow`!\n const rowHeight = itemsPerRow === 1 ?\n // Mobile\n 71\n // 190px height + 2 * 5px margin\n : 200;\n\n // Sort files by file.isGhost, ghost files first, only if recoveredState is present\n const rows = useMemo(() => {\n const sortByGhostComesFirst = (file1, file2) => Number(files[file2].isGhost) - Number(files[file1].isGhost);\n const fileIds = Object.keys(files);\n if (recoveredState) fileIds.sort(sortByGhostComesFirst);\n return chunks(fileIds, itemsPerRow);\n }, [files, itemsPerRow, recoveredState]);\n const renderRow = row => h(\"div\", {\n class: \"uppy-Dashboard-filesInner\"\n // The `role=\"presentation` attribute ensures that the list items are properly\n // associated with the `VirtualList` element.\n ,\n role: \"presentation\"\n // We use the first file ID as the key — this should not change across scroll rerenders.\n ,\n key: row[0]\n }, row.map(fileID => h(FileItem, {\n key: fileID,\n uppy: uppy\n // FIXME This is confusing, it's actually the Dashboard's plugin ID\n ,\n id: id\n // TODO move this to context\n ,\n i18n: i18n\n // features\n ,\n resumableUploads: resumableUploads,\n individualCancellation: individualCancellation\n // visual options\n ,\n hideRetryButton: hideRetryButton,\n hidePauseResumeButton: hidePauseResumeButton,\n hideCancelButton: hideCancelButton,\n showLinkToFileUploadResult: showLinkToFileUploadResult,\n showRemoveButtonAfterComplete: showRemoveButtonAfterComplete,\n metaFields: metaFields,\n recoveredState: recoveredState,\n isSingleFile: isSingleFile,\n containerWidth: containerWidth,\n containerHeight: containerHeight\n // callbacks\n ,\n toggleFileCard: toggleFileCard,\n handleRequestThumbnail: handleRequestThumbnail,\n handleCancelThumbnail: handleCancelThumbnail,\n role: \"listitem\",\n openFileEditor: openFileEditor,\n canEditFile: canEditFile,\n toggleAddFilesPanel: toggleAddFilesPanel,\n file: files[fileID]\n })));\n if (isSingleFile) {\n return h(\"div\", {\n class: \"uppy-Dashboard-files\"\n }, renderRow(rows[0]));\n }\n return h(VirtualList, {\n class: \"uppy-Dashboard-files\",\n role: \"list\",\n data: rows,\n renderRow: renderRow,\n rowHeight: rowHeight\n });\n}","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck Typing this file requires more work, skipping it to unblock the rest of the transition.\n\n/* eslint-disable react/destructuring-assignment */\nimport { h, Component, Fragment } from 'preact';\nclass AddFiles extends Component {\n constructor() {\n super(...arguments);\n this.triggerFileInputClick = () => {\n this.fileInput.click();\n };\n this.triggerFolderInputClick = () => {\n this.folderInput.click();\n };\n this.triggerVideoCameraInputClick = () => {\n this.mobileVideoFileInput.click();\n };\n this.triggerPhotoCameraInputClick = () => {\n this.mobilePhotoFileInput.click();\n };\n this.onFileInputChange = event => {\n this.props.handleInputChange(event);\n\n // We clear the input after a file is selected, because otherwise\n // change event is not fired in Chrome and Safari when a file\n // with the same name is selected.\n // ___Why not use value=\"\" on instead?\n // Because if we use that method of clearing the input,\n // Chrome will not trigger change if we drop the same file twice (Issue #768).\n event.target.value = null; // eslint-disable-line no-param-reassign\n };\n this.renderHiddenInput = (isFolder, refCallback) => {\n var _this$props$allowedFi;\n return h(\"input\", {\n className: \"uppy-Dashboard-input\",\n hidden: true,\n \"aria-hidden\": \"true\",\n tabIndex: -1,\n webkitdirectory: isFolder,\n type: \"file\",\n name: \"files[]\",\n multiple: this.props.maxNumberOfFiles !== 1,\n onChange: this.onFileInputChange,\n accept: (_this$props$allowedFi = this.props.allowedFileTypes) == null ? void 0 : _this$props$allowedFi.join(', '),\n ref: refCallback\n });\n };\n this.renderHiddenCameraInput = (type, nativeCameraFacingMode, refCallback) => {\n const typeToAccept = {\n photo: 'image/*',\n video: 'video/*'\n };\n const accept = typeToAccept[type];\n return h(\"input\", {\n className: \"uppy-Dashboard-input\",\n hidden: true,\n \"aria-hidden\": \"true\",\n tabIndex: -1,\n type: \"file\",\n name: `camera-${type}`,\n onChange: this.onFileInputChange,\n capture: nativeCameraFacingMode,\n accept: accept,\n ref: refCallback\n });\n };\n this.renderMyDeviceAcquirer = () => {\n return h(\"div\", {\n className: \"uppy-DashboardTab\",\n role: \"presentation\",\n \"data-uppy-acquirer-id\": \"MyDevice\"\n }, h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n role: \"tab\",\n tabIndex: 0,\n \"data-uppy-super-focusable\": true,\n onClick: this.triggerFileInputClick\n }, h(\"div\", {\n className: \"uppy-DashboardTab-inner\"\n }, h(\"svg\", {\n className: \"uppy-DashboardTab-iconMyDevice\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\"\n }, h(\"path\", {\n d: \"M8.45 22.087l-1.305-6.674h17.678l-1.572 6.674H8.45zm4.975-12.412l1.083 1.765a.823.823 0 00.715.386h7.951V13.5H8.587V9.675h4.838zM26.043 13.5h-1.195v-2.598c0-.463-.336-.75-.798-.75h-8.356l-1.082-1.766A.823.823 0 0013.897 8H7.728c-.462 0-.815.256-.815.718V13.5h-.956a.97.97 0 00-.746.37.972.972 0 00-.19.81l1.724 8.565c.095.44.484.755.933.755H24c.44 0 .824-.3.929-.727l2.043-8.568a.972.972 0 00-.176-.825.967.967 0 00-.753-.38z\",\n fill: \"currentcolor\",\n \"fill-rule\": \"evenodd\"\n }))), h(\"div\", {\n className: \"uppy-DashboardTab-name\"\n }, this.props.i18n('myDevice'))));\n };\n this.renderPhotoCamera = () => {\n return h(\"div\", {\n className: \"uppy-DashboardTab\",\n role: \"presentation\",\n \"data-uppy-acquirer-id\": \"MobilePhotoCamera\"\n }, h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n role: \"tab\",\n tabIndex: 0,\n \"data-uppy-super-focusable\": true,\n onClick: this.triggerPhotoCameraInputClick\n }, h(\"div\", {\n className: \"uppy-DashboardTab-inner\"\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\"\n }, h(\"path\", {\n d: \"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z\",\n fill: \"#02B383\",\n \"fill-rule\": \"nonzero\"\n }))), h(\"div\", {\n className: \"uppy-DashboardTab-name\"\n }, this.props.i18n('takePictureBtn'))));\n };\n this.renderVideoCamera = () => {\n return h(\"div\", {\n className: \"uppy-DashboardTab\",\n role: \"presentation\",\n \"data-uppy-acquirer-id\": \"MobileVideoCamera\"\n }, h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n role: \"tab\",\n tabIndex: 0,\n \"data-uppy-super-focusable\": true,\n onClick: this.triggerVideoCameraInputClick\n }, h(\"div\", {\n className: \"uppy-DashboardTab-inner\"\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\"\n }, h(\"path\", {\n fill: \"#FF675E\",\n fillRule: \"nonzero\",\n d: \"m21.254 14.277 2.941-2.588c.797-.313 1.243.818 1.09 1.554-.01 2.094.02 4.189-.017 6.282-.126.915-1.145 1.08-1.58.34l-2.434-2.142c-.192.287-.504 1.305-.738.468-.104-1.293-.028-2.596-.05-3.894.047-.312.381.823.426 1.069.063-.384.206-.744.362-1.09zm-12.939-3.73c3.858.013 7.717-.025 11.574.02.912.129 1.492 1.237 1.351 2.217-.019 2.412.04 4.83-.03 7.239-.17 1.025-1.166 1.59-2.029 1.429-3.705-.012-7.41.025-11.114-.019-.913-.129-1.492-1.237-1.352-2.217.018-2.404-.036-4.813.029-7.214.136-.82.83-1.473 1.571-1.454z \"\n }))), h(\"div\", {\n className: \"uppy-DashboardTab-name\"\n }, this.props.i18n('recordVideoBtn'))));\n };\n this.renderBrowseButton = (text, onClickFn) => {\n const numberOfAcquirers = this.props.acquirers.length;\n return h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-browse\",\n onClick: onClickFn,\n \"data-uppy-super-focusable\": numberOfAcquirers === 0\n }, text);\n };\n this.renderDropPasteBrowseTagline = numberOfAcquirers => {\n const browseFiles = this.renderBrowseButton(this.props.i18n('browseFiles'), this.triggerFileInputClick);\n const browseFolders = this.renderBrowseButton(this.props.i18n('browseFolders'), this.triggerFolderInputClick);\n\n // in order to keep the i18n CamelCase and options lower (as are defaults) we will want to transform a lower\n // to Camel\n const lowerFMSelectionType = this.props.fileManagerSelectionType;\n const camelFMSelectionType = lowerFMSelectionType.charAt(0).toUpperCase() + lowerFMSelectionType.slice(1);\n return h(\"div\", {\n class: \"uppy-Dashboard-AddFiles-title\"\n },\n // eslint-disable-next-line no-nested-ternary\n this.props.disableLocalFiles ? this.props.i18n('importFiles') : numberOfAcquirers > 0 ? this.props.i18nArray(`dropPasteImport${camelFMSelectionType}`, {\n browseFiles,\n browseFolders,\n browse: browseFiles\n }) : this.props.i18nArray(`dropPaste${camelFMSelectionType}`, {\n browseFiles,\n browseFolders,\n browse: browseFiles\n }));\n };\n this.renderAcquirer = acquirer => {\n var _this$props$activePic;\n return h(\"div\", {\n className: \"uppy-DashboardTab\",\n role: \"presentation\",\n \"data-uppy-acquirer-id\": acquirer.id\n }, h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n role: \"tab\",\n tabIndex: 0,\n \"data-cy\": acquirer.id,\n \"aria-controls\": `uppy-DashboardContent-panel--${acquirer.id}`,\n \"aria-selected\": ((_this$props$activePic = this.props.activePickerPanel) == null ? void 0 : _this$props$activePic.id) === acquirer.id,\n \"data-uppy-super-focusable\": true,\n onClick: () => this.props.showPanel(acquirer.id)\n }, h(\"div\", {\n className: \"uppy-DashboardTab-inner\"\n }, acquirer.icon()), h(\"div\", {\n className: \"uppy-DashboardTab-name\"\n }, acquirer.name)));\n };\n this.renderAcquirers = acquirers => {\n // Group last two buttons, so we don’t end up with\n // just one button on a new line\n const acquirersWithoutLastTwo = [...acquirers];\n const lastTwoAcquirers = acquirersWithoutLastTwo.splice(acquirers.length - 2, acquirers.length);\n return h(Fragment, null, acquirersWithoutLastTwo.map(acquirer => this.renderAcquirer(acquirer)), h(\"span\", {\n role: \"presentation\",\n style: {\n 'white-space': 'nowrap'\n }\n }, lastTwoAcquirers.map(acquirer => this.renderAcquirer(acquirer))));\n };\n this.renderSourcesList = (acquirers, disableLocalFiles) => {\n const {\n showNativePhotoCameraButton,\n showNativeVideoCameraButton\n } = this.props;\n let list = [];\n const myDeviceKey = 'myDevice';\n if (!disableLocalFiles) list.push({\n key: myDeviceKey,\n elements: this.renderMyDeviceAcquirer()\n });\n if (showNativePhotoCameraButton) list.push({\n key: 'nativePhotoCameraButton',\n elements: this.renderPhotoCamera()\n });\n if (showNativeVideoCameraButton) list.push({\n key: 'nativePhotoCameraButton',\n elements: this.renderVideoCamera()\n });\n list.push(...acquirers.map(acquirer => ({\n key: acquirer.id,\n elements: this.renderAcquirer(acquirer)\n })));\n\n // doesn't make sense to show only a lonely \"My Device\"\n const hasOnlyMyDevice = list.length === 1 && list[0].key === myDeviceKey;\n if (hasOnlyMyDevice) list = [];\n\n // Group last two buttons, so we don’t end up with\n // just one button on a new line\n const listWithoutLastTwo = [...list];\n const lastTwo = listWithoutLastTwo.splice(list.length - 2, list.length);\n const renderList = l => l.map(_ref => {\n let {\n key,\n elements\n } = _ref;\n return h(Fragment, {\n key: key\n }, elements);\n });\n return h(Fragment, null, this.renderDropPasteBrowseTagline(list.length), h(\"div\", {\n className: \"uppy-Dashboard-AddFiles-list\",\n role: \"tablist\"\n }, renderList(listWithoutLastTwo), h(\"span\", {\n role: \"presentation\",\n style: {\n 'white-space': 'nowrap'\n }\n }, renderList(lastTwo))));\n };\n }\n [Symbol.for('uppy test: disable unused locale key warning')]() {\n // Those are actually used in `renderDropPasteBrowseTagline` method.\n this.props.i18nArray('dropPasteBoth');\n this.props.i18nArray('dropPasteFiles');\n this.props.i18nArray('dropPasteFolders');\n this.props.i18nArray('dropPasteImportBoth');\n this.props.i18nArray('dropPasteImportFiles');\n this.props.i18nArray('dropPasteImportFolders');\n }\n renderPoweredByUppy() {\n const {\n i18nArray\n } = this.props;\n const uppyBranding = h(\"span\", null, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon uppy-Dashboard-poweredByIcon\",\n width: \"11\",\n height: \"11\",\n viewBox: \"0 0 11 11\"\n }, h(\"path\", {\n d: \"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\",\n fillRule: \"evenodd\"\n })), h(\"span\", {\n className: \"uppy-Dashboard-poweredByUppy\"\n }, \"Uppy\"));\n const linkText = i18nArray('poweredBy', {\n uppy: uppyBranding\n });\n return h(\"a\", {\n tabIndex: -1,\n href: \"https://uppy.io\",\n rel: \"noreferrer noopener\",\n target: \"_blank\",\n className: \"uppy-Dashboard-poweredBy\"\n }, linkText);\n }\n render() {\n const {\n showNativePhotoCameraButton,\n showNativeVideoCameraButton,\n nativeCameraFacingMode\n } = this.props;\n return h(\"div\", {\n className: \"uppy-Dashboard-AddFiles\"\n }, this.renderHiddenInput(false, ref => {\n this.fileInput = ref;\n }), this.renderHiddenInput(true, ref => {\n this.folderInput = ref;\n }), showNativePhotoCameraButton && this.renderHiddenCameraInput('photo', nativeCameraFacingMode, ref => {\n this.mobilePhotoFileInput = ref;\n }), showNativeVideoCameraButton && this.renderHiddenCameraInput('video', nativeCameraFacingMode, ref => {\n this.mobileVideoFileInput = ref;\n }), this.renderSourcesList(this.props.acquirers, this.props.disableLocalFiles), h(\"div\", {\n className: \"uppy-Dashboard-AddFiles-info\"\n }, this.props.note && h(\"div\", {\n className: \"uppy-Dashboard-note\"\n }, this.props.note), this.props.proudlyDisplayPoweredByUppy && this.renderPoweredByUppy(this.props)));\n }\n}\nexport default AddFiles;","/* eslint-disable react/destructuring-assignment */\nimport { h } from 'preact';\nimport classNames from 'classnames';\nimport AddFiles from \"./AddFiles.js\";\nconst AddFilesPanel = props => {\n return h(\"div\", {\n className: classNames('uppy-Dashboard-AddFilesPanel', props.className),\n \"data-uppy-panelType\": \"AddFiles\",\n \"aria-hidden\": !props.showAddFilesPanel\n }, h(\"div\", {\n className: \"uppy-DashboardContent-bar\"\n }, h(\"div\", {\n className: \"uppy-DashboardContent-title\",\n role: \"heading\",\n \"aria-level\": \"1\"\n }, props.i18n('addingMoreFiles')), h(\"button\", {\n className: \"uppy-DashboardContent-back\",\n type: \"button\",\n onClick: () => props.toggleAddFilesPanel(false)\n }, props.i18n('back'))), h(AddFiles, props));\n};\nexport default AddFilesPanel;","// ignore drop/paste events if they are not in input or textarea —\n// otherwise when Url plugin adds drop/paste listeners to this.el,\n// draging UI elements or pasting anything into any field triggers those events —\n// Url treats them as URLs that need to be imported\n\nfunction ignoreEvent(ev) {\n const {\n tagName\n } = ev.target;\n if (tagName === 'INPUT' || tagName === 'TEXTAREA') {\n ev.stopPropagation();\n return;\n }\n ev.preventDefault();\n ev.stopPropagation();\n}\nexport default ignoreEvent;","import { h } from 'preact';\nimport classNames from 'classnames';\nimport { useRef } from 'preact/hooks';\nimport ignoreEvent from \"../utils/ignoreEvent.js\";\nfunction PickerPanelContent(_ref) {\n let {\n activePickerPanel,\n className,\n hideAllPanels,\n i18n,\n state,\n uppy\n } = _ref;\n const ref = useRef(null);\n return h(\"div\", {\n className: classNames('uppy-DashboardContent-panel', className),\n role: \"tabpanel\",\n \"data-uppy-panelType\": \"PickerPanel\",\n id: `uppy-DashboardContent-panel--${activePickerPanel.id}`,\n onDragOver: ignoreEvent,\n onDragLeave: ignoreEvent,\n onDrop: ignoreEvent,\n onPaste: ignoreEvent\n }, h(\"div\", {\n className: \"uppy-DashboardContent-bar\"\n }, h(\"div\", {\n className: \"uppy-DashboardContent-title\",\n role: \"heading\",\n \"aria-level\": \"1\"\n }, i18n('importFrom', {\n name: activePickerPanel.name\n })), h(\"button\", {\n className: \"uppy-DashboardContent-back\",\n type: \"button\",\n onClick: hideAllPanels\n }, i18n('cancel'))), h(\"div\", {\n ref: ref,\n className: \"uppy-DashboardContent-panelBody\"\n }, uppy.getPlugin(activePickerPanel.id).render(state, ref.current)));\n}\nexport default PickerPanelContent;","/* eslint-disable react/destructuring-assignment */\nimport { h } from 'preact';\nimport classNames from 'classnames';\nfunction EditorPanel(props) {\n const file = props.files[props.fileCardFor];\n const handleCancel = () => {\n props.uppy.emit('file-editor:cancel', file);\n props.closeFileEditor();\n };\n return h(\"div\", {\n className: classNames('uppy-DashboardContent-panel', props.className),\n role: \"tabpanel\",\n \"data-uppy-panelType\": \"FileEditor\",\n id: \"uppy-DashboardContent-panel--editor\"\n }, h(\"div\", {\n className: \"uppy-DashboardContent-bar\"\n }, h(\"div\", {\n className: \"uppy-DashboardContent-title\",\n role: \"heading\",\n \"aria-level\": \"1\"\n }, props.i18nArray('editing', {\n file: h(\"span\", {\n className: \"uppy-DashboardContent-titleFile\"\n }, file.meta ? file.meta.name : file.name)\n })), h(\"button\", {\n className: \"uppy-DashboardContent-back\",\n type: \"button\",\n onClick: handleCancel\n }, props.i18n('cancel')), h(\"button\", {\n className: \"uppy-DashboardContent-save\",\n type: \"button\",\n onClick: props.saveFileEditor\n }, props.i18n('save'))), h(\"div\", {\n className: \"uppy-DashboardContent-panelBody\"\n }, props.editors.map(target => {\n return props.uppy.getPlugin(target.id).render(props.state);\n })));\n}\nexport default EditorPanel;","import { h } from 'preact';\nconst uploadStates = {\n STATE_ERROR: 'error',\n STATE_WAITING: 'waiting',\n STATE_PREPROCESSING: 'preprocessing',\n STATE_UPLOADING: 'uploading',\n STATE_POSTPROCESSING: 'postprocessing',\n STATE_COMPLETE: 'complete',\n STATE_PAUSED: 'paused'\n};\nfunction getUploadingState(isAllErrored, isAllComplete, isAllPaused, files) {\n if (files === void 0) {\n files = {};\n }\n if (isAllErrored) {\n return uploadStates.STATE_ERROR;\n }\n if (isAllComplete) {\n return uploadStates.STATE_COMPLETE;\n }\n if (isAllPaused) {\n return uploadStates.STATE_PAUSED;\n }\n let state = uploadStates.STATE_WAITING;\n const fileIDs = Object.keys(files);\n for (let i = 0; i < fileIDs.length; i++) {\n const {\n progress\n } = files[fileIDs[i]];\n // If ANY files are being uploaded right now, show the uploading state.\n if (progress.uploadStarted && !progress.uploadComplete) {\n return uploadStates.STATE_UPLOADING;\n }\n // If files are being preprocessed AND postprocessed at this time, we show the\n // preprocess state. If any files are being uploaded we show uploading.\n if (progress.preprocess && state !== uploadStates.STATE_UPLOADING) {\n state = uploadStates.STATE_PREPROCESSING;\n }\n // If NO files are being preprocessed or uploaded right now, but some files are\n // being postprocessed, show the postprocess state.\n if (progress.postprocess && state !== uploadStates.STATE_UPLOADING && state !== uploadStates.STATE_PREPROCESSING) {\n state = uploadStates.STATE_POSTPROCESSING;\n }\n }\n return state;\n}\nfunction UploadStatus(_ref) {\n let {\n files,\n i18n,\n isAllComplete,\n isAllErrored,\n isAllPaused,\n inProgressNotPausedFiles,\n newFiles,\n processingFiles\n } = _ref;\n const uploadingState = getUploadingState(isAllErrored, isAllComplete, isAllPaused, files);\n switch (uploadingState) {\n case 'uploading':\n return i18n('uploadingXFiles', {\n smart_count: inProgressNotPausedFiles.length\n });\n case 'preprocessing':\n case 'postprocessing':\n return i18n('processingXFiles', {\n smart_count: processingFiles.length\n });\n case 'paused':\n return i18n('uploadPaused');\n case 'waiting':\n return i18n('xFilesSelected', {\n smart_count: newFiles.length\n });\n case 'complete':\n return i18n('uploadComplete');\n case 'error':\n return i18n('error');\n default:\n }\n}\nfunction PanelTopBar(props) {\n const {\n i18n,\n isAllComplete,\n hideCancelButton,\n maxNumberOfFiles,\n toggleAddFilesPanel,\n uppy\n } = props;\n let {\n allowNewUpload\n } = props;\n // TODO maybe this should be done in ../Dashboard.jsx, then just pass that down as `allowNewUpload`\n if (allowNewUpload && maxNumberOfFiles) {\n // eslint-disable-next-line react/destructuring-assignment\n allowNewUpload = props.totalFileCount < props.maxNumberOfFiles;\n }\n return h(\"div\", {\n className: \"uppy-DashboardContent-bar\"\n }, !isAllComplete && !hideCancelButton ? h(\"button\", {\n className: \"uppy-DashboardContent-back\",\n type: \"button\",\n onClick: () => uppy.cancelAll()\n }, i18n('cancel')) : h(\"div\", null), h(\"div\", {\n className: \"uppy-DashboardContent-title\",\n role: \"heading\",\n \"aria-level\": \"1\"\n }, h(UploadStatus, props)), allowNewUpload ? h(\"button\", {\n className: \"uppy-DashboardContent-addMore\",\n type: \"button\",\n \"aria-label\": i18n('addMoreFiles'),\n title: i18n('addMoreFiles'),\n onClick: () => toggleAddFilesPanel(true)\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"15\",\n height: \"15\",\n viewBox: \"0 0 15 15\"\n }, h(\"path\", {\n d: \"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z\"\n })), h(\"span\", {\n className: \"uppy-DashboardContent-addMoreCaption\"\n }, i18n('addMore'))) : h(\"div\", null));\n}\nexport default PanelTopBar;","import { h } from 'preact';\nexport default function RenderMetaFields(props) {\n const {\n computedMetaFields,\n requiredMetaFields,\n updateMeta,\n form,\n formState\n } = props;\n const fieldCSSClasses = {\n text: 'uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input'\n };\n return computedMetaFields.map(field => {\n const id = `uppy-Dashboard-FileCard-input-${field.id}`;\n const required = requiredMetaFields.includes(field.id);\n return h(\"fieldset\", {\n key: field.id,\n className: \"uppy-Dashboard-FileCard-fieldset\"\n }, h(\"label\", {\n className: \"uppy-Dashboard-FileCard-label\",\n htmlFor: id\n }, field.name), field.render !== undefined ? field.render({\n value: formState[field.id],\n onChange: newVal => updateMeta(newVal, field.id),\n fieldCSSClasses,\n required,\n form: form.id\n }, h) : h(\"input\", {\n className: fieldCSSClasses.text,\n id: id,\n form: form.id,\n type: field.type || 'text',\n required: required,\n value: formState[field.id],\n placeholder: field.placeholder,\n onInput: ev => updateMeta(ev.target.value, field.id),\n \"data-uppy-super-focusable\": true\n }));\n });\n}","import { h } from 'preact';\nimport { useEffect, useState, useCallback } from 'preact/hooks';\nimport classNames from 'classnames';\nimport { nanoid } from 'nanoid/non-secure';\nimport getFileTypeIcon from \"../../utils/getFileTypeIcon.js\";\nimport ignoreEvent from \"../../utils/ignoreEvent.js\";\nimport FilePreview from \"../FilePreview.js\";\nimport RenderMetaFields from \"./RenderMetaFields.js\";\nexport default function FileCard(props) {\n var _getMetaFields;\n const {\n files,\n fileCardFor,\n toggleFileCard,\n saveFileCard,\n metaFields,\n requiredMetaFields,\n openFileEditor,\n i18n,\n i18nArray,\n className,\n canEditFile\n } = props;\n const getMetaFields = () => {\n return typeof metaFields === 'function' ? metaFields(files[fileCardFor]) : metaFields;\n };\n const file = files[fileCardFor];\n const computedMetaFields = (_getMetaFields = getMetaFields()) != null ? _getMetaFields : [];\n const showEditButton = canEditFile(file);\n const storedMetaData = {};\n computedMetaFields.forEach(field => {\n var _file$meta$field$id;\n storedMetaData[field.id] = (_file$meta$field$id = file.meta[field.id]) != null ? _file$meta$field$id : '';\n });\n const [formState, setFormState] = useState(storedMetaData);\n const handleSave = useCallback(ev => {\n ev.preventDefault();\n saveFileCard(formState, fileCardFor);\n }, [saveFileCard, formState, fileCardFor]);\n const updateMeta = (newVal, name) => {\n setFormState({\n ...formState,\n [name]: newVal\n });\n };\n const handleCancel = () => {\n toggleFileCard(false);\n };\n const [form] = useState(() => {\n const formEl = document.createElement('form');\n formEl.setAttribute('tabindex', '-1');\n formEl.id = nanoid();\n return formEl;\n });\n useEffect(() => {\n document.body.appendChild(form);\n form.addEventListener('submit', handleSave);\n return () => {\n form.removeEventListener('submit', handleSave);\n document.body.removeChild(form);\n };\n }, [form, handleSave]);\n return h(\"div\", {\n className: classNames('uppy-Dashboard-FileCard', className),\n \"data-uppy-panelType\": \"FileCard\",\n onDragOver: ignoreEvent,\n onDragLeave: ignoreEvent,\n onDrop: ignoreEvent,\n onPaste: ignoreEvent\n }, h(\"div\", {\n className: \"uppy-DashboardContent-bar\"\n }, h(\"div\", {\n className: \"uppy-DashboardContent-title\",\n role: \"heading\",\n \"aria-level\": \"1\"\n }, i18nArray('editing', {\n file: h(\"span\", {\n className: \"uppy-DashboardContent-titleFile\"\n }, file.meta ? file.meta.name : file.name)\n })), h(\"button\", {\n className: \"uppy-DashboardContent-back\",\n type: \"button\",\n form: form.id,\n title: i18n('finishEditingFile'),\n onClick: handleCancel\n }, i18n('cancel'))), h(\"div\", {\n className: \"uppy-Dashboard-FileCard-inner\"\n }, h(\"div\", {\n className: \"uppy-Dashboard-FileCard-preview\",\n style: {\n backgroundColor: getFileTypeIcon(file.type).color\n }\n }, h(FilePreview, {\n file: file\n }), showEditButton && h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit\",\n onClick: event => {\n // When opening the image editor we want to save any meta fields changes.\n // Otherwise it's confusing for the user to click save in the editor,\n // but the changes here are discarded. This bypasses validation,\n // but we are okay with that.\n handleSave(event);\n openFileEditor(file);\n }\n }, i18n('editImage'))), h(\"div\", {\n className: \"uppy-Dashboard-FileCard-info\"\n }, h(RenderMetaFields, {\n computedMetaFields: computedMetaFields,\n requiredMetaFields: requiredMetaFields,\n updateMeta: updateMeta,\n form: form,\n formState: formState\n })), h(\"div\", {\n className: \"uppy-Dashboard-FileCard-actions\"\n }, h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn\"\n // If `form` attribute is supported, we want a submit button to trigger the form validation.\n // Otherwise, fallback to a classic button with a onClick event handler.\n ,\n type: \"submit\",\n form: form.id\n }, i18n('saveChanges')), h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn\",\n type: \"button\",\n onClick: handleCancel,\n form: form.id\n }, i18n('cancel')))));\n}","import { cloneElement, toChildArray } from 'preact';\nimport { useEffect, useState, useRef } from 'preact/hooks';\nimport classNames from 'classnames';\nconst transitionName = 'uppy-transition-slideDownUp';\nconst duration = 250;\n\n/**\n * Vertical slide transition.\n *\n * This can take a _single_ child component, which _must_ accept a `className` prop.\n *\n * Currently this is specific to the `uppy-transition-slideDownUp` transition,\n * but it should be simple to extend this for any type of single-element\n * transition by setting the CSS name and duration as props.\n */\nfunction Slide(_ref) {\n let {\n children\n } = _ref;\n const [cachedChildren, setCachedChildren] = useState(null);\n const [className, setClassName] = useState('');\n const enterTimeoutRef = useRef();\n const leaveTimeoutRef = useRef();\n const animationFrameRef = useRef();\n const handleEnterTransition = () => {\n setClassName(`${transitionName}-enter`);\n cancelAnimationFrame(animationFrameRef.current);\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = undefined;\n animationFrameRef.current = requestAnimationFrame(() => {\n setClassName(`${transitionName}-enter ${transitionName}-enter-active`);\n enterTimeoutRef.current = setTimeout(() => {\n setClassName('');\n }, duration);\n });\n };\n const handleLeaveTransition = () => {\n setClassName(`${transitionName}-leave`);\n cancelAnimationFrame(animationFrameRef.current);\n clearTimeout(enterTimeoutRef.current);\n enterTimeoutRef.current = undefined;\n animationFrameRef.current = requestAnimationFrame(() => {\n setClassName(`${transitionName}-leave ${transitionName}-leave-active`);\n leaveTimeoutRef.current = setTimeout(() => {\n setCachedChildren(null);\n setClassName('');\n }, duration);\n });\n };\n useEffect(() => {\n const child = toChildArray(children)[0];\n if (cachedChildren === child) return;\n if (child && !cachedChildren) {\n handleEnterTransition();\n } else if (cachedChildren && !child && !leaveTimeoutRef.current) {\n handleLeaveTransition();\n }\n setCachedChildren(child);\n }, [children, cachedChildren]); // Dependency array to trigger effect on children change\n\n useEffect(() => {\n return () => {\n clearTimeout(enterTimeoutRef.current);\n clearTimeout(leaveTimeoutRef.current);\n cancelAnimationFrame(animationFrameRef.current);\n };\n }, []); // Cleanup useEffect\n\n if (!cachedChildren) return null;\n return cloneElement(cachedChildren, {\n className: classNames(className, cachedChildren.props.className)\n });\n}\nexport default Slide;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/* eslint-disable react/destructuring-assignment, react/jsx-props-no-spreading */\nimport { h } from 'preact';\nimport classNames from 'classnames';\nimport isDragDropSupported from '@uppy/utils/lib/isDragDropSupported';\nimport FileList from \"./FileList.js\";\nimport AddFiles from \"./AddFiles.js\";\nimport AddFilesPanel from \"./AddFilesPanel.js\";\nimport PickerPanelContent from \"./PickerPanelContent.js\";\nimport EditorPanel from \"./EditorPanel.js\";\nimport PanelTopBar from \"./PickerPanelTopBar.js\";\nimport FileCard from \"./FileCard/index.js\";\nimport Slide from \"./Slide.js\";\n\n// http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog\n// https://github.com/ghosh/micromodal\n\nconst WIDTH_XL = 900;\nconst WIDTH_LG = 700;\nconst WIDTH_MD = 576;\nconst HEIGHT_MD = 330;\n// We might want to enable this in the future\n// const HEIGHT_LG = 400\n// const HEIGHT_XL = 460\n\nexport default function Dashboard(props) {\n const isNoFiles = props.totalFileCount === 0;\n const isSingleFile = props.totalFileCount === 1;\n const isSizeMD = props.containerWidth > WIDTH_MD;\n const isSizeHeightMD = props.containerHeight > HEIGHT_MD;\n const dashboardClassName = classNames({\n 'uppy-Dashboard': true,\n 'uppy-Dashboard--isDisabled': props.disabled,\n 'uppy-Dashboard--animateOpenClose': props.animateOpenClose,\n 'uppy-Dashboard--isClosing': props.isClosing,\n 'uppy-Dashboard--isDraggingOver': props.isDraggingOver,\n 'uppy-Dashboard--modal': !props.inline,\n 'uppy-size--md': props.containerWidth > WIDTH_MD,\n 'uppy-size--lg': props.containerWidth > WIDTH_LG,\n 'uppy-size--xl': props.containerWidth > WIDTH_XL,\n 'uppy-size--height-md': props.containerHeight > HEIGHT_MD,\n // We might want to enable this in the future\n // 'uppy-size--height-lg': props.containerHeight > HEIGHT_LG,\n // 'uppy-size--height-xl': props.containerHeight > HEIGHT_XL,\n 'uppy-Dashboard--isAddFilesPanelVisible': props.showAddFilesPanel,\n 'uppy-Dashboard--isInnerWrapVisible': props.areInsidesReadyToBeVisible,\n // Only enable “centered single file” mode when Dashboard is tall enough\n 'uppy-Dashboard--singleFile': props.singleFileFullScreen && isSingleFile && isSizeHeightMD\n });\n\n // Important: keep these in sync with the percent width values in `src/components/FileItem/index.scss`.\n let itemsPerRow = 1; // mobile\n if (props.containerWidth > WIDTH_XL) {\n itemsPerRow = 5;\n } else if (props.containerWidth > WIDTH_LG) {\n itemsPerRow = 4;\n } else if (props.containerWidth > WIDTH_MD) {\n itemsPerRow = 3;\n }\n const showFileList = props.showSelectedFiles && !isNoFiles;\n const numberOfFilesForRecovery = props.recoveredState ? Object.keys(props.recoveredState.files).length : null;\n const numberOfGhosts = props.files ? Object.keys(props.files).filter(fileID => props.files[fileID].isGhost).length : null;\n const renderRestoredText = () => {\n if (numberOfGhosts > 0) {\n return props.i18n('recoveredXFiles', {\n smart_count: numberOfGhosts\n });\n }\n return props.i18n('recoveredAllFiles');\n };\n const dashboard = h(\"div\", {\n className: dashboardClassName,\n \"data-uppy-theme\": props.theme,\n \"data-uppy-num-acquirers\": props.acquirers.length,\n \"data-uppy-drag-drop-supported\": !props.disableLocalFiles && isDragDropSupported(),\n \"aria-hidden\": props.inline ? 'false' : props.isHidden,\n \"aria-disabled\": props.disabled,\n \"aria-label\": !props.inline ? props.i18n('dashboardWindowTitle') : props.i18n('dashboardTitle'),\n onPaste: props.handlePaste,\n onDragOver: props.handleDragOver,\n onDragLeave: props.handleDragLeave,\n onDrop: props.handleDrop\n }, h(\"div\", {\n \"aria-hidden\": \"true\",\n className: \"uppy-Dashboard-overlay\",\n tabIndex: -1,\n onClick: props.handleClickOutside\n }), h(\"div\", {\n className: \"uppy-Dashboard-inner\",\n \"aria-modal\": !props.inline && 'true',\n role: props.inline ? undefined : 'dialog',\n style: {\n width: props.inline && props.width ? props.width : '',\n height: props.inline && props.height ? props.height : ''\n }\n }, !props.inline ? h(\"button\", {\n className: \"uppy-u-reset uppy-Dashboard-close\",\n type: \"button\",\n \"aria-label\": props.i18n('closeModal'),\n title: props.i18n('closeModal'),\n onClick: props.closeModal\n }, h(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\")) : null, h(\"div\", {\n className: \"uppy-Dashboard-innerWrap\"\n }, h(\"div\", {\n className: \"uppy-Dashboard-dropFilesHereHint\"\n }, props.i18n('dropHint')), showFileList && h(PanelTopBar, props), numberOfFilesForRecovery && h(\"div\", {\n className: \"uppy-Dashboard-serviceMsg\"\n }, h(\"svg\", {\n className: \"uppy-Dashboard-serviceMsg-icon\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"21\",\n height: \"16\",\n viewBox: \"0 0 24 19\"\n }, h(\"g\", {\n transform: \"translate(0 -1)\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, h(\"path\", {\n d: \"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z\",\n fill: \"#FFD300\"\n }), h(\"path\", {\n fill: \"#000\",\n d: \"M11 6h2l-.3 8h-1.4z\"\n }), h(\"circle\", {\n fill: \"#000\",\n cx: \"12\",\n cy: \"17\",\n r: \"1\"\n }))), h(\"strong\", {\n className: \"uppy-Dashboard-serviceMsg-title\"\n }, props.i18n('sessionRestored')), h(\"div\", {\n className: \"uppy-Dashboard-serviceMsg-text\"\n }, renderRestoredText())), showFileList ? h(FileList, {\n id: props.id,\n i18n: props.i18n,\n uppy: props.uppy,\n files: props.files,\n resumableUploads: props.resumableUploads,\n hideRetryButton: props.hideRetryButton,\n hidePauseResumeButton: props.hidePauseResumeButton,\n hideCancelButton: props.hideCancelButton,\n showLinkToFileUploadResult: props.showLinkToFileUploadResult,\n showRemoveButtonAfterComplete: props.showRemoveButtonAfterComplete,\n metaFields: props.metaFields,\n toggleFileCard: props.toggleFileCard,\n handleRequestThumbnail: props.handleRequestThumbnail,\n handleCancelThumbnail: props.handleCancelThumbnail,\n recoveredState: props.recoveredState,\n individualCancellation: props.individualCancellation,\n openFileEditor: props.openFileEditor,\n canEditFile: props.canEditFile,\n toggleAddFilesPanel: props.toggleAddFilesPanel,\n isSingleFile: isSingleFile,\n itemsPerRow: itemsPerRow,\n containerWidth: props.containerWidth,\n containerHeight: props.containerHeight\n })\n // eslint-disable-next-line react/jsx-props-no-spreading\n : h(AddFiles, _extends({}, props, {\n isSizeMD: isSizeMD\n })), h(Slide, null, props.showAddFilesPanel ? h(AddFilesPanel, _extends({\n key: \"AddFiles\"\n }, props, {\n isSizeMD: isSizeMD\n })) : null), h(Slide, null, props.fileCardFor ? h(FileCard, _extends({\n key: \"FileCard\"\n }, props)) : null), h(Slide, null, props.activePickerPanel ? h(PickerPanelContent, _extends({\n key: \"Picker\"\n }, props)) : null), h(Slide, null, props.showFileEditor ? h(EditorPanel, _extends({\n key: \"Editor\"\n }, props)) : null), h(\"div\", {\n className: \"uppy-Dashboard-progressindicators\"\n }, props.progressindicators.map(target => {\n return props.uppy.getPlugin(target.id).render(props.state);\n })))));\n return dashboard;\n}","export default {\n strings: {\n // When `inline: false`, used as the screen reader label for the button that closes the modal.\n closeModal: 'Close Modal',\n // Used as the screen reader label for the plus (+) button that shows the “Add more files” screen\n addMoreFiles: 'Add more files',\n addingMoreFiles: 'Adding more files',\n // Used as the header for import panels, e.g., “Import from Google Drive”.\n importFrom: 'Import from %{name}',\n // When `inline: false`, used as the screen reader label for the dashboard modal.\n dashboardWindowTitle: 'Uppy Dashboard Window (Press escape to close)',\n // When `inline: true`, used as the screen reader label for the dashboard area.\n dashboardTitle: 'Uppy Dashboard',\n // Shown in the Informer when a link to a file was copied to the clipboard.\n copyLinkToClipboardSuccess: 'Link copied to clipboard.',\n // Used when a link cannot be copied automatically — the user has to select the text from the\n // input element below this string.\n copyLinkToClipboardFallback: 'Copy the URL below',\n // Used as the hover title and screen reader label for buttons that copy a file link.\n copyLink: 'Copy link',\n back: 'Back',\n // Used as the screen reader label for buttons that remove a file.\n removeFile: 'Remove file',\n // Used as the screen reader label for buttons that open the metadata editor panel for a file.\n editFile: 'Edit file',\n editImage: 'Edit image',\n // Shown in the panel header for the metadata editor. Rendered as “Editing image.png”.\n editing: 'Editing %{file}',\n // Shown on the main upload screen when an upload error occurs\n error: 'Error',\n // Used as the screen reader label for the button that saves metadata edits and returns to the\n // file list view.\n finishEditingFile: 'Finish editing file',\n saveChanges: 'Save changes',\n // Used as the label for the tab button that opens the system file selection dialog.\n myDevice: 'My Device',\n dropHint: 'Drop your files here',\n // Used as the hover text and screen reader label for file progress indicators when\n // they have been fully uploaded.\n uploadComplete: 'Upload complete',\n uploadPaused: 'Upload paused',\n // Used as the hover text and screen reader label for the buttons to resume paused uploads.\n resumeUpload: 'Resume upload',\n // Used as the hover text and screen reader label for the buttons to pause uploads.\n pauseUpload: 'Pause upload',\n // Used as the hover text and screen reader label for the buttons to retry failed uploads.\n retryUpload: 'Retry upload',\n // Used as the hover text and screen reader label for the buttons to cancel uploads.\n cancelUpload: 'Cancel upload',\n // Used in a title, how many files are currently selected\n xFilesSelected: {\n 0: '%{smart_count} file selected',\n 1: '%{smart_count} files selected'\n },\n uploadingXFiles: {\n 0: 'Uploading %{smart_count} file',\n 1: 'Uploading %{smart_count} files'\n },\n processingXFiles: {\n 0: 'Processing %{smart_count} file',\n 1: 'Processing %{smart_count} files'\n },\n // The \"powered by Uppy\" link at the bottom of the Dashboard.\n poweredBy: 'Powered by %{uppy}',\n addMore: 'Add more',\n editFileWithFilename: 'Edit file %{file}',\n save: 'Save',\n cancel: 'Cancel',\n dropPasteFiles: 'Drop files here or %{browseFiles}',\n dropPasteFolders: 'Drop files here or %{browseFolders}',\n dropPasteBoth: 'Drop files here, %{browseFiles} or %{browseFolders}',\n dropPasteImportFiles: 'Drop files here, %{browseFiles} or import from:',\n dropPasteImportFolders: 'Drop files here, %{browseFolders} or import from:',\n dropPasteImportBoth: 'Drop files here, %{browseFiles}, %{browseFolders} or import from:',\n importFiles: 'Import files from:',\n browseFiles: 'browse files',\n browseFolders: 'browse folders',\n recoveredXFiles: {\n 0: 'We could not fully recover 1 file. Please re-select it and resume the upload.',\n 1: 'We could not fully recover %{smart_count} files. Please re-select them and resume the upload.'\n },\n recoveredAllFiles: 'We restored all files. You can now resume the upload.',\n sessionRestored: 'Session restored',\n reSelect: 'Re-select',\n missingRequiredMetaFields: {\n 0: 'Missing required meta field: %{fields}.',\n 1: 'Missing required meta fields: %{fields}.'\n },\n // Used for native device camera buttons on mobile\n takePictureBtn: 'Take Picture',\n recordVideoBtn: 'Record Video'\n }\n};","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport { UIPlugin } from '@uppy/core';\nimport StatusBar from '@uppy/status-bar';\nimport Informer from '@uppy/informer';\nimport ThumbnailGenerator from '@uppy/thumbnail-generator';\nimport findAllDOMElements from '@uppy/utils/lib/findAllDOMElements';\nimport toArray from '@uppy/utils/lib/toArray';\nimport getDroppedFiles from '@uppy/utils/lib/getDroppedFiles';\nimport { defaultPickerIcon } from '@uppy/provider-views';\nimport { nanoid } from 'nanoid/non-secure';\nimport memoizeOne from 'memoize-one';\nimport * as trapFocus from \"./utils/trapFocus.js\";\nimport createSuperFocus from \"./utils/createSuperFocus.js\";\nimport DashboardUI from \"./components/Dashboard.js\";\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.1.0\"\n};\nimport locale from \"./locale.js\";\nconst memoize = memoizeOne.default || memoizeOne;\nconst TAB_KEY = 9;\nconst ESC_KEY = 27;\nfunction createPromise() {\n const o = {};\n o.promise = new Promise((resolve, reject) => {\n o.resolve = resolve;\n o.reject = reject;\n });\n return o;\n}\nconst defaultOptions = {\n target: 'body',\n metaFields: [],\n inline: false,\n width: 750,\n height: 550,\n thumbnailWidth: 280,\n thumbnailType: 'image/jpeg',\n waitForThumbnailsBeforeUpload: false,\n defaultPickerIcon,\n showLinkToFileUploadResult: false,\n showProgressDetails: false,\n hideUploadButton: false,\n hideCancelButton: false,\n hideRetryButton: false,\n hidePauseResumeButton: false,\n hideProgressAfterFinish: false,\n note: null,\n closeModalOnClickOutside: false,\n closeAfterFinish: false,\n singleFileFullScreen: true,\n disableStatusBar: false,\n disableInformer: false,\n disableThumbnailGenerator: false,\n disablePageScrollWhenModalOpen: true,\n animateOpenClose: true,\n fileManagerSelectionType: 'files',\n proudlyDisplayPoweredByUppy: true,\n showSelectedFiles: true,\n showRemoveButtonAfterComplete: false,\n browserBackButtonClose: false,\n showNativePhotoCameraButton: false,\n showNativeVideoCameraButton: false,\n theme: 'light',\n autoOpen: null,\n disabled: false,\n disableLocalFiles: false,\n // Dynamic default options, they have to be defined in the constructor (because\n // they require access to the `this` keyword), but we still want them to\n // appear in the default options so TS knows they'll be defined.\n doneButtonHandler: undefined,\n onRequestCloseModal: null\n};\n\n/**\n * Dashboard UI with previews, metadata editing, tabs for various services and more\n */\nvar _disabledNodes = /*#__PURE__*/_classPrivateFieldLooseKey(\"disabledNodes\");\nvar _generateLargeThumbnailIfSingleFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"generateLargeThumbnailIfSingleFile\");\nvar _openFileEditorWhenFilesAdded = /*#__PURE__*/_classPrivateFieldLooseKey(\"openFileEditorWhenFilesAdded\");\nvar _attachRenderFunctionToTarget = /*#__PURE__*/_classPrivateFieldLooseKey(\"attachRenderFunctionToTarget\");\nvar _isTargetSupported = /*#__PURE__*/_classPrivateFieldLooseKey(\"isTargetSupported\");\nvar _getAcquirers = /*#__PURE__*/_classPrivateFieldLooseKey(\"getAcquirers\");\nvar _getProgressIndicators = /*#__PURE__*/_classPrivateFieldLooseKey(\"getProgressIndicators\");\nvar _getEditors = /*#__PURE__*/_classPrivateFieldLooseKey(\"getEditors\");\nvar _addSpecifiedPluginsFromOptions = /*#__PURE__*/_classPrivateFieldLooseKey(\"addSpecifiedPluginsFromOptions\");\nvar _autoDiscoverPlugins = /*#__PURE__*/_classPrivateFieldLooseKey(\"autoDiscoverPlugins\");\nvar _addSupportedPluginIfNoTarget = /*#__PURE__*/_classPrivateFieldLooseKey(\"addSupportedPluginIfNoTarget\");\nvar _getStatusBarOpts = /*#__PURE__*/_classPrivateFieldLooseKey(\"getStatusBarOpts\");\nvar _getThumbnailGeneratorOpts = /*#__PURE__*/_classPrivateFieldLooseKey(\"getThumbnailGeneratorOpts\");\nvar _getInformerOpts = /*#__PURE__*/_classPrivateFieldLooseKey(\"getInformerOpts\");\nvar _getStatusBarId = /*#__PURE__*/_classPrivateFieldLooseKey(\"getStatusBarId\");\nvar _getThumbnailGeneratorId = /*#__PURE__*/_classPrivateFieldLooseKey(\"getThumbnailGeneratorId\");\nvar _getInformerId = /*#__PURE__*/_classPrivateFieldLooseKey(\"getInformerId\");\nexport default class Dashboard extends UIPlugin {\n // Timeouts\n\n constructor(uppy, _opts) {\n var _opts$autoOpen, _this$opts4, _this$opts4$onRequest;\n const autoOpen = (_opts$autoOpen = _opts == null ? void 0 : _opts.autoOpen) != null ? _opts$autoOpen : null;\n super(uppy, {\n ...defaultOptions,\n ..._opts,\n autoOpen\n });\n Object.defineProperty(this, _getInformerId, {\n value: _getInformerId2\n });\n Object.defineProperty(this, _getThumbnailGeneratorId, {\n value: _getThumbnailGeneratorId2\n });\n Object.defineProperty(this, _getStatusBarId, {\n value: _getStatusBarId2\n });\n // eslint-disable-next-line class-methods-use-this\n Object.defineProperty(this, _getInformerOpts, {\n value: _getInformerOpts2\n });\n Object.defineProperty(this, _getThumbnailGeneratorOpts, {\n value: _getThumbnailGeneratorOpts2\n });\n Object.defineProperty(this, _getStatusBarOpts, {\n value: _getStatusBarOpts2\n });\n Object.defineProperty(this, _disabledNodes, {\n writable: true,\n value: void 0\n });\n this.modalName = `uppy-Dashboard-${nanoid()}`;\n this.superFocus = createSuperFocus();\n this.ifFocusedOnUppyRecently = false;\n this.removeTarget = plugin => {\n const pluginState = this.getPluginState();\n // filter out the one we want to remove\n const newTargets = pluginState.targets.filter(target => target.id !== plugin.id);\n this.setPluginState({\n targets: newTargets\n });\n };\n this.addTarget = plugin => {\n const callerPluginId = plugin.id || plugin.constructor.name;\n const callerPluginName = plugin.title || callerPluginId;\n const callerPluginType = plugin.type;\n if (callerPluginType !== 'acquirer' && callerPluginType !== 'progressindicator' && callerPluginType !== 'editor') {\n const msg = 'Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor';\n this.uppy.log(msg, 'error');\n return null;\n }\n const target = {\n id: callerPluginId,\n name: callerPluginName,\n type: callerPluginType\n };\n const state = this.getPluginState();\n const newTargets = state.targets.slice();\n newTargets.push(target);\n this.setPluginState({\n targets: newTargets\n });\n return this.el;\n };\n this.hideAllPanels = () => {\n var _state$activePickerPa;\n const state = this.getPluginState();\n const update = {\n activePickerPanel: undefined,\n showAddFilesPanel: false,\n activeOverlayType: null,\n fileCardFor: null,\n showFileEditor: false\n };\n if (state.activePickerPanel === update.activePickerPanel && state.showAddFilesPanel === update.showAddFilesPanel && state.showFileEditor === update.showFileEditor && state.activeOverlayType === update.activeOverlayType) {\n // avoid doing a state update if nothing changed\n return;\n }\n this.setPluginState(update);\n this.uppy.emit('dashboard:close-panel', (_state$activePickerPa = state.activePickerPanel) == null ? void 0 : _state$activePickerPa.id);\n };\n this.showPanel = id => {\n const {\n targets\n } = this.getPluginState();\n const activePickerPanel = targets.find(target => {\n return target.type === 'acquirer' && target.id === id;\n });\n this.setPluginState({\n activePickerPanel,\n activeOverlayType: 'PickerPanel'\n });\n this.uppy.emit('dashboard:show-panel', id);\n };\n this.canEditFile = file => {\n const {\n targets\n } = this.getPluginState();\n const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n return editors.some(target => this.uppy.getPlugin(target.id).canEditFile(file));\n };\n this.openFileEditor = file => {\n const {\n targets\n } = this.getPluginState();\n const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n this.setPluginState({\n showFileEditor: true,\n fileCardFor: file.id || null,\n activeOverlayType: 'FileEditor'\n });\n editors.forEach(editor => {\n ;\n this.uppy.getPlugin(editor.id).selectFile(file);\n });\n };\n this.closeFileEditor = () => {\n const {\n metaFields\n } = this.getPluginState();\n const isMetaEditorEnabled = metaFields && metaFields.length > 0;\n if (isMetaEditorEnabled) {\n this.setPluginState({\n showFileEditor: false,\n activeOverlayType: 'FileCard'\n });\n } else {\n this.setPluginState({\n showFileEditor: false,\n fileCardFor: null,\n activeOverlayType: 'AddFiles'\n });\n }\n };\n this.saveFileEditor = () => {\n const {\n targets\n } = this.getPluginState();\n const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n editors.forEach(editor => {\n ;\n this.uppy.getPlugin(editor.id).save();\n });\n this.closeFileEditor();\n };\n this.openModal = () => {\n const {\n promise,\n resolve\n } = createPromise();\n // save scroll position\n this.savedScrollPosition = window.pageYOffset;\n // save active element, so we can restore focus when modal is closed\n this.savedActiveElement = document.activeElement;\n if (this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.add('uppy-Dashboard-isFixed');\n }\n if (this.opts.animateOpenClose && this.getPluginState().isClosing) {\n const handler = () => {\n this.setPluginState({\n isHidden: false\n });\n this.el.removeEventListener('animationend', handler, false);\n resolve();\n };\n this.el.addEventListener('animationend', handler, false);\n } else {\n this.setPluginState({\n isHidden: false\n });\n resolve();\n }\n if (this.opts.browserBackButtonClose) {\n this.updateBrowserHistory();\n }\n\n // handle ESC and TAB keys in modal dialog\n document.addEventListener('keydown', this.handleKeyDownInModal);\n this.uppy.emit('dashboard:modal-open');\n return promise;\n };\n this.closeModal = opts => {\n var _opts$manualClose;\n // Whether the modal is being closed by the user (`true`) or by other means (e.g. browser back button)\n const manualClose = (_opts$manualClose = opts == null ? void 0 : opts.manualClose) != null ? _opts$manualClose : true;\n const {\n isHidden,\n isClosing\n } = this.getPluginState();\n if (isHidden || isClosing) {\n // short-circuit if animation is ongoing\n return undefined;\n }\n const {\n promise,\n resolve\n } = createPromise();\n if (this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.remove('uppy-Dashboard-isFixed');\n }\n if (this.opts.animateOpenClose) {\n this.setPluginState({\n isClosing: true\n });\n const handler = () => {\n this.setPluginState({\n isHidden: true,\n isClosing: false\n });\n this.superFocus.cancel();\n this.savedActiveElement.focus();\n this.el.removeEventListener('animationend', handler, false);\n resolve();\n };\n this.el.addEventListener('animationend', handler, false);\n } else {\n this.setPluginState({\n isHidden: true\n });\n this.superFocus.cancel();\n this.savedActiveElement.focus();\n resolve();\n }\n\n // handle ESC and TAB keys in modal dialog\n document.removeEventListener('keydown', this.handleKeyDownInModal);\n if (manualClose) {\n if (this.opts.browserBackButtonClose) {\n var _history$state;\n // Make sure that the latest entry in the history state is our modal name\n // eslint-disable-next-line no-restricted-globals\n if ((_history$state = history.state) != null && _history$state[this.modalName]) {\n // Go back in history to clear out the entry we created (ultimately closing the modal)\n // eslint-disable-next-line no-restricted-globals\n history.back();\n }\n }\n }\n this.uppy.emit('dashboard:modal-closed');\n return promise;\n };\n this.isModalOpen = () => {\n return !this.getPluginState().isHidden || false;\n };\n this.requestCloseModal = () => {\n if (this.opts.onRequestCloseModal) {\n return this.opts.onRequestCloseModal();\n }\n return this.closeModal();\n };\n this.setDarkModeCapability = isDarkModeOn => {\n const {\n capabilities\n } = this.uppy.getState();\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n darkMode: isDarkModeOn\n }\n });\n };\n this.handleSystemDarkModeChange = event => {\n const isDarkModeOnNow = event.matches;\n this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnNow ? 'on' : 'off'}`);\n this.setDarkModeCapability(isDarkModeOnNow);\n };\n this.toggleFileCard = (show, fileID) => {\n const file = this.uppy.getFile(fileID);\n if (show) {\n this.uppy.emit('dashboard:file-edit-start', file);\n } else {\n this.uppy.emit('dashboard:file-edit-complete', file);\n }\n this.setPluginState({\n fileCardFor: show ? fileID : null,\n activeOverlayType: show ? 'FileCard' : null\n });\n };\n this.toggleAddFilesPanel = show => {\n this.setPluginState({\n showAddFilesPanel: show,\n activeOverlayType: show ? 'AddFiles' : null\n });\n };\n this.addFiles = files => {\n const descriptors = files.map(file => ({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file,\n meta: {\n // path of the file relative to the ancestor directory the user selected.\n // e.g. 'docs/Old Prague/airbnb.pdf'\n relativePath: file.relativePath || file.webkitRelativePath || null\n }\n }));\n try {\n this.uppy.addFiles(descriptors);\n } catch (err) {\n this.uppy.log(err);\n }\n };\n // ___Why make insides of Dashboard invisible until first ResizeObserver event is emitted?\n // ResizeOberserver doesn't emit the first resize event fast enough, users can see the jump from one .uppy-size-- to\n // another (e.g. in Safari)\n // ___Why not apply visibility property to .uppy-Dashboard-inner?\n // Because ideally, acc to specs, ResizeObserver should see invisible elements as of width 0. So even though applying\n // invisibility to .uppy-Dashboard-inner works now, it may not work in the future.\n this.startListeningToResize = () => {\n // Watch for Dashboard container (`.uppy-Dashboard-inner`) resize\n // and update containerWidth/containerHeight in plugin state accordingly.\n // Emits first event on initialization.\n this.resizeObserver = new ResizeObserver(entries => {\n const uppyDashboardInnerEl = entries[0];\n const {\n width,\n height\n } = uppyDashboardInnerEl.contentRect;\n this.setPluginState({\n containerWidth: width,\n containerHeight: height,\n areInsidesReadyToBeVisible: true\n });\n });\n this.resizeObserver.observe(this.el.querySelector('.uppy-Dashboard-inner'));\n\n // If ResizeObserver fails to emit an event telling us what size to use - default to the mobile view\n this.makeDashboardInsidesVisibleAnywayTimeout = setTimeout(() => {\n const pluginState = this.getPluginState();\n const isModalAndClosed = !this.opts.inline && pluginState.isHidden;\n if (\n // We might want to enable this in the future\n\n // if ResizeObserver hasn't yet fired,\n !pluginState.areInsidesReadyToBeVisible &&\n // and it's not due to the modal being closed\n !isModalAndClosed) {\n this.uppy.log('[Dashboard] resize event didn’t fire on time: defaulted to mobile layout', 'warning');\n this.setPluginState({\n areInsidesReadyToBeVisible: true\n });\n }\n }, 1000);\n };\n this.stopListeningToResize = () => {\n this.resizeObserver.disconnect();\n clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout);\n };\n // Records whether we have been interacting with uppy right now,\n // which is then used to determine whether state updates should trigger a refocusing.\n this.recordIfFocusedOnUppyRecently = event => {\n if (this.el.contains(event.target)) {\n this.ifFocusedOnUppyRecently = true;\n } else {\n this.ifFocusedOnUppyRecently = false;\n // ___Why run this.superFocus.cancel here when it already runs in superFocusOnEachUpdate?\n // Because superFocus is debounced, when we move from Uppy to some other element on the page,\n // previously run superFocus sometimes hits and moves focus back to Uppy.\n this.superFocus.cancel();\n }\n };\n this.disableInteractiveElements = disable => {\n var _classPrivateFieldLoo;\n const NODES_TO_DISABLE = ['a[href]', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', '[role=\"button\"]:not([disabled])'];\n const nodesToDisable = (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _disabledNodes)[_disabledNodes]) != null ? _classPrivateFieldLoo : toArray(this.el.querySelectorAll(NODES_TO_DISABLE)).filter(node => !node.classList.contains('uppy-Dashboard-close'));\n for (const node of nodesToDisable) {\n // Links can’t have `disabled` attr, so we use `aria-disabled` for a11y\n if (node.tagName === 'A') {\n node.setAttribute('aria-disabled', disable);\n } else {\n node.disabled = disable;\n }\n }\n if (disable) {\n _classPrivateFieldLooseBase(this, _disabledNodes)[_disabledNodes] = nodesToDisable;\n } else {\n _classPrivateFieldLooseBase(this, _disabledNodes)[_disabledNodes] = null;\n }\n this.dashboardIsDisabled = disable;\n };\n this.updateBrowserHistory = () => {\n var _history$state2;\n // Ensure history state does not already contain our modal name to avoid double-pushing\n // eslint-disable-next-line no-restricted-globals\n if (!((_history$state2 = history.state) != null && _history$state2[this.modalName])) {\n // Push to history so that the page is not lost on browser back button press\n // eslint-disable-next-line no-restricted-globals\n history.pushState({\n // eslint-disable-next-line no-restricted-globals\n ...history.state,\n [this.modalName]: true\n }, '');\n }\n\n // Listen for back button presses\n window.addEventListener('popstate', this.handlePopState, false);\n };\n this.handlePopState = event => {\n var _event$state;\n // Close the modal if the history state no longer contains our modal name\n if (this.isModalOpen() && (!event.state || !event.state[this.modalName])) {\n this.closeModal({\n manualClose: false\n });\n }\n\n // When the browser back button is pressed and uppy is now the latest entry\n // in the history but the modal is closed, fix the history by removing the\n // uppy history entry.\n // This occurs when another entry is added into the history state while the\n // modal is open, and then the modal gets manually closed.\n // Solves PR #575 (https://github.com/transloadit/uppy/pull/575)\n if (!this.isModalOpen() && (_event$state = event.state) != null && _event$state[this.modalName]) {\n // eslint-disable-next-line no-restricted-globals\n history.back();\n }\n };\n this.handleKeyDownInModal = event => {\n // close modal on esc key press\n if (event.keyCode === ESC_KEY) this.requestCloseModal();\n // trap focus on tab key press\n if (event.keyCode === TAB_KEY) trapFocus.forModal(event, this.getPluginState().activeOverlayType, this.el);\n };\n this.handleClickOutside = () => {\n if (this.opts.closeModalOnClickOutside) this.requestCloseModal();\n };\n this.handlePaste = event => {\n // Let any acquirer plugin (Url/Webcam/etc.) handle pastes to the root\n this.uppy.iteratePlugins(plugin => {\n if (plugin.type === 'acquirer') {\n // Every Plugin with .type acquirer can define handleRootPaste(event)\n ;\n plugin.handleRootPaste == null || plugin.handleRootPaste(event);\n }\n });\n\n // Add all dropped files\n const files = toArray(event.clipboardData.files);\n if (files.length > 0) {\n this.uppy.log('[Dashboard] Files pasted');\n this.addFiles(files);\n }\n };\n this.handleInputChange = event => {\n event.preventDefault();\n const files = toArray(event.target.files);\n if (files.length > 0) {\n this.uppy.log('[Dashboard] Files selected through input');\n this.addFiles(files);\n }\n };\n this.handleDragOver = event => {\n var _this$opts$onDragOver, _this$opts;\n event.preventDefault();\n event.stopPropagation();\n\n // Check if some plugin can handle the datatransfer without files —\n // for instance, the Url plugin can import a url\n const canSomePluginHandleRootDrop = () => {\n let somePluginCanHandleRootDrop = true;\n this.uppy.iteratePlugins(plugin => {\n if (plugin.canHandleRootDrop != null && plugin.canHandleRootDrop(event)) {\n somePluginCanHandleRootDrop = true;\n }\n });\n return somePluginCanHandleRootDrop;\n };\n\n // Check if the \"type\" of the datatransfer object includes files\n const doesEventHaveFiles = () => {\n const {\n types\n } = event.dataTransfer;\n return types.some(type => type === 'Files');\n };\n\n // Deny drop, if no plugins can handle datatransfer, there are no files,\n // or when opts.disabled is set, or new uploads are not allowed\n const somePluginCanHandleRootDrop = canSomePluginHandleRootDrop();\n const hasFiles = doesEventHaveFiles();\n if (!somePluginCanHandleRootDrop && !hasFiles || this.opts.disabled ||\n // opts.disableLocalFiles should only be taken into account if no plugins\n // can handle the datatransfer\n this.opts.disableLocalFiles && (hasFiles || !somePluginCanHandleRootDrop) || !this.uppy.getState().allowNewUpload) {\n event.dataTransfer.dropEffect = 'none'; // eslint-disable-line no-param-reassign\n return;\n }\n\n // Add a small (+) icon on drop\n // (and prevent browsers from interpreting this as files being _moved_ into the\n // browser, https://github.com/transloadit/uppy/issues/1978).\n event.dataTransfer.dropEffect = 'copy'; // eslint-disable-line no-param-reassign\n\n this.setPluginState({\n isDraggingOver: true\n });\n (_this$opts$onDragOver = (_this$opts = this.opts).onDragOver) == null || _this$opts$onDragOver.call(_this$opts, event);\n };\n this.handleDragLeave = event => {\n var _this$opts$onDragLeav, _this$opts2;\n event.preventDefault();\n event.stopPropagation();\n this.setPluginState({\n isDraggingOver: false\n });\n (_this$opts$onDragLeav = (_this$opts2 = this.opts).onDragLeave) == null || _this$opts$onDragLeav.call(_this$opts2, event);\n };\n this.handleDrop = async event => {\n var _this$opts$onDrop, _this$opts3;\n event.preventDefault();\n event.stopPropagation();\n this.setPluginState({\n isDraggingOver: false\n });\n\n // Let any acquirer plugin (Url/Webcam/etc.) handle drops to the root\n this.uppy.iteratePlugins(plugin => {\n if (plugin.type === 'acquirer') {\n // Every Plugin with .type acquirer can define handleRootDrop(event)\n ;\n plugin.handleRootDrop == null || plugin.handleRootDrop(event);\n }\n });\n\n // Add all dropped files\n let executedDropErrorOnce = false;\n const logDropError = error => {\n this.uppy.log(error, 'error');\n\n // In practice all drop errors are most likely the same,\n // so let's just show one to avoid overwhelming the user\n if (!executedDropErrorOnce) {\n this.uppy.info(error.message, 'error');\n executedDropErrorOnce = true;\n }\n };\n this.uppy.log('[Dashboard] Processing dropped files');\n\n // Add all dropped files\n const files = await getDroppedFiles(event.dataTransfer, {\n logDropError\n });\n if (files.length > 0) {\n this.uppy.log('[Dashboard] Files dropped');\n this.addFiles(files);\n }\n (_this$opts$onDrop = (_this$opts3 = this.opts).onDrop) == null || _this$opts$onDrop.call(_this$opts3, event);\n };\n this.handleRequestThumbnail = file => {\n if (!this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.emit('thumbnail:request', file);\n }\n };\n /**\n * We cancel thumbnail requests when a file item component unmounts to avoid\n * clogging up the queue when the user scrolls past many elements.\n */\n this.handleCancelThumbnail = file => {\n if (!this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.emit('thumbnail:cancel', file);\n }\n };\n this.handleKeyDownInInline = event => {\n // Trap focus on tab key press.\n if (event.keyCode === TAB_KEY) trapFocus.forInline(event, this.getPluginState().activeOverlayType, this.el);\n };\n // ___Why do we listen to the 'paste' event on a document instead of onPaste={props.handlePaste} prop,\n // or this.el.addEventListener('paste')?\n // Because (at least) Chrome doesn't handle paste if focus is on some button, e.g. 'My Device'.\n // => Therefore, the best option is to listen to all 'paste' events, and only react to them when we are focused on our\n // particular Uppy instance.\n // ___Why do we still need onPaste={props.handlePaste} for the DashboardUi?\n // Because if we click on the 'Drop files here' caption e.g., `document.activeElement` will be 'body'. Which means our\n // standard determination of whether we're pasting into our Uppy instance won't work.\n // => Therefore, we need a traditional onPaste={props.handlePaste} handler too.\n this.handlePasteOnBody = event => {\n const isFocusInOverlay = this.el.contains(document.activeElement);\n if (isFocusInOverlay) {\n this.handlePaste(event);\n }\n };\n this.handleComplete = _ref => {\n let {\n failed\n } = _ref;\n if (this.opts.closeAfterFinish && !(failed != null && failed.length)) {\n // All uploads are done\n this.requestCloseModal();\n }\n };\n this.handleCancelRestore = () => {\n this.uppy.emit('restore-canceled');\n };\n Object.defineProperty(this, _generateLargeThumbnailIfSingleFile, {\n writable: true,\n value: () => {\n if (this.opts.disableThumbnailGenerator) {\n return;\n }\n const LARGE_THUMBNAIL = 600;\n const files = this.uppy.getFiles();\n if (files.length === 1) {\n const thumbnailGenerator = this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);\n thumbnailGenerator == null || thumbnailGenerator.setOptions({\n thumbnailWidth: LARGE_THUMBNAIL\n });\n const fileForThumbnail = {\n ...files[0],\n preview: undefined\n };\n thumbnailGenerator == null || thumbnailGenerator.requestThumbnail(fileForThumbnail).then(() => {\n thumbnailGenerator == null || thumbnailGenerator.setOptions({\n thumbnailWidth: this.opts.thumbnailWidth\n });\n });\n }\n }\n });\n Object.defineProperty(this, _openFileEditorWhenFilesAdded, {\n writable: true,\n value: files => {\n const firstFile = files[0];\n const {\n metaFields\n } = this.getPluginState();\n const isMetaEditorEnabled = metaFields && metaFields.length > 0;\n const isImageEditorEnabled = this.canEditFile(firstFile);\n if (isMetaEditorEnabled && this.opts.autoOpen === 'metaEditor') {\n this.toggleFileCard(true, firstFile.id);\n } else if (isImageEditorEnabled && this.opts.autoOpen === 'imageEditor') {\n this.openFileEditor(firstFile);\n }\n }\n });\n this.initEvents = () => {\n // Modal open button\n if (this.opts.trigger && !this.opts.inline) {\n const showModalTrigger = findAllDOMElements(this.opts.trigger);\n if (showModalTrigger) {\n showModalTrigger.forEach(trigger => trigger.addEventListener('click', this.openModal));\n } else {\n this.uppy.log('Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself', 'warning');\n }\n }\n this.startListeningToResize();\n document.addEventListener('paste', this.handlePasteOnBody);\n this.uppy.on('plugin-added', _classPrivateFieldLooseBase(this, _addSupportedPluginIfNoTarget)[_addSupportedPluginIfNoTarget]);\n this.uppy.on('plugin-remove', this.removeTarget);\n this.uppy.on('file-added', this.hideAllPanels);\n this.uppy.on('dashboard:modal-closed', this.hideAllPanels);\n this.uppy.on('complete', this.handleComplete);\n this.uppy.on('files-added', _classPrivateFieldLooseBase(this, _generateLargeThumbnailIfSingleFile)[_generateLargeThumbnailIfSingleFile]);\n this.uppy.on('file-removed', _classPrivateFieldLooseBase(this, _generateLargeThumbnailIfSingleFile)[_generateLargeThumbnailIfSingleFile]);\n\n // ___Why fire on capture?\n // Because this.ifFocusedOnUppyRecently needs to change before onUpdate() fires.\n document.addEventListener('focus', this.recordIfFocusedOnUppyRecently, true);\n document.addEventListener('click', this.recordIfFocusedOnUppyRecently, true);\n if (this.opts.inline) {\n this.el.addEventListener('keydown', this.handleKeyDownInInline);\n }\n if (this.opts.autoOpen) {\n this.uppy.on('files-added', _classPrivateFieldLooseBase(this, _openFileEditorWhenFilesAdded)[_openFileEditorWhenFilesAdded]);\n }\n };\n this.removeEvents = () => {\n const showModalTrigger = findAllDOMElements(this.opts.trigger);\n if (!this.opts.inline && showModalTrigger) {\n showModalTrigger.forEach(trigger => trigger.removeEventListener('click', this.openModal));\n }\n this.stopListeningToResize();\n document.removeEventListener('paste', this.handlePasteOnBody);\n window.removeEventListener('popstate', this.handlePopState, false);\n this.uppy.off('plugin-added', _classPrivateFieldLooseBase(this, _addSupportedPluginIfNoTarget)[_addSupportedPluginIfNoTarget]);\n this.uppy.off('plugin-remove', this.removeTarget);\n this.uppy.off('file-added', this.hideAllPanels);\n this.uppy.off('dashboard:modal-closed', this.hideAllPanels);\n this.uppy.off('complete', this.handleComplete);\n this.uppy.off('files-added', _classPrivateFieldLooseBase(this, _generateLargeThumbnailIfSingleFile)[_generateLargeThumbnailIfSingleFile]);\n this.uppy.off('file-removed', _classPrivateFieldLooseBase(this, _generateLargeThumbnailIfSingleFile)[_generateLargeThumbnailIfSingleFile]);\n document.removeEventListener('focus', this.recordIfFocusedOnUppyRecently);\n document.removeEventListener('click', this.recordIfFocusedOnUppyRecently);\n if (this.opts.inline) {\n this.el.removeEventListener('keydown', this.handleKeyDownInInline);\n }\n if (this.opts.autoOpen) {\n this.uppy.off('files-added', _classPrivateFieldLooseBase(this, _openFileEditorWhenFilesAdded)[_openFileEditorWhenFilesAdded]);\n }\n };\n this.superFocusOnEachUpdate = () => {\n const isFocusInUppy = this.el.contains(document.activeElement);\n // When focus is lost on the page (== focus is on body for most browsers, or focus is null for IE11)\n const isFocusNowhere = document.activeElement === document.body || document.activeElement === null;\n const isInformerHidden = this.uppy.getState().info.length === 0;\n const isModal = !this.opts.inline;\n if (\n // If update is connected to showing the Informer - let the screen reader calmly read it.\n isInformerHidden && (\n // If we are in a modal - always superfocus without concern for other elements\n // on the page (user is unlikely to want to interact with the rest of the page)\n isModal ||\n // If we are already inside of Uppy, or\n isFocusInUppy ||\n // If we are not focused on anything BUT we have already, at least once, focused on uppy\n // 1. We focus when isFocusNowhere, because when the element we were focused\n // on disappears (e.g. an overlay), - focus gets lost. If user is typing\n // something somewhere else on the page, - focus won't be 'nowhere'.\n // 2. We only focus when focus is nowhere AND this.ifFocusedOnUppyRecently,\n // to avoid focus jumps if we do something else on the page.\n // [Practical check] Without '&& this.ifFocusedOnUppyRecently', in Safari, in inline mode,\n // when file is uploading, - navigate via tab to the checkbox,\n // try to press space multiple times. Focus will jump to Uppy.\n isFocusNowhere && this.ifFocusedOnUppyRecently)) {\n this.superFocus(this.el, this.getPluginState().activeOverlayType);\n } else {\n this.superFocus.cancel();\n }\n };\n this.afterUpdate = () => {\n if (this.opts.disabled && !this.dashboardIsDisabled) {\n this.disableInteractiveElements(true);\n return;\n }\n if (!this.opts.disabled && this.dashboardIsDisabled) {\n this.disableInteractiveElements(false);\n }\n this.superFocusOnEachUpdate();\n };\n this.saveFileCard = (meta, fileID) => {\n this.uppy.setFileMeta(fileID, meta);\n this.toggleFileCard(false, fileID);\n };\n Object.defineProperty(this, _attachRenderFunctionToTarget, {\n writable: true,\n value: target => {\n const plugin = this.uppy.getPlugin(target.id);\n return {\n ...target,\n icon: plugin.icon || this.opts.defaultPickerIcon,\n render: plugin.render\n };\n }\n });\n Object.defineProperty(this, _isTargetSupported, {\n writable: true,\n value: target => {\n const plugin = this.uppy.getPlugin(target.id);\n // If the plugin does not provide a `supported` check, assume the plugin works everywhere.\n if (typeof plugin.isSupported !== 'function') {\n return true;\n }\n return plugin.isSupported();\n }\n });\n Object.defineProperty(this, _getAcquirers, {\n writable: true,\n value: memoize(targets => {\n return targets.filter(target => target.type === 'acquirer' && _classPrivateFieldLooseBase(this, _isTargetSupported)[_isTargetSupported](target)).map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n })\n });\n Object.defineProperty(this, _getProgressIndicators, {\n writable: true,\n value: memoize(targets => {\n return targets.filter(target => target.type === 'progressindicator').map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n })\n });\n Object.defineProperty(this, _getEditors, {\n writable: true,\n value: memoize(targets => {\n return targets.filter(target => target.type === 'editor').map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n })\n });\n this.render = state => {\n const pluginState = this.getPluginState();\n const {\n files,\n capabilities,\n allowNewUpload\n } = state;\n const {\n newFiles,\n uploadStartedFiles,\n completeFiles,\n erroredFiles,\n inProgressFiles,\n inProgressNotPausedFiles,\n processingFiles,\n isUploadStarted,\n isAllComplete,\n isAllPaused\n } = this.uppy.getObjectOfFilesPerState();\n const acquirers = _classPrivateFieldLooseBase(this, _getAcquirers)[_getAcquirers](pluginState.targets);\n const progressindicators = _classPrivateFieldLooseBase(this, _getProgressIndicators)[_getProgressIndicators](pluginState.targets);\n const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](pluginState.targets);\n let theme;\n if (this.opts.theme === 'auto') {\n theme = capabilities.darkMode ? 'dark' : 'light';\n } else {\n theme = this.opts.theme;\n }\n if (['files', 'folders', 'both'].indexOf(this.opts.fileManagerSelectionType) < 0) {\n this.opts.fileManagerSelectionType = 'files';\n // eslint-disable-next-line no-console\n console.warn(`Unsupported option for \"fileManagerSelectionType\". Using default of \"${this.opts.fileManagerSelectionType}\".`);\n }\n return DashboardUI({\n state,\n isHidden: pluginState.isHidden,\n files,\n newFiles,\n uploadStartedFiles,\n completeFiles,\n erroredFiles,\n inProgressFiles,\n inProgressNotPausedFiles,\n processingFiles,\n isUploadStarted,\n isAllComplete,\n isAllPaused,\n totalFileCount: Object.keys(files).length,\n totalProgress: state.totalProgress,\n allowNewUpload,\n acquirers,\n theme,\n disabled: this.opts.disabled,\n disableLocalFiles: this.opts.disableLocalFiles,\n direction: this.opts.direction,\n activePickerPanel: pluginState.activePickerPanel,\n showFileEditor: pluginState.showFileEditor,\n saveFileEditor: this.saveFileEditor,\n closeFileEditor: this.closeFileEditor,\n disableInteractiveElements: this.disableInteractiveElements,\n animateOpenClose: this.opts.animateOpenClose,\n isClosing: pluginState.isClosing,\n progressindicators,\n editors,\n autoProceed: this.uppy.opts.autoProceed,\n id: this.id,\n closeModal: this.requestCloseModal,\n handleClickOutside: this.handleClickOutside,\n handleInputChange: this.handleInputChange,\n handlePaste: this.handlePaste,\n inline: this.opts.inline,\n showPanel: this.showPanel,\n hideAllPanels: this.hideAllPanels,\n i18n: this.i18n,\n i18nArray: this.i18nArray,\n uppy: this.uppy,\n note: this.opts.note,\n recoveredState: state.recoveredState,\n metaFields: pluginState.metaFields,\n resumableUploads: capabilities.resumableUploads || false,\n individualCancellation: capabilities.individualCancellation,\n isMobileDevice: capabilities.isMobileDevice,\n fileCardFor: pluginState.fileCardFor,\n toggleFileCard: this.toggleFileCard,\n toggleAddFilesPanel: this.toggleAddFilesPanel,\n showAddFilesPanel: pluginState.showAddFilesPanel,\n saveFileCard: this.saveFileCard,\n openFileEditor: this.openFileEditor,\n canEditFile: this.canEditFile,\n width: this.opts.width,\n height: this.opts.height,\n showLinkToFileUploadResult: this.opts.showLinkToFileUploadResult,\n fileManagerSelectionType: this.opts.fileManagerSelectionType,\n proudlyDisplayPoweredByUppy: this.opts.proudlyDisplayPoweredByUppy,\n hideCancelButton: this.opts.hideCancelButton,\n hideRetryButton: this.opts.hideRetryButton,\n hidePauseResumeButton: this.opts.hidePauseResumeButton,\n showRemoveButtonAfterComplete: this.opts.showRemoveButtonAfterComplete,\n containerWidth: pluginState.containerWidth,\n containerHeight: pluginState.containerHeight,\n areInsidesReadyToBeVisible: pluginState.areInsidesReadyToBeVisible,\n parentElement: this.el,\n allowedFileTypes: this.uppy.opts.restrictions.allowedFileTypes,\n maxNumberOfFiles: this.uppy.opts.restrictions.maxNumberOfFiles,\n requiredMetaFields: this.uppy.opts.restrictions.requiredMetaFields,\n showSelectedFiles: this.opts.showSelectedFiles,\n showNativePhotoCameraButton: this.opts.showNativePhotoCameraButton,\n showNativeVideoCameraButton: this.opts.showNativeVideoCameraButton,\n nativeCameraFacingMode: this.opts.nativeCameraFacingMode,\n singleFileFullScreen: this.opts.singleFileFullScreen,\n handleCancelRestore: this.handleCancelRestore,\n handleRequestThumbnail: this.handleRequestThumbnail,\n handleCancelThumbnail: this.handleCancelThumbnail,\n // drag props\n isDraggingOver: pluginState.isDraggingOver,\n handleDragOver: this.handleDragOver,\n handleDragLeave: this.handleDragLeave,\n handleDrop: this.handleDrop\n });\n };\n Object.defineProperty(this, _addSpecifiedPluginsFromOptions, {\n writable: true,\n value: () => {\n const plugins = this.opts.plugins || [];\n plugins.forEach(pluginID => {\n const plugin = this.uppy.getPlugin(pluginID);\n if (plugin) {\n ;\n plugin.mount(this, plugin);\n } else {\n this.uppy.log(`[Uppy] Dashboard could not find plugin '${pluginID}', make sure to uppy.use() the plugins you are specifying`, 'warning');\n }\n });\n }\n });\n Object.defineProperty(this, _autoDiscoverPlugins, {\n writable: true,\n value: () => {\n this.uppy.iteratePlugins(_classPrivateFieldLooseBase(this, _addSupportedPluginIfNoTarget)[_addSupportedPluginIfNoTarget]);\n }\n });\n Object.defineProperty(this, _addSupportedPluginIfNoTarget, {\n writable: true,\n value: plugin => {\n var _plugin$opts;\n // Only these types belong on the Dashboard,\n // we wouldn’t want to try and mount Compressor or Tus, for example.\n const typesAllowed = ['acquirer', 'editor'];\n if (plugin && !((_plugin$opts = plugin.opts) != null && _plugin$opts.target) && typesAllowed.includes(plugin.type)) {\n const pluginAlreadyAdded = this.getPluginState().targets.some(installedPlugin => plugin.id === installedPlugin.id);\n if (!pluginAlreadyAdded) {\n ;\n plugin.mount(this, plugin);\n }\n }\n }\n });\n this.install = () => {\n // Set default state for Dashboard\n this.setPluginState({\n isHidden: true,\n fileCardFor: null,\n activeOverlayType: null,\n showAddFilesPanel: false,\n activePickerPanel: undefined,\n showFileEditor: false,\n metaFields: this.opts.metaFields,\n targets: [],\n // We'll make them visible once .containerWidth is determined\n areInsidesReadyToBeVisible: false,\n isDraggingOver: false\n });\n const {\n inline,\n closeAfterFinish\n } = this.opts;\n if (inline && closeAfterFinish) {\n throw new Error('[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.');\n }\n const {\n allowMultipleUploads,\n allowMultipleUploadBatches\n } = this.uppy.opts;\n if ((allowMultipleUploads || allowMultipleUploadBatches) && closeAfterFinish) {\n this.uppy.log('[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploadBatches` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true', 'warning');\n }\n const {\n target\n } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n if (!this.opts.disableStatusBar) {\n this.uppy.use(StatusBar, {\n id: _classPrivateFieldLooseBase(this, _getStatusBarId)[_getStatusBarId](),\n target: this,\n ..._classPrivateFieldLooseBase(this, _getStatusBarOpts)[_getStatusBarOpts]()\n });\n }\n if (!this.opts.disableInformer) {\n this.uppy.use(Informer, {\n id: _classPrivateFieldLooseBase(this, _getInformerId)[_getInformerId](),\n target: this,\n ..._classPrivateFieldLooseBase(this, _getInformerOpts)[_getInformerOpts]()\n });\n }\n if (!this.opts.disableThumbnailGenerator) {\n this.uppy.use(ThumbnailGenerator, {\n id: _classPrivateFieldLooseBase(this, _getThumbnailGeneratorId)[_getThumbnailGeneratorId](),\n ..._classPrivateFieldLooseBase(this, _getThumbnailGeneratorOpts)[_getThumbnailGeneratorOpts]()\n });\n }\n\n // Dark Mode / theme\n this.darkModeMediaQuery = typeof window !== 'undefined' && window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;\n const isDarkModeOnFromTheStart = this.darkModeMediaQuery ? this.darkModeMediaQuery.matches : false;\n this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnFromTheStart ? 'on' : 'off'}`);\n this.setDarkModeCapability(isDarkModeOnFromTheStart);\n if (this.opts.theme === 'auto') {\n var _this$darkModeMediaQu;\n (_this$darkModeMediaQu = this.darkModeMediaQuery) == null || _this$darkModeMediaQu.addListener(this.handleSystemDarkModeChange);\n }\n _classPrivateFieldLooseBase(this, _addSpecifiedPluginsFromOptions)[_addSpecifiedPluginsFromOptions]();\n _classPrivateFieldLooseBase(this, _autoDiscoverPlugins)[_autoDiscoverPlugins]();\n this.initEvents();\n };\n this.uninstall = () => {\n if (!this.opts.disableInformer) {\n const informer = this.uppy.getPlugin(`${this.id}:Informer`);\n // Checking if this plugin exists, in case it was removed by uppy-core\n // before the Dashboard was.\n if (informer) this.uppy.removePlugin(informer);\n }\n if (!this.opts.disableStatusBar) {\n const statusBar = this.uppy.getPlugin(`${this.id}:StatusBar`);\n if (statusBar) this.uppy.removePlugin(statusBar);\n }\n if (!this.opts.disableThumbnailGenerator) {\n const thumbnail = this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);\n if (thumbnail) this.uppy.removePlugin(thumbnail);\n }\n const plugins = this.opts.plugins || [];\n plugins.forEach(pluginID => {\n const plugin = this.uppy.getPlugin(pluginID);\n if (plugin) plugin.unmount();\n });\n if (this.opts.theme === 'auto') {\n var _this$darkModeMediaQu2;\n (_this$darkModeMediaQu2 = this.darkModeMediaQuery) == null || _this$darkModeMediaQu2.removeListener(this.handleSystemDarkModeChange);\n }\n if (this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.remove('uppy-Dashboard-isFixed');\n }\n this.unmount();\n this.removeEvents();\n };\n this.id = this.opts.id || 'Dashboard';\n this.title = 'Dashboard';\n this.type = 'orchestrator';\n this.defaultLocale = locale;\n\n // Dynamic default options:\n if (this.opts.doneButtonHandler === undefined) {\n // `null` means \"do not display a Done button\", while `undefined` means\n // \"I want the default behavior\". For this reason, we need to differentiate `null` and `undefined`.\n this.opts.doneButtonHandler = () => {\n this.uppy.clear();\n this.requestCloseModal();\n };\n }\n (_this$opts4$onRequest = (_this$opts4 = this.opts).onRequestCloseModal) != null ? _this$opts4$onRequest : _this$opts4.onRequestCloseModal = () => this.closeModal();\n this.i18nInit();\n }\n setOptions(opts) {\n var _this$uppy$getPlugin, _this$uppy$getPlugin2;\n super.setOptions(opts);\n (_this$uppy$getPlugin = this.uppy.getPlugin(_classPrivateFieldLooseBase(this, _getStatusBarId)[_getStatusBarId]())) == null || _this$uppy$getPlugin.setOptions(_classPrivateFieldLooseBase(this, _getStatusBarOpts)[_getStatusBarOpts]());\n (_this$uppy$getPlugin2 = this.uppy.getPlugin(_classPrivateFieldLooseBase(this, _getThumbnailGeneratorId)[_getThumbnailGeneratorId]())) == null || _this$uppy$getPlugin2.setOptions(_classPrivateFieldLooseBase(this, _getThumbnailGeneratorOpts)[_getThumbnailGeneratorOpts]());\n }\n}\nfunction _getStatusBarOpts2() {\n const {\n hideUploadButton,\n hideRetryButton,\n hidePauseResumeButton,\n hideCancelButton,\n showProgressDetails,\n hideProgressAfterFinish,\n locale: l,\n doneButtonHandler\n } = this.opts;\n return {\n hideUploadButton,\n hideRetryButton,\n hidePauseResumeButton,\n hideCancelButton,\n showProgressDetails,\n hideAfterFinish: hideProgressAfterFinish,\n locale: l,\n doneButtonHandler\n };\n}\nfunction _getThumbnailGeneratorOpts2() {\n const {\n thumbnailWidth,\n thumbnailHeight,\n thumbnailType,\n waitForThumbnailsBeforeUpload\n } = this.opts;\n return {\n thumbnailWidth,\n thumbnailHeight,\n thumbnailType,\n waitForThumbnailsBeforeUpload,\n // If we don't block on thumbnails, we can lazily generate them\n lazy: !waitForThumbnailsBeforeUpload\n };\n}\nfunction _getInformerOpts2() {\n return {\n // currently no options\n };\n}\nfunction _getStatusBarId2() {\n return `${this.id}:StatusBar`;\n}\nfunction _getThumbnailGeneratorId2() {\n return `${this.id}:ThumbnailGenerator`;\n}\nfunction _getInformerId2() {\n return `${this.id}:Informer`;\n}\nDashboard.VERSION = packageJson.version;","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport { h } from 'preact';\nimport classNames from 'classnames';\nimport remoteFileObjToLocal from '@uppy/utils/lib/remoteFileObjToLocal';\nimport AuthView from \"./AuthView.js\";\nimport Header from \"./Header.js\";\nimport Browser from \"../Browser.js\";\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.0.1\"\n};\nimport PartialTreeUtils from \"../utils/PartialTreeUtils/index.js\";\nimport shouldHandleScroll from \"../utils/shouldHandleScroll.js\";\nimport handleError from \"../utils/handleError.js\";\nimport getClickedRange from \"../utils/getClickedRange.js\";\nimport SearchInput from \"../SearchInput.js\";\nimport FooterActions from \"../FooterActions.js\";\nimport addFiles from \"../utils/addFiles.js\";\nimport getCheckedFilesWithPaths from \"../utils/PartialTreeUtils/getCheckedFilesWithPaths.js\";\nimport getBreadcrumbs from \"../utils/PartialTreeUtils/getBreadcrumbs.js\";\nexport function defaultPickerIcon() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"30\",\n height: \"30\",\n viewBox: \"0 0 30 30\"\n }, h(\"path\", {\n d: \"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z\"\n }));\n}\nconst getDefaultState = rootFolderId => ({\n authenticated: undefined,\n // we don't know yet\n partialTree: [{\n type: 'root',\n id: rootFolderId,\n cached: false,\n nextPagePath: null\n }],\n currentFolderId: rootFolderId,\n searchString: '',\n didFirstRender: false,\n username: null,\n loading: false\n});\nvar _abortController = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortController\");\nvar _withAbort = /*#__PURE__*/_classPrivateFieldLooseKey(\"withAbort\");\n/**\n * Class to easily generate generic views for Provider plugins\n */\nexport default class ProviderView {\n constructor(plugin, opts) {\n Object.defineProperty(this, _withAbort, {\n value: _withAbort2\n });\n this.isHandlingScroll = false;\n this.lastCheckbox = null;\n Object.defineProperty(this, _abortController, {\n writable: true,\n value: void 0\n });\n this.validateSingleFile = file => {\n const companionFile = remoteFileObjToLocal(file);\n const result = this.plugin.uppy.validateSingleFile(companionFile);\n return result;\n };\n this.getDisplayedPartialTree = () => {\n const {\n partialTree,\n currentFolderId,\n searchString\n } = this.plugin.getPluginState();\n const inThisFolder = partialTree.filter(item => item.type !== 'root' && item.parentId === currentFolderId);\n const filtered = searchString === '' ? inThisFolder : inThisFolder.filter(item => {\n var _item$data$name;\n return ((_item$data$name = item.data.name) != null ? _item$data$name : this.plugin.uppy.i18n('unnamed')).toLowerCase().indexOf(searchString.toLowerCase()) !== -1;\n });\n return filtered;\n };\n this.validateAggregateRestrictions = partialTree => {\n const checkedFiles = partialTree.filter(item => item.type === 'file' && item.status === 'checked');\n const uppyFiles = checkedFiles.map(file => file.data);\n return this.plugin.uppy.validateAggregateRestrictions(uppyFiles);\n };\n this.plugin = plugin;\n this.provider = opts.provider;\n const defaultOptions = {\n viewType: 'list',\n showTitles: true,\n showFilter: true,\n showBreadcrumbs: true,\n loadAllFiles: false,\n virtualList: false\n };\n this.opts = {\n ...defaultOptions,\n ...opts\n };\n this.openFolder = this.openFolder.bind(this);\n this.logout = this.logout.bind(this);\n this.handleAuth = this.handleAuth.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.resetPluginState = this.resetPluginState.bind(this);\n this.donePicking = this.donePicking.bind(this);\n this.render = this.render.bind(this);\n this.cancelSelection = this.cancelSelection.bind(this);\n this.toggleCheckbox = this.toggleCheckbox.bind(this);\n\n // Set default state for the plugin\n this.resetPluginState();\n\n // todo\n // @ts-expect-error this should be typed in @uppy/dashboard.\n this.plugin.uppy.on('dashboard:close-panel', this.resetPluginState);\n this.plugin.uppy.registerRequestClient(this.provider.provider, this.provider);\n }\n resetPluginState() {\n this.plugin.setPluginState(getDefaultState(this.plugin.rootFolderId));\n }\n\n // eslint-disable-next-line class-methods-use-this\n tearDown() {\n // Nothing.\n }\n setLoading(loading) {\n this.plugin.setPluginState({\n loading\n });\n }\n cancelSelection() {\n const {\n partialTree\n } = this.plugin.getPluginState();\n const newPartialTree = partialTree.map(item => item.type === 'root' ? item : {\n ...item,\n status: 'unchecked'\n });\n this.plugin.setPluginState({\n partialTree: newPartialTree\n });\n }\n async openFolder(folderId) {\n this.lastCheckbox = null;\n // Returning cached folder\n const {\n partialTree\n } = this.plugin.getPluginState();\n const clickedFolder = partialTree.find(folder => folder.id === folderId);\n if (clickedFolder.cached) {\n this.plugin.setPluginState({\n currentFolderId: folderId,\n searchString: ''\n });\n return;\n }\n this.setLoading(true);\n await _classPrivateFieldLooseBase(this, _withAbort)[_withAbort](async signal => {\n let currentPagePath = folderId;\n let currentItems = [];\n do {\n const {\n username,\n nextPagePath,\n items\n } = await this.provider.list(currentPagePath, {\n signal\n });\n // It's important to set the username during one of our first fetches\n this.plugin.setPluginState({\n username\n });\n currentPagePath = nextPagePath;\n currentItems = currentItems.concat(items);\n this.setLoading(this.plugin.uppy.i18n('loadedXFiles', {\n numFiles: currentItems.length\n }));\n } while (this.opts.loadAllFiles && currentPagePath);\n const newPartialTree = PartialTreeUtils.afterOpenFolder(partialTree, currentItems, clickedFolder, currentPagePath, this.validateSingleFile);\n this.plugin.setPluginState({\n partialTree: newPartialTree,\n currentFolderId: folderId,\n searchString: ''\n });\n }).catch(handleError(this.plugin.uppy));\n this.setLoading(false);\n }\n\n /**\n * Removes session token on client side.\n */\n async logout() {\n await _classPrivateFieldLooseBase(this, _withAbort)[_withAbort](async signal => {\n const res = await this.provider.logout({\n signal\n });\n // res.ok is from the JSON body, not to be confused with Response.ok\n if (res.ok) {\n if (!res.revoked) {\n const message = this.plugin.uppy.i18n('companionUnauthorizeHint', {\n provider: this.plugin.title,\n url: res.manual_revoke_url\n });\n this.plugin.uppy.info(message, 'info', 7000);\n }\n this.plugin.setPluginState({\n ...getDefaultState(this.plugin.rootFolderId),\n authenticated: false\n });\n }\n }).catch(handleError(this.plugin.uppy));\n }\n async handleAuth(authFormData) {\n await _classPrivateFieldLooseBase(this, _withAbort)[_withAbort](async signal => {\n this.setLoading(true);\n await this.provider.login({\n authFormData,\n signal\n });\n this.plugin.setPluginState({\n authenticated: true\n });\n await Promise.all([this.provider.fetchPreAuthToken(), this.openFolder(this.plugin.rootFolderId)]);\n }).catch(handleError(this.plugin.uppy));\n this.setLoading(false);\n }\n async handleScroll(event) {\n const {\n partialTree,\n currentFolderId\n } = this.plugin.getPluginState();\n const currentFolder = partialTree.find(i => i.id === currentFolderId);\n if (shouldHandleScroll(event) && !this.isHandlingScroll && currentFolder.nextPagePath) {\n this.isHandlingScroll = true;\n await _classPrivateFieldLooseBase(this, _withAbort)[_withAbort](async signal => {\n const {\n nextPagePath,\n items\n } = await this.provider.list(currentFolder.nextPagePath, {\n signal\n });\n const newPartialTree = PartialTreeUtils.afterScrollFolder(partialTree, currentFolderId, items, nextPagePath, this.validateSingleFile);\n this.plugin.setPluginState({\n partialTree: newPartialTree\n });\n }).catch(handleError(this.plugin.uppy));\n this.isHandlingScroll = false;\n }\n }\n async donePicking() {\n const {\n partialTree\n } = this.plugin.getPluginState();\n this.setLoading(true);\n await _classPrivateFieldLooseBase(this, _withAbort)[_withAbort](async signal => {\n // 1. Enrich our partialTree by fetching all 'checked' but not-yet-fetched folders\n const enrichedTree = await PartialTreeUtils.afterFill(partialTree, path => this.provider.list(path, {\n signal\n }), this.validateSingleFile, n => {\n this.setLoading(this.plugin.uppy.i18n('addedNumFiles', {\n numFiles: n\n }));\n });\n\n // 2. Now that we know how many files there are - recheck aggregateRestrictions!\n const aggregateRestrictionError = this.validateAggregateRestrictions(enrichedTree);\n if (aggregateRestrictionError) {\n this.plugin.setPluginState({\n partialTree: enrichedTree\n });\n return;\n }\n\n // 3. Add files\n const companionFiles = getCheckedFilesWithPaths(enrichedTree);\n addFiles(companionFiles, this.plugin, this.provider);\n\n // 4. Reset state\n this.resetPluginState();\n }).catch(handleError(this.plugin.uppy));\n this.setLoading(false);\n }\n toggleCheckbox(ourItem, isShiftKeyPressed) {\n const {\n partialTree\n } = this.plugin.getPluginState();\n const clickedRange = getClickedRange(ourItem.id, this.getDisplayedPartialTree(), isShiftKeyPressed, this.lastCheckbox);\n const newPartialTree = PartialTreeUtils.afterToggleCheckbox(partialTree, clickedRange);\n this.plugin.setPluginState({\n partialTree: newPartialTree\n });\n this.lastCheckbox = ourItem.id;\n }\n render(state, viewOptions) {\n if (viewOptions === void 0) {\n viewOptions = {};\n }\n const {\n didFirstRender\n } = this.plugin.getPluginState();\n const {\n i18n\n } = this.plugin.uppy;\n if (!didFirstRender) {\n this.plugin.setPluginState({\n didFirstRender: true\n });\n this.provider.fetchPreAuthToken();\n this.openFolder(this.plugin.rootFolderId);\n }\n const opts = {\n ...this.opts,\n ...viewOptions\n };\n const {\n authenticated,\n loading\n } = this.plugin.getPluginState();\n const pluginIcon = this.plugin.icon || defaultPickerIcon;\n if (authenticated === false) {\n return h(AuthView, {\n pluginName: this.plugin.title,\n pluginIcon: pluginIcon,\n handleAuth: this.handleAuth,\n i18n: this.plugin.uppy.i18nArray,\n renderForm: opts.renderAuthForm,\n loading: loading\n });\n }\n const {\n partialTree,\n currentFolderId,\n username,\n searchString\n } = this.plugin.getPluginState();\n const breadcrumbs = getBreadcrumbs(partialTree, currentFolderId);\n return h(\"div\", {\n className: classNames('uppy-ProviderBrowser', `uppy-ProviderBrowser-viewType--${opts.viewType}`)\n }, h(Header, {\n showBreadcrumbs: opts.showBreadcrumbs,\n openFolder: this.openFolder,\n breadcrumbs: breadcrumbs,\n pluginIcon: pluginIcon,\n title: this.plugin.title,\n logout: this.logout,\n username: username,\n i18n: i18n\n }), opts.showFilter && h(SearchInput, {\n searchString: searchString,\n setSearchString: s => {\n this.plugin.setPluginState({\n searchString: s\n });\n },\n submitSearchString: () => {},\n inputLabel: i18n('filter'),\n clearSearchLabel: i18n('resetFilter'),\n wrapperClassName: \"uppy-ProviderBrowser-searchFilter\",\n inputClassName: \"uppy-ProviderBrowser-searchFilterInput\"\n }), h(Browser, {\n toggleCheckbox: this.toggleCheckbox,\n displayedPartialTree: this.getDisplayedPartialTree(),\n openFolder: this.openFolder,\n virtualList: opts.virtualList,\n noResultsLabel: i18n('noFilesFound'),\n handleScroll: this.handleScroll,\n viewType: opts.viewType,\n showTitles: opts.showTitles,\n i18n: this.plugin.uppy.i18n,\n isLoading: loading\n }), h(FooterActions, {\n partialTree: partialTree,\n donePicking: this.donePicking,\n cancelSelection: this.cancelSelection,\n i18n: i18n,\n validateAggregateRestrictions: this.validateAggregateRestrictions\n }));\n }\n}\nasync function _withAbort2(op) {\n var _classPrivateFieldLoo;\n // prevent multiple requests in parallel from causing race conditions\n (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _abortController)[_abortController]) == null || _classPrivateFieldLoo.abort();\n const abortController = new AbortController();\n _classPrivateFieldLooseBase(this, _abortController)[_abortController] = abortController;\n const cancelRequest = () => {\n abortController.abort();\n };\n try {\n // @ts-expect-error this should be typed in @uppy/dashboard.\n // Even then I don't think we can make this work without adding dashboard\n // as a dependency to provider-views.\n this.plugin.uppy.on('dashboard:close-panel', cancelRequest);\n this.plugin.uppy.on('cancel-all', cancelRequest);\n await op(abortController.signal);\n } finally {\n // @ts-expect-error this should be typed in @uppy/dashboard.\n // Even then I don't think we can make this work without adding dashboard\n // as a dependency to provider-views.\n this.plugin.uppy.off('dashboard:close-panel', cancelRequest);\n this.plugin.uppy.off('cancel-all', cancelRequest);\n _classPrivateFieldLooseBase(this, _abortController)[_abortController] = undefined;\n }\n}\nProviderView.VERSION = packageJson.version;","import debounce from 'lodash/debounce.js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\nimport FOCUSABLE_ELEMENTS from '@uppy/utils/lib/FOCUSABLE_ELEMENTS';\nimport getActiveOverlayEl from \"./getActiveOverlayEl.js\";\n/*\n Focuses on some element in the currently topmost overlay.\n\n 1. If there are some [data-uppy-super-focusable] elements rendered already - focuses\n on the first superfocusable element, and leaves focus up to the control of\n a user (until currently focused element disappears from the screen [which\n can happen when overlay changes, or, e.g., when we click on a folder in googledrive]).\n 2. If there are no [data-uppy-super-focusable] elements yet (or ever) - focuses\n on the first focusable element, but switches focus if superfocusable elements appear on next render.\n*/\nexport default function createSuperFocus() {\n let lastFocusWasOnSuperFocusableEl = false;\n const superFocus = (dashboardEl, activeOverlayType) => {\n const overlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n const isFocusInOverlay = overlayEl.contains(document.activeElement);\n // If focus is already in the topmost overlay, AND on last update we focused on the superfocusable\n // element - then leave focus up to the user.\n // [Practical check] without this line, typing in the search input in googledrive overlay won't work.\n if (isFocusInOverlay && lastFocusWasOnSuperFocusableEl) return;\n const superFocusableEl = overlayEl.querySelector('[data-uppy-super-focusable]');\n // If we are already in the topmost overlay, AND there are no super focusable elements yet, - leave focus up to the user.\n // [Practical check] without this line, if you are in an empty folder in google drive, and something's uploading in the\n // bg, - focus will be jumping to Done all the time.\n if (isFocusInOverlay && !superFocusableEl) return;\n if (superFocusableEl) {\n superFocusableEl.focus({\n preventScroll: true\n });\n lastFocusWasOnSuperFocusableEl = true;\n } else {\n const firstEl = overlayEl.querySelector(FOCUSABLE_ELEMENTS);\n firstEl == null || firstEl.focus({\n preventScroll: true\n });\n lastFocusWasOnSuperFocusableEl = false;\n }\n };\n\n // ___Why do we need to debounce?\n // 1. To deal with animations: overlay changes via animations, which results in the DOM updating AFTER plugin.update()\n // already executed.\n // [Practical check] without debounce, if we open the Url overlay, and click 'Done', Dashboard won't get focused again.\n // [Practical check] if we delay 250ms instead of 260ms - IE11 won't get focused in same situation.\n // 2. Performance: there can be many state update()s in a second, and this function is called every time.\n return debounce(superFocus, 260);\n}","import webkitGetAsEntryApi from \"./utils/webkitGetAsEntryApi/index.js\";\nimport fallbackApi from \"./utils/fallbackApi.js\";\n\n/**\n * Returns a promise that resolves to the array of dropped files (if a folder is\n * dropped, and browser supports folder parsing - promise resolves to the flat\n * array of all files in all directories).\n * Each file has .relativePath prop appended to it (e.g. \"/docs/Prague/ticket_from_prague_to_ufa.pdf\")\n * if browser supports it. Otherwise it's undefined.\n *\n * @param dataTransfer\n * @param options\n * @param options.logDropError - a function that's called every time some\n * folder or some file error out (e.g. because of the folder name being too long\n * on Windows). Notice that resulting promise will always be resolved anyway.\n *\n * @returns {Promise} - Array\n */\nexport default async function getDroppedFiles(dataTransfer, options) {\n var _options$logDropError;\n // Get all files from all subdirs. Works (at least) in Chrome, Mozilla, and Safari\n const logDropError = (_options$logDropError = options == null ? void 0 : options.logDropError) != null ? _options$logDropError : Function.prototype;\n try {\n const accumulator = [];\n for await (const file of webkitGetAsEntryApi(dataTransfer, logDropError)) {\n accumulator.push(file);\n }\n return accumulator;\n // Otherwise just return all first-order files\n } catch {\n return fallbackApi(dataTransfer);\n }\n}","import toArray from \"../../toArray.js\";\n\n// .files fallback, should be implemented in any browser\nexport default function fallbackApi(dataTransfer) {\n const files = toArray(dataTransfer.files);\n return Promise.resolve(files);\n}","import { Controller } from \"@hotwired/stimulus\";\nimport Dashboard from \"@uppy/dashboard\";\nimport { uppyInstance, uploadedFileData } from \"../uppy\";\nimport { nanoid } from \"nanoid\";\n\nexport default class extends Controller {\n static targets = [\"input\", \"destroyField\"];\n static values = {\n types: Array,\n server: String,\n buttonText: String,\n maxFileSize: { type: Number, default: 5000000 },\n maxTotalFileSize: { type: Number, default: 50000000 },\n };\n\n connect() {\n this.uppy = this.createUppy();\n }\n disconnect() {\n this.uppy.close();\n }\n\n removeExistingFile(event) {\n event.preventDefault();\n\n const triggerElement = event.currentTarget;\n\n const attachmentId = triggerElement.dataset.attachmentId;\n console.log(\"ATTACHMENT ::::: \", triggerElement.parentElement);\n const hiddenField = this.destroyFieldTargets.find((field) => field.dataset.attachmentId === attachmentId);\n console.log(\"HIDDEN FIELD:::::: \", hiddenField);\n if (hiddenField) {\n hiddenField.value = \"1\";\n const attachmentElement = triggerElement.closest(\".attachment\");\n attachmentElement.classList.add(\"hidden\");\n }\n }\n\n createUppy() {\n const uppy = uppyInstance({\n id: this.inputTarget.id,\n types: this.typesValue,\n server: this.serverValue,\n }).use(Dashboard, {\n target: this.inputTarget.parentNode,\n inline: true,\n height: 300,\n width: \"20rem\",\n replaceTargetContent: true,\n proudlyDisplayPoweredByUppy: false,\n showRemoveButtonAfterComplete: true,\n singleFileFullScreen: true,\n });\n\n // uppy.on(\"*\", (event, data) => {\n // console.log(`Event: ${String(event)}`, data);\n // });\n\n uppy.on(\"upload-success\", (file, response) => {\n const hiddenField = document.createElement(\"input\");\n hiddenField.type = \"hidden\";\n hiddenField.name = `project_update[attachments_attributes][${nanoid()}][attachment]`;\n hiddenField.value = uploadedFileData(file, response, this.serverValue);\n this.element.appendChild(hiddenField);\n });\n\n uppy.on(\"file-removed\", (file, reason) => {\n // Extract the file name from the event\n const fileName = file.name;\n console.log(\"file-removed event triggered....\", file, fileName);\n // Get the Uppy root element\n const uppyRoot = document.querySelector(\".uppy-Root\");\n if (!uppyRoot) {\n console.error(\"Uppy root element not found!\");\n return;\n }\n\n // Find the hidden input element within the Uppy root\n console.log(\"HIDDEN INPUTS:::::: \", this.element.querySelectorAll('input[type=\"hidden\"]'));\n const hiddenInput = Array.from(this.element.querySelectorAll('input[type=\"hidden\"]')).find((input) => {\n try {\n console.log(\"INPUT::::: \", input);\n const value = JSON.parse(input.value);\n console.log(\"PARSED INPUT VALUE:::::: \", value);\n return value.metadata.filename === fileName;\n } catch (e) {\n console.warn(\"Skipping invalid input value:\", input.value);\n return false;\n }\n });\n\n if (hiddenInput) {\n // Remove the element from the DOM\n hiddenInput.remove();\n console.log(`Removed hidden input for file: ${fileName}`);\n } else {\n console.warn(`No hidden input found for file: ${fileName}`);\n }\n });\n\n uppy.on(\"upload-error\", function (file, error) {\n console.log(\"UPLOAD ERROR:::: \", error);\n });\n return uppy;\n }\n}\n","import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"template\", \"list\", \"item\"];\n static values = {\n maxItems: Number,\n currentId: Number,\n labelText: { type: String, default: \"Item\" },\n };\n\n connect() {\n this.updateAddButtonVisibility();\n this.updateItemNumbers();\n }\n\n add(event) {\n event.preventDefault();\n\n console.log(\"[Nested-Forms#add] visibleItemCount\", this.visibleItemCount);\n console.log(\"[Nested-Forms#add] itemTargets\", this.itemTargets);\n console.log(\"[Nested-Forms#add] itemTargets count\", this.itemTargets.length);\n console.log(\"[Nested-Forms#add] hasReachedMaxItems\", this.hasReachedMaxItems);\n\n if (this.hasReachedMaxItems) return;\n\n const content = this.templateTarget.content.cloneNode(true);\n\n // Replace NEW_RECORD placeholder with timestamp-based ID\n const timestamp = new Date().getTime();\n content.querySelectorAll('[name*=\"NEW_RECORD\"]').forEach((element) => {\n element.name = element.name.replace(/NEW_RECORD/g, timestamp);\n });\n\n this.listTarget.appendChild(content);\n\n console.log(\"[Nested-Forms#add] listTarget\", this.listTarget);\n\n this.updateAddButtonVisibility();\n this.updateItemNumbers();\n this.dispatch(\"added\", { detail: { list: content } });\n }\n\n remove(event) {\n event.preventDefault();\n const item = event.target.closest(\"[data-nested-form-target='item']\");\n\n // If it's an existing record, mark it for destruction\n const destroyField = item.querySelector(\"input[name*='[_destroy]']\");\n if (destroyField) {\n destroyField.value = \"1\";\n item.style.display = \"none\";\n } else {\n // If it's a new record, just remove it from the DOM\n item.remove();\n }\n\n this.updateAddButtonVisibility();\n this.updateItemNumbers();\n this.dispatch(\"removed\", { detail: { item: item } });\n }\n\n updateItemNumbers() {\n let visibleIndex = 0;\n this.itemTargets.forEach((item) => {\n // Skip hidden (destroyed) items\n if (item.style.display === \"none\") return;\n\n const label = item.querySelector('[data-nested-form-target=\"itemLabel\"]');\n if (label) {\n label.textContent = `${this.labelTextValue} ${visibleIndex + 1}`;\n }\n visibleIndex++;\n });\n }\n\n updateAddButtonVisibility() {\n // ensures we only look for the button among direct children of this.element. This prevents the selector from finding nested buttons that might be inside child elements.\n const addButton = this.element.querySelector(\":scope > [data-action*='nested-form#add']\");\n\n if (addButton) {\n addButton.style.display = this.hasReachedMaxItems ? \"none\" : \"block\";\n }\n }\n\n get visibleItemCount() {\n return this.itemTargets.filter((item) => {\n const destroyField = item.querySelector(\"input[name*='[_destroy]']\");\n return !destroyField || destroyField.value !== \"1\";\n }).length;\n }\n\n get hasReachedMaxItems() {\n return this.hasMaxItemsValue && this.visibleItemCount >= this.maxItemsValue;\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n// import Rails from \"@rails/ujs\";\n// var recorder, gumStream;\n\nexport default class extends Controller {\n // static targets = [\n // \"allowMicButton\",\n // \"recordButton\",\n // \"removeAudioButton\",\n // \"inBrowserUploadRecordingButton\",\n // \"preview\",\n // \"uploaderInformer\",\n // \"audioRecorder\",\n // ];\n // connect() {\n // if (\"MediaRecorder\" in window) {\n // const self = this;\n // this.initializeRecording();\n // this.whenRemoveAudioButtonIsClicked();\n // this.whenInBrowserUploadRecordingButtonIsClicked();\n // // this.recordButtonTarget.addEventListener(\"click\", this.toggleRecording);\n // this.element.addEventListener(\"contentLoader::loaded\", function () {\n // setTimeout(() => self.initializeRecording(), 300);\n // });\n // window.addEventListener(\"uploader::uploadStarted\", function () {\n // self.disablePlayer();\n // self.clearPreview();\n // });\n // window.addEventListener(\"uploader::uploadRemoved\", function () {\n // self.resetPlayer();\n // });\n // window.addEventListener(\"uploader::uploadCanceled\", function () {\n // self.resetPlayer();\n // });\n // } else {\n // this.renderError(\n // \"Sorry, your browser doesn't support audio recordings. Please use the latest browser version and iOS 14.3 or greater on Apple devices\"\n // );\n // this.disablePlayer();\n // }\n // }\n // initializeRecording() {\n // console.log(\"initialise recording\");\n // const self = this;\n // this.recordButtonTarget.onclick = async () => {\n // this.audioRecorderTarget.classList.add(\"state--permission-requested\");\n // this.clearError();\n // try {\n // const mimeType = \"audio/webm\";\n // if (this.recorder && this.recorder.state == \"recording\") {\n // this.stopRecording();\n // } else {\n // let chunks = [];\n // const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: false });\n // this.recorder = new MediaRecorder(stream, { type: mimeType });\n // this.audioRecorderTarget.classList.remove(\"state--permission-requested\");\n // this.recorder.ondataavailable = function (e) {\n // if (typeof e.data === \"undefined\") return;\n // if (e.data.size === 0) return;\n // chunks.push(e.data);\n // };\n // this.recorder.onstop = function (e) {\n // self.recorder.stream.getAudioTracks()[0].stop();\n // console.log(\"chunks\", chunks);\n // console.log(\"chunks count: \", chunks.length);\n // if (chunks.length > 0) {\n // const recording = new Blob(chunks, { type: chunks[0].type });\n // self.renderRecording(recording, self.previewTarget);\n // } else {\n // self.renderError(\"Your recording was too short to capture.\");\n // self.resetPlayer();\n // }\n // };\n // this.startRecording();\n // }\n // } catch (e) {\n // this.microphonePermissionDenied();\n // }\n // };\n // }\n // whenRemoveAudioButtonIsClicked() {\n // console.log(\"setup remove audio button\");\n // this.removeAudioButtonTargets.forEach((target) => {\n // target.onclick = () => {\n // window.dispatchEvent(new Event(\"audioRecorder::audioRemoved\"));\n // this.clearPreview();\n // this.resetPlayer();\n // };\n // });\n // }\n // whenInBrowserUploadRecordingButtonIsClicked() {\n // this.inBrowserUploadRecordingButtonTarget.onclick = () => {\n // window.dispatchEvent(new Event(\"audioRecorder::uploadedRecording\"));\n // this.audioRecorderTarget.classList.remove(\"state--stopped\");\n // this.audioRecorderTarget.classList.add(\"state--uploading\");\n // this.disableActionButtons();\n // this.recordButtonTarget.disabled = true;\n // // this.clearPreview()\n // };\n // }\n // // Removes audio playback from page, clears audio-blob data attribute from inBrowserRecording,\n // // and disables action buttons.\n // clearPreview() {\n // this.previewTarget.replaceChildren();\n // this.setInBrowserRecordingBlob();\n // this.disableActionButtons();\n // window.dispatchEvent(new Event(\"audioRecorder::playbackRemoved\"));\n // }\n // // Adds disabled attribute to 'upload' and 'remove' buttons\n // disableActionButtons() {\n // this.inBrowserUploadRecordingButtonTarget.disabled = true;\n // this.removeAudioButtonTarget.disabled = true;\n // }\n // resetPlayer() {\n // console.log(\"resetting player\");\n // this.audioRecorderTarget.classList.remove(\"state--stopped\");\n // this.audioRecorderTarget.classList.remove(\"state--uploading\");\n // this.audioRecorderTarget.classList.remove(\"state--disabled\");\n // this.disableActionButtons();\n // this.recordButtonTarget.disabled = false;\n // }\n // microphonePermissionDenied() {\n // this.audioRecorderTarget.classList.remove(\"state--permission-requested\");\n // this.audioRecorderTarget.classList.add(\"state--permission-denied\");\n // this.renderError(\n // \"Sorry your microphone has denied access. You can enable microphone access in your browser/phone settings and then head back here to send us your answer.\"\n // );\n // }\n // disablePlayer() {\n // this.audioRecorderTarget.classList.add(\"state--disabled\");\n // this.recordButtonTarget.disabled = true;\n // }\n // // Sets audio-blob data attribute which is used by the direct upload controller to\n // // upload the audio file.\n // setInBrowserRecordingBlob(blob_url, blob_type) {\n // console.log(\"setting data: \", blob_url, blob_type);\n // this.inBrowserUploadRecordingButtonTarget.dataset.audioBlob = blob_url;\n // this.inBrowserUploadRecordingButtonTarget.dataset.audioBlobType = blob_type;\n // }\n // // Starts the recording, adds active state class to the microphone button,\n // // removes the playback preview and disables the action buttons\n // startRecording() {\n // window.dispatchEvent(new Event(\"audioRecorder::recordingStarted\"));\n // this.audioRecorderTarget.classList.remove(\"state--permission-requested\");\n // this.audioRecorderTarget.classList.remove(\"state--stopped\");\n // this.audioRecorderTarget.classList.add(\"state--recording\");\n // this.recordButtonTarget.disabled = false;\n // this.clearPreview();\n // this.disableActionButtons();\n // this.recorder.start();\n // }\n // // Stops the recording, removes the active state class from the microphone button,\n // // enables the action buttons\n // stopRecording() {\n // this.audioRecorderTarget.classList.remove(\"state--recording\");\n // this.audioRecorderTarget.classList.add(\"state--stopped\");\n // this.enableActionButtons();\n // this.recordButtonTarget.disabled = true;\n // this.recorder.stop();\n // }\n // // Removes disabled attribute from 'upload' and 'remove' buttons\n // enableActionButtons() {\n // this.inBrowserUploadRecordingButtonTarget.disabled = false;\n // this.removeAudioButtonTarget.disabled = false;\n // // this.showActionButtons()\n // }\n // // Renders the playback recording, this is triggered once the recording stops\n // renderRecording(blob, preview) {\n // const blobUrl = URL.createObjectURL(blob);\n // const audio = document.createElement(\"audio\");\n // window.dispatchEvent(new Event(\"audioRecorder::playbackAdded\"));\n // this.setInBrowserRecordingBlob(blobUrl, blob.type);\n // audio.setAttribute(\"src\", blobUrl);\n // audio.setAttribute(\"controls\", \"controls\");\n // audio.setAttribute(\"id\", \"audioMediaPlayback\");\n // preview.appendChild(audio);\n // }\n // renderError(message) {\n // this.uploaderInformerTarget.innerHTML = `

            ${message}

            `;\n // }\n // clearError() {\n // this.uploaderInformerTarget.innerHTML = \"\";\n // }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n initialize() {\n console.log(\"Initialising revealable:::::\");\n this.clickOutsideHandlers = new Map();\n }\n\n toggle(event) {\n event.stopPropagation();\n const triggerElement = event.currentTarget;\n const toggleIdentifiers = triggerElement.dataset.toggle.split(\",\").map((id) => id.trim());\n const groupName = triggerElement.dataset.toggleGroup;\n const shouldReset = triggerElement.dataset.toggleReset === \"true\";\n\n if (groupName) {\n this.hideOtherGroupTriggers(groupName, triggerElement);\n }\n\n console.log(\"Revealable toggled te::::::::\", triggerElement);\n\n const firstElement = document.querySelector(`[data-toggleable-id=\"${toggleIdentifiers[0]}\"]`);\n const isHidden = firstElement.classList.contains(\"hidden\");\n const elements = this.getAllToggleElements(toggleIdentifiers);\n\n console.log(\"Revealable toggled fe::::::::\", firstElement, `[data-toggleable-id=\"${toggleIdentifiers[0]}\"]`);\n console.log(\"Revealable toggled fe::::::::\", firstElement, `[data-toggleable-id=\"${toggleIdentifiers[0]}\"] hidden::::: `, isHidden);\n this.toggleElements(elements);\n\n if (shouldReset) {\n // Disable the trigger element and change cursor\n triggerElement.disabled = true;\n triggerElement.style.cursor = \"default\";\n\n // Reset after 5 seconds\n setTimeout(() => {\n this.toggleElements(elements);\n triggerElement.disabled = false;\n triggerElement.style.cursor = \"\"; // Revert to original cursor\n }, 5000);\n }\n\n if (isHidden && triggerElement.dataset.revealableCloseOnClickOutside === \"true\") {\n const handler = this.createClickOutsideHandler(triggerElement);\n this.clickOutsideHandlers.set(triggerElement, handler);\n document.addEventListener(\"click\", handler);\n } else if (!isHidden && this.clickOutsideHandlers.has(triggerElement)) {\n const handler = this.clickOutsideHandlers.get(triggerElement);\n document.removeEventListener(\"click\", handler);\n this.clickOutsideHandlers.delete(triggerElement);\n }\n }\n\n hideOtherGroupTriggers(groupName, currentTrigger) {\n const groupTriggers = document.querySelectorAll(`[data-toggle-group=\"${groupName}\"]`);\n\n groupTriggers.forEach((trigger) => {\n if (trigger !== currentTrigger && !this.isHidden(trigger)) {\n const toggleIds = trigger.dataset.toggle.split(\",\").map((id) => id.trim());\n const elements = this.getAllToggleElements(toggleIds);\n\n this.toggleElements(elements);\n\n if (this.clickOutsideHandlers.has(trigger)) {\n const handler = this.clickOutsideHandlers.get(trigger);\n document.removeEventListener(\"click\", handler);\n this.clickOutsideHandlers.delete(trigger);\n }\n }\n });\n }\n\n isHidden(triggerElement) {\n console.log(\"TRIGGER ELEMENT DATASET::::: \", triggerElement, triggerElement.dataset);\n const toggleIds = triggerElement.dataset.toggle.split(\",\").map((id) => id.trim());\n const firstElement = document.querySelector(`[data-toggleable-id=\"${toggleIds[0]}\"]`);\n return firstElement.classList.contains(\"hidden\");\n }\n\n getAllToggleElements(identifiers) {\n return identifiers.flatMap((identifier) => Array.from(document.querySelectorAll(`[data-toggleable-id=\"${identifier}\"]`)));\n }\n\n toggleElements(elements) {\n elements.forEach((element) => {\n element.classList.toggle(\"hidden\");\n });\n }\n\n createClickOutsideHandler(triggerElement) {\n return (event) => {\n if (!triggerElement.contains(event.target)) {\n const toggleIdentifiers = triggerElement.dataset.toggle.split(\",\").map((id) => id.trim());\n const elements = this.getAllToggleElements(toggleIdentifiers);\n\n this.toggleElements(elements);\n document.removeEventListener(\"click\", this.clickOutsideHandlers.get(triggerElement));\n this.clickOutsideHandlers.delete(triggerElement);\n }\n };\n }\n\n disconnect() {\n this.clickOutsideHandlers.forEach((handler) => {\n document.removeEventListener(\"click\", handler);\n });\n this.clickOutsideHandlers.clear();\n }\n}\n","export class RsvpStorage {\n constructor() {\n this.dbName = \"RsvpSystem\";\n this.dbVersion = 1;\n this.storeName = \"rsvps\";\n this.initPromise = this.initDB();\n }\n\n async initDB() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName, this.dbVersion);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(request.result);\n\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains(this.storeName)) {\n const store = db.createObjectStore(this.storeName, { keyPath: \"id\" });\n store.createIndex(\"eventId\", \"eventId\", { unique: false });\n store.createIndex(\"email\", \"email\", { unique: false });\n }\n };\n });\n }\n\n async saveRsvp(rsvpData) {\n const db = await this.initPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this.storeName], \"readwrite\");\n const store = transaction.objectStore(this.storeName);\n\n const request = store.put({\n id: `${rsvpData.eventId}-${rsvpData.id}`,\n eventId: rsvpData.eventId,\n rsvpId: rsvpData.id,\n email: rsvpData.email,\n timestamp: new Date().toISOString(),\n expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(), // 30 days\n });\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n }\n\n async getRsvpForEvent(eventId) {\n const db = await this.initPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this.storeName], \"readonly\");\n const store = transaction.objectStore(this.storeName);\n const index = store.index(\"eventId\");\n\n const request = index.get(eventId);\n\n request.onsuccess = () => {\n const result = request.result;\n if (result && new Date(result.expiresAt) > new Date()) {\n resolve(result);\n } else if (result) {\n // Clean up expired entry\n this.removeRsvp(`${eventId}-${result.rsvpId}`);\n resolve(null);\n } else {\n resolve(null);\n }\n };\n request.onerror = () => reject(request.error);\n });\n }\n\n async getAllRsvps() {\n const db = await this.initPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this.storeName], \"readonly\");\n const store = transaction.objectStore(this.storeName);\n const request = store.getAll();\n\n request.onsuccess = () => {\n // Filter out expired RSVPs\n const currentRsvps = request.result.filter((rsvp) => new Date(rsvp.expiresAt) > new Date());\n resolve(currentRsvps);\n };\n request.onerror = () => reject(request.error);\n });\n }\n\n async removeRsvp(id) {\n const db = await this.initPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([this.storeName], \"readwrite\");\n const store = transaction.objectStore(this.storeName);\n const request = store.delete(id);\n\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n async cleanup() {\n const rsvps = await this.getAllRsvps();\n const now = new Date();\n\n for (const rsvp of rsvps) {\n if (new Date(rsvp.expiresAt) <= now) {\n await this.removeRsvp(rsvp.id);\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { RsvpStorage } from \"../utils/rsvp_storage\";\n\nexport default class extends Controller {\n static targets = [\"form\", \"searchForm\", \"status\", \"guestCount\", \"errors\", \"rsvpList\"];\n static values = {\n eventId: Number,\n };\n\n connect() {\n this.storage = new RsvpStorage();\n this.checkExistingRsvp();\n\n if (this.hasStatusTarget) {\n this.toggleGuestCount();\n }\n }\n\n async checkExistingRsvp() {\n const rsvp = await this.storage.getRsvpForEvent(this.eventIdValue);\n }\n\n toggleGuestCount() {\n if (this.hasGuestCountTarget) {\n this.guestCountTarget.style.display = this.statusTarget.value === \"yes\" ? \"block\" : \"none\";\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\"];\n\n submit() {\n // Debounce the submit to avoid too many requests\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.element.requestSubmit();\n }, 300);\n }\n\n clear() {\n this.inputTarget.value = \"\";\n this.element.requestSubmit();\n }\n}\n","// app/javascript/controllers/select_input_controller.js\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"select\", \"button\", \"dropdown\", \"selectedText\", \"checkmark\"];\n\n connect() {\n // Close dropdown when clicking outside\n console.log(\"CONNECTING SELECT INPUT CONTROLLER:::::: \");\n document.addEventListener(\"click\", this.handleClickOutside.bind(this));\n }\n\n disconnect() {\n document.removeEventListener(\"click\", this.handleClickOutside.bind(this));\n }\n\n toggleDropdown(event) {\n event.stopPropagation();\n\n if (this.dropdownTarget.classList.contains(\"hidden\")) {\n // Show dropdown\n this.dropdownTarget.classList.remove(\"hidden\");\n // Start enter transition after a frame to ensure removal of hidden is processed\n requestAnimationFrame(() => {\n this.dropdownTarget.classList.add(\"transition-opacity\", \"duration-100\", \"ease-out\");\n this.dropdownTarget.classList.remove(\"opacity-0\");\n this.dropdownTarget.classList.add(\"opacity-100\");\n });\n } else {\n // Hide dropdown with transition\n this.hideDropdown();\n }\n }\n\n hideDropdown() {\n // Add transition classes\n this.dropdownTarget.classList.add(\"transition-opacity\", \"duration-100\", \"ease-in\");\n // Start transition to opacity-0\n this.dropdownTarget.classList.remove(\"opacity-100\");\n this.dropdownTarget.classList.add(\"opacity-0\");\n\n // Wait for transition to complete before hiding\n setTimeout(() => {\n this.dropdownTarget.classList.add(\"hidden\");\n // Clean up transition classes\n this.dropdownTarget.classList.remove(\"transition-opacity\", \"duration-100\", \"ease-in\", \"opacity-0\");\n }, 100); // Match duration-100\n }\n\n selectOption(event) {\n const value = event.currentTarget.dataset.value;\n const label = event.currentTarget.dataset.label;\n console.log(\"OPTION BEING SELECTED:::::: \", value, label);\n // Update hidden select\n this.selectTarget.value = value;\n this.selectTarget.dispatchEvent(new Event(\"change\"));\n\n // Update visible text\n this.selectedTextTarget.textContent = label;\n\n // Update checkmarks\n this.checkmarkTargets.forEach((checkmark) => {\n checkmark.classList.add(\"hidden\");\n });\n event.currentTarget.querySelector(\"[data-select-input-target='checkmark']\").classList.remove(\"hidden\");\n\n // Hide dropdown with transition\n this.hideDropdown();\n }\n\n updateSelected() {\n // This method can be used to handle programmatic changes to the select\n console.log(\"updateSelected:::::: \");\n const selectedOption = this.selectTarget.options[this.selectTarget.selectedIndex];\n if (selectedOption) {\n this.selectedTextTarget.textContent = selectedOption.text;\n }\n }\n\n handleClickOutside(event) {\n if (!this.element.contains(event.target)) {\n this.hideDropdown();\n }\n }\n}\n","// app/javascript/controllers/share_button_controller.js\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"button\"];\n static values = {\n title: String,\n url: String,\n };\n\n connect() {\n if (navigator.share) {\n this.buttonTarget.classList.remove(\"hidden\");\n }\n }\n\n async share() {\n try {\n await navigator.share({\n title: this.titleValue,\n url: this.urlValue,\n });\n } catch (err) {\n if (err.name !== \"AbortError\") {\n console.error(\"Error sharing:\", err);\n }\n }\n }\n}\n","export default {\n strings: {\n chooseFiles: 'Choose files'\n }\n};","import { h } from 'preact';\nimport { UIPlugin } from '@uppy/core';\nimport toArray from '@uppy/utils/lib/toArray';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.0.1\"\n};\nimport locale from \"./locale.js\";\nconst defaultOptions = {\n pretty: true,\n inputName: 'files[]'\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/files\n\nexport default class FileInput extends UIPlugin {\n constructor(uppy, opts) {\n super(uppy, {\n ...defaultOptions,\n ...opts\n });\n this.input = null;\n this.id = this.opts.id || 'FileInput';\n this.title = 'File Input';\n this.type = 'acquirer';\n this.defaultLocale = locale;\n this.i18nInit();\n this.render = this.render.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n addFiles(files) {\n const descriptors = files.map(file => ({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file\n }));\n try {\n this.uppy.addFiles(descriptors);\n } catch (err) {\n this.uppy.log(err);\n }\n }\n handleInputChange(event) {\n this.uppy.log('[FileInput] Something selected through input...');\n const files = toArray(event.target.files);\n this.addFiles(files);\n\n // We clear the input after a file is selected, because otherwise\n // change event is not fired in Chrome and Safari when a file\n // with the same name is selected.\n // ___Why not use value=\"\" on instead?\n // Because if we use that method of clearing the input,\n // Chrome will not trigger change if we drop the same file twice (Issue #768).\n // @ts-expect-error yes\n event.target.value = null; // eslint-disable-line no-param-reassign\n }\n handleClick() {\n this.input.click();\n }\n render() {\n var _restrictions$allowed;\n /* http://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/ */\n const hiddenInputStyle = {\n width: '0.1px',\n height: '0.1px',\n opacity: 0,\n overflow: 'hidden',\n position: 'absolute',\n zIndex: -1\n };\n const {\n restrictions\n } = this.uppy.opts;\n return h(\"div\", {\n className: \"uppy-FileInput-container\"\n }, h(\"input\", {\n className: \"uppy-FileInput-input\",\n style: this.opts.pretty ? hiddenInputStyle : undefined,\n type: \"file\",\n name: this.opts.inputName,\n onChange: this.handleInputChange,\n multiple: restrictions.maxNumberOfFiles !== 1,\n accept: (_restrictions$allowed = restrictions.allowedFileTypes) == null ? void 0 : _restrictions$allowed.join(', '),\n ref: input => {\n this.input = input;\n }\n }), this.opts.pretty && h(\"button\", {\n className: \"uppy-FileInput-btn\",\n type: \"button\",\n onClick: this.handleClick\n }, this.i18n('chooseFiles')));\n }\n install() {\n const {\n target\n } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n }\n uninstall() {\n this.unmount();\n }\n}\nFileInput.VERSION = packageJson.version;","import { h } from 'preact';\nimport { UIPlugin } from '@uppy/core';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.0.0\"\n};\n// set default options, must kept in sync with @uppy/react/src/ProgressBar.js\nconst defaultOptions = {\n fixed: false,\n hideAfterFinish: true\n};\n/**\n * Progress bar\n *\n */\nexport default class ProgressBar extends UIPlugin {\n constructor(uppy, opts) {\n super(uppy, {\n ...defaultOptions,\n ...opts\n });\n this.id = this.opts.id || 'ProgressBar';\n this.title = 'Progress Bar';\n this.type = 'progressindicator';\n this.render = this.render.bind(this);\n }\n render(state) {\n const progress = state.totalProgress || 0;\n // before starting and after finish should be hidden if specified in the options\n const isHidden = (progress === 0 || progress === 100) && this.opts.hideAfterFinish;\n return h(\"div\", {\n className: \"uppy uppy-ProgressBar\",\n style: {\n position: this.opts.fixed ? 'fixed' : 'initial'\n },\n \"aria-hidden\": isHidden\n }, h(\"div\", {\n className: \"uppy-ProgressBar-inner\",\n style: {\n width: `${progress}%`\n }\n }), h(\"div\", {\n className: \"uppy-ProgressBar-percentage\"\n }, progress));\n }\n install() {\n const {\n target\n } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n }\n uninstall() {\n this.unmount();\n }\n}\nProgressBar.VERSION = packageJson.version;","import { Controller } from \"@hotwired/stimulus\";\nimport FileInput from \"@uppy/file-input\";\nimport ProgressBar from \"@uppy/progress-bar\";\nimport Informer from \"@uppy/informer\";\nimport ThumbnailGenerator from \"@uppy/thumbnail-generator\";\nimport { uppyInstance, uploadedFileData } from \"../uppy\";\n// import { Uppy } from \"@uppy/core\";\n\nexport default class extends Controller {\n static targets = [\n \"input\",\n \"filePreview\",\n \"filePreviewPlaceholder\",\n \"fileUpload\",\n \"informer\",\n \"progressBar\",\n \"removeFileButton\",\n \"result\",\n \"thumbnailPreview\",\n \"thumbnailPreviewPlaceholder\",\n ];\n static values = { types: Array, server: String, buttonText: String, maxFileSize: { type: Number, default: 5000000 } };\n\n connect() {\n console.log(\"SINGLE UPLOAD CONTROLLER CONNECTED::::::::\");\n this.inputTarget.classList.add(\"d-none\");\n this.uppy = this.createUppy();\n }\n\n removeFile(event) {\n event.preventDefault();\n console.log(\"REMOVE FILE EVENT TRIGGERED:::::: \", this.hasFilePreviewTarget, this.hasThumbnailPreviewTarget);\n const triggerElement = event.currentTarget;\n console.log(\"REMOVE FILE EVENT TRIGGERED:::::: \", triggerElement);\n\n if (this.hasFilePreviewTarget) {\n console.log(\"hasFilePreviewTarget:::::: \", this.hasFileUploadTarget);\n this.filePreviewTarget.textContent = \"\";\n this.filePreviewPlaceholderTarget.classList.remove(\"hidden\");\n this.fileUploadTarget.classList.add(\"hidden\");\n }\n\n if (this.hasThumbnailPreviewTarget) {\n this.thumbnailPreviewTarget.src = \"\";\n this.thumbnailPreviewPlaceholderTarget.classList.remove(\"hidden\");\n this.thumbnailPreviewTarget.classList.add(\"hidden\");\n }\n\n this.updateFileSelectorButtonText(\"Add\");\n\n const destroyField = this.element.querySelector(\"input[name*='[_destroy]']\");\n console.log(\"DESTROY FIELD::::::: \", destroyField);\n if (destroyField) {\n destroyField.value = \"1\";\n }\n triggerElement.classList.toggle(\"hidden\");\n }\n\n updateFileSelectorButtonText(newFirstWord) {\n // Select the button with the class `.uppy-FileInput-btn` within this.element\n const button = this.element.querySelector(\".uppy-FileInput-btn\");\n\n if (button) {\n // Get the button's current text content\n const buttonText = button.textContent;\n\n // Split the text into parts on the first space\n const [_, ...rest] = buttonText.split(\" \");\n\n // Replace the first word with the new word and reassemble the text\n const newText = `${newFirstWord} ${rest.join(\" \")}`;\n\n // Update the button's text content\n button.textContent = newText;\n } else {\n console.warn(\"Button with class `.uppy-FileInput-btn` not found.\");\n }\n }\n\n createUppy() {\n const uppy = uppyInstance({\n id: this.inputTarget.id,\n types: this.typesValue,\n server: this.serverValue,\n })\n .use(FileInput, {\n target: this.inputTarget.parentNode,\n locale: { strings: { chooseFiles: this.buttonTextValue } },\n })\n .use(Informer, {\n target: this.informerTarget,\n })\n .use(ProgressBar, {\n target: this.progressBarTarget,\n })\n .use(ThumbnailGenerator, {\n thumbnailWidth: 600,\n });\n\n uppy.on(\"upload-success\", (file, response) => {\n // set hidden field value to the uploaded file data so that it's submitted with the form as the attachment\n const uploadedData = uploadedFileData(file, response, this.serverValue);\n this.resultTarget.value = uploadedData;\n console.log(\"UPLOAD SUCCESS::::::::: \", uploadedData, file.name);\n if (this.hasFilePreviewTarget) {\n this.filePreviewTarget.textContent = file.name;\n this.filePreviewPlaceholderTarget.classList.add(\"hidden\");\n this.fileUploadTarget.classList.remove(\"hidden\");\n }\n });\n\n uppy.on(\"thumbnail:generated\", (file, preview) => {\n this.thumbnailPreviewTarget.src = preview;\n this.updateFileSelectorButtonText(\"Change\");\n\n this.removeFileButtonTarget.classList.remove(\"hidden\");\n this.thumbnailPreviewPlaceholderTarget.classList.add(\"hidden\");\n this.thumbnailPreviewTarget.classList.remove(\"hidden\");\n console.log(\"HAVE REMOVE FILE BUTTON TARGET:::::: \", this.hasRemoveFileButtonTarget);\n\n console.log(\"THUMBNAIL GENERATED::::::::: \", file, preview);\n });\n\n uppy.on(\"upload-error\", function (file, error) {\n console.log(\"UPLOAD ERROR:::: \", error);\n });\n\n return uppy;\n }\n}\n","// controllers/tabs_controller.js\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"tab\", \"pane\"];\n\n connect() {\n console.log(\"TAB CONTROLLER CONNECTED\", this.tabTargets);\n // this.showTab(\"project-updates\"); // Default to 'project-updates'\n }\n\n switch(event) {\n event.preventDefault();\n // const tab = event.currentTarget.dataset.tab;\n this.showTab(event.currentTarget);\n }\n\n showTab(tab) {\n this.tabTargets.forEach((tabElement) => {\n const currentTab = tabElement.dataset.tab === tab.dataset.tab;\n console.log(`Tab:::: ${currentTab}`, tabElement.dataset.tab, tab.dataset.tab);\n tabElement.dataset.activeStatus = currentTab ? \"active\" : \"inactive\";\n });\n\n const inactiveTabs = this.tabTargets.filter((tab) => tab.dataset.activeStatus === \"inactive\");\n\n const activeTab = this.tabTargets.find((tab) => tab.dataset.activeStatus === \"active\");\n const spanChild = activeTab.querySelector(\"span\"); // Immediate span child\n const linkChild = activeTab.querySelector(\"a\"); // Immediate link child\n if (spanChild) {\n spanChild.classList.remove(\"hidden\"); // Add hidden class to span\n }\n\n if (linkChild) {\n linkChild.classList.add(\"hidden\"); // Remove hidden class from link\n }\n\n inactiveTabs.forEach((tab) => {\n const spanChild = tab.querySelector(\"span\"); // Immediate span child\n const linkChild = tab.querySelector(\"a\"); // Immediate link child\n\n if (spanChild) {\n spanChild.classList.add(\"hidden\"); // Add hidden class to span\n }\n\n if (linkChild) {\n linkChild.classList.remove(\"hidden\"); // Remove hidden class from link\n }\n });\n\n this.paneTargets.forEach((pane) => {\n if (pane.id === tab.dataset.tab) {\n pane.classList.add(\"block\");\n pane.classList.remove(\"hidden\");\n } else {\n pane.classList.add(\"hidden\");\n pane.classList.remove(\"block\");\n }\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"firstLabel\", \"secondLabel\"];\n\n static classes = [\"active\", \"inactive\"];\n\n connect() {\n console.log(\"TOGGLE RADIO CONTROLLER CONNECTED::::::: \", this.firstLabelTarget, this.secondLabelTarget);\n console.log(\"ACTIVE CLASS::::::: \", this.activeClasses, \" INACTIVE CLASS::::: \", this.inactiveClasses);\n }\n\n updateStyles() {\n // Safely get elements\n const labels = [this.firstLabelTarget, this.secondLabelTarget];\n const firstInput = this.element.querySelector('input[value=\"' + this.firstValue + '\"]');\n\n // Guard clause if inputs are not found\n if (!firstInput || labels.length !== 2) return;\n\n const isFirstChecked = firstInput.checked;\n\n labels.forEach((label, index) => {\n // Ensure label exists before manipulating\n if (!label) return;\n\n if (index === 0 && isFirstChecked) {\n // First input checked\n label.classList.add(...this.activeClasses);\n label.classList.remove(...this.inactiveClasses);\n } else if (index === 0 && !isFirstChecked) {\n // First input not checked\n label.classList.remove(...this.activeClasses);\n label.classList.add(...this.inactiveClasses);\n } else if (index === 1 && !isFirstChecked) {\n // Second input checked\n label.classList.add(...this.activeClasses);\n label.classList.remove(...this.inactiveClasses);\n } else {\n // Second input not checked\n label.classList.remove(...this.activeClasses);\n label.classList.add(...this.inactiveClasses);\n }\n });\n }\n\n toggle(event) {\n // Trigger updateStyles when an input is clicked\n this.updateStyles();\n }\n\n // Getters for first and second values with fallback\n get firstValue() {\n return this.element.dataset.firstValue || \"first\";\n }\n\n get secondValue() {\n return this.element.dataset.secondValue || \"second\";\n }\n}\n","var map = {\n\t\"./application.js\": 1873,\n\t\"./auto_submit_controller.js\": 1050,\n\t\"./clipboard_copy_controller.js\": 552,\n\t\"./direct_uploads_controller.js\": 3566,\n\t\"./double_confirmations_controller.js\": 5582,\n\t\"./expandable_content_controller.js\": 1122,\n\t\"./hello_controller.js\": 5866,\n\t\"./html_text_editor_controller.js\": 953,\n\t\"./index.js\": 1432,\n\t\"./infinite_scroll_controller.js\": 2926,\n\t\"./initialise_audio_controller.js\": 908,\n\t\"./lightbox_controller.js\": 5737,\n\t\"./modal_controller.js\": 1245,\n\t\"./multiple_upload_controller.js\": 6542,\n\t\"./nested_form_controller.js\": 2064,\n\t\"./record_audio_controller.js\": 6458,\n\t\"./revealable_controller.js\": 2705,\n\t\"./rsvps_controller.js\": 1934,\n\t\"./search_form_controller.js\": 339,\n\t\"./select_input_controller.js\": 8987,\n\t\"./share_button_controller.js\": 1338,\n\t\"./single_upload_controller.js\": 7037,\n\t\"./tabs_controller.js\": 1126,\n\t\"./toggle_radio_controller.js\": 3266\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7461;","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.1.0\"\n};\nvar _callbacks = /*#__PURE__*/_classPrivateFieldLooseKey(\"callbacks\");\nvar _publish = /*#__PURE__*/_classPrivateFieldLooseKey(\"publish\");\n/**\n * Default store that keeps state in a simple object.\n */\nclass DefaultStore {\n constructor() {\n Object.defineProperty(this, _publish, {\n value: _publish2\n });\n this.state = {};\n Object.defineProperty(this, _callbacks, {\n writable: true,\n value: new Set()\n });\n }\n getState() {\n return this.state;\n }\n setState(patch) {\n const prevState = {\n ...this.state\n };\n const nextState = {\n ...this.state,\n ...patch\n };\n this.state = nextState;\n _classPrivateFieldLooseBase(this, _publish)[_publish](prevState, nextState, patch);\n }\n subscribe(listener) {\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].add(listener);\n return () => {\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].delete(listener);\n };\n }\n}\nfunction _publish2() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].forEach(listener => {\n listener(...args);\n });\n}\nDefaultStore.VERSION = packageJson.version;\nexport default DefaultStore;","// Edge 15.x does not fire 'progress' events on uploads.\n// See https://github.com/transloadit/uppy/issues/945\n// And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/\nexport default function supportsUploadProgress(userAgent) {\n // Allow passing in userAgent for tests\n if (userAgent == null && typeof navigator !== 'undefined') {\n // eslint-disable-next-line no-param-reassign\n userAgent = navigator.userAgent;\n }\n // Assume it works because basically everything supports progress events.\n if (!userAgent) return true;\n const m = /Edge\\/(\\d+\\.\\d+)/.exec(userAgent);\n if (!m) return true;\n const edgeVersion = m[1];\n const version = edgeVersion.split('.', 2);\n const major = parseInt(version[0], 10);\n const minor = parseInt(version[1], 10);\n\n // Worked before:\n // Edge 40.15063.0.0\n // Microsoft EdgeHTML 15.15063\n if (major < 15 || major === 15 && minor < 15063) {\n return true;\n }\n\n // Fixed in:\n // Microsoft EdgeHTML 18.18218\n if (major > 18 || major === 18 && minor >= 18218) {\n return true;\n }\n\n // other versions don't work.\n return false;\n}","/**\n * Adds zero to strings shorter than two characters.\n */\nfunction pad(number) {\n return number < 10 ? `0${number}` : number.toString();\n}\n\n/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n */\nexport default function getTimeStamp() {\n const date = new Date();\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n return `${hours}:${minutes}:${seconds}`;\n}","/* eslint-disable no-console */\nimport getTimeStamp from '@uppy/utils/lib/getTimeStamp';\n\n// Swallow all logs, except errors.\n// default if logger is not set or debug: false\nconst justErrorsLogger = {\n debug: () => {},\n warn: () => {},\n error: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n }\n};\n\n// Print logs to console with namespace + timestamp,\n// set by logger: Uppy.debugLogger or debug: true\nconst debugLogger = {\n debug: function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return console.debug(`[Uppy] [${getTimeStamp()}]`, ...args);\n },\n warn: function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return console.warn(`[Uppy] [${getTimeStamp()}]`, ...args);\n },\n error: function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n }\n};\nexport { justErrorsLogger, debugLogger };","/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable max-classes-per-file, class-methods-use-this */\nimport prettierBytes from '@transloadit/prettier-bytes';\n// @ts-ignore untyped\nimport match from 'mime-match';\n\n/**\n * The minimal required properties to be present from UppyFile in order to validate it.\n */\n\nconst defaultOptions = {\n maxFileSize: null,\n minFileSize: null,\n maxTotalFileSize: null,\n maxNumberOfFiles: null,\n minNumberOfFiles: null,\n allowedFileTypes: null,\n requiredMetaFields: []\n};\nclass RestrictionError extends Error {\n constructor(message, opts) {\n var _opts$isUserFacing;\n super(message);\n this.isRestriction = true;\n this.isUserFacing = (_opts$isUserFacing = opts == null ? void 0 : opts.isUserFacing) != null ? _opts$isUserFacing : true;\n if (opts != null && opts.file) {\n this.file = opts.file; // only some restriction errors are related to a particular file\n }\n }\n}\nclass Restricter {\n constructor(getOpts, getI18n) {\n this.getI18n = getI18n;\n this.getOpts = () => {\n var _opts$restrictions;\n const opts = getOpts();\n if (((_opts$restrictions = opts.restrictions) == null ? void 0 : _opts$restrictions.allowedFileTypes) != null && !Array.isArray(opts.restrictions.allowedFileTypes)) {\n throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n }\n return opts;\n };\n }\n\n // Because these operations are slow, we cannot run them for every file (if we are adding multiple files)\n validateAggregateRestrictions(existingFiles, addingFiles) {\n const {\n maxTotalFileSize,\n maxNumberOfFiles\n } = this.getOpts().restrictions;\n if (maxNumberOfFiles) {\n const nonGhostFiles = existingFiles.filter(f => !f.isGhost);\n if (nonGhostFiles.length + addingFiles.length > maxNumberOfFiles) {\n throw new RestrictionError(`${this.getI18n()('youCanOnlyUploadX', {\n smart_count: maxNumberOfFiles\n })}`);\n }\n }\n if (maxTotalFileSize) {\n const totalFilesSize = [...existingFiles, ...addingFiles].reduce((total, f) => {\n var _f$size;\n return total + ((_f$size = f.size) != null ? _f$size : 0);\n }, 0);\n if (totalFilesSize > maxTotalFileSize) {\n throw new RestrictionError(this.getI18n()('aggregateExceedsSize', {\n sizeAllowed: prettierBytes(maxTotalFileSize),\n size: prettierBytes(totalFilesSize)\n }));\n }\n }\n }\n validateSingleFile(file) {\n const {\n maxFileSize,\n minFileSize,\n allowedFileTypes\n } = this.getOpts().restrictions;\n if (allowedFileTypes) {\n const isCorrectFileType = allowedFileTypes.some(type => {\n // check if this is a mime-type\n if (type.includes('/')) {\n if (!file.type) return false;\n return match(file.type.replace(/;.*?$/, ''), type);\n }\n\n // otherwise this is likely an extension\n if (type[0] === '.' && file.extension) {\n return file.extension.toLowerCase() === type.slice(1).toLowerCase();\n }\n return false;\n });\n if (!isCorrectFileType) {\n const allowedFileTypesString = allowedFileTypes.join(', ');\n throw new RestrictionError(this.getI18n()('youCanOnlyUploadFileTypes', {\n types: allowedFileTypesString\n }), {\n file\n });\n }\n }\n\n // We can't check maxFileSize if the size is unknown.\n if (maxFileSize && file.size != null && file.size > maxFileSize) {\n var _file$name;\n throw new RestrictionError(this.getI18n()('exceedsSize', {\n size: prettierBytes(maxFileSize),\n file: (_file$name = file.name) != null ? _file$name : this.getI18n()('unnamed')\n }), {\n file\n });\n }\n\n // We can't check minFileSize if the size is unknown.\n if (minFileSize && file.size != null && file.size < minFileSize) {\n throw new RestrictionError(this.getI18n()('inferiorSize', {\n size: prettierBytes(minFileSize)\n }), {\n file\n });\n }\n }\n validate(existingFiles, addingFiles) {\n addingFiles.forEach(addingFile => {\n this.validateSingleFile(addingFile);\n });\n this.validateAggregateRestrictions(existingFiles, addingFiles);\n }\n validateMinNumberOfFiles(files) {\n const {\n minNumberOfFiles\n } = this.getOpts().restrictions;\n if (minNumberOfFiles && Object.keys(files).length < minNumberOfFiles) {\n throw new RestrictionError(this.getI18n()('youHaveToAtLeastSelectX', {\n smart_count: minNumberOfFiles\n }));\n }\n }\n getMissingRequiredMetaFields(file) {\n var _file$name2;\n const error = new RestrictionError(this.getI18n()('missingRequiredMetaFieldOnFile', {\n fileName: (_file$name2 = file.name) != null ? _file$name2 : this.getI18n()('unnamed')\n }));\n const {\n requiredMetaFields\n } = this.getOpts().restrictions;\n const missingFields = [];\n for (const field of requiredMetaFields) {\n if (!Object.hasOwn(file.meta, field) || file.meta[field] === '') {\n missingFields.push(field);\n }\n }\n return {\n missingFields,\n error\n };\n }\n}\nexport { Restricter, defaultOptions, RestrictionError };","export default {\n strings: {\n addBulkFilesFailed: {\n 0: 'Failed to add %{smart_count} file due to an internal error',\n 1: 'Failed to add %{smart_count} files due to internal errors'\n },\n youCanOnlyUploadX: {\n 0: 'You can only upload %{smart_count} file',\n 1: 'You can only upload %{smart_count} files'\n },\n youHaveToAtLeastSelectX: {\n 0: 'You have to select at least %{smart_count} file',\n 1: 'You have to select at least %{smart_count} files'\n },\n aggregateExceedsSize: 'You selected %{size} of files, but maximum allowed size is %{sizeAllowed}',\n exceedsSize: '%{file} exceeds maximum allowed size of %{size}',\n missingRequiredMetaField: 'Missing required meta fields',\n missingRequiredMetaFieldOnFile: 'Missing required meta fields in %{fileName}',\n inferiorSize: 'This file is smaller than the allowed size of %{size}',\n youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n noMoreFilesAllowed: 'Cannot add more files',\n noDuplicates: \"Cannot add the duplicate file '%{fileName}', it already exists\",\n companionError: 'Connection with Companion failed',\n authAborted: 'Authentication aborted',\n companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n failedToUpload: 'Failed to upload %{file}',\n noInternetConnection: 'No Internet connection',\n connectedToInternet: 'Connected to the Internet',\n // Strings for remote providers\n noFilesFound: 'You have no files or folders here',\n noSearchResults: 'Unfortunately, there are no results for this search',\n selectX: {\n 0: 'Select %{smart_count}',\n 1: 'Select %{smart_count}'\n },\n allFilesFromFolderNamed: 'All files from folder %{name}',\n openFolderNamed: 'Open folder %{name}',\n cancel: 'Cancel',\n logOut: 'Log out',\n filter: 'Filter',\n resetFilter: 'Reset filter',\n loading: 'Loading...',\n loadedXFiles: 'Loaded %{numFiles} files',\n authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n authenticateWith: 'Connect to %{pluginName}',\n signInWithGoogle: 'Sign in with Google',\n searchImages: 'Search for images',\n enterTextToSearch: 'Enter text to search for images',\n search: 'Search',\n resetSearch: 'Reset search',\n emptyFolderAdded: 'No files were added from empty folder',\n addedNumFiles: 'Added %{numFiles} file(s)',\n folderAlreadyAdded: 'The folder \"%{folder}\" was already added',\n folderAdded: {\n 0: 'Added %{smart_count} file from %{folder}',\n 1: 'Added %{smart_count} files from %{folder}'\n },\n additionalRestrictionsFailed: '%{count} additional restrictions were not fulfilled',\n unnamed: 'Unnamed'\n }\n};","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\n/* eslint-disable max-classes-per-file */\n/* global AggregateError */\n\nimport Translator from '@uppy/utils/lib/Translator';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\nimport ee from 'namespace-emitter';\nimport { nanoid } from 'nanoid/non-secure';\nimport throttle from 'lodash/throttle.js';\nimport DefaultStore from '@uppy/store-default';\nimport getFileType from '@uppy/utils/lib/getFileType';\nimport getFileNameAndExtension from '@uppy/utils/lib/getFileNameAndExtension';\nimport { getSafeFileId } from '@uppy/utils/lib/generateFileID';\nimport supportsUploadProgress from \"./supportsUploadProgress.js\";\nimport getFileName from \"./getFileName.js\";\nimport { justErrorsLogger, debugLogger } from \"./loggers.js\";\nimport { Restricter, defaultOptions as defaultRestrictionOptions, RestrictionError } from \"./Restricter.js\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.2.0\"\n};\nimport locale from \"./locale.js\";\n\n/**\n * ids are always `string`s, except the root folder's id can be `null`\n */\n\n/**\n * PartialTree has the following structure.\n *\n * FolderRoot\n * ┌─────┴─────┐\n * FolderNode File\n * ┌─────┴────┐\n * File File\n *\n * Root folder is called `PartialTreeFolderRoot`,\n * all other folders are called `PartialTreeFolderNode`, because they are \"internal nodes\".\n *\n * It's possible for `PartialTreeFolderNode` to be a leaf node if it doesn't contain any files.\n */\n\n/*\n * UnknownProviderPlugin can be any Companion plugin (such as Google Drive).\n * As the plugins are passed around throughout Uppy we need a generic type for this.\n * It may seems like duplication, but this type safe. Changing the type of `storage`\n * will error in the `Provider` class of @uppy/companion-client and vice versa.\n *\n * Note that this is the *plugin* class, not a version of the `Provider` class.\n * `Provider` does operate on Companion plugins with `uppy.getPlugin()`.\n */\n\n/*\n * UnknownSearchProviderPlugin can be any search Companion plugin (such as Unsplash).\n * As the plugins are passed around throughout Uppy we need a generic type for this.\n * It may seems like duplication, but this type safe. Changing the type of `title`\n * will error in the `SearchProvider` class of @uppy/companion-client and vice versa.\n *\n * Note that this is the *plugin* class, not a version of the `SearchProvider` class.\n * `SearchProvider` does operate on Companion plugins with `uppy.getPlugin()`.\n */\n\n// TODO: can we use namespaces in other plugins to populate this?\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\n\n// The user facing type for UppyOptions used in uppy.setOptions()\n\n/** `OmitFirstArg` is the type of the returned value of `someArray.slice(1)`. */\n\nconst defaultUploadState = {\n totalProgress: 0,\n allowNewUpload: true,\n error: null,\n recoveredState: null\n};\n\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\nvar _plugins = /*#__PURE__*/_classPrivateFieldLooseKey(\"plugins\");\nvar _restricter = /*#__PURE__*/_classPrivateFieldLooseKey(\"restricter\");\nvar _storeUnsubscribe = /*#__PURE__*/_classPrivateFieldLooseKey(\"storeUnsubscribe\");\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\nvar _preProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"preProcessors\");\nvar _uploaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploaders\");\nvar _postProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"postProcessors\");\nvar _informAndEmit = /*#__PURE__*/_classPrivateFieldLooseKey(\"informAndEmit\");\nvar _checkRequiredMetaFieldsOnFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFieldsOnFile\");\nvar _checkRequiredMetaFields = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFields\");\nvar _assertNewUploadAllowed = /*#__PURE__*/_classPrivateFieldLooseKey(\"assertNewUploadAllowed\");\nvar _transformFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"transformFile\");\nvar _startIfAutoProceed = /*#__PURE__*/_classPrivateFieldLooseKey(\"startIfAutoProceed\");\nvar _checkAndUpdateFileState = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkAndUpdateFileState\");\nvar _addListeners = /*#__PURE__*/_classPrivateFieldLooseKey(\"addListeners\");\nvar _updateOnlineStatus = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateOnlineStatus\");\nvar _requestClientById = /*#__PURE__*/_classPrivateFieldLooseKey(\"requestClientById\");\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\nvar _getUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUpload\");\nvar _removeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"removeUpload\");\nvar _runUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"runUpload\");\nexport class Uppy {\n /**\n * Instantiate Uppy\n */\n constructor(_opts) {\n /**\n * Run an upload. This picks up where it left off in case the upload is being restored.\n */\n Object.defineProperty(this, _runUpload, {\n value: _runUpload2\n });\n /**\n * Remove an upload, eg. if it has been canceled or completed.\n *\n */\n Object.defineProperty(this, _removeUpload, {\n value: _removeUpload2\n });\n Object.defineProperty(this, _getUpload, {\n value: _getUpload2\n });\n /**\n * Create an upload for a bunch of files.\n *\n */\n Object.defineProperty(this, _createUpload, {\n value: _createUpload2\n });\n /**\n * Registers listeners for all global actions, like:\n * `error`, `file-removed`, `upload-progress`\n */\n Object.defineProperty(this, _addListeners, {\n value: _addListeners2\n });\n Object.defineProperty(this, _checkAndUpdateFileState, {\n value: _checkAndUpdateFileState2\n });\n // Schedule an upload if `autoProceed` is enabled.\n Object.defineProperty(this, _startIfAutoProceed, {\n value: _startIfAutoProceed2\n });\n /**\n * Create a file state object based on user-provided `addFile()` options.\n */\n Object.defineProperty(this, _transformFile, {\n value: _transformFile2\n });\n Object.defineProperty(this, _assertNewUploadAllowed, {\n value: _assertNewUploadAllowed2\n });\n Object.defineProperty(this, _checkRequiredMetaFields, {\n value: _checkRequiredMetaFields2\n });\n Object.defineProperty(this, _checkRequiredMetaFieldsOnFile, {\n value: _checkRequiredMetaFieldsOnFile2\n });\n Object.defineProperty(this, _informAndEmit, {\n value: _informAndEmit2\n });\n Object.defineProperty(this, _plugins, {\n writable: true,\n value: Object.create(null)\n });\n Object.defineProperty(this, _restricter, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _storeUnsubscribe, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _emitter, {\n writable: true,\n value: ee()\n });\n Object.defineProperty(this, _preProcessors, {\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, _uploaders, {\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, _postProcessors, {\n writable: true,\n value: new Set()\n });\n this.scheduledAutoProceed = null;\n this.wasOffline = false;\n // ___Why throttle at 500ms?\n // - We must throttle at >250ms for superfocus in Dashboard to work well\n // (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n // [Practical Check]: if thottle is at 100ms, then if you are uploading a file,\n // and click 'ADD MORE FILES', - focus won't activate in Firefox.\n // - We must throttle at around >500ms to avoid performance lags.\n // [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n // todo when uploading multiple files, this will cause problems because they share the same throttle,\n // meaning some files might never get their progress reported (eaten up by progress events from other files)\n this.calculateProgress = throttle((file, data) => {\n const fileInState = this.getFile(file == null ? void 0 : file.id);\n if (file == null || !fileInState) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n if (fileInState.progress.percentage === 100) {\n this.log(`Not setting progress for a file that has been already uploaded: ${file.id}`);\n return;\n }\n\n // bytesTotal may be null or zero; in that case we can't divide by it\n const canHavePercentage = Number.isFinite(data.bytesTotal) && data.bytesTotal > 0;\n this.setFileState(file.id, {\n progress: {\n ...fileInState.progress,\n bytesUploaded: data.bytesUploaded,\n bytesTotal: data.bytesTotal,\n percentage: canHavePercentage ? Math.round(data.bytesUploaded / data.bytesTotal * 100) : 0\n }\n });\n this.calculateTotalProgress();\n }, 500, {\n leading: true,\n trailing: true\n });\n Object.defineProperty(this, _updateOnlineStatus, {\n writable: true,\n value: this.updateOnlineStatus.bind(this)\n });\n // We need to store request clients by a unique ID, so we can share RequestClient instances across files\n // this allows us to do rate limiting and synchronous operations like refreshing provider tokens\n // example: refreshing tokens: if each file has their own requestclient,\n // we don't have any way to synchronize all requests in order to\n // - block all requests\n // - refresh the token\n // - unblock all requests and allow them to run with a the new access token\n // back when we had a requestclient per file, once an access token expired,\n // all 6 files would go ahead and refresh the token at the same time\n // (calling /refresh-token up to 6 times), which will probably fail for some providers\n Object.defineProperty(this, _requestClientById, {\n writable: true,\n value: new Map()\n });\n this.defaultLocale = locale;\n const defaultOptions = {\n id: 'uppy',\n autoProceed: false,\n allowMultipleUploadBatches: true,\n debug: false,\n restrictions: defaultRestrictionOptions,\n meta: {},\n onBeforeFileAdded: (file, files) => !Object.hasOwn(files, file.id),\n onBeforeUpload: files => files,\n store: new DefaultStore(),\n logger: justErrorsLogger,\n infoTimeout: 5000\n };\n const merged = {\n ...defaultOptions,\n ..._opts\n };\n // Merge default options with the ones set by user,\n // making sure to merge restrictions too\n this.opts = {\n ...merged,\n restrictions: {\n ...defaultOptions.restrictions,\n ...(_opts && _opts.restrictions)\n }\n };\n\n // Support debug: true for backwards-compatability, unless logger is set in opts\n // opts instead of this.opts to avoid comparing objects — we set logger: justErrorsLogger in defaultOptions\n if (_opts && _opts.logger && _opts.debug) {\n this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n } else if (_opts && _opts.debug) {\n this.opts.logger = debugLogger;\n }\n this.log(`Using Core v${Uppy.VERSION}`);\n this.i18nInit();\n this.store = this.opts.store;\n this.setState({\n ...defaultUploadState,\n plugins: {},\n files: {},\n currentUploads: {},\n capabilities: {\n uploadProgress: supportsUploadProgress(),\n individualCancellation: true,\n resumableUploads: false\n },\n meta: {\n ...this.opts.meta\n },\n info: []\n });\n _classPrivateFieldLooseBase(this, _restricter)[_restricter] = new Restricter(() => this.opts, () => this.i18n);\n _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe] = this.store.subscribe((prevState, nextState, patch) => {\n this.emit('state-update', prevState, nextState, patch);\n this.updateAll(nextState);\n });\n\n // Exposing uppy object on window for debugging and testing\n if (this.opts.debug && typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Mutating the global object for debug purposes\n window[this.opts.id] = this;\n }\n _classPrivateFieldLooseBase(this, _addListeners)[_addListeners]();\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].emit(event, ...args);\n }\n on(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, callback);\n return this;\n }\n once(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].once(event, callback);\n return this;\n }\n off(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, callback);\n return this;\n }\n\n /**\n * Iterate on all plugins and run `update` on them.\n * Called each time state changes.\n *\n */\n updateAll(state) {\n this.iteratePlugins(plugin => {\n plugin.update(state);\n });\n }\n\n /**\n * Updates state with a patch\n */\n setState(patch) {\n this.store.setState(patch);\n }\n\n /**\n * Returns current state.\n */\n getState() {\n return this.store.getState();\n }\n patchFilesState(filesWithNewState) {\n const existingFilesState = this.getState().files;\n this.setState({\n files: {\n ...existingFilesState,\n ...Object.fromEntries(Object.entries(filesWithNewState).map(_ref => {\n let [fileID, newFileState] = _ref;\n return [fileID, {\n ...existingFilesState[fileID],\n ...newFileState\n }];\n }))\n }\n });\n }\n\n /**\n * Shorthand to set state for a specific file.\n */\n setFileState(fileID, state) {\n if (!this.getState().files[fileID]) {\n throw new Error(`Can’t set state for ${fileID} (the file could have been removed)`);\n }\n this.patchFilesState({\n [fileID]: state\n });\n }\n i18nInit() {\n const onMissingKey = key => this.log(`Missing i18n string: ${key}`, 'error');\n const translator = new Translator([this.defaultLocale, this.opts.locale], {\n onMissingKey\n });\n this.i18n = translator.translate.bind(translator);\n this.i18nArray = translator.translateArray.bind(translator);\n this.locale = translator.locale;\n }\n setOptions(newOpts) {\n this.opts = {\n ...this.opts,\n ...newOpts,\n restrictions: {\n ...this.opts.restrictions,\n ...(newOpts == null ? void 0 : newOpts.restrictions)\n }\n };\n if (newOpts.meta) {\n this.setMeta(newOpts.meta);\n }\n this.i18nInit();\n if (newOpts.locale) {\n this.iteratePlugins(plugin => {\n plugin.setOptions(newOpts);\n });\n }\n\n // Note: this is not the preact `setState`, it's an internal function that has the same name.\n this.setState(undefined); // so that UI re-renders with new options\n }\n resetProgress() {\n const defaultProgress = {\n percentage: 0,\n bytesUploaded: false,\n uploadComplete: false,\n uploadStarted: null\n };\n const files = {\n ...this.getState().files\n };\n const updatedFiles = Object.create(null);\n Object.keys(files).forEach(fileID => {\n updatedFiles[fileID] = {\n ...files[fileID],\n progress: {\n ...files[fileID].progress,\n ...defaultProgress\n }\n };\n });\n this.setState({\n files: updatedFiles,\n ...defaultUploadState\n });\n }\n clear() {\n const {\n capabilities,\n currentUploads\n } = this.getState();\n if (Object.keys(currentUploads).length > 0 && !capabilities.individualCancellation) {\n throw new Error('The installed uploader plugin does not allow removing files during an upload.');\n }\n this.setState({\n ...defaultUploadState,\n files: {}\n });\n }\n addPreProcessor(fn) {\n _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].add(fn);\n }\n removePreProcessor(fn) {\n return _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].delete(fn);\n }\n addPostProcessor(fn) {\n _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].add(fn);\n }\n removePostProcessor(fn) {\n return _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].delete(fn);\n }\n addUploader(fn) {\n _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].add(fn);\n }\n removeUploader(fn) {\n return _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].delete(fn);\n }\n setMeta(data) {\n const updatedMeta = {\n ...this.getState().meta,\n ...data\n };\n const updatedFiles = {\n ...this.getState().files\n };\n Object.keys(updatedFiles).forEach(fileID => {\n updatedFiles[fileID] = {\n ...updatedFiles[fileID],\n meta: {\n ...updatedFiles[fileID].meta,\n ...data\n }\n };\n });\n this.log('Adding metadata:');\n this.log(data);\n this.setState({\n meta: updatedMeta,\n files: updatedFiles\n });\n }\n setFileMeta(fileID, data) {\n const updatedFiles = {\n ...this.getState().files\n };\n if (!updatedFiles[fileID]) {\n this.log('Was trying to set metadata for a file that has been removed: ', fileID);\n return;\n }\n const newMeta = {\n ...updatedFiles[fileID].meta,\n ...data\n };\n updatedFiles[fileID] = {\n ...updatedFiles[fileID],\n meta: newMeta\n };\n this.setState({\n files: updatedFiles\n });\n }\n\n /**\n * Get a file object.\n */\n getFile(fileID) {\n return this.getState().files[fileID];\n }\n\n /**\n * Get all files in an array.\n */\n getFiles() {\n const {\n files\n } = this.getState();\n return Object.values(files);\n }\n getFilesByIds(ids) {\n return ids.map(id => this.getFile(id));\n }\n getObjectOfFilesPerState() {\n const {\n files: filesObject,\n totalProgress,\n error\n } = this.getState();\n const files = Object.values(filesObject);\n const inProgressFiles = [];\n const newFiles = [];\n const startedFiles = [];\n const uploadStartedFiles = [];\n const pausedFiles = [];\n const completeFiles = [];\n const erroredFiles = [];\n const inProgressNotPausedFiles = [];\n const processingFiles = [];\n for (const file of files) {\n const {\n progress\n } = file;\n if (!progress.uploadComplete && progress.uploadStarted) {\n inProgressFiles.push(file);\n if (!file.isPaused) {\n inProgressNotPausedFiles.push(file);\n }\n }\n if (!progress.uploadStarted) {\n newFiles.push(file);\n }\n if (progress.uploadStarted || progress.preprocess || progress.postprocess) {\n startedFiles.push(file);\n }\n if (progress.uploadStarted) {\n uploadStartedFiles.push(file);\n }\n if (file.isPaused) {\n pausedFiles.push(file);\n }\n if (progress.uploadComplete) {\n completeFiles.push(file);\n }\n if (file.error) {\n erroredFiles.push(file);\n }\n if (progress.preprocess || progress.postprocess) {\n processingFiles.push(file);\n }\n }\n return {\n newFiles,\n startedFiles,\n uploadStartedFiles,\n pausedFiles,\n completeFiles,\n erroredFiles,\n inProgressFiles,\n inProgressNotPausedFiles,\n processingFiles,\n isUploadStarted: uploadStartedFiles.length > 0,\n isAllComplete: totalProgress === 100 && completeFiles.length === files.length && processingFiles.length === 0,\n isAllErrored: !!error && erroredFiles.length === files.length,\n isAllPaused: inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length,\n isUploadInProgress: inProgressFiles.length > 0,\n isSomeGhost: files.some(file => file.isGhost)\n };\n }\n validateSingleFile(file) {\n try {\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateSingleFile(file);\n } catch (err) {\n return err.message;\n }\n return null;\n }\n validateAggregateRestrictions(files) {\n const existingFiles = this.getFiles();\n try {\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateAggregateRestrictions(existingFiles, files);\n } catch (err) {\n return err.message;\n }\n return null;\n }\n checkIfFileAlreadyExists(fileID) {\n const {\n files\n } = this.getState();\n if (files[fileID] && !files[fileID].isGhost) {\n return true;\n }\n return false;\n }\n /**\n * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n * try to guess file type in a clever way, check file against restrictions,\n * and start an upload if `autoProceed === true`.\n */\n addFile(file) {\n _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](file);\n const {\n nextFilesState,\n validFilesToAdd,\n errors\n } = _classPrivateFieldLooseBase(this, _checkAndUpdateFileState)[_checkAndUpdateFileState]([file]);\n const restrictionErrors = errors.filter(error => error.isRestriction);\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](restrictionErrors);\n if (errors.length > 0) throw errors[0];\n this.setState({\n files: nextFilesState\n });\n const [firstValidFileToAdd] = validFilesToAdd;\n this.emit('file-added', firstValidFileToAdd);\n this.emit('files-added', validFilesToAdd);\n this.log(`Added file: ${firstValidFileToAdd.name}, ${firstValidFileToAdd.id}, mime type: ${firstValidFileToAdd.type}`);\n _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n return firstValidFileToAdd.id;\n }\n\n /**\n * Add multiple files to `state.files`. See the `addFile()` documentation.\n *\n * If an error occurs while adding a file, it is logged and the user is notified.\n * This is good for UI plugins, but not for programmatic use.\n * Programmatic users should usually still use `addFile()` on individual files.\n */\n addFiles(fileDescriptors) {\n _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed]();\n const {\n nextFilesState,\n validFilesToAdd,\n errors\n } = _classPrivateFieldLooseBase(this, _checkAndUpdateFileState)[_checkAndUpdateFileState](fileDescriptors);\n const restrictionErrors = errors.filter(error => error.isRestriction);\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](restrictionErrors);\n const nonRestrictionErrors = errors.filter(error => !error.isRestriction);\n if (nonRestrictionErrors.length > 0) {\n let message = 'Multiple errors occurred while adding files:\\n';\n nonRestrictionErrors.forEach(subError => {\n message += `\\n * ${subError.message}`;\n });\n this.info({\n message: this.i18n('addBulkFilesFailed', {\n smart_count: nonRestrictionErrors.length\n }),\n details: message\n }, 'error', this.opts.infoTimeout);\n if (typeof AggregateError === 'function') {\n throw new AggregateError(nonRestrictionErrors, message);\n } else {\n const err = new Error(message);\n // @ts-expect-error fallback when AggregateError is not available\n err.errors = nonRestrictionErrors;\n throw err;\n }\n }\n\n // OK, we haven't thrown an error, we can start updating state and emitting events now:\n\n this.setState({\n files: nextFilesState\n });\n validFilesToAdd.forEach(file => {\n this.emit('file-added', file);\n });\n this.emit('files-added', validFilesToAdd);\n if (validFilesToAdd.length > 5) {\n this.log(`Added batch of ${validFilesToAdd.length} files`);\n } else {\n Object.values(validFilesToAdd).forEach(file => {\n this.log(`Added file: ${file.name}\\n id: ${file.id}\\n type: ${file.type}`);\n });\n }\n if (validFilesToAdd.length > 0) {\n _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n }\n }\n removeFiles(fileIDs) {\n const {\n files,\n currentUploads\n } = this.getState();\n const updatedFiles = {\n ...files\n };\n const updatedUploads = {\n ...currentUploads\n };\n const removedFiles = Object.create(null);\n fileIDs.forEach(fileID => {\n if (files[fileID]) {\n removedFiles[fileID] = files[fileID];\n delete updatedFiles[fileID];\n }\n });\n\n // Remove files from the `fileIDs` list in each upload.\n function fileIsNotRemoved(uploadFileID) {\n return removedFiles[uploadFileID] === undefined;\n }\n Object.keys(updatedUploads).forEach(uploadID => {\n const newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved);\n\n // Remove the upload if no files are associated with it anymore.\n if (newFileIDs.length === 0) {\n delete updatedUploads[uploadID];\n return;\n }\n const {\n capabilities\n } = this.getState();\n if (newFileIDs.length !== currentUploads[uploadID].fileIDs.length && !capabilities.individualCancellation) {\n throw new Error('The installed uploader plugin does not allow removing files during an upload.');\n }\n updatedUploads[uploadID] = {\n ...currentUploads[uploadID],\n fileIDs: newFileIDs\n };\n });\n const stateUpdate = {\n currentUploads: updatedUploads,\n files: updatedFiles\n };\n\n // If all files were removed - allow new uploads,\n // and clear recoveredState\n if (Object.keys(updatedFiles).length === 0) {\n stateUpdate.allowNewUpload = true;\n stateUpdate.error = null;\n stateUpdate.recoveredState = null;\n }\n this.setState(stateUpdate);\n this.calculateTotalProgress();\n const removedFileIDs = Object.keys(removedFiles);\n removedFileIDs.forEach(fileID => {\n this.emit('file-removed', removedFiles[fileID]);\n });\n if (removedFileIDs.length > 5) {\n this.log(`Removed ${removedFileIDs.length} files`);\n } else {\n this.log(`Removed files: ${removedFileIDs.join(', ')}`);\n }\n }\n removeFile(fileID) {\n this.removeFiles([fileID]);\n }\n pauseResume(fileID) {\n if (!this.getState().capabilities.resumableUploads || this.getFile(fileID).progress.uploadComplete) {\n return undefined;\n }\n const file = this.getFile(fileID);\n const wasPaused = file.isPaused || false;\n const isPaused = !wasPaused;\n this.setFileState(fileID, {\n isPaused\n });\n this.emit('upload-pause', file, isPaused);\n return isPaused;\n }\n pauseAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: true\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('pause-all');\n }\n resumeAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: false,\n error: null\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('resume-all');\n }\n retryAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const filesToRetry = Object.keys(updatedFiles).filter(file => {\n return updatedFiles[file].error;\n });\n filesToRetry.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: false,\n error: null\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles,\n error: null\n });\n this.emit('retry-all', Object.values(updatedFiles));\n if (filesToRetry.length === 0) {\n return Promise.resolve({\n successful: [],\n failed: []\n });\n }\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](filesToRetry, {\n forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n });\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n cancelAll() {\n this.emit('cancel-all');\n const {\n files\n } = this.getState();\n const fileIDs = Object.keys(files);\n if (fileIDs.length) {\n this.removeFiles(fileIDs);\n }\n this.setState(defaultUploadState);\n }\n retryUpload(fileID) {\n this.setFileState(fileID, {\n error: null,\n isPaused: false\n });\n this.emit('upload-retry', this.getFile(fileID));\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]([fileID], {\n forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n });\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n logout() {\n this.iteratePlugins(plugin => {\n var _provider;\n ;\n (_provider = plugin.provider) == null || _provider.logout == null || _provider.logout();\n });\n }\n calculateTotalProgress() {\n // calculate total progress, using the number of files currently uploading,\n // multiplied by 100 and the summ of individual progress of each file\n const files = this.getFiles();\n const inProgress = files.filter(file => {\n return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n });\n if (inProgress.length === 0) {\n this.emit('progress', 0);\n this.setState({\n totalProgress: 0\n });\n return;\n }\n const sizedFiles = inProgress.filter(file => file.progress.bytesTotal != null);\n const unsizedFiles = inProgress.filter(file => file.progress.bytesTotal == null);\n if (sizedFiles.length === 0) {\n const progressMax = inProgress.length * 100;\n const currentProgress = unsizedFiles.reduce((acc, file) => {\n return acc + file.progress.percentage;\n }, 0);\n const totalProgress = Math.round(currentProgress / progressMax * 100);\n this.setState({\n totalProgress\n });\n return;\n }\n let totalSize = sizedFiles.reduce((acc, file) => {\n var _file$progress$bytesT;\n return acc + ((_file$progress$bytesT = file.progress.bytesTotal) != null ? _file$progress$bytesT : 0);\n }, 0);\n const averageSize = totalSize / sizedFiles.length;\n totalSize += averageSize * unsizedFiles.length;\n let uploadedSize = 0;\n sizedFiles.forEach(file => {\n uploadedSize += file.progress.bytesUploaded;\n });\n unsizedFiles.forEach(file => {\n uploadedSize += averageSize * (file.progress.percentage || 0) / 100;\n });\n let totalProgress = totalSize === 0 ? 0 : Math.round(uploadedSize / totalSize * 100);\n\n // hot fix, because:\n // uploadedSize ended up larger than totalSize, resulting in 1325% total\n if (totalProgress > 100) {\n totalProgress = 100;\n }\n this.setState({\n totalProgress\n });\n this.emit('progress', totalProgress);\n }\n updateOnlineStatus() {\n var _window$navigator$onL;\n const online = (_window$navigator$onL = window.navigator.onLine) != null ? _window$navigator$onL : true;\n if (!online) {\n this.emit('is-offline');\n this.info(this.i18n('noInternetConnection'), 'error', 0);\n this.wasOffline = true;\n } else {\n this.emit('is-online');\n if (this.wasOffline) {\n this.emit('back-online');\n this.info(this.i18n('connectedToInternet'), 'success', 3000);\n this.wasOffline = false;\n }\n }\n }\n getID() {\n return this.opts.id;\n }\n\n /**\n * Registers a plugin with Core.\n */\n use(Plugin) {\n if (typeof Plugin !== 'function') {\n const msg = `Expected a plugin class, but got ${Plugin === null ? 'null' : typeof Plugin}.` + ' Please verify that the plugin was imported and spelled correctly.';\n throw new TypeError(msg);\n }\n\n // Instantiate\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const plugin = new Plugin(this, ...args);\n const pluginId = plugin.id;\n if (!pluginId) {\n throw new Error('Your plugin must have an id');\n }\n if (!plugin.type) {\n throw new Error('Your plugin must have a type');\n }\n const existsPluginAlready = this.getPlugin(pluginId);\n if (existsPluginAlready) {\n const msg = `Already found a plugin named '${existsPluginAlready.id}'. ` + `Tried to use: '${pluginId}'.\\n` + 'Uppy plugins must have unique `id` options.';\n throw new Error(msg);\n }\n\n // @ts-expect-error does exist\n if (Plugin.VERSION) {\n // @ts-expect-error does exist\n this.log(`Using ${pluginId} v${Plugin.VERSION}`);\n }\n if (plugin.type in _classPrivateFieldLooseBase(this, _plugins)[_plugins]) {\n _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type].push(plugin);\n } else {\n _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type] = [plugin];\n }\n plugin.install();\n this.emit('plugin-added', plugin);\n return this;\n }\n\n /**\n * Find one Plugin by name.\n */\n getPlugin(id) {\n for (const plugins of Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins])) {\n const foundPlugin = plugins.find(plugin => plugin.id === id);\n if (foundPlugin != null) return foundPlugin;\n }\n return undefined;\n }\n [Symbol.for('uppy test: getPlugins')](type) {\n return _classPrivateFieldLooseBase(this, _plugins)[_plugins][type];\n }\n\n /**\n * Iterate through all `use`d plugins.\n *\n */\n iteratePlugins(method) {\n Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins]).flat(1).forEach(method);\n }\n\n /**\n * Uninstall and remove a plugin.\n *\n * @param {object} instance The plugin instance to remove.\n */\n removePlugin(instance) {\n this.log(`Removing plugin ${instance.id}`);\n this.emit('plugin-remove', instance);\n if (instance.uninstall) {\n instance.uninstall();\n }\n const list = _classPrivateFieldLooseBase(this, _plugins)[_plugins][instance.type];\n // list.indexOf failed here, because Vue3 converted the plugin instance\n // to a Proxy object, which failed the strict comparison test:\n // obj !== objProxy\n const index = list.findIndex(item => item.id === instance.id);\n if (index !== -1) {\n list.splice(index, 1);\n }\n const state = this.getState();\n const updatedState = {\n plugins: {\n ...state.plugins,\n [instance.id]: undefined\n }\n };\n this.setState(updatedState);\n }\n\n /**\n * Uninstall all plugins and close down this Uppy instance.\n */\n destroy() {\n this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`);\n this.cancelAll();\n _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe]();\n this.iteratePlugins(plugin => {\n this.removePlugin(plugin);\n });\n if (typeof window !== 'undefined' && window.removeEventListener) {\n window.removeEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n window.removeEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n }\n }\n hideInfo() {\n const {\n info\n } = this.getState();\n this.setState({\n info: info.slice(1)\n });\n this.emit('info-hidden');\n }\n\n /**\n * Set info message in `state.info`, so that UI plugins like `Informer`\n * can display the message.\n */\n info(message, type, duration) {\n if (type === void 0) {\n type = 'info';\n }\n if (duration === void 0) {\n duration = 3000;\n }\n const isComplexMessage = typeof message === 'object';\n this.setState({\n info: [...this.getState().info, {\n type,\n message: isComplexMessage ? message.message : message,\n details: isComplexMessage ? message.details : null\n }]\n });\n setTimeout(() => this.hideInfo(), duration);\n this.emit('info-visible');\n }\n\n /**\n * Passes messages to a function, provided in `opts.logger`.\n * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n */\n log(message, type) {\n const {\n logger\n } = this.opts;\n switch (type) {\n case 'error':\n logger.error(message);\n break;\n case 'warning':\n logger.warn(message);\n break;\n default:\n logger.debug(message);\n break;\n }\n }\n registerRequestClient(id, client) {\n _classPrivateFieldLooseBase(this, _requestClientById)[_requestClientById].set(id, client);\n }\n\n /** @protected */\n getRequestClientForFile(file) {\n if (!file.remote) throw new Error(`Tried to get RequestClient for a non-remote file ${file.id}`);\n const requestClient = _classPrivateFieldLooseBase(this, _requestClientById)[_requestClientById].get(file.remote.requestClientId);\n if (requestClient == null) throw new Error(`requestClientId \"${file.remote.requestClientId}\" not registered for file \"${file.id}\"`);\n return requestClient;\n }\n\n /**\n * Restore an upload by its ID.\n */\n restore(uploadID) {\n this.log(`Core: attempting to restore upload \"${uploadID}\"`);\n if (!this.getState().currentUploads[uploadID]) {\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n return Promise.reject(new Error('Nonexistent upload'));\n }\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n [Symbol.for('uppy test: createUpload')]() {\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/47595\n return _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](...arguments);\n }\n /**\n * Add data to an upload's result object.\n */\n addResultData(uploadID, data) {\n if (!_classPrivateFieldLooseBase(this, _getUpload)[_getUpload](uploadID)) {\n this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n return;\n }\n const {\n currentUploads\n } = this.getState();\n const currentUpload = {\n ...currentUploads[uploadID],\n result: {\n ...currentUploads[uploadID].result,\n ...data\n }\n };\n this.setState({\n currentUploads: {\n ...currentUploads,\n [uploadID]: currentUpload\n }\n });\n }\n /**\n * Start an upload for all the files that are not currently being uploaded.\n */\n upload() {\n var _classPrivateFieldLoo;\n if (!((_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _plugins)[_plugins]['uploader']) != null && _classPrivateFieldLoo.length)) {\n this.log('No uploader type plugins are used', 'warning');\n }\n let {\n files\n } = this.getState();\n const onBeforeUploadResult = this.opts.onBeforeUpload(files);\n if (onBeforeUploadResult === false) {\n return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n }\n if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n files = onBeforeUploadResult;\n // Updating files in state, because uploader plugins receive file IDs,\n // and then fetch the actual file object from state\n this.setState({\n files\n });\n }\n return Promise.resolve().then(() => _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateMinNumberOfFiles(files)).catch(err => {\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([err]);\n throw err;\n }).then(() => {\n if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFields)[_checkRequiredMetaFields](files)) {\n throw new RestrictionError(this.i18n('missingRequiredMetaField'));\n }\n }).catch(err => {\n // Doing this in a separate catch because we already emited and logged\n // all the errors in `checkRequiredMetaFields` so we only throw a generic\n // missing fields error here.\n throw err;\n }).then(() => {\n const {\n currentUploads\n } = this.getState();\n // get a list of files that are currently assigned to uploads\n const currentlyUploadingFiles = Object.values(currentUploads).flatMap(curr => curr.fileIDs);\n const waitingFileIDs = [];\n Object.keys(files).forEach(fileID => {\n const file = this.getFile(fileID);\n // if the file hasn't started uploading and hasn't already been assigned to an upload..\n if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n waitingFileIDs.push(file.id);\n }\n });\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](waitingFileIDs);\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }).catch(err => {\n this.emit('error', err);\n this.log(err, 'error');\n throw err;\n });\n }\n}\nfunction _informAndEmit2(errors) {\n for (const error of errors) {\n if (error.isRestriction) {\n this.emit('restriction-failed', error.file, error);\n } else {\n this.emit('error', error, error.file);\n }\n this.log(error, 'warning');\n }\n const userFacingErrors = errors.filter(error => error.isUserFacing);\n\n // don't flood the user: only show the first 4 toasts\n const maxNumToShow = 4;\n const firstErrors = userFacingErrors.slice(0, maxNumToShow);\n const additionalErrors = userFacingErrors.slice(maxNumToShow);\n firstErrors.forEach(_ref2 => {\n let {\n message,\n details = ''\n } = _ref2;\n this.info({\n message,\n details\n }, 'error', this.opts.infoTimeout);\n });\n if (additionalErrors.length > 0) {\n this.info({\n message: this.i18n('additionalRestrictionsFailed', {\n count: additionalErrors.length\n })\n });\n }\n}\nfunction _checkRequiredMetaFieldsOnFile2(file) {\n const {\n missingFields,\n error\n } = _classPrivateFieldLooseBase(this, _restricter)[_restricter].getMissingRequiredMetaFields(file);\n if (missingFields.length > 0) {\n this.setFileState(file.id, {\n missingRequiredMetaFields: missingFields\n });\n this.log(error.message);\n this.emit('restriction-failed', file, error);\n return false;\n }\n return true;\n}\nfunction _checkRequiredMetaFields2(files) {\n let success = true;\n for (const file of Object.values(files)) {\n if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file)) {\n success = false;\n }\n }\n return success;\n}\nfunction _assertNewUploadAllowed2(file) {\n const {\n allowNewUpload\n } = this.getState();\n if (allowNewUpload === false) {\n const error = new RestrictionError(this.i18n('noMoreFilesAllowed'), {\n file\n });\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([error]);\n throw error;\n }\n}\nfunction _transformFile2(fileDescriptorOrFile) {\n // Uppy expects files in { name, type, size, data } format.\n // If the actual File object is passed from input[type=file] or drag-drop,\n // we normalize it to match Uppy file object\n const file = fileDescriptorOrFile instanceof File ? {\n name: fileDescriptorOrFile.name,\n type: fileDescriptorOrFile.type,\n size: fileDescriptorOrFile.size,\n data: fileDescriptorOrFile\n } : fileDescriptorOrFile;\n const fileType = getFileType(file);\n const fileName = getFileName(fileType, file);\n const fileExtension = getFileNameAndExtension(fileName).extension;\n const id = getSafeFileId(file, this.getID());\n const meta = file.meta || {};\n meta.name = fileName;\n meta.type = fileType;\n\n // `null` means the size is unknown.\n const size = Number.isFinite(file.data.size) ? file.data.size : null;\n return {\n source: file.source || '',\n id,\n name: fileName,\n extension: fileExtension || '',\n meta: {\n ...this.getState().meta,\n ...meta\n },\n type: fileType,\n data: file.data,\n progress: {\n percentage: 0,\n bytesUploaded: false,\n bytesTotal: size,\n uploadComplete: false,\n uploadStarted: null\n },\n size,\n isGhost: false,\n isRemote: file.isRemote || false,\n remote: file.remote,\n preview: file.preview\n };\n}\nfunction _startIfAutoProceed2() {\n if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n this.scheduledAutoProceed = setTimeout(() => {\n this.scheduledAutoProceed = null;\n this.upload().catch(err => {\n if (!err.isRestriction) {\n this.log(err.stack || err.message || err);\n }\n });\n }, 4);\n }\n}\nfunction _checkAndUpdateFileState2(filesToAdd) {\n const {\n files: existingFiles\n } = this.getState();\n\n // create a copy of the files object only once\n const nextFilesState = {\n ...existingFiles\n };\n const validFilesToAdd = [];\n const errors = [];\n for (const fileToAdd of filesToAdd) {\n try {\n var _existingFiles$newFil;\n let newFile = _classPrivateFieldLooseBase(this, _transformFile)[_transformFile](fileToAdd);\n\n // If a file has been recovered (Golden Retriever), but we were unable to recover its data (probably too large),\n // users are asked to re-select these half-recovered files and then this method will be called again.\n // In order to keep the progress, meta and everything else, we keep the existing file,\n // but we replace `data`, and we remove `isGhost`, because the file is no longer a ghost now\n const isGhost = (_existingFiles$newFil = existingFiles[newFile.id]) == null ? void 0 : _existingFiles$newFil.isGhost;\n if (isGhost) {\n const existingFileState = existingFiles[newFile.id];\n newFile = {\n ...existingFileState,\n isGhost: false,\n data: fileToAdd.data\n };\n this.log(`Replaced the blob in the restored ghost file: ${newFile.name}, ${newFile.id}`);\n }\n const onBeforeFileAddedResult = this.opts.onBeforeFileAdded(newFile, nextFilesState);\n if (!onBeforeFileAddedResult && this.checkIfFileAlreadyExists(newFile.id)) {\n var _newFile$name;\n throw new RestrictionError(this.i18n('noDuplicates', {\n fileName: (_newFile$name = newFile.name) != null ? _newFile$name : this.i18n('unnamed')\n }), {\n file: fileToAdd\n });\n }\n\n // Pass through reselected files from Golden Retriever\n if (onBeforeFileAddedResult === false && !isGhost) {\n // Don’t show UI info for this error, as it should be done by the developer\n throw new RestrictionError('Cannot add the file because onBeforeFileAdded returned false.', {\n isUserFacing: false,\n file: fileToAdd\n });\n } else if (typeof onBeforeFileAddedResult === 'object' && onBeforeFileAddedResult !== null) {\n newFile = onBeforeFileAddedResult;\n }\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateSingleFile(newFile);\n\n // need to add it to the new local state immediately, so we can use the state to validate the next files too\n nextFilesState[newFile.id] = newFile;\n validFilesToAdd.push(newFile);\n } catch (err) {\n errors.push(err);\n }\n }\n try {\n // need to run this separately because it's much more slow, so if we run it inside the for-loop it will be very slow\n // when many files are added\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateAggregateRestrictions(Object.values(existingFiles), validFilesToAdd);\n } catch (err) {\n errors.push(err);\n\n // If we have any aggregate error, don't allow adding this batch\n return {\n nextFilesState: existingFiles,\n validFilesToAdd: [],\n errors\n };\n }\n return {\n nextFilesState,\n validFilesToAdd,\n errors\n };\n}\nfunction _addListeners2() {\n // Type inference only works for inline functions so we have to type it again\n const errorHandler = (error, file, response) => {\n let errorMsg = error.message || 'Unknown error';\n if (error.details) {\n errorMsg += ` ${error.details}`;\n }\n this.setState({\n error: errorMsg\n });\n if (file != null && file.id in this.getState().files) {\n this.setFileState(file.id, {\n error: errorMsg,\n response\n });\n }\n };\n this.on('error', errorHandler);\n this.on('upload-error', (file, error, response) => {\n errorHandler(error, file, response);\n if (typeof error === 'object' && error.message) {\n var _file$name;\n this.log(error.message, 'error');\n const newError = new Error(this.i18n('failedToUpload', {\n file: (_file$name = file == null ? void 0 : file.name) != null ? _file$name : ''\n })); // we may want a new custom error here\n newError.isUserFacing = true; // todo maybe don't do this with all errors?\n newError.details = error.message;\n if (error.details) {\n newError.details += ` ${error.details}`;\n }\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([newError]);\n } else {\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([error]);\n }\n });\n let uploadStalledWarningRecentlyEmitted = null;\n this.on('upload-stalled', (error, files) => {\n const {\n message\n } = error;\n const details = files.map(file => file.meta.name).join(', ');\n if (!uploadStalledWarningRecentlyEmitted) {\n this.info({\n message,\n details\n }, 'warning', this.opts.infoTimeout);\n uploadStalledWarningRecentlyEmitted = setTimeout(() => {\n uploadStalledWarningRecentlyEmitted = null;\n }, this.opts.infoTimeout);\n }\n this.log(`${message} ${details}`.trim(), 'warning');\n });\n this.on('upload', () => {\n this.setState({\n error: null\n });\n });\n const onUploadStarted = files => {\n const filesFiltered = files.filter(file => {\n const exists = file != null && this.getFile(file.id);\n if (!exists) this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return exists;\n });\n const filesState = Object.fromEntries(filesFiltered.map(file => [file.id, {\n progress: {\n uploadStarted: Date.now(),\n uploadComplete: false,\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: file.size\n }\n }]));\n this.patchFilesState(filesState);\n };\n this.on('upload-start', onUploadStarted);\n this.on('upload-progress', this.calculateProgress);\n this.on('upload-success', (file, uploadResp) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const currentProgress = this.getFile(file.id).progress;\n this.setFileState(file.id, {\n progress: {\n ...currentProgress,\n postprocess: _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].size > 0 ? {\n mode: 'indeterminate'\n } : undefined,\n uploadComplete: true,\n percentage: 100,\n bytesUploaded: currentProgress.bytesTotal\n },\n response: uploadResp,\n uploadURL: uploadResp.uploadURL,\n isPaused: false\n });\n\n // Remote providers sometimes don't tell us the file size,\n // but we can know how many bytes we uploaded once the upload is complete.\n if (file.size == null) {\n this.setFileState(file.id, {\n size: uploadResp.bytesUploaded || currentProgress.bytesTotal\n });\n }\n this.calculateTotalProgress();\n });\n this.on('preprocess-progress', (file, progress) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n this.setFileState(file.id, {\n progress: {\n ...this.getFile(file.id).progress,\n preprocess: progress\n }\n });\n });\n this.on('preprocess-complete', file => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const files = {\n ...this.getState().files\n };\n files[file.id] = {\n ...files[file.id],\n progress: {\n ...files[file.id].progress\n }\n };\n delete files[file.id].progress.preprocess;\n this.setState({\n files\n });\n });\n this.on('postprocess-progress', (file, progress) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n this.setFileState(file.id, {\n progress: {\n ...this.getState().files[file.id].progress,\n postprocess: progress\n }\n });\n });\n this.on('postprocess-complete', file => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const files = {\n ...this.getState().files\n };\n files[file.id] = {\n ...files[file.id],\n progress: {\n ...files[file.id].progress\n }\n };\n delete files[file.id].progress.postprocess;\n this.setState({\n files\n });\n });\n this.on('restored', () => {\n // Files may have changed--ensure progress is still accurate.\n this.calculateTotalProgress();\n });\n\n // @ts-expect-error should fix itself when dashboard it typed (also this doesn't belong here)\n this.on('dashboard:file-edit-complete', file => {\n if (file) {\n _classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file);\n }\n });\n\n // show informer if offline\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n window.addEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n setTimeout(_classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus], 3000);\n }\n}\nfunction _createUpload2(fileIDs, opts) {\n if (opts === void 0) {\n opts = {};\n }\n // uppy.retryAll sets this to true — when retrying we want to ignore `allowNewUpload: false`\n const {\n forceAllowNewUpload = false\n } = opts;\n const {\n allowNewUpload,\n currentUploads\n } = this.getState();\n if (!allowNewUpload && !forceAllowNewUpload) {\n throw new Error('Cannot create a new upload: already uploading.');\n }\n const uploadID = nanoid();\n this.emit('upload', uploadID, this.getFilesByIds(fileIDs));\n this.setState({\n allowNewUpload: this.opts.allowMultipleUploadBatches !== false && this.opts.allowMultipleUploads !== false,\n currentUploads: {\n ...currentUploads,\n [uploadID]: {\n fileIDs,\n step: 0,\n result: {}\n }\n }\n });\n return uploadID;\n}\nfunction _getUpload2(uploadID) {\n const {\n currentUploads\n } = this.getState();\n return currentUploads[uploadID];\n}\nfunction _removeUpload2(uploadID) {\n const currentUploads = {\n ...this.getState().currentUploads\n };\n delete currentUploads[uploadID];\n this.setState({\n currentUploads\n });\n}\nasync function _runUpload2(uploadID) {\n const getCurrentUpload = () => {\n const {\n currentUploads\n } = this.getState();\n return currentUploads[uploadID];\n };\n let currentUpload = getCurrentUpload();\n const steps = [..._classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors], ..._classPrivateFieldLooseBase(this, _uploaders)[_uploaders], ..._classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors]];\n try {\n for (let step = currentUpload.step || 0; step < steps.length; step++) {\n if (!currentUpload) {\n break;\n }\n const fn = steps[step];\n this.setState({\n currentUploads: {\n ...this.getState().currentUploads,\n [uploadID]: {\n ...currentUpload,\n step\n }\n }\n });\n const {\n fileIDs\n } = currentUpload;\n\n // TODO give this the `updatedUpload` object as its only parameter maybe?\n // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n await fn(fileIDs, uploadID);\n\n // Update currentUpload value in case it was modified asynchronously.\n currentUpload = getCurrentUpload();\n }\n } catch (err) {\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n throw err;\n }\n\n // Set result data.\n if (currentUpload) {\n // Mark postprocessing step as complete if necessary; this addresses a case where we might get\n // stuck in the postprocessing UI while the upload is fully complete.\n // If the postprocessing steps do not do any work, they may not emit postprocessing events at\n // all, and never mark the postprocessing as complete. This is fine on its own but we\n // introduced code in the @uppy/core upload-success handler to prepare postprocessing progress\n // state if any postprocessors are registered. That is to avoid a \"flash of completed state\"\n // before the postprocessing plugins can emit events.\n //\n // So, just in case an upload with postprocessing plugins *has* completed *without* emitting\n // postprocessing completion, we do it instead.\n currentUpload.fileIDs.forEach(fileID => {\n const file = this.getFile(fileID);\n if (file && file.progress.postprocess) {\n this.emit('postprocess-complete', file);\n }\n });\n const files = currentUpload.fileIDs.map(fileID => this.getFile(fileID));\n const successful = files.filter(file => !file.error);\n const failed = files.filter(file => file.error);\n this.addResultData(uploadID, {\n successful,\n failed,\n uploadID\n });\n\n // Update currentUpload value in case it was modified asynchronously.\n currentUpload = getCurrentUpload();\n }\n // Emit completion events.\n // This is in a separate function so that the `currentUploads` variable\n // always refers to the latest state. In the handler right above it refers\n // to an outdated object without the `.result` property.\n let result;\n if (currentUpload) {\n result = currentUpload.result;\n this.emit('complete', result);\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n }\n if (result == null) {\n this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n }\n return result;\n}\nUppy.VERSION = packageJson.version;\nexport default Uppy;","export default function getFileName(fileType, fileDescriptor) {\n if (fileDescriptor.name) {\n return fileDescriptor.name;\n }\n if (fileType.split('/')[0] === 'image') {\n return `${fileType.split('/')[0]}.${fileType.split('/')[1]}`;\n }\n return 'noname';\n}","class UserFacingApiError extends Error {\n constructor() {\n super(...arguments);\n this.name = 'UserFacingApiError';\n }\n}\nexport default UserFacingApiError;","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\tonFailedAttempt() {},\n\t\t\tretries: 10,\n\t\t\tshouldRetry: () => true,\n\t\t\t...options,\n\t\t};\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tdecorateErrorWithCounts(error, attemptNumber, options);\n\n\t\t\t\t\tif (!(await options.shouldRetry(error))) {\n\t\t\t\t\t\toperation.stop();\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(error);\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","class NetworkError extends Error {\n constructor(error, xhr) {\n if (xhr === void 0) {\n xhr = null;\n }\n super(`This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.`);\n this.cause = error;\n this.isNetworkError = true;\n this.request = xhr;\n }\n}\nexport default NetworkError;","export default function has(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}","import hasProperty from \"./hasProperty.js\";\nclass ErrorWithCause extends Error {\n constructor(message, options) {\n super(message);\n this.cause = options == null ? void 0 : options.cause;\n if (this.cause && hasProperty(this.cause, 'isNetworkError')) {\n this.isNetworkError = this.cause.isNetworkError;\n } else {\n this.isNetworkError = false;\n }\n }\n}\nexport default ErrorWithCause;","import throttle from 'lodash/throttle.js';\nfunction emitSocketProgress(uploader, progressData, file) {\n const {\n progress,\n bytesUploaded,\n bytesTotal\n } = progressData;\n if (progress) {\n var _file$progress$upload;\n uploader.uppy.log(`Upload progress: ${progress}`);\n uploader.uppy.emit('upload-progress', file, {\n uploadStarted: (_file$progress$upload = file.progress.uploadStarted) != null ? _file$progress$upload : 0,\n bytesUploaded,\n bytesTotal\n });\n }\n}\nexport default throttle(emitSocketProgress, 300, {\n leading: true,\n trailing: true\n});","'use strict';\n\nclass AuthError extends Error {\n constructor() {\n super('Authorization required');\n this.name = 'AuthError';\n\n // we use a property because of instanceof is unsafe:\n // https://github.com/transloadit/uppy/pull/4619#discussion_r1406225982\n this.isAuthError = true;\n }\n}\nexport default AuthError;","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport UserFacingApiError from '@uppy/utils/lib/UserFacingApiError';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport pRetry, { AbortError } from 'p-retry';\nimport fetchWithNetworkError from '@uppy/utils/lib/fetchWithNetworkError';\nimport ErrorWithCause from '@uppy/utils/lib/ErrorWithCause';\nimport emitSocketProgress from '@uppy/utils/lib/emitSocketProgress';\nimport getSocketHost from '@uppy/utils/lib/getSocketHost';\nimport AuthError from \"./AuthError.js\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.1.0\"\n};\n// Remove the trailing slash so we can always safely append /xyz.\nfunction stripSlash(url) {\n return url.replace(/\\/$/, '');\n}\nconst retryCount = 10; // set to a low number, like 2 to test manual user retries\nconst socketActivityTimeoutMs = 5 * 60 * 1000; // set to a low number like 10000 to test this\n\nexport const authErrorStatusCode = 401;\nclass HttpError extends Error {\n constructor(_ref) {\n let {\n statusCode,\n message\n } = _ref;\n super(message);\n this.name = 'HttpError';\n this.statusCode = statusCode;\n }\n}\nasync function handleJSONResponse(res) {\n if (res.status === authErrorStatusCode) {\n throw new AuthError();\n }\n if (res.ok) {\n return res.json();\n }\n let errMsg = `Failed request with status: ${res.status}. ${res.statusText}`;\n let errData;\n try {\n errData = await res.json();\n if (errData.message) errMsg = `${errMsg} message: ${errData.message}`;\n if (errData.requestId) errMsg = `${errMsg} request-Id: ${errData.requestId}`;\n } catch (cause) {\n // if the response contains invalid JSON, let's ignore the error data\n throw new Error(errMsg, {\n cause\n });\n }\n if (res.status >= 400 && res.status <= 499 && errData.message) {\n throw new UserFacingApiError(errData.message);\n }\n throw new HttpError({\n statusCode: res.status,\n message: errMsg\n });\n}\nvar _companionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"companionHeaders\");\nvar _getUrl = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUrl\");\nvar _requestSocketToken = /*#__PURE__*/_classPrivateFieldLooseKey(\"requestSocketToken\");\nvar _awaitRemoteFileUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"awaitRemoteFileUpload\");\nexport default class RequestClient {\n constructor(uppy, opts) {\n /**\n * This method will ensure a websocket for the specified file and returns a promise that resolves\n * when the file has finished downloading, or rejects if it fails.\n * It will retry if the websocket gets disconnected\n */\n Object.defineProperty(this, _awaitRemoteFileUpload, {\n value: _awaitRemoteFileUpload2\n });\n Object.defineProperty(this, _getUrl, {\n value: _getUrl2\n });\n Object.defineProperty(this, _companionHeaders, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _requestSocketToken, {\n writable: true,\n value: async _ref2 => {\n var _file$remote;\n let {\n file,\n postBody,\n signal\n } = _ref2;\n if (((_file$remote = file.remote) == null ? void 0 : _file$remote.url) == null) {\n throw new Error('Cannot connect to an undefined URL');\n }\n const res = await this.post(file.remote.url, {\n ...file.remote.body,\n ...postBody\n }, {\n signal\n });\n return res.token;\n }\n });\n this.uppy = uppy;\n this.opts = opts;\n this.onReceiveResponse = this.onReceiveResponse.bind(this);\n _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = opts.companionHeaders;\n }\n setCompanionHeaders(headers) {\n _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = headers;\n }\n [Symbol.for('uppy test: getCompanionHeaders')]() {\n return _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders];\n }\n get hostname() {\n const {\n companion\n } = this.uppy.getState();\n const host = this.opts.companionUrl;\n return stripSlash(companion && companion[host] ? companion[host] : host);\n }\n async headers(emptyBody) {\n if (emptyBody === void 0) {\n emptyBody = false;\n }\n const defaultHeaders = {\n Accept: 'application/json',\n ...(emptyBody ? undefined : {\n // Passing those headers on requests with no data forces browsers to first make a preflight request.\n 'Content-Type': 'application/json'\n })\n };\n return {\n ...defaultHeaders,\n ..._classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders]\n };\n }\n onReceiveResponse(res) {\n const {\n headers\n } = res;\n const state = this.uppy.getState();\n const companion = state.companion || {};\n const host = this.opts.companionUrl;\n\n // Store the self-identified domain name for the Companion instance we just hit.\n if (headers.has('i-am') && headers.get('i-am') !== companion[host]) {\n this.uppy.setState({\n companion: {\n ...companion,\n [host]: headers.get('i-am')\n }\n });\n }\n }\n async request(_ref3) {\n let {\n path,\n method = 'GET',\n data,\n skipPostResponse,\n signal\n } = _ref3;\n try {\n const headers = await this.headers(!data);\n const response = await fetchWithNetworkError(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n method,\n signal,\n headers,\n credentials: this.opts.companionCookiesRule || 'same-origin',\n body: data ? JSON.stringify(data) : null\n });\n if (!skipPostResponse) this.onReceiveResponse(response);\n return await handleJSONResponse(response);\n } catch (err) {\n // pass these through\n if (err.isAuthError || err.name === 'UserFacingApiError' || err.name === 'AbortError') throw err;\n throw new ErrorWithCause(`Could not ${method} ${_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path)}`, {\n cause: err\n });\n }\n }\n async get(path, options) {\n return this.request({\n ...options,\n path\n });\n }\n async post(path, data, options) {\n return this.request({\n ...options,\n path,\n method: 'POST',\n data\n });\n }\n async delete(path, data, options) {\n return this.request({\n ...options,\n path,\n method: 'DELETE',\n data\n });\n }\n\n /**\n * Remote uploading consists of two steps:\n * 1. #requestSocketToken which starts the download/upload in companion and returns a unique token for the upload.\n * Then companion will halt the upload until:\n * 2. #awaitRemoteFileUpload is called, which will open/ensure a websocket connection towards companion, with the\n * previously generated token provided. It returns a promise that will resolve/reject once the file has finished\n * uploading or is otherwise done (failed, canceled)\n */\n async uploadRemoteFile(file, reqBody, options) {\n var _this = this;\n try {\n const {\n signal,\n getQueue\n } = options || {};\n return await pRetry(async () => {\n var _this$uppy$getFile;\n // if we already have a serverToken, assume that we are resuming the existing server upload id\n const existingServerToken = (_this$uppy$getFile = this.uppy.getFile(file.id)) == null ? void 0 : _this$uppy$getFile.serverToken;\n if (existingServerToken != null) {\n this.uppy.log(`Connecting to exiting websocket ${existingServerToken}`);\n return _classPrivateFieldLooseBase(this, _awaitRemoteFileUpload)[_awaitRemoteFileUpload]({\n file,\n queue: getQueue(),\n signal\n });\n }\n const queueRequestSocketToken = getQueue().wrapPromiseFunction(async function () {\n try {\n return await _classPrivateFieldLooseBase(_this, _requestSocketToken)[_requestSocketToken](...arguments);\n } catch (outerErr) {\n // throwing AbortError will cause p-retry to stop retrying\n if (outerErr.isAuthError) throw new AbortError(outerErr);\n if (outerErr.cause == null) throw outerErr;\n const err = outerErr.cause;\n const isRetryableHttpError = () => [408, 409, 429, 418, 423].includes(err.statusCode) || err.statusCode >= 500 && err.statusCode <= 599 && ![501, 505].includes(err.statusCode);\n if (err.name === 'HttpError' && !isRetryableHttpError()) throw new AbortError(err);\n\n // p-retry will retry most other errors,\n // but it will not retry TypeError (except network error TypeErrors)\n throw err;\n }\n }, {\n priority: -1\n });\n const serverToken = await queueRequestSocketToken({\n file,\n postBody: reqBody,\n signal\n }).abortOn(signal);\n if (!this.uppy.getFile(file.id)) return undefined; // has file since been removed?\n\n this.uppy.setFileState(file.id, {\n serverToken\n });\n return _classPrivateFieldLooseBase(this, _awaitRemoteFileUpload)[_awaitRemoteFileUpload]({\n file: this.uppy.getFile(file.id),\n // re-fetching file because it might have changed in the meantime\n queue: getQueue(),\n signal\n });\n }, {\n retries: retryCount,\n signal,\n onFailedAttempt: err => this.uppy.log(`Retrying upload due to: ${err.message}`, 'warning')\n });\n } catch (err) {\n // this is a bit confusing, but note that an error with the `name` prop set to 'AbortError' (from AbortController)\n // is not the same as `p-retry` `AbortError`\n if (err.name === 'AbortError') {\n // The file upload was aborted, it’s not an error\n return undefined;\n }\n this.uppy.emit('upload-error', file, err);\n throw err;\n }\n }\n}\nfunction _getUrl2(url) {\n if (/^(https?:|)\\/\\//.test(url)) {\n return url;\n }\n return `${this.hostname}/${url}`;\n}\nasync function _awaitRemoteFileUpload2(_ref4) {\n let {\n file,\n queue,\n signal\n } = _ref4;\n let removeEventHandlers;\n const {\n capabilities\n } = this.uppy.getState();\n try {\n return await new Promise((resolve, reject) => {\n const token = file.serverToken;\n const host = getSocketHost(file.remote.companionUrl);\n let socket;\n let socketAbortController;\n let activityTimeout;\n let {\n isPaused\n } = file;\n const socketSend = (action, payload) => {\n if (socket == null || socket.readyState !== socket.OPEN) {\n var _socket;\n this.uppy.log(`Cannot send \"${action}\" to socket ${file.id} because the socket state was ${String((_socket = socket) == null ? void 0 : _socket.readyState)}`, 'warning');\n return;\n }\n socket.send(JSON.stringify({\n action,\n payload: payload != null ? payload : {}\n }));\n };\n function sendState() {\n if (!capabilities.resumableUploads) return;\n if (isPaused) socketSend('pause');else socketSend('resume');\n }\n const createWebsocket = async () => {\n if (socketAbortController) socketAbortController.abort();\n socketAbortController = new AbortController();\n const onFatalError = err => {\n var _socketAbortControlle;\n // Remove the serverToken so that a new one will be created for the retry.\n this.uppy.setFileState(file.id, {\n serverToken: null\n });\n (_socketAbortControlle = socketAbortController) == null || _socketAbortControlle.abort == null || _socketAbortControlle.abort();\n reject(err);\n };\n\n // todo instead implement the ability for users to cancel / retry *currently uploading files* in the UI\n function resetActivityTimeout() {\n clearTimeout(activityTimeout);\n if (isPaused) return;\n activityTimeout = setTimeout(() => onFatalError(new Error('Timeout waiting for message from Companion socket')), socketActivityTimeoutMs);\n }\n try {\n await queue.wrapPromiseFunction(async () => {\n const reconnectWebsocket = async () =>\n // eslint-disable-next-line promise/param-names\n new Promise((_, rejectSocket) => {\n socket = new WebSocket(`${host}/api/${token}`);\n resetActivityTimeout();\n socket.addEventListener('close', () => {\n socket = undefined;\n rejectSocket(new Error('Socket closed unexpectedly'));\n });\n socket.addEventListener('error', error => {\n var _socket2;\n this.uppy.log(`Companion socket error ${JSON.stringify(error)}, closing socket`, 'warning');\n (_socket2 = socket) == null || _socket2.close(); // will 'close' event to be emitted\n });\n socket.addEventListener('open', () => {\n sendState();\n });\n socket.addEventListener('message', e => {\n resetActivityTimeout();\n try {\n const {\n action,\n payload\n } = JSON.parse(e.data);\n switch (action) {\n case 'progress':\n {\n emitSocketProgress(this, payload, this.uppy.getFile(file.id));\n break;\n }\n case 'success':\n {\n var _payload$response, _payload$response$sta, _payload$response2, _socketAbortControlle2;\n // payload.response is sent from companion for xhr-upload (aka uploadMultipart in companion) and\n // s3 multipart (aka uploadS3Multipart)\n // but not for tus/transloadit (aka uploadTus)\n // responseText is a string which may or may not be in JSON format\n // this means that an upload destination of xhr or s3 multipart MUST respond with valid JSON\n // to companion, or the JSON.parse will crash\n const text = (_payload$response = payload.response) == null ? void 0 : _payload$response.responseText;\n this.uppy.emit('upload-success', this.uppy.getFile(file.id), {\n uploadURL: payload.url,\n status: (_payload$response$sta = (_payload$response2 = payload.response) == null ? void 0 : _payload$response2.status) != null ? _payload$response$sta : 200,\n body: text ? JSON.parse(text) : undefined\n });\n (_socketAbortControlle2 = socketAbortController) == null || _socketAbortControlle2.abort == null || _socketAbortControlle2.abort();\n resolve();\n break;\n }\n case 'error':\n {\n const {\n message\n } = payload.error;\n throw Object.assign(new Error(message), {\n cause: payload.error\n });\n }\n default:\n this.uppy.log(`Companion socket unknown action ${action}`, 'warning');\n }\n } catch (err) {\n onFatalError(err);\n }\n });\n const closeSocket = () => {\n this.uppy.log(`Closing socket ${file.id}`, 'info');\n clearTimeout(activityTimeout);\n if (socket) socket.close();\n socket = undefined;\n };\n socketAbortController.signal.addEventListener('abort', () => {\n closeSocket();\n });\n });\n await pRetry(reconnectWebsocket, {\n retries: retryCount,\n signal: socketAbortController.signal,\n onFailedAttempt: () => {\n if (socketAbortController.signal.aborted) return; // don't log in this case\n this.uppy.log(`Retrying websocket ${file.id}`, 'info');\n }\n });\n })().abortOn(socketAbortController.signal);\n } catch (err) {\n if (socketAbortController.signal.aborted) return;\n onFatalError(err);\n }\n };\n const pause = newPausedState => {\n if (!capabilities.resumableUploads) return;\n isPaused = newPausedState;\n if (socket) sendState();\n };\n const onFileRemove = targetFile => {\n var _socketAbortControlle3;\n if (!capabilities.individualCancellation) return;\n if (targetFile.id !== file.id) return;\n socketSend('cancel');\n (_socketAbortControlle3 = socketAbortController) == null || _socketAbortControlle3.abort == null || _socketAbortControlle3.abort();\n this.uppy.log(`upload ${file.id} was removed`, 'info');\n resolve();\n };\n const onCancelAll = () => {\n var _socketAbortControlle4;\n socketSend('cancel');\n (_socketAbortControlle4 = socketAbortController) == null || _socketAbortControlle4.abort == null || _socketAbortControlle4.abort();\n this.uppy.log(`upload ${file.id} was canceled`, 'info');\n resolve();\n };\n const onFilePausedChange = (targetFile, newPausedState) => {\n if ((targetFile == null ? void 0 : targetFile.id) !== file.id) return;\n pause(newPausedState);\n };\n const onPauseAll = () => pause(true);\n const onResumeAll = () => pause(false);\n this.uppy.on('file-removed', onFileRemove);\n this.uppy.on('cancel-all', onCancelAll);\n this.uppy.on('upload-pause', onFilePausedChange);\n this.uppy.on('pause-all', onPauseAll);\n this.uppy.on('resume-all', onResumeAll);\n removeEventHandlers = () => {\n this.uppy.off('file-removed', onFileRemove);\n this.uppy.off('cancel-all', onCancelAll);\n this.uppy.off('upload-pause', onFilePausedChange);\n this.uppy.off('pause-all', onPauseAll);\n this.uppy.off('resume-all', onResumeAll);\n };\n signal.addEventListener('abort', () => {\n var _socketAbortControlle5;\n (_socketAbortControlle5 = socketAbortController) == null || _socketAbortControlle5.abort();\n });\n createWebsocket();\n });\n } finally {\n // @ts-expect-error used before defined\n removeEventHandlers == null || removeEventHandlers();\n }\n}\nRequestClient.VERSION = packageJson.version;","import NetworkError from \"./NetworkError.js\";\n\n/**\n * Wrapper around window.fetch that throws a NetworkError when appropriate\n */\nexport default function fetchWithNetworkError() {\n return fetch(...arguments).catch(err => {\n if (err.name === 'AbortError') {\n throw err;\n } else {\n throw new NetworkError(err);\n }\n });\n}","export default function getSocketHost(url) {\n var _regex$exec;\n // get the host domain\n const regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/i;\n const host = (_regex$exec = regex.exec(url)) == null ? void 0 : _regex$exec[1];\n const socketProtocol = /^http:\\/\\//i.test(url) ? 'ws' : 'wss';\n return `${socketProtocol}://${host}`;\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nvar _uppy = /*#__PURE__*/_classPrivateFieldLooseKey(\"uppy\");\nvar _events = /*#__PURE__*/_classPrivateFieldLooseKey(\"events\");\n/**\n * Create a wrapper around an event emitter with a `remove` method to remove\n * all events that were added using the wrapped emitter.\n */\nexport default class EventManager {\n constructor(uppy) {\n Object.defineProperty(this, _uppy, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _events, {\n writable: true,\n value: []\n });\n _classPrivateFieldLooseBase(this, _uppy)[_uppy] = uppy;\n }\n on(event, fn) {\n _classPrivateFieldLooseBase(this, _events)[_events].push([event, fn]);\n return _classPrivateFieldLooseBase(this, _uppy)[_uppy].on(event, fn);\n }\n remove() {\n for (const [event, fn] of _classPrivateFieldLooseBase(this, _events)[_events].splice(0)) {\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].off(event, fn);\n }\n }\n onFilePause(fileID, cb) {\n this.on('upload-pause', (file, isPaused) => {\n if (fileID === (file == null ? void 0 : file.id)) {\n cb(isPaused);\n }\n });\n }\n onFileRemove(fileID, cb) {\n this.on('file-removed', file => {\n if (fileID === file.id) cb(file.id);\n });\n }\n onPause(fileID, cb) {\n this.on('upload-pause', (file, isPaused) => {\n if (fileID === (file == null ? void 0 : file.id)) {\n // const isPaused = this.#uppy.pauseResume(fileID)\n cb(isPaused);\n }\n });\n }\n onRetry(fileID, cb) {\n this.on('upload-retry', file => {\n if (fileID === (file == null ? void 0 : file.id)) {\n cb();\n }\n });\n }\n onRetryAll(fileID, cb) {\n this.on('retry-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n onPauseAll(fileID, cb) {\n this.on('pause-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n onCancelAll(fileID, eventHandler) {\n var _this = this;\n this.on('cancel-all', function () {\n if (!_classPrivateFieldLooseBase(_this, _uppy)[_uppy].getFile(fileID)) return;\n eventHandler(...arguments);\n });\n }\n onResumeAll(fileID, cb) {\n this.on('resume-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nfunction createCancelError(cause) {\n return new Error('Cancelled', {\n cause\n });\n}\nfunction abortOn(signal) {\n if (signal != null) {\n var _this$then;\n const abortPromise = () => this.abort(signal.reason);\n signal.addEventListener('abort', abortPromise, {\n once: true\n });\n const removeAbortListener = () => {\n signal.removeEventListener('abort', abortPromise);\n };\n (_this$then = this.then) == null || _this$then.call(this, removeAbortListener, removeAbortListener);\n }\n return this;\n}\nvar _activeRequests = /*#__PURE__*/_classPrivateFieldLooseKey(\"activeRequests\");\nvar _queuedHandlers = /*#__PURE__*/_classPrivateFieldLooseKey(\"queuedHandlers\");\nvar _paused = /*#__PURE__*/_classPrivateFieldLooseKey(\"paused\");\nvar _pauseTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"pauseTimer\");\nvar _downLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"downLimit\");\nvar _upperLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"upperLimit\");\nvar _rateLimitingTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"rateLimitingTimer\");\nvar _call = /*#__PURE__*/_classPrivateFieldLooseKey(\"call\");\nvar _queueNext = /*#__PURE__*/_classPrivateFieldLooseKey(\"queueNext\");\nvar _next = /*#__PURE__*/_classPrivateFieldLooseKey(\"next\");\nvar _queue = /*#__PURE__*/_classPrivateFieldLooseKey(\"queue\");\nvar _dequeue = /*#__PURE__*/_classPrivateFieldLooseKey(\"dequeue\");\nvar _resume = /*#__PURE__*/_classPrivateFieldLooseKey(\"resume\");\nvar _increaseLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"increaseLimit\");\nexport class RateLimitedQueue {\n constructor(limit) {\n Object.defineProperty(this, _dequeue, {\n value: _dequeue2\n });\n Object.defineProperty(this, _queue, {\n value: _queue2\n });\n Object.defineProperty(this, _next, {\n value: _next2\n });\n Object.defineProperty(this, _queueNext, {\n value: _queueNext2\n });\n Object.defineProperty(this, _call, {\n value: _call2\n });\n Object.defineProperty(this, _activeRequests, {\n writable: true,\n value: 0\n });\n Object.defineProperty(this, _queuedHandlers, {\n writable: true,\n value: []\n });\n Object.defineProperty(this, _paused, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _pauseTimer, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _downLimit, {\n writable: true,\n value: 1\n });\n Object.defineProperty(this, _upperLimit, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _rateLimitingTimer, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _resume, {\n writable: true,\n value: () => this.resume()\n });\n Object.defineProperty(this, _increaseLimit, {\n writable: true,\n value: () => {\n if (_classPrivateFieldLooseBase(this, _paused)[_paused]) {\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 0);\n return;\n }\n _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = this.limit;\n this.limit = Math.ceil((_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] + _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]) / 2);\n for (let i = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]; i <= this.limit; i++) {\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n if (_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] - _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] > 3) {\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 2000);\n } else {\n _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = Math.floor(_classPrivateFieldLooseBase(this, _downLimit)[_downLimit] / 2);\n }\n }\n });\n if (typeof limit !== 'number' || limit === 0) {\n this.limit = Infinity;\n } else {\n this.limit = limit;\n }\n }\n run(fn, queueOptions) {\n if (!_classPrivateFieldLooseBase(this, _paused)[_paused] && _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] < this.limit) {\n return _classPrivateFieldLooseBase(this, _call)[_call](fn);\n }\n return _classPrivateFieldLooseBase(this, _queue)[_queue](fn, queueOptions);\n }\n wrapSyncFunction(fn, queueOptions) {\n var _this = this;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const queuedRequest = _this.run(() => {\n fn(...args);\n queueMicrotask(() => queuedRequest.done());\n return () => {};\n }, queueOptions);\n return {\n abortOn,\n abort() {\n queuedRequest.abort();\n }\n };\n };\n }\n wrapPromiseFunction(fn, queueOptions) {\n var _this2 = this;\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let queuedRequest;\n const outerPromise = new Promise((resolve, reject) => {\n queuedRequest = _this2.run(() => {\n let cancelError;\n let innerPromise;\n try {\n innerPromise = Promise.resolve(fn(...args));\n } catch (err) {\n innerPromise = Promise.reject(err);\n }\n innerPromise.then(result => {\n if (cancelError) {\n reject(cancelError);\n } else {\n queuedRequest.done();\n resolve(result);\n }\n }, err => {\n if (cancelError) {\n reject(cancelError);\n } else {\n queuedRequest.done();\n reject(err);\n }\n });\n return cause => {\n cancelError = createCancelError(cause);\n };\n }, queueOptions);\n });\n outerPromise.abort = cause => {\n queuedRequest.abort(cause);\n };\n outerPromise.abortOn = abortOn;\n return outerPromise;\n };\n }\n resume() {\n _classPrivateFieldLooseBase(this, _paused)[_paused] = false;\n clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n for (let i = 0; i < this.limit; i++) {\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n }\n /**\n * Freezes the queue for a while or indefinitely.\n *\n * @param {number | null } [duration] Duration for the pause to happen, in milliseconds.\n * If omitted, the queue won't resume automatically.\n */\n pause(duration) {\n if (duration === void 0) {\n duration = null;\n }\n _classPrivateFieldLooseBase(this, _paused)[_paused] = true;\n clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n if (duration != null) {\n _classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer] = setTimeout(_classPrivateFieldLooseBase(this, _resume)[_resume], duration);\n }\n }\n\n /**\n * Pauses the queue for a duration, and lower the limit of concurrent requests\n * when the queue resumes. When the queue resumes, it tries to progressively\n * increase the limit in `this.#increaseLimit` until another call is made to\n * `this.rateLimit`.\n * Call this function when using the RateLimitedQueue for network requests and\n * the remote server responds with 429 HTTP code.\n *\n * @param {number} duration in milliseconds.\n */\n rateLimit(duration) {\n clearTimeout(_classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer]);\n this.pause(duration);\n if (this.limit > 1 && Number.isFinite(this.limit)) {\n _classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] = this.limit - 1;\n this.limit = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit];\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], duration);\n }\n }\n get isPaused() {\n return _classPrivateFieldLooseBase(this, _paused)[_paused];\n }\n}\nfunction _call2(fn) {\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] += 1;\n let done = false;\n let cancelActive;\n try {\n cancelActive = fn();\n } catch (err) {\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n throw err;\n }\n return {\n abort: cause => {\n if (done) return;\n done = true;\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n cancelActive == null || cancelActive(cause);\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n },\n done: () => {\n if (done) return;\n done = true;\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n };\n}\nfunction _queueNext2() {\n // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n // one by one without continuously _advancing_ it (and starting new tasks before immediately\n // aborting them)\n queueMicrotask(() => _classPrivateFieldLooseBase(this, _next)[_next]());\n}\nfunction _next2() {\n if (_classPrivateFieldLooseBase(this, _paused)[_paused] || _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] >= this.limit) {\n return;\n }\n if (_classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].length === 0) {\n return;\n }\n\n // Dispatch the next request, and update the abort/done handlers\n // so that cancelling it does the Right Thing (and doesn't just try\n // to dequeue an already-running request).\n const next = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].shift();\n if (next == null) {\n throw new Error('Invariant violation: next is null');\n }\n const handler = _classPrivateFieldLooseBase(this, _call)[_call](next.fn);\n next.abort = handler.abort;\n next.done = handler.done;\n}\nfunction _queue2(fn, options) {\n const handler = {\n fn,\n priority: (options == null ? void 0 : options.priority) || 0,\n abort: () => {\n _classPrivateFieldLooseBase(this, _dequeue)[_dequeue](handler);\n },\n done: () => {\n throw new Error('Cannot mark a queued request as done: this indicates a bug');\n }\n };\n const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].findIndex(other => {\n return handler.priority > other.priority;\n });\n if (index === -1) {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].push(handler);\n } else {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 0, handler);\n }\n return handler;\n}\nfunction _dequeue2(handler) {\n const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].indexOf(handler);\n if (index !== -1) {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 1);\n }\n}\nexport const internalRateLimitedQueue = Symbol('__queue');","export function filterNonFailedFiles(files) {\n const hasError = file => 'error' in file && !!file.error;\n return files.filter(file => !hasError(file));\n}\n\n// Don't double-emit upload-started for Golden Retriever-restored files that were already started\nexport function filterFilesToEmitUploadStarted(files) {\n return files.filter(file => {\n var _file$progress;\n return !((_file$progress = file.progress) != null && _file$progress.uploadStarted) || !file.isRestored;\n });\n}","import hasOwnProperty from \"./hasProperty.js\";\n/**\n * Little AbortController proxy module so we can swap out the implementation easily later.\n */\nexport const {\n AbortController\n} = globalThis;\nexport const {\n AbortSignal\n} = globalThis;\nexport const createAbortError = function (message, options) {\n if (message === void 0) {\n message = 'Aborted';\n }\n const err = new DOMException(message, 'AbortError');\n if (options != null && hasOwnProperty(options, 'cause')) {\n Object.defineProperty(err, 'cause', {\n // @ts-expect-error TS is drunk\n __proto__: null,\n configurable: true,\n writable: true,\n value: options.cause\n });\n }\n return err;\n};","export default function getAllowedMetaFields(fields, meta) {\n if (fields === true) {\n return Object.keys(meta);\n }\n if (Array.isArray(fields)) {\n return fields;\n }\n return [];\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport { AbortController } from '@uppy/utils/lib/AbortController';\nconst MB = 1024 * 1024;\nconst defaultOptions = {\n getChunkSize(file) {\n return Math.ceil(file.size / 10000);\n },\n onProgress() {},\n onPartComplete() {},\n onSuccess() {},\n onError(err) {\n throw err;\n }\n};\nfunction ensureInt(value) {\n if (typeof value === 'string') {\n // @ts-expect-error TS is not able to recognize it's fine.\n return parseInt(value, 10);\n }\n if (typeof value === 'number') {\n // @ts-expect-error TS is not able to recognize it's fine.\n return value;\n }\n throw new TypeError('Expected a number');\n}\nexport const pausingUploadReason = Symbol('pausing upload, not an actual error');\n\n/**\n * A MultipartUploader instance is used per file upload to determine whether a\n * upload should be done as multipart or as a regular S3 upload\n * (based on the user-provided `shouldUseMultipart` option value) and to manage\n * the chunk splitting.\n */\nvar _abortController = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortController\");\nvar _chunks = /*#__PURE__*/_classPrivateFieldLooseKey(\"chunks\");\nvar _chunkState = /*#__PURE__*/_classPrivateFieldLooseKey(\"chunkState\");\nvar _data = /*#__PURE__*/_classPrivateFieldLooseKey(\"data\");\nvar _file = /*#__PURE__*/_classPrivateFieldLooseKey(\"file\");\nvar _uploadHasStarted = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadHasStarted\");\nvar _onError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onError\");\nvar _onSuccess = /*#__PURE__*/_classPrivateFieldLooseKey(\"onSuccess\");\nvar _shouldUseMultipart = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldUseMultipart\");\nvar _isRestoring = /*#__PURE__*/_classPrivateFieldLooseKey(\"isRestoring\");\nvar _onReject = /*#__PURE__*/_classPrivateFieldLooseKey(\"onReject\");\nvar _maxMultipartParts = /*#__PURE__*/_classPrivateFieldLooseKey(\"maxMultipartParts\");\nvar _minPartSize = /*#__PURE__*/_classPrivateFieldLooseKey(\"minPartSize\");\nvar _initChunks = /*#__PURE__*/_classPrivateFieldLooseKey(\"initChunks\");\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\nvar _resumeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"resumeUpload\");\nvar _onPartProgress = /*#__PURE__*/_classPrivateFieldLooseKey(\"onPartProgress\");\nvar _onPartComplete = /*#__PURE__*/_classPrivateFieldLooseKey(\"onPartComplete\");\nvar _abortUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortUpload\");\nclass MultipartUploader {\n constructor(data, options) {\n var _this$options, _this$options$getChun;\n Object.defineProperty(this, _abortUpload, {\n value: _abortUpload2\n });\n Object.defineProperty(this, _resumeUpload, {\n value: _resumeUpload2\n });\n Object.defineProperty(this, _createUpload, {\n value: _createUpload2\n });\n // initChunks checks the user preference for using multipart uploads (opts.shouldUseMultipart)\n // and calculates the optimal part size. When using multipart part uploads every part except for the last has\n // to be at least 5 MB and there can be no more than 10K parts.\n // This means we sometimes need to change the preferred part size from the user in order to meet these requirements.\n Object.defineProperty(this, _initChunks, {\n value: _initChunks2\n });\n Object.defineProperty(this, _abortController, {\n writable: true,\n value: new AbortController()\n });\n Object.defineProperty(this, _chunks, {\n writable: true,\n value: []\n });\n Object.defineProperty(this, _chunkState, {\n writable: true,\n value: []\n });\n /**\n * The (un-chunked) data to upload.\n */\n Object.defineProperty(this, _data, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _file, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _uploadHasStarted, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _onError, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _onSuccess, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _shouldUseMultipart, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _isRestoring, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _onReject, {\n writable: true,\n value: err => (err == null ? void 0 : err.cause) === pausingUploadReason ? null : _classPrivateFieldLooseBase(this, _onError)[_onError](err)\n });\n Object.defineProperty(this, _maxMultipartParts, {\n writable: true,\n value: 10000\n });\n Object.defineProperty(this, _minPartSize, {\n writable: true,\n value: 5 * MB\n });\n Object.defineProperty(this, _onPartProgress, {\n writable: true,\n value: index => ev => {\n if (!ev.lengthComputable) return;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].uploaded = ensureInt(ev.loaded);\n const totalUploaded = _classPrivateFieldLooseBase(this, _chunkState)[_chunkState].reduce((n, c) => n + c.uploaded, 0);\n this.options.onProgress(totalUploaded, _classPrivateFieldLooseBase(this, _data)[_data].size);\n }\n });\n Object.defineProperty(this, _onPartComplete, {\n writable: true,\n value: index => etag => {\n // This avoids the net::ERR_OUT_OF_MEMORY in Chromium Browsers.\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][index] = null;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].etag = etag;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].done = true;\n const part = {\n PartNumber: index + 1,\n ETag: etag\n };\n this.options.onPartComplete(part);\n }\n });\n this.options = {\n ...defaultOptions,\n ...options\n };\n // Use default `getChunkSize` if it was null or something\n (_this$options$getChun = (_this$options = this.options).getChunkSize) != null ? _this$options$getChun : _this$options.getChunkSize = defaultOptions.getChunkSize;\n _classPrivateFieldLooseBase(this, _data)[_data] = data;\n _classPrivateFieldLooseBase(this, _file)[_file] = options.file;\n _classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess] = this.options.onSuccess;\n _classPrivateFieldLooseBase(this, _onError)[_onError] = this.options.onError;\n _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart] = this.options.shouldUseMultipart;\n\n // When we are restoring an upload, we already have an UploadId and a Key. Otherwise\n // we need to call `createMultipartUpload` to get an `uploadId` and a `key`.\n // Non-multipart uploads are not restorable.\n _classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring] = options.uploadId && options.key;\n _classPrivateFieldLooseBase(this, _initChunks)[_initChunks]();\n }\n start() {\n if (_classPrivateFieldLooseBase(this, _uploadHasStarted)[_uploadHasStarted]) {\n if (!_classPrivateFieldLooseBase(this, _abortController)[_abortController].signal.aborted) _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort(pausingUploadReason);\n _classPrivateFieldLooseBase(this, _abortController)[_abortController] = new AbortController();\n _classPrivateFieldLooseBase(this, _resumeUpload)[_resumeUpload]();\n } else if (_classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring]) {\n this.options.companionComm.restoreUploadFile(_classPrivateFieldLooseBase(this, _file)[_file], {\n uploadId: this.options.uploadId,\n key: this.options.key\n });\n _classPrivateFieldLooseBase(this, _resumeUpload)[_resumeUpload]();\n } else {\n _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]();\n }\n }\n pause() {\n _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort(pausingUploadReason);\n // Swap it out for a new controller, because this instance may be resumed later.\n _classPrivateFieldLooseBase(this, _abortController)[_abortController] = new AbortController();\n }\n abort(opts) {\n if (opts != null && opts.really) _classPrivateFieldLooseBase(this, _abortUpload)[_abortUpload]();else this.pause();\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n [Symbol.for('uppy test: getChunkState')]() {\n return _classPrivateFieldLooseBase(this, _chunkState)[_chunkState];\n }\n}\nfunction _initChunks2() {\n const fileSize = _classPrivateFieldLooseBase(this, _data)[_data].size;\n const shouldUseMultipart = typeof _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart] === 'function' ? _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart](_classPrivateFieldLooseBase(this, _file)[_file]) : Boolean(_classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart]);\n if (shouldUseMultipart && fileSize > _classPrivateFieldLooseBase(this, _minPartSize)[_minPartSize]) {\n // At least 5MB per request:\n let chunkSize = Math.max(this.options.getChunkSize(_classPrivateFieldLooseBase(this, _data)[_data]), // Math.max can take undefined but TS does not think so\n _classPrivateFieldLooseBase(this, _minPartSize)[_minPartSize]);\n let arraySize = Math.floor(fileSize / chunkSize);\n\n // At most 10k requests per file:\n if (arraySize > _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts]) {\n arraySize = _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts];\n chunkSize = fileSize / _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts];\n }\n _classPrivateFieldLooseBase(this, _chunks)[_chunks] = Array(arraySize);\n for (let offset = 0, j = 0; offset < fileSize; offset += chunkSize, j++) {\n const end = Math.min(fileSize, offset + chunkSize);\n\n // Defer data fetching/slicing until we actually need the data, because it's slow if we have a lot of files\n const getData = () => {\n const i2 = offset;\n return _classPrivateFieldLooseBase(this, _data)[_data].slice(i2, end);\n };\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j] = {\n getData,\n onProgress: _classPrivateFieldLooseBase(this, _onPartProgress)[_onPartProgress](j),\n onComplete: _classPrivateFieldLooseBase(this, _onPartComplete)[_onPartComplete](j),\n shouldUseMultipart\n };\n if (_classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring]) {\n const size = offset + chunkSize > fileSize ? fileSize - offset : chunkSize;\n // setAsUploaded is called by listPart, to keep up-to-date the\n // quantity of data that is left to actually upload.\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j].setAsUploaded = () => {\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j] = null;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][j].uploaded = size;\n };\n }\n }\n } else {\n _classPrivateFieldLooseBase(this, _chunks)[_chunks] = [{\n getData: () => _classPrivateFieldLooseBase(this, _data)[_data],\n onProgress: _classPrivateFieldLooseBase(this, _onPartProgress)[_onPartProgress](0),\n onComplete: _classPrivateFieldLooseBase(this, _onPartComplete)[_onPartComplete](0),\n shouldUseMultipart\n }];\n }\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState] = _classPrivateFieldLooseBase(this, _chunks)[_chunks].map(() => ({\n uploaded: 0\n }));\n}\nfunction _createUpload2() {\n this.options.companionComm.uploadFile(_classPrivateFieldLooseBase(this, _file)[_file], _classPrivateFieldLooseBase(this, _chunks)[_chunks], _classPrivateFieldLooseBase(this, _abortController)[_abortController].signal).then(_classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess], _classPrivateFieldLooseBase(this, _onReject)[_onReject]);\n _classPrivateFieldLooseBase(this, _uploadHasStarted)[_uploadHasStarted] = true;\n}\nfunction _resumeUpload2() {\n this.options.companionComm.resumeUploadFile(_classPrivateFieldLooseBase(this, _file)[_file], _classPrivateFieldLooseBase(this, _chunks)[_chunks], _classPrivateFieldLooseBase(this, _abortController)[_abortController].signal).then(_classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess], _classPrivateFieldLooseBase(this, _onReject)[_onReject]);\n}\nfunction _abortUpload2() {\n _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort();\n this.options.companionComm.abortFileUpload(_classPrivateFieldLooseBase(this, _file)[_file]).catch(err => this.options.log(err));\n}\nexport default MultipartUploader;","import { createAbortError } from '@uppy/utils/lib/AbortController';\nexport function throwIfAborted(signal) {\n if (signal != null && signal.aborted) {\n throw createAbortError('The operation was aborted', {\n cause: signal.reason\n });\n }\n}","/**\n * Create a canonical request by concatenating the following strings, separated\n * by newline characters. This helps ensure that the signature that you\n * calculate and the signature that AWS calculates can match.\n *\n * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#create-canonical-request\n *\n * @param param0\n * @param param0.method – The HTTP method.\n * @param param0.CanonicalUri – The URI-encoded version of the absolute\n * path component URL (everything between the host and the question mark\n * character (?) that starts the query string parameters). If the absolute path\n * is empty, use a forward slash character (/).\n * @param param0.CanonicalQueryString – The URL-encoded query string\n * parameters, separated by ampersands (&). Percent-encode reserved characters,\n * including the space character. Encode names and values separately. If there\n * are empty parameters, append the equals sign to the parameter name before\n * encoding. After encoding, sort the parameters alphabetically by key name. If\n * there is no query string, use an empty string (\"\").\n * @param param0.SignedHeaders – The request headers,\n * that will be signed, and their values, separated by newline characters.\n * For the values, trim any leading or trailing spaces, convert sequential\n * spaces to a single space, and separate the values for a multi-value header\n * using commas. You must include the host header (HTTP/1.1), and any x-amz-*\n * headers in the signature. You can optionally include other standard headers\n * in the signature, such as content-type.\n * @param param0.HashedPayload – A string created using the payload in\n * the body of the HTTP request as input to a hash function. This string uses\n * lowercase hexadecimal characters. If the payload is empty, use an empty\n * string as the input to the hash function.\n */\nfunction createCanonicalRequest(_ref) {\n let {\n method = 'PUT',\n CanonicalUri = '/',\n CanonicalQueryString = '',\n SignedHeaders,\n HashedPayload\n } = _ref;\n const headerKeys = Object.keys(SignedHeaders).map(k => k.toLowerCase()).sort();\n return [method, CanonicalUri, CanonicalQueryString, ...headerKeys.map(k => `${k}:${SignedHeaders[k]}`), '', headerKeys.join(';'), HashedPayload].join('\\n');\n}\nconst ec = new TextEncoder();\nconst algorithm = {\n name: 'HMAC',\n hash: 'SHA-256'\n};\nasync function digest(data) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.digest(algorithm.hash, ec.encode(data));\n}\nasync function generateHmacKey(secret) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.importKey('raw', typeof secret === 'string' ? ec.encode(secret) : secret, algorithm, false, ['sign']);\n}\nfunction arrayBufferToHexString(arrayBuffer) {\n const byteArray = new Uint8Array(arrayBuffer);\n let hexString = '';\n for (let i = 0; i < byteArray.length; i++) {\n hexString += byteArray[i].toString(16).padStart(2, '0');\n }\n return hexString;\n}\nasync function hash(key, data) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.sign(algorithm, await generateHmacKey(key), ec.encode(data));\n}\n\n/**\n * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html\n */\nexport default async function createSignedURL(_ref2) {\n let {\n accountKey,\n accountSecret,\n sessionToken,\n bucketName,\n Key,\n Region,\n expires,\n uploadId,\n partNumber\n } = _ref2;\n const Service = 's3';\n const host = `${Service}.${Region}.amazonaws.com`;\n /**\n * List of char out of `encodeURI()` is taken from ECMAScript spec.\n * Note that the `/` character is purposefully not included in list below.\n *\n * @see https://tc39.es/ecma262/#sec-encodeuri-uri\n */\n const CanonicalUri = `/${bucketName}/${encodeURI(Key).replace(/[;?:@&=+$,#!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`)}`;\n const payload = 'UNSIGNED-PAYLOAD';\n const requestDateTime = new Date().toISOString().replace(/[-:]|\\.\\d+/g, ''); // YYYYMMDDTHHMMSSZ\n const date = requestDateTime.slice(0, 8); // YYYYMMDD\n const scope = `${date}/${Region}/${Service}/aws4_request`;\n const url = new URL(`https://${host}${CanonicalUri}`);\n // N.B.: URL search params needs to be added in the ASCII order\n url.searchParams.set('X-Amz-Algorithm', 'AWS4-HMAC-SHA256');\n url.searchParams.set('X-Amz-Content-Sha256', payload);\n url.searchParams.set('X-Amz-Credential', `${accountKey}/${scope}`);\n url.searchParams.set('X-Amz-Date', requestDateTime);\n url.searchParams.set('X-Amz-Expires', expires);\n // We are signing on the client, so we expect there's going to be a session token:\n url.searchParams.set('X-Amz-Security-Token', sessionToken);\n url.searchParams.set('X-Amz-SignedHeaders', 'host');\n // Those two are present only for Multipart Uploads:\n if (partNumber) url.searchParams.set('partNumber', partNumber);\n if (uploadId) url.searchParams.set('uploadId', uploadId);\n url.searchParams.set('x-id', partNumber && uploadId ? 'UploadPart' : 'PutObject');\n\n // Step 1: Create a canonical request\n const canonical = createCanonicalRequest({\n CanonicalUri,\n CanonicalQueryString: url.search.slice(1),\n SignedHeaders: {\n host\n },\n HashedPayload: payload\n });\n\n // Step 2: Create a hash of the canonical request\n const hashedCanonical = arrayBufferToHexString(await digest(canonical));\n\n // Step 3: Create a string to sign\n const stringToSign = [`AWS4-HMAC-SHA256`,\n // The algorithm used to create the hash of the canonical request.\n requestDateTime,\n // The date and time used in the credential scope.\n scope,\n // The credential scope. This restricts the resulting signature to the specified Region and service.\n hashedCanonical // The hash of the canonical request.\n ].join('\\n');\n\n // Step 4: Calculate the signature\n const kDate = await hash(`AWS4${accountSecret}`, date);\n const kRegion = await hash(kDate, Region);\n const kService = await hash(kRegion, Service);\n const kSigning = await hash(kService, 'aws4_request');\n const signature = arrayBufferToHexString(await hash(kSigning, stringToSign));\n\n // Step 5: Add the signature to the request\n url.searchParams.set('X-Amz-Signature', signature);\n return url;\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport { pausingUploadReason } from \"./MultipartUploader.js\";\nimport { throwIfAborted } from \"./utils.js\";\nfunction removeMetadataFromURL(urlString) {\n const urlObject = new URL(urlString);\n urlObject.search = '';\n urlObject.hash = '';\n return urlObject.href;\n}\nvar _abortMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortMultipartUpload\");\nvar _cache = /*#__PURE__*/_classPrivateFieldLooseKey(\"cache\");\nvar _createMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createMultipartUpload\");\nvar _fetchSignature = /*#__PURE__*/_classPrivateFieldLooseKey(\"fetchSignature\");\nvar _getUploadParameters = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUploadParameters\");\nvar _listParts = /*#__PURE__*/_classPrivateFieldLooseKey(\"listParts\");\nvar _previousRetryDelay = /*#__PURE__*/_classPrivateFieldLooseKey(\"previousRetryDelay\");\nvar _requests = /*#__PURE__*/_classPrivateFieldLooseKey(\"requests\");\nvar _retryDelays = /*#__PURE__*/_classPrivateFieldLooseKey(\"retryDelays\");\nvar _sendCompletionRequest = /*#__PURE__*/_classPrivateFieldLooseKey(\"sendCompletionRequest\");\nvar _setS3MultipartState = /*#__PURE__*/_classPrivateFieldLooseKey(\"setS3MultipartState\");\nvar _uploadPartBytes = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadPartBytes\");\nvar _getFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"getFile\");\nvar _shouldRetry = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldRetry\");\nvar _nonMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"nonMultipartUpload\");\nexport class HTTPCommunicationQueue {\n constructor(_requests2, options, setS3MultipartState, getFile) {\n Object.defineProperty(this, _nonMultipartUpload, {\n value: _nonMultipartUpload2\n });\n Object.defineProperty(this, _shouldRetry, {\n value: _shouldRetry2\n });\n Object.defineProperty(this, _abortMultipartUpload, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _cache, {\n writable: true,\n value: new WeakMap()\n });\n Object.defineProperty(this, _createMultipartUpload, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _fetchSignature, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _getUploadParameters, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _listParts, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _previousRetryDelay, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _requests, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _retryDelays, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _sendCompletionRequest, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _setS3MultipartState, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _uploadPartBytes, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _getFile, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldLooseBase(this, _requests)[_requests] = _requests2;\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState] = setS3MultipartState;\n _classPrivateFieldLooseBase(this, _getFile)[_getFile] = getFile;\n this.setOptions(options);\n }\n setOptions(options) {\n const requests = _classPrivateFieldLooseBase(this, _requests)[_requests];\n if ('abortMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _abortMultipartUpload)[_abortMultipartUpload] = requests.wrapPromiseFunction(options.abortMultipartUpload, {\n priority: 1\n });\n }\n if ('createMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _createMultipartUpload)[_createMultipartUpload] = requests.wrapPromiseFunction(options.createMultipartUpload, {\n priority: -1\n });\n }\n if ('signPart' in options) {\n _classPrivateFieldLooseBase(this, _fetchSignature)[_fetchSignature] = requests.wrapPromiseFunction(options.signPart);\n }\n if ('listParts' in options) {\n _classPrivateFieldLooseBase(this, _listParts)[_listParts] = requests.wrapPromiseFunction(options.listParts);\n }\n if ('completeMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest] = requests.wrapPromiseFunction(options.completeMultipartUpload, {\n priority: 1\n });\n }\n if ('retryDelays' in options) {\n var _options$retryDelays;\n _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays] = (_options$retryDelays = options.retryDelays) != null ? _options$retryDelays : [];\n }\n if ('uploadPartBytes' in options) {\n _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes] = requests.wrapPromiseFunction(options.uploadPartBytes, {\n priority: Infinity\n });\n }\n if ('getUploadParameters' in options) {\n _classPrivateFieldLooseBase(this, _getUploadParameters)[_getUploadParameters] = requests.wrapPromiseFunction(options.getUploadParameters);\n }\n }\n async getUploadId(file, signal) {\n let cachedResult;\n // As the cache is updated asynchronously, there could be a race condition\n // where we just miss a new result so we loop here until we get nothing back,\n // at which point it's out turn to create a new cache entry.\n // eslint-disable-next-line no-cond-assign\n while ((cachedResult = _classPrivateFieldLooseBase(this, _cache)[_cache].get(file.data)) != null) {\n try {\n return await cachedResult;\n } catch {\n // In case of failure, we want to ignore the cached error.\n // At this point, either there's a new cached value, or we'll exit the loop a create a new one.\n }\n }\n const promise = _classPrivateFieldLooseBase(this, _createMultipartUpload)[_createMultipartUpload](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), signal);\n const abortPromise = () => {\n promise.abort(signal.reason);\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n };\n signal.addEventListener('abort', abortPromise, {\n once: true\n });\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, promise);\n promise.then(async result => {\n signal.removeEventListener('abort', abortPromise);\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState](file, result);\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, result);\n }, () => {\n signal.removeEventListener('abort', abortPromise);\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n });\n return promise;\n }\n async abortFileUpload(file) {\n const result = _classPrivateFieldLooseBase(this, _cache)[_cache].get(file.data);\n if (result == null) {\n // If the createMultipartUpload request never was made, we don't\n // need to send the abortMultipartUpload request.\n return;\n }\n // Remove the cache entry right away for follow-up requests do not try to\n // use the soon-to-be aborted cached values.\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState](file, Object.create(null));\n let awaitedResult;\n try {\n awaitedResult = await result;\n } catch {\n // If the cached result rejects, there's nothing to abort.\n return;\n }\n await _classPrivateFieldLooseBase(this, _abortMultipartUpload)[_abortMultipartUpload](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), awaitedResult);\n }\n async uploadFile(file, chunks, signal) {\n throwIfAborted(signal);\n if (chunks.length === 1 && !chunks[0].shouldUseMultipart) {\n return _classPrivateFieldLooseBase(this, _nonMultipartUpload)[_nonMultipartUpload](file, chunks[0], signal);\n }\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n throwIfAborted(signal);\n try {\n const parts = await Promise.all(chunks.map((chunk, i) => this.uploadChunk(file, i + 1, chunk, signal)));\n throwIfAborted(signal);\n return await _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n key,\n uploadId,\n parts,\n signal\n }, signal).abortOn(signal);\n } catch (err) {\n if ((err == null ? void 0 : err.cause) !== pausingUploadReason && (err == null ? void 0 : err.name) !== 'AbortError') {\n // We purposefully don't wait for the promise and ignore its status,\n // because we want the error `err` to bubble up ASAP to report it to the\n // user. A failure to abort is not that big of a deal anyway.\n this.abortFileUpload(file);\n }\n throw err;\n }\n }\n restoreUploadFile(file, uploadIdAndKey) {\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, uploadIdAndKey);\n }\n async resumeUploadFile(file, chunks, signal) {\n throwIfAborted(signal);\n if (chunks.length === 1 && chunks[0] != null && !chunks[0].shouldUseMultipart) {\n return _classPrivateFieldLooseBase(this, _nonMultipartUpload)[_nonMultipartUpload](file, chunks[0], signal);\n }\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n throwIfAborted(signal);\n const alreadyUploadedParts = await _classPrivateFieldLooseBase(this, _listParts)[_listParts](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n uploadId,\n key,\n signal\n }, signal).abortOn(signal);\n throwIfAborted(signal);\n const parts = await Promise.all(chunks.map((chunk, i) => {\n const partNumber = i + 1;\n const alreadyUploadedInfo = alreadyUploadedParts.find(_ref => {\n let {\n PartNumber\n } = _ref;\n return PartNumber === partNumber;\n });\n if (alreadyUploadedInfo == null) {\n return this.uploadChunk(file, partNumber, chunk, signal);\n }\n // Already uploaded chunks are set to null. If we are restoring the upload, we need to mark it as already uploaded.\n chunk == null || chunk.setAsUploaded == null || chunk.setAsUploaded();\n return {\n PartNumber: partNumber,\n ETag: alreadyUploadedInfo.ETag\n };\n }));\n throwIfAborted(signal);\n return _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n key,\n uploadId,\n parts,\n signal\n }, signal).abortOn(signal);\n }\n async uploadChunk(file, partNumber, chunk, signal) {\n throwIfAborted(signal);\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n const signatureRetryIterator = _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays].values();\n const chunkRetryIterator = _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays].values();\n const shouldRetrySignature = () => {\n const next = signatureRetryIterator.next();\n if (next == null || next.done) {\n return null;\n }\n return next.value;\n };\n for (;;) {\n throwIfAborted(signal);\n const chunkData = chunk.getData();\n const {\n onProgress,\n onComplete\n } = chunk;\n let signature;\n try {\n signature = await _classPrivateFieldLooseBase(this, _fetchSignature)[_fetchSignature](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n uploadId,\n key,\n partNumber,\n body: chunkData,\n signal\n }).abortOn(signal);\n } catch (err) {\n const timeout = shouldRetrySignature();\n if (timeout == null || signal.aborted) {\n throw err;\n }\n await new Promise(resolve => setTimeout(resolve, timeout));\n // eslint-disable-next-line no-continue\n continue;\n }\n throwIfAborted(signal);\n try {\n return {\n PartNumber: partNumber,\n ...(await _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes]({\n signature,\n body: chunkData,\n size: chunkData.size,\n onProgress,\n onComplete,\n signal\n }).abortOn(signal))\n };\n } catch (err) {\n if (!(await _classPrivateFieldLooseBase(this, _shouldRetry)[_shouldRetry](err, chunkRetryIterator))) throw err;\n }\n }\n }\n}\nasync function _shouldRetry2(err, retryDelayIterator) {\n var _err$source;\n const requests = _classPrivateFieldLooseBase(this, _requests)[_requests];\n const status = err == null || (_err$source = err.source) == null ? void 0 : _err$source.status;\n\n // TODO: this retry logic is taken out of Tus. We should have a centralized place for retrying,\n // perhaps the rate limited queue, and dedupe all plugins with that.\n if (status == null) {\n return false;\n }\n if (status === 403 && err.message === 'Request has expired') {\n if (!requests.isPaused) {\n // We don't want to exhaust the retryDelayIterator as long as there are\n // more than one request in parallel, to give slower connection a chance\n // to catch up with the expiry set in Companion.\n if (requests.limit === 1 || _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay] == null) {\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n // If there are more than 1 request done in parallel, the RLQ limit is\n // decreased and the failed request is requeued after waiting for a bit.\n // If there is only one request in parallel, the limit can't be\n // decreased, so we iterate over `retryDelayIterator` as we do for\n // other failures.\n // `#previousRetryDelay` caches the value so we can re-use it next time.\n _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay] = next.value;\n }\n // No need to stop the other requests, we just want to lower the limit.\n requests.rateLimit(0);\n await new Promise(resolve => setTimeout(resolve, _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay]));\n }\n } else if (status === 429) {\n // HTTP 429 Too Many Requests => to avoid the whole download to fail, pause all requests.\n if (!requests.isPaused) {\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n requests.rateLimit(next.value);\n }\n } else if (status > 400 && status < 500 && status !== 409) {\n // HTTP 4xx, the server won't send anything, it's doesn't make sense to retry\n return false;\n } else if (typeof navigator !== 'undefined' && navigator.onLine === false) {\n // The navigator is offline, let's wait for it to come back online.\n if (!requests.isPaused) {\n requests.pause();\n window.addEventListener('online', () => {\n requests.resume();\n }, {\n once: true\n });\n }\n } else {\n // Other error code means the request can be retried later.\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n await new Promise(resolve => setTimeout(resolve, next.value));\n }\n return true;\n}\nasync function _nonMultipartUpload2(file, chunk, signal) {\n const {\n method = 'POST',\n url,\n fields,\n headers\n } = await _classPrivateFieldLooseBase(this, _getUploadParameters)[_getUploadParameters](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n signal\n }).abortOn(signal);\n let body;\n const data = chunk.getData();\n if (method.toUpperCase() === 'POST') {\n const formData = new FormData();\n Object.entries(fields).forEach(_ref2 => {\n let [key, value] = _ref2;\n return formData.set(key, value);\n });\n formData.set('file', data);\n body = formData;\n } else {\n body = data;\n }\n const {\n onProgress,\n onComplete\n } = chunk;\n const result = await _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes]({\n signature: {\n url,\n headers,\n method\n },\n body,\n size: data.size,\n onProgress,\n onComplete,\n signal\n }).abortOn(signal);\n return 'location' in result ? result : {\n location: removeMetadataFromURL(url),\n ...result\n };\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport BasePlugin from '@uppy/core/lib/BasePlugin.js';\nimport { RequestClient } from '@uppy/companion-client';\nimport EventManager from '@uppy/core/lib/EventManager.js';\nimport { RateLimitedQueue } from '@uppy/utils/lib/RateLimitedQueue';\nimport { filterNonFailedFiles, filterFilesToEmitUploadStarted } from '@uppy/utils/lib/fileFilters';\nimport { createAbortError } from '@uppy/utils/lib/AbortController';\nimport getAllowedMetaFields from '@uppy/utils/lib/getAllowedMetaFields';\nimport MultipartUploader from \"./MultipartUploader.js\";\nimport { throwIfAborted } from \"./utils.js\";\nimport createSignedURL from \"./createSignedURL.js\";\nimport { HTTPCommunicationQueue } from \"./HTTPCommunicationQueue.js\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.1.0\"\n};\nfunction assertServerError(res) {\n if (res != null && res.error) {\n const error = new Error(res.message);\n Object.assign(error, res.error);\n throw error;\n }\n return res;\n}\n/**\n * Computes the expiry time for a request signed with temporary credentials. If\n * no expiration was provided, or an invalid value (e.g. in the past) is\n * provided, undefined is returned. This function assumes the client clock is in\n * sync with the remote server, which is a requirement for the signature to be\n * validated for AWS anyway.\n */\nfunction getExpiry(credentials) {\n const expirationDate = credentials.Expiration;\n if (expirationDate) {\n const timeUntilExpiry = Math.floor((new Date(expirationDate) - Date.now()) / 1000);\n if (timeUntilExpiry > 9) {\n return timeUntilExpiry;\n }\n }\n return undefined;\n}\nfunction getAllowedMetadata(_ref) {\n let {\n meta,\n allowedMetaFields,\n querify = false\n } = _ref;\n const metaFields = allowedMetaFields != null ? allowedMetaFields : Object.keys(meta);\n if (!meta) return {};\n return Object.fromEntries(metaFields.filter(key => meta[key] != null).map(key => {\n const realKey = querify ? `metadata[${key}]` : key;\n const value = String(meta[key]);\n return [realKey, value];\n }));\n}\nconst defaultOptions = {\n allowedMetaFields: true,\n limit: 6,\n getTemporarySecurityCredentials: false,\n // eslint-disable-next-line no-bitwise\n shouldUseMultipart: file =>\n // eslint-disable-next-line no-bitwise\n file.size >> 10 >> 10 > 100,\n retryDelays: [0, 1000, 3000, 5000]\n};\nvar _companionCommunicationQueue = /*#__PURE__*/_classPrivateFieldLooseKey(\"companionCommunicationQueue\");\nvar _client = /*#__PURE__*/_classPrivateFieldLooseKey(\"client\");\nvar _setClient = /*#__PURE__*/_classPrivateFieldLooseKey(\"setClient\");\nvar _assertHost = /*#__PURE__*/_classPrivateFieldLooseKey(\"assertHost\");\nvar _cachedTemporaryCredentials = /*#__PURE__*/_classPrivateFieldLooseKey(\"cachedTemporaryCredentials\");\nvar _getTemporarySecurityCredentials = /*#__PURE__*/_classPrivateFieldLooseKey(\"getTemporarySecurityCredentials\");\nvar _setS3MultipartState = /*#__PURE__*/_classPrivateFieldLooseKey(\"setS3MultipartState\");\nvar _getFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"getFile\");\nvar _uploadLocalFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadLocalFile\");\nvar _getCompanionClientArgs = /*#__PURE__*/_classPrivateFieldLooseKey(\"getCompanionClientArgs\");\nvar _upload = /*#__PURE__*/_classPrivateFieldLooseKey(\"upload\");\nvar _setCompanionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"setCompanionHeaders\");\nvar _setResumableUploadsCapability = /*#__PURE__*/_classPrivateFieldLooseKey(\"setResumableUploadsCapability\");\nvar _resetResumableCapability = /*#__PURE__*/_classPrivateFieldLooseKey(\"resetResumableCapability\");\nexport default class AwsS3Multipart extends BasePlugin {\n constructor(uppy, _opts) {\n var _rateLimitedQueue;\n super(uppy, {\n ...defaultOptions,\n uploadPartBytes: AwsS3Multipart.uploadPartBytes,\n createMultipartUpload: null,\n listParts: null,\n abortMultipartUpload: null,\n completeMultipartUpload: null,\n signPart: null,\n getUploadParameters: null,\n ..._opts\n });\n // We need the `as any` here because of the dynamic default options.\n // eslint-disable-next-line class-methods-use-this\n Object.defineProperty(this, _getCompanionClientArgs, {\n value: _getCompanionClientArgs2\n });\n Object.defineProperty(this, _uploadLocalFile, {\n value: _uploadLocalFile2\n });\n Object.defineProperty(this, _getTemporarySecurityCredentials, {\n value: _getTemporarySecurityCredentials2\n });\n Object.defineProperty(this, _assertHost, {\n value: _assertHost2\n });\n Object.defineProperty(this, _setClient, {\n value: _setClient2\n });\n Object.defineProperty(this, _companionCommunicationQueue, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _client, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _cachedTemporaryCredentials, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _setS3MultipartState, {\n writable: true,\n value: (file, _ref2) => {\n let {\n key,\n uploadId\n } = _ref2;\n const cFile = this.uppy.getFile(file.id);\n if (cFile == null) {\n // file was removed from store\n return;\n }\n this.uppy.setFileState(file.id, {\n s3Multipart: {\n ...cFile.s3Multipart,\n key,\n uploadId\n }\n });\n }\n });\n Object.defineProperty(this, _getFile, {\n writable: true,\n value: file => {\n return this.uppy.getFile(file.id) || file;\n }\n });\n Object.defineProperty(this, _upload, {\n writable: true,\n value: async fileIDs => {\n if (fileIDs.length === 0) return undefined;\n const files = this.uppy.getFilesByIds(fileIDs);\n const filesFiltered = filterNonFailedFiles(files);\n const filesToEmit = filterFilesToEmitUploadStarted(filesFiltered);\n this.uppy.emit('upload-start', filesToEmit);\n const promises = filesFiltered.map(file => {\n if (file.isRemote) {\n const getQueue = () => this.requests;\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](false);\n const controller = new AbortController();\n const removedHandler = removedFile => {\n if (removedFile.id === file.id) controller.abort();\n };\n this.uppy.on('file-removed', removedHandler);\n const uploadPromise = this.uppy.getRequestClientForFile(file).uploadRemoteFile(file, _classPrivateFieldLooseBase(this, _getCompanionClientArgs)[_getCompanionClientArgs](file), {\n signal: controller.signal,\n getQueue\n });\n this.requests.wrapSyncFunction(() => {\n this.uppy.off('file-removed', removedHandler);\n }, {\n priority: -1\n })();\n return uploadPromise;\n }\n return _classPrivateFieldLooseBase(this, _uploadLocalFile)[_uploadLocalFile](file);\n });\n const upload = await Promise.all(promises);\n // After the upload is done, another upload may happen with only local files.\n // We reset the capability so that the next upload can use resumable uploads.\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n return upload;\n }\n });\n Object.defineProperty(this, _setCompanionHeaders, {\n writable: true,\n value: () => {\n var _classPrivateFieldLoo;\n (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _client)[_client]) == null || _classPrivateFieldLoo.setCompanionHeaders(this.opts.headers);\n }\n });\n Object.defineProperty(this, _setResumableUploadsCapability, {\n writable: true,\n value: boolean => {\n const {\n capabilities\n } = this.uppy.getState();\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n resumableUploads: boolean\n }\n });\n }\n });\n Object.defineProperty(this, _resetResumableCapability, {\n writable: true,\n value: () => {\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n }\n });\n this.type = 'uploader';\n this.id = this.opts.id || 'AwsS3Multipart';\n _classPrivateFieldLooseBase(this, _setClient)[_setClient](_opts);\n const dynamicDefaultOptions = {\n createMultipartUpload: this.createMultipartUpload,\n listParts: this.listParts,\n abortMultipartUpload: this.abortMultipartUpload,\n completeMultipartUpload: this.completeMultipartUpload,\n signPart: _opts != null && _opts.getTemporarySecurityCredentials ? this.createSignedURL : this.signPart,\n getUploadParameters: _opts != null && _opts.getTemporarySecurityCredentials ? this.createSignedURL : this.getUploadParameters\n };\n for (const key of Object.keys(dynamicDefaultOptions)) {\n if (this.opts[key] == null) {\n this.opts[key] = dynamicDefaultOptions[key].bind(this);\n }\n }\n\n /**\n * Simultaneous upload limiting is shared across all uploads with this plugin.\n *\n * @type {RateLimitedQueue}\n */\n this.requests = (_rateLimitedQueue = this.opts.rateLimitedQueue) != null ? _rateLimitedQueue : new RateLimitedQueue(this.opts.limit);\n _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue] = new HTTPCommunicationQueue(this.requests, this.opts, _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState], _classPrivateFieldLooseBase(this, _getFile)[_getFile]);\n this.uploaders = Object.create(null);\n this.uploaderEvents = Object.create(null);\n }\n [Symbol.for('uppy test: getClient')]() {\n return _classPrivateFieldLooseBase(this, _client)[_client];\n }\n setOptions(newOptions) {\n _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue].setOptions(newOptions);\n super.setOptions(newOptions);\n _classPrivateFieldLooseBase(this, _setClient)[_setClient](newOptions);\n }\n\n /**\n * Clean up all references for a file's upload: the MultipartUploader instance,\n * any events related to the file, and the Companion WebSocket connection.\n *\n * Set `opts.abort` to tell S3 that the multipart upload is cancelled and must be removed.\n * This should be done when the user cancels the upload, not when the upload is completed or errored.\n */\n resetUploaderReferences(fileID, opts) {\n if (this.uploaders[fileID]) {\n this.uploaders[fileID].abort({\n really: (opts == null ? void 0 : opts.abort) || false\n });\n this.uploaders[fileID] = null;\n }\n if (this.uploaderEvents[fileID]) {\n this.uploaderEvents[fileID].remove();\n this.uploaderEvents[fileID] = null;\n }\n }\n createMultipartUpload(file, signal) {\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('createMultipartUpload');\n throwIfAborted(signal);\n const allowedMetaFields = getAllowedMetaFields(this.opts.allowedMetaFields, file.meta);\n const metadata = getAllowedMetadata({\n meta: file.meta,\n allowedMetaFields\n });\n return _classPrivateFieldLooseBase(this, _client)[_client].post('s3/multipart', {\n filename: file.name,\n type: file.type,\n metadata\n }, {\n signal\n }).then(assertServerError);\n }\n listParts(file, _ref3, oldSignal) {\n var _signal;\n let {\n key,\n uploadId,\n signal\n } = _ref3;\n (_signal = signal) != null ? _signal : signal = oldSignal; // eslint-disable-line no-param-reassign\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('listParts');\n throwIfAborted(signal);\n const filename = encodeURIComponent(key);\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/multipart/${encodeURIComponent(uploadId)}?key=${filename}`, {\n signal\n }).then(assertServerError);\n }\n completeMultipartUpload(file, _ref4, oldSignal) {\n var _signal2;\n let {\n key,\n uploadId,\n parts,\n signal\n } = _ref4;\n (_signal2 = signal) != null ? _signal2 : signal = oldSignal; // eslint-disable-line no-param-reassign\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('completeMultipartUpload');\n throwIfAborted(signal);\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n return _classPrivateFieldLooseBase(this, _client)[_client].post(`s3/multipart/${uploadIdEnc}/complete?key=${filename}`, {\n parts: parts.map(_ref5 => {\n let {\n ETag,\n PartNumber\n } = _ref5;\n return {\n ETag,\n PartNumber\n };\n })\n }, {\n signal\n }).then(assertServerError);\n }\n async createSignedURL(file, options) {\n const data = await _classPrivateFieldLooseBase(this, _getTemporarySecurityCredentials)[_getTemporarySecurityCredentials](options);\n const expires = getExpiry(data.credentials) || 604800; // 604 800 is the max value accepted by AWS.\n\n const {\n uploadId,\n key,\n partNumber\n } = options;\n\n // Return an object in the correct shape.\n return {\n method: 'PUT',\n expires,\n fields: {},\n url: `${await createSignedURL({\n accountKey: data.credentials.AccessKeyId,\n accountSecret: data.credentials.SecretAccessKey,\n sessionToken: data.credentials.SessionToken,\n expires,\n bucketName: data.bucket,\n Region: data.region,\n Key: key != null ? key : `${crypto.randomUUID()}-${file.name}`,\n uploadId,\n partNumber\n })}`,\n // Provide content type header required by S3\n headers: {\n 'Content-Type': file.type\n }\n };\n }\n signPart(file, _ref6) {\n let {\n uploadId,\n key,\n partNumber,\n signal\n } = _ref6;\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('signPart');\n throwIfAborted(signal);\n if (uploadId == null || key == null || partNumber == null) {\n throw new Error('Cannot sign without a key, an uploadId, and a partNumber');\n }\n const filename = encodeURIComponent(key);\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/multipart/${encodeURIComponent(uploadId)}/${partNumber}?key=${filename}`, {\n signal\n }).then(assertServerError);\n }\n abortMultipartUpload(file, _ref7) {\n let {\n key,\n uploadId,\n signal\n } = _ref7;\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('abortMultipartUpload');\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n return _classPrivateFieldLooseBase(this, _client)[_client].delete(`s3/multipart/${uploadIdEnc}?key=${filename}`, undefined, {\n signal\n }).then(assertServerError);\n }\n getUploadParameters(file, options) {\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('getUploadParameters');\n const {\n meta\n } = file;\n const {\n type,\n name: filename\n } = meta;\n const allowedMetaFields = getAllowedMetaFields(this.opts.allowedMetaFields, file.meta);\n const metadata = getAllowedMetadata({\n meta,\n allowedMetaFields,\n querify: true\n });\n const query = new URLSearchParams({\n filename,\n type,\n ...metadata\n });\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/params?${query}`, options);\n }\n static async uploadPartBytes(_ref8) {\n let {\n signature: {\n url,\n expires,\n headers,\n method = 'PUT'\n },\n body,\n size = body.size,\n onProgress,\n onComplete,\n signal\n } = _ref8;\n throwIfAborted(signal);\n if (url == null) {\n throw new Error('Cannot upload to an undefined URL');\n }\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (headers) {\n Object.keys(headers).forEach(key => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n xhr.responseType = 'text';\n if (typeof expires === 'number') {\n xhr.timeout = expires * 1000;\n }\n function onabort() {\n xhr.abort();\n }\n function cleanup() {\n signal == null || signal.removeEventListener('abort', onabort);\n }\n signal == null || signal.addEventListener('abort', onabort);\n xhr.upload.addEventListener('progress', ev => {\n onProgress(ev);\n });\n xhr.addEventListener('abort', () => {\n cleanup();\n reject(createAbortError());\n });\n xhr.addEventListener('timeout', () => {\n cleanup();\n const error = new Error('Request has expired');\n error.source = {\n status: 403\n };\n reject(error);\n });\n xhr.addEventListener('load', () => {\n cleanup();\n if (xhr.status === 403 && xhr.responseText.includes('Request has expired')) {\n const error = new Error('Request has expired');\n error.source = xhr;\n reject(error);\n return;\n }\n if (xhr.status < 200 || xhr.status >= 300) {\n const error = new Error('Non 2xx');\n error.source = xhr;\n reject(error);\n return;\n }\n onProgress == null || onProgress({\n loaded: size,\n lengthComputable: true\n });\n\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#examples\n const arr = xhr.getAllResponseHeaders().trim().split(/[\\r\\n]+/);\n // @ts-expect-error null is allowed to avoid inherited properties\n const headersMap = {\n __proto__: null\n };\n for (const line of arr) {\n const parts = line.split(': ');\n const header = parts.shift();\n const value = parts.join(': ');\n headersMap[header] = value;\n }\n const {\n etag,\n location\n } = headersMap;\n if (method.toUpperCase() === 'POST' && location === null) {\n // Not being able to read the Location header is not a fatal error.\n // eslint-disable-next-line no-console\n console.warn('AwsS3/Multipart: Could not read the Location header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.');\n }\n if (etag === null) {\n reject(new Error('AwsS3/Multipart: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.'));\n return;\n }\n onComplete == null || onComplete(etag);\n resolve({\n ...headersMap,\n ETag: etag // keep capitalised ETag for backwards compatiblity\n });\n });\n xhr.addEventListener('error', ev => {\n cleanup();\n const error = new Error('Unknown error');\n error.source = ev.target;\n reject(error);\n });\n xhr.send(body);\n });\n }\n install() {\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n this.uppy.addPreProcessor(_classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]);\n this.uppy.addUploader(_classPrivateFieldLooseBase(this, _upload)[_upload]);\n this.uppy.on('cancel-all', _classPrivateFieldLooseBase(this, _resetResumableCapability)[_resetResumableCapability]);\n }\n uninstall() {\n this.uppy.removePreProcessor(_classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]);\n this.uppy.removeUploader(_classPrivateFieldLooseBase(this, _upload)[_upload]);\n this.uppy.off('cancel-all', _classPrivateFieldLooseBase(this, _resetResumableCapability)[_resetResumableCapability]);\n }\n}\nfunction _setClient2(opts) {\n if (opts == null || !('endpoint' in opts || 'companionUrl' in opts || 'headers' in opts || 'companionHeaders' in opts || 'cookiesRule' in opts || 'companionCookiesRule' in opts)) return;\n if ('companionUrl' in opts && !('endpoint' in opts)) {\n this.uppy.log('`companionUrl` option has been removed in @uppy/aws-s3, use `endpoint` instead.', 'warning');\n }\n if ('companionHeaders' in opts && !('headers' in opts)) {\n this.uppy.log('`companionHeaders` option has been removed in @uppy/aws-s3, use `headers` instead.', 'warning');\n }\n if ('companionCookiesRule' in opts && !('cookiesRule' in opts)) {\n this.uppy.log('`companionCookiesRule` option has been removed in @uppy/aws-s3, use `cookiesRule` instead.', 'warning');\n }\n if ('endpoint' in opts) {\n _classPrivateFieldLooseBase(this, _client)[_client] = new RequestClient(this.uppy, {\n pluginId: this.id,\n provider: 'AWS',\n companionUrl: this.opts.endpoint,\n companionHeaders: this.opts.headers,\n companionCookiesRule: this.opts.cookiesRule\n });\n } else {\n if ('headers' in opts) {\n _classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]();\n }\n if ('cookiesRule' in opts) {\n _classPrivateFieldLooseBase(this, _client)[_client].opts.companionCookiesRule = opts.cookiesRule;\n }\n }\n}\nfunction _assertHost2(method) {\n if (!_classPrivateFieldLooseBase(this, _client)[_client]) {\n throw new Error(`Expected a \\`endpoint\\` option containing a URL, or if you are not using Companion, a custom \\`${method}\\` implementation.`);\n }\n}\nasync function _getTemporarySecurityCredentials2(options) {\n throwIfAborted(options == null ? void 0 : options.signal);\n if (_classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] == null) {\n const {\n getTemporarySecurityCredentials\n } = this.opts;\n // We do not await it just yet, so concurrent calls do not try to override it:\n if (getTemporarySecurityCredentials === true) {\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('getTemporarySecurityCredentials');\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = _classPrivateFieldLooseBase(this, _client)[_client].get('s3/sts', options).then(assertServerError);\n } else {\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = getTemporarySecurityCredentials(options);\n }\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = await _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials];\n setTimeout(() => {\n // At half the time left before expiration, we clear the cache. That's\n // an arbitrary tradeoff to limit the number of requests made to the\n // remote while limiting the risk of using an expired token in case the\n // clocks are not exactly synced.\n // The HTTP cache should be configured to ensure a client doesn't request\n // more tokens than it needs, but this timeout provides a second layer of\n // security in case the HTTP cache is disabled or misconfigured.\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = null;\n }, (getExpiry(_classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials].credentials) || 0) * 500);\n }\n return _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials];\n}\nfunction _uploadLocalFile2(file) {\n var _this = this;\n return new Promise((resolve, reject) => {\n const onProgress = (bytesUploaded, bytesTotal) => {\n var _latestFile$progress$;\n const latestFile = this.uppy.getFile(file.id);\n this.uppy.emit('upload-progress', latestFile, {\n uploadStarted: (_latestFile$progress$ = latestFile.progress.uploadStarted) != null ? _latestFile$progress$ : 0,\n bytesUploaded,\n bytesTotal\n });\n };\n const onError = err => {\n this.uppy.log(err);\n this.uppy.emit('upload-error', file, err);\n this.resetUploaderReferences(file.id);\n reject(err);\n };\n const onSuccess = result => {\n const uploadResp = {\n body: {\n ...result\n },\n status: 200,\n uploadURL: result.location\n };\n this.resetUploaderReferences(file.id);\n this.uppy.emit('upload-success', _classPrivateFieldLooseBase(this, _getFile)[_getFile](file), uploadResp);\n if (result.location) {\n this.uppy.log(`Download ${file.name} from ${result.location}`);\n }\n resolve();\n };\n const upload = new MultipartUploader(file.data, {\n // .bind to pass the file object to each handler.\n companionComm: _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue],\n log: function () {\n return _this.uppy.log(...arguments);\n },\n getChunkSize: this.opts.getChunkSize ? this.opts.getChunkSize.bind(this) : undefined,\n onProgress,\n onError,\n onSuccess,\n onPartComplete: part => {\n this.uppy.emit('s3-multipart:part-uploaded', _classPrivateFieldLooseBase(this, _getFile)[_getFile](file), part);\n },\n file,\n shouldUseMultipart: this.opts.shouldUseMultipart,\n ...file.s3Multipart\n });\n this.uploaders[file.id] = upload;\n const eventManager = new EventManager(this.uppy);\n this.uploaderEvents[file.id] = eventManager;\n eventManager.onFileRemove(file.id, removed => {\n upload.abort();\n this.resetUploaderReferences(file.id, {\n abort: true\n });\n resolve(`upload ${removed} was removed`);\n });\n eventManager.onCancelAll(file.id, () => {\n upload.abort();\n this.resetUploaderReferences(file.id, {\n abort: true\n });\n resolve(`upload ${file.id} was canceled`);\n });\n eventManager.onFilePause(file.id, isPaused => {\n if (isPaused) {\n upload.pause();\n } else {\n upload.start();\n }\n });\n eventManager.onPauseAll(file.id, () => {\n upload.pause();\n });\n eventManager.onResumeAll(file.id, () => {\n upload.start();\n });\n upload.start();\n });\n}\nfunction _getCompanionClientArgs2(file) {\n var _file$remote;\n return {\n ...((_file$remote = file.remote) == null ? void 0 : _file$remote.body),\n protocol: 's3-multipart',\n size: file.data.size,\n metadata: file.meta\n };\n}\nAwsS3Multipart.VERSION = packageJson.version;","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nvar _aliveTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"aliveTimer\");\nvar _isDone = /*#__PURE__*/_classPrivateFieldLooseKey(\"isDone\");\nvar _onTimedOut = /*#__PURE__*/_classPrivateFieldLooseKey(\"onTimedOut\");\nvar _timeout = /*#__PURE__*/_classPrivateFieldLooseKey(\"timeout\");\n/**\n * Helper to abort upload requests if there has not been any progress for `timeout` ms.\n * Create an instance using `timer = new ProgressTimeout(10000, onTimeout)`\n * Call `timer.progress()` to signal that there has been progress of any kind.\n * Call `timer.done()` when the upload has completed.\n */\nclass ProgressTimeout {\n constructor(timeout,\n // eslint-disable-next-line no-shadow\n timeoutHandler) {\n Object.defineProperty(this, _aliveTimer, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _isDone, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _onTimedOut, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _timeout, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldLooseBase(this, _timeout)[_timeout] = timeout;\n _classPrivateFieldLooseBase(this, _onTimedOut)[_onTimedOut] = () => timeoutHandler(timeout);\n }\n progress() {\n // Some browsers fire another progress event when the upload is\n // cancelled, so we have to ignore progress after the timer was\n // told to stop.\n if (_classPrivateFieldLooseBase(this, _isDone)[_isDone]) return;\n if (_classPrivateFieldLooseBase(this, _timeout)[_timeout] > 0) {\n clearTimeout(_classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer]);\n _classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer] = setTimeout(_classPrivateFieldLooseBase(this, _onTimedOut)[_onTimedOut], _classPrivateFieldLooseBase(this, _timeout)[_timeout]);\n }\n }\n done() {\n if (!_classPrivateFieldLooseBase(this, _isDone)[_isDone]) {\n clearTimeout(_classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer]);\n _classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer] = undefined;\n _classPrivateFieldLooseBase(this, _isDone)[_isDone] = true;\n }\n }\n}\nexport default ProgressTimeout;","import NetworkError from \"./NetworkError.js\";\nimport ProgressTimeout from \"./ProgressTimeout.js\";\nconst noop = () => {};\n/**\n * Fetches data from a specified URL using XMLHttpRequest, with optional retry functionality and progress tracking.\n *\n * @param url The URL to send the request to.\n * @param options Optional settings for the fetch operation.\n */\nexport function fetcher(url, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n body = null,\n headers = {},\n method = 'GET',\n onBeforeRequest = noop,\n onUploadProgress = noop,\n shouldRetry = () => true,\n onAfterResponse = noop,\n onTimeout = noop,\n responseType,\n retries = 3,\n signal = null,\n timeout = 30000,\n withCredentials = false\n } = options;\n\n // 300 ms, 600 ms, 1200 ms, 2400 ms, 4800 ms\n const delay = attempt => 0.3 * 2 ** (attempt - 1) * 1000;\n const timer = new ProgressTimeout(timeout, onTimeout);\n function requestWithRetry(retryCount) {\n if (retryCount === void 0) {\n retryCount = 0;\n }\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n xhr.withCredentials = withCredentials;\n if (responseType) {\n xhr.responseType = responseType;\n }\n signal == null || signal.addEventListener('abort', () => {\n xhr.abort();\n // Using DOMException for abort errors aligns with\n // the convention established by the Fetch API.\n reject(new DOMException('Aborted', 'AbortError'));\n });\n xhr.onload = async () => {\n await onAfterResponse(xhr, retryCount);\n if (xhr.status >= 200 && xhr.status < 300) {\n timer.done();\n resolve(xhr);\n } else if (shouldRetry(xhr) && retryCount < retries) {\n setTimeout(() => {\n requestWithRetry(retryCount + 1).then(resolve, reject);\n }, delay(retryCount));\n } else {\n timer.done();\n reject(new NetworkError(xhr.statusText, xhr));\n }\n };\n xhr.onerror = () => {\n if (shouldRetry(xhr) && retryCount < retries) {\n setTimeout(() => {\n requestWithRetry(retryCount + 1).then(resolve, reject);\n }, delay(retryCount));\n } else {\n timer.done();\n reject(new NetworkError(xhr.statusText, xhr));\n }\n };\n xhr.upload.onprogress = event => {\n timer.progress();\n onUploadProgress(event);\n };\n if (headers) {\n Object.keys(headers).forEach(key => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n await onBeforeRequest(xhr, retryCount);\n xhr.send(body);\n });\n }\n return requestWithRetry();\n}","export default {\n strings: {\n // Shown in the Informer if an upload is being canceled because it stalled for too long.\n uploadStalled: 'Upload has not made any progress for %{seconds} seconds. You may want to retry it.'\n }\n};","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport BasePlugin from '@uppy/core/lib/BasePlugin.js';\nimport EventManager from '@uppy/core/lib/EventManager.js';\nimport { RateLimitedQueue, internalRateLimitedQueue\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\n} from '@uppy/utils/lib/RateLimitedQueue';\nimport NetworkError from '@uppy/utils/lib/NetworkError';\nimport isNetworkError from '@uppy/utils/lib/isNetworkError';\nimport { fetcher } from '@uppy/utils/lib/fetcher';\nimport { filterNonFailedFiles, filterFilesToEmitUploadStarted } from '@uppy/utils/lib/fileFilters';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\n\nimport getAllowedMetaFields from '@uppy/utils/lib/getAllowedMetaFields';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.1.0\"\n};\nimport locale from \"./locale.js\";\nfunction buildResponseError(xhr, err) {\n let error = err;\n // No error message\n if (!error) error = new Error('Upload error');\n // Got an error message string\n if (typeof error === 'string') error = new Error(error);\n // Got something else\n if (!(error instanceof Error)) {\n error = Object.assign(new Error('Upload error'), {\n data: error\n });\n }\n if (isNetworkError(xhr)) {\n error = new NetworkError(error, xhr);\n return error;\n }\n\n // @ts-expect-error request can only be set on NetworkError\n // but we use NetworkError to distinguish between errors.\n error.request = xhr;\n return error;\n}\n\n/**\n * Set `data.type` in the blob to `file.meta.type`,\n * because we might have detected a more accurate file type in Uppy\n * https://stackoverflow.com/a/50875615\n */\nfunction setTypeInBlob(file) {\n const dataWithUpdatedType = file.data.slice(0, file.data.size, file.meta.type);\n return dataWithUpdatedType;\n}\nconst defaultOptions = {\n formData: true,\n fieldName: 'file',\n method: 'post',\n allowedMetaFields: true,\n bundle: false,\n headers: {},\n timeout: 30 * 1000,\n limit: 5,\n withCredentials: false,\n responseType: ''\n};\nvar _getFetcher = /*#__PURE__*/_classPrivateFieldLooseKey(\"getFetcher\");\nvar _uploadLocalFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadLocalFile\");\nvar _uploadBundle = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadBundle\");\nvar _getCompanionClientArgs = /*#__PURE__*/_classPrivateFieldLooseKey(\"getCompanionClientArgs\");\nvar _uploadFiles = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadFiles\");\nvar _handleUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"handleUpload\");\nexport default class XHRUpload extends BasePlugin {\n constructor(uppy, _opts) {\n super(uppy, {\n ...defaultOptions,\n fieldName: _opts.bundle ? 'files[]' : 'file',\n ..._opts\n });\n Object.defineProperty(this, _uploadFiles, {\n value: _uploadFiles2\n });\n Object.defineProperty(this, _getCompanionClientArgs, {\n value: _getCompanionClientArgs2\n });\n Object.defineProperty(this, _uploadBundle, {\n value: _uploadBundle2\n });\n Object.defineProperty(this, _uploadLocalFile, {\n value: _uploadLocalFile2\n });\n Object.defineProperty(this, _getFetcher, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _handleUpload, {\n writable: true,\n value: async fileIDs => {\n if (fileIDs.length === 0) {\n this.uppy.log('[XHRUpload] No files to upload!');\n return;\n }\n\n // No limit configured by the user, and no RateLimitedQueue passed in by a \"parent\" plugin\n // (basically just AwsS3) using the internal symbol\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore untyped internal\n if (this.opts.limit === 0 && !this.opts[internalRateLimitedQueue]) {\n this.uppy.log('[XHRUpload] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/xhr-upload/#limit-0', 'warning');\n }\n this.uppy.log('[XHRUpload] Uploading...');\n const files = this.uppy.getFilesByIds(fileIDs);\n const filesFiltered = filterNonFailedFiles(files);\n const filesToEmit = filterFilesToEmitUploadStarted(filesFiltered);\n this.uppy.emit('upload-start', filesToEmit);\n if (this.opts.bundle) {\n // if bundle: true, we don’t support remote uploads\n const isSomeFileRemote = filesFiltered.some(file => file.isRemote);\n if (isSomeFileRemote) {\n throw new Error('Can’t upload remote files when the `bundle: true` option is set');\n }\n if (typeof this.opts.headers === 'function') {\n throw new TypeError('`headers` may not be a function when the `bundle: true` option is set');\n }\n await _classPrivateFieldLooseBase(this, _uploadBundle)[_uploadBundle](filesFiltered);\n } else {\n await _classPrivateFieldLooseBase(this, _uploadFiles)[_uploadFiles](filesFiltered);\n }\n }\n });\n this.type = 'uploader';\n this.id = this.opts.id || 'XHRUpload';\n this.defaultLocale = locale;\n this.i18nInit();\n\n // Simultaneous upload limiting is shared across all uploads with this plugin.\n if (internalRateLimitedQueue in this.opts) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore untyped internal\n this.requests = this.opts[internalRateLimitedQueue];\n } else {\n this.requests = new RateLimitedQueue(this.opts.limit);\n }\n if (this.opts.bundle && !this.opts.formData) {\n throw new Error('`opts.formData` must be true when `opts.bundle` is enabled.');\n }\n if (this.opts.bundle && typeof this.opts.headers === 'function') {\n throw new Error('`opts.headers` can not be a function when the `bundle: true` option is set.');\n }\n if ((_opts == null ? void 0 : _opts.allowedMetaFields) === undefined && 'metaFields' in this.opts) {\n throw new Error('The `metaFields` option has been renamed to `allowedMetaFields`.');\n }\n this.uploaderEvents = Object.create(null);\n /**\n * xhr-upload wrapper for `fetcher` to handle user options\n * `validateStatus`, `getResponseError`, `getResponseData`\n * and to emit `upload-progress`, `upload-error`, and `upload-success` events.\n */\n _classPrivateFieldLooseBase(this, _getFetcher)[_getFetcher] = files => {\n return async (url, options) => {\n try {\n var _this$opts$getRespons, _this$opts, _body2;\n const res = await fetcher(url, {\n ...options,\n onBeforeRequest: this.opts.onBeforeRequest,\n shouldRetry: this.opts.shouldRetry,\n onAfterResponse: this.opts.onAfterResponse,\n onTimeout: timeout => {\n const seconds = Math.ceil(timeout / 1000);\n const error = new Error(this.i18n('uploadStalled', {\n seconds\n }));\n this.uppy.emit('upload-stalled', error, files);\n },\n onUploadProgress: event => {\n if (event.lengthComputable) {\n for (const file of files) {\n var _file$progress$upload;\n this.uppy.emit('upload-progress', file, {\n uploadStarted: (_file$progress$upload = file.progress.uploadStarted) != null ? _file$progress$upload : 0,\n bytesUploaded: event.loaded / event.total * file.size,\n bytesTotal: file.size\n });\n }\n }\n }\n });\n let body = await ((_this$opts$getRespons = (_this$opts = this.opts).getResponseData) == null ? void 0 : _this$opts$getRespons.call(_this$opts, res));\n try {\n var _body;\n (_body = body) != null ? _body : body = JSON.parse(res.responseText);\n } catch (cause) {\n throw new Error('@uppy/xhr-upload expects a JSON response (with a `url` property). To parse non-JSON responses, use `getResponseData` to turn your response into JSON.', {\n cause\n });\n }\n const uploadURL = typeof ((_body2 = body) == null ? void 0 : _body2.url) === 'string' ? body.url : undefined;\n for (const file of files) {\n this.uppy.emit('upload-success', file, {\n status: res.status,\n body,\n uploadURL\n });\n }\n return res;\n } catch (error) {\n if (error.name === 'AbortError') {\n return undefined;\n }\n if (error instanceof NetworkError) {\n const request = error.request;\n for (const file of files) {\n this.uppy.emit('upload-error', file, buildResponseError(request, error));\n }\n }\n throw error;\n }\n };\n };\n }\n getOptions(file) {\n const overrides = this.uppy.getState().xhrUpload;\n const {\n headers\n } = this.opts;\n const opts = {\n ...this.opts,\n ...(overrides || {}),\n ...(file.xhrUpload || {}),\n headers: {}\n };\n // Support for `headers` as a function, only in the XHRUpload settings.\n // Options set by other plugins in Uppy state or on the files themselves are still merged in afterward.\n //\n // ```js\n // headers: (file) => ({ expires: file.meta.expires })\n // ```\n if (typeof headers === 'function') {\n opts.headers = headers(file);\n } else {\n Object.assign(opts.headers, this.opts.headers);\n }\n if (overrides) {\n Object.assign(opts.headers, overrides.headers);\n }\n if (file.xhrUpload) {\n Object.assign(opts.headers, file.xhrUpload.headers);\n }\n return opts;\n }\n\n // eslint-disable-next-line class-methods-use-this\n addMetadata(formData, meta, opts) {\n const allowedMetaFields = getAllowedMetaFields(opts.allowedMetaFields, meta);\n allowedMetaFields.forEach(item => {\n const value = meta[item];\n if (Array.isArray(value)) {\n // In this case we don't transform `item` to add brackets, it's up to\n // the user to add the brackets so it won't be overridden.\n value.forEach(subItem => formData.append(item, subItem));\n } else {\n formData.append(item, value);\n }\n });\n }\n createFormDataUpload(file, opts) {\n const formPost = new FormData();\n this.addMetadata(formPost, file.meta, opts);\n const dataWithUpdatedType = setTypeInBlob(file);\n if (file.name) {\n formPost.append(opts.fieldName, dataWithUpdatedType, file.meta.name);\n } else {\n formPost.append(opts.fieldName, dataWithUpdatedType);\n }\n return formPost;\n }\n createBundledUpload(files, opts) {\n const formPost = new FormData();\n const {\n meta\n } = this.uppy.getState();\n this.addMetadata(formPost, meta, opts);\n files.forEach(file => {\n const options = this.getOptions(file);\n const dataWithUpdatedType = setTypeInBlob(file);\n if (file.name) {\n formPost.append(options.fieldName, dataWithUpdatedType, file.name);\n } else {\n formPost.append(options.fieldName, dataWithUpdatedType);\n }\n });\n return formPost;\n }\n install() {\n if (this.opts.bundle) {\n const {\n capabilities\n } = this.uppy.getState();\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n individualCancellation: false\n }\n });\n }\n this.uppy.addUploader(_classPrivateFieldLooseBase(this, _handleUpload)[_handleUpload]);\n }\n uninstall() {\n if (this.opts.bundle) {\n const {\n capabilities\n } = this.uppy.getState();\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n individualCancellation: true\n }\n });\n }\n this.uppy.removeUploader(_classPrivateFieldLooseBase(this, _handleUpload)[_handleUpload]);\n }\n}\nasync function _uploadLocalFile2(file) {\n const events = new EventManager(this.uppy);\n const controller = new AbortController();\n const uppyFetch = this.requests.wrapPromiseFunction(async () => {\n const opts = this.getOptions(file);\n const fetch = _classPrivateFieldLooseBase(this, _getFetcher)[_getFetcher]([file]);\n const body = opts.formData ? this.createFormDataUpload(file, opts) : file.data;\n return fetch(opts.endpoint, {\n ...opts,\n body,\n signal: controller.signal\n });\n });\n events.onFileRemove(file.id, () => controller.abort());\n events.onCancelAll(file.id, () => {\n controller.abort();\n });\n try {\n await uppyFetch().abortOn(controller.signal);\n } catch (error) {\n // TODO: create formal error with name 'AbortError' (this comes from RateLimitedQueue)\n if (error.message !== 'Cancelled') {\n throw error;\n }\n } finally {\n events.remove();\n }\n}\nasync function _uploadBundle2(files) {\n const controller = new AbortController();\n const uppyFetch = this.requests.wrapPromiseFunction(async () => {\n var _this$uppy$getState$x;\n const optsFromState = (_this$uppy$getState$x = this.uppy.getState().xhrUpload) != null ? _this$uppy$getState$x : {};\n const fetch = _classPrivateFieldLooseBase(this, _getFetcher)[_getFetcher](files);\n const body = this.createBundledUpload(files, {\n ...this.opts,\n ...optsFromState\n });\n return fetch(this.opts.endpoint, {\n // headers can't be a function with bundle: true\n ...this.opts,\n body,\n signal: controller.signal\n });\n });\n function abort() {\n controller.abort();\n }\n\n // We only need to abort on cancel all because\n // individual cancellations are not possible with bundle: true\n this.uppy.once('cancel-all', abort);\n try {\n await uppyFetch().abortOn(controller.signal);\n } catch (error) {\n // TODO: create formal error with name 'AbortError' (this comes from RateLimitedQueue)\n if (error.message !== 'Cancelled') {\n throw error;\n }\n } finally {\n this.uppy.off('cancel-all', abort);\n }\n}\nfunction _getCompanionClientArgs2(file) {\n var _file$remote;\n const opts = this.getOptions(file);\n const allowedMetaFields = getAllowedMetaFields(opts.allowedMetaFields, file.meta);\n return {\n ...((_file$remote = file.remote) == null ? void 0 : _file$remote.body),\n protocol: 'multipart',\n endpoint: opts.endpoint,\n size: file.data.size,\n fieldname: opts.fieldName,\n metadata: Object.fromEntries(allowedMetaFields.map(name => [name, file.meta[name]])),\n httpMethod: opts.method,\n useFormData: opts.formData,\n headers: opts.headers\n };\n}\nasync function _uploadFiles2(files) {\n await Promise.allSettled(files.map(file => {\n if (file.isRemote) {\n const getQueue = () => this.requests;\n const controller = new AbortController();\n const removedHandler = removedFile => {\n if (removedFile.id === file.id) controller.abort();\n };\n this.uppy.on('file-removed', removedHandler);\n const uploadPromise = this.uppy.getRequestClientForFile(file).uploadRemoteFile(file, _classPrivateFieldLooseBase(this, _getCompanionClientArgs)[_getCompanionClientArgs](file), {\n signal: controller.signal,\n getQueue\n });\n this.requests.wrapSyncFunction(() => {\n this.uppy.off('file-removed', removedHandler);\n }, {\n priority: -1\n })();\n return uploadPromise;\n }\n return _classPrivateFieldLooseBase(this, _uploadLocalFile)[_uploadLocalFile](file);\n }));\n}\n// eslint-disable-next-line global-require\nXHRUpload.VERSION = packageJson.version;","function isNetworkError(xhr) {\n if (!xhr) {\n return false;\n }\n return xhr.readyState !== 0 && xhr.readyState !== 4 || xhr.status === 0;\n}\nexport default isNetworkError;","import Uppy from \"@uppy/core\";\nimport AwsS3 from \"@uppy/aws-s3\";\nimport XHRUpload from \"@uppy/xhr-upload\";\n\nexport function uppyInstance({ id, types, server }) {\n const uppy = new Uppy({\n id: id,\n autoProceed: true,\n restrictions: {\n allowedFileTypes: types,\n },\n });\n\n if (server == \"s3\") {\n uppy.use(AwsS3, {\n endpoint: \"/\", // will call Shrine's presign endpoint mounted on `/s3/params`\n });\n } else if (server == \"s3_multipart\") {\n uppy.use(AwsS3, {\n shouldUseMultipart: true,\n endpoint: \"/\", // will call uppy-s3_multipart endpoint mounted on `/s3/multipart`\n });\n } else {\n uppy.use(XHRUpload, {\n endpoint: \"/upload\", // Shrine's upload endpoint\n });\n }\n\n return uppy;\n}\n\nexport function uploadedFileData(file, response, server) {\n console.log(\"UPLOADED FILE DATA:::::: \", file, response, server);\n if (server == \"s3\") {\n const id = file.meta[\"key\"].match(/^cache\\/(.+)/)[1]; // object key without prefix\n\n return JSON.stringify(fileData(file, id));\n } else if (server == \"s3_multipart\") {\n const id = response.uploadURL.match(/\\/cache\\/([^\\?]+)/)[1]; // object key without prefix\n\n return JSON.stringify(fileData(file, id));\n } else {\n return JSON.stringify(response.body);\n }\n}\n\n// constructs uploaded file data in the format that Shrine expects\nfunction fileData(file, id) {\n return {\n id: id,\n storage: \"cache\",\n metadata: {\n size: file.size,\n filename: file.name,\n mime_type: file.type,\n },\n };\n}\n","/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","export default {\n logger: typeof console !== \"undefined\" ? console : undefined,\n WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n","import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordMessage() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n","export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\",\n \"remote\": \"remote\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n","import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n triedToReconnect() {\n return this.monitor.reconnectAttempts > 0\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n this.monitor.recordMessage()\n switch (type) {\n case message_types.welcome:\n if (this.triedToReconnect()) {\n this.reconnectAttempted = true\n }\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return null\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n if (this.reconnectAttempted) {\n this.reconnectAttempted = false\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n } else {\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n }\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n","// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor","import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n","import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n this.subprotocols = []\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n\n addSubProtocol(subprotocol) {\n this.subprotocols = [...this.subprotocols, subprotocol]\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n","import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\n","\"use strict\";\nmodule.exports = function prettierBytes(num) {\n if (typeof num !== 'number' || Number.isNaN(num)) {\n throw new TypeError(`Expected a number, got ${typeof num}`);\n }\n const neg = num < 0;\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n if (neg) {\n num = -num;\n }\n if (num < 1) {\n return `${(neg ? '-' : '') + num} B`;\n }\n const exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1);\n num = Number(num / 1024 ** exponent);\n const unit = units[exponent];\n if (num >= 10 || num % 1 === 0) {\n return `${(neg ? '-' : '') + num.toFixed(0)} ${unit}`;\n }\n return `${(neg ? '-' : '') + num.toFixed(1)} ${unit}`;\n};\n//# sourceMappingURL=prettierBytes.js.map","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\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 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","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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 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","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\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","/**\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 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 root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n # mime-match\n\n A simple function to checker whether a target mime type matches a mime-type\n pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n ## Example Usage\n\n <<< example.js\n\n**/\nmodule.exports = function(target, pattern) {\n function test(pattern) {\n var result = wildcard(pattern, target, reMimePartSplit);\n\n // ensure that we have a valid mime type (should have two parts)\n return result && result.length >= 2;\n }\n\n return pattern ? test(pattern.split(';')[0]) : test;\n};\n","/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n* console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n* console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n var emitter = {}\n var _fns = emitter._fns = {}\n\n /**\n * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n * @name emit\n * @param {String} event – the name of the event, with optional namespace\n * @param {...*} data – up to 6 arguments that are passed to the event listener\n * @example\n * emitter.emit('example')\n * emitter.emit('demo:test')\n * emitter.emit('data', { example: true}, 'a string', 1)\n */\n emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n var toEmit = getListeners(event)\n\n if (toEmit.length) {\n emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n }\n }\n\n /**\n * Create en event listener.\n * @name on\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.on('example', function () {})\n * emitter.on('demo', function () {})\n */\n emitter.on = function on (event, fn) {\n if (!_fns[event]) {\n _fns[event] = []\n }\n\n _fns[event].push(fn)\n }\n\n /**\n * Create en event listener that fires once.\n * @name once\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.once('example', function () {})\n * emitter.once('demo', function () {})\n */\n emitter.once = function once (event, fn) {\n function one () {\n fn.apply(this, arguments)\n emitter.off(event, one)\n }\n this.on(event, one)\n }\n\n /**\n * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n * @name off\n * @param {String} event\n * @param {Function} [fn] – the specific handler\n * @example\n * emitter.off('example')\n * emitter.off('demo', function () {})\n */\n emitter.off = function off (event, fn) {\n var keep = []\n\n if (event && fn) {\n var fns = this._fns[event]\n var i = 0\n var l = fns ? fns.length : 0\n\n for (i; i < l; i++) {\n if (fns[i] !== fn) {\n keep.push(fns[i])\n }\n }\n }\n\n keep.length ? this._fns[event] = keep : delete this._fns[event]\n }\n\n function getListeners (e) {\n var out = _fns[e] ? _fns[e] : []\n var idx = e.indexOf(':')\n var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n var keys = Object.keys(_fns)\n var i = 0\n var l = keys.length\n\n for (i; i < l; i++) {\n var key = keys[i]\n if (key === '*') {\n out = out.concat(_fns[key])\n }\n\n if (args.length === 2 && args[0] === key) {\n out = out.concat(_fns[key])\n break\n }\n }\n\n return out\n }\n\n function emitAll (e, fns, args) {\n var i = 0\n var l = fns.length\n\n for (i; i < l; i++) {\n if (!fns[i]) break\n fns[i].event = e\n fns[i].apply(fns[i], args)\n }\n }\n\n return emitter\n}\n","var n,l,u,t,i,o,r,f,e,c,s,a,h={},v=[],p=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,y=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function w(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return g(l,f,i,o,null)}function g(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function m(){return{current:null}}function b(n){return n.children}function k(n,l){this.props=n,this.context=l}function x(n,l){if(null==l)return n.__?x(n.__,n.__i+1):null;for(var u;lu&&i.sort(f));P.__r=0}function S(n,l,u,t,i,o,r,f,e,c,s){var a,p,y,d,w,_=t&&t.__k||v,g=l.length;for(u.__d=e,$(u,l,_),e=u.__d,a=0;a0?g(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i).__=n,i.__b=n.__b+1,o=null,-1!==(f=i.__i=L(i,u,r,s))&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f==r-1?a--:f==r+1?a++:(f>r?a--:a++,i.__u|=65536))):i=n.__k[t]=null;if(s)for(t=0;t(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f2&&(e.children=arguments.length>3?n.call(arguments,2):t),g(l.type,e,i||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+a++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=v.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},k.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},k.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},k.prototype.render=b,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},P.__r=0,e=0,c=F(!1),s=F(!0),a=0;export{k as Component,b as Fragment,E as cloneElement,G as createContext,_ as createElement,m as createRef,_ as h,D as hydrate,t as isValidElement,l as options,B as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","module.exports = require('./lib/retry');","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","/* jshint node: true */\n'use strict';\n\n/**\n # wildcard\n\n Very simple wildcard matching, which is designed to provide the same\n functionality that is found in the\n [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n ## Usage\n\n It works with strings:\n\n <<< examples/strings.js\n\n Arrays:\n\n <<< examples/arrays.js\n\n Objects (matching against keys):\n\n <<< examples/objects.js\n\n While the library works in Node, if you are are looking for file-based\n wildcard matching then you should have a look at:\n\n \n**/\n\nfunction WildcardMatcher(text, separator) {\n this.text = text = text || '';\n this.hasWild = ~text.indexOf('*');\n this.separator = separator;\n this.parts = text.split(separator);\n}\n\nWildcardMatcher.prototype.match = function(input) {\n var matches = true;\n var parts = this.parts;\n var ii;\n var partsCount = parts.length;\n var testParts;\n\n if (typeof input == 'string' || input instanceof String) {\n if (!this.hasWild && this.text != input) {\n matches = false;\n } else {\n testParts = (input || '').split(this.separator);\n for (ii = 0; matches && ii < partsCount; ii++) {\n if (parts[ii] === '*') {\n continue;\n } else if (ii < testParts.length) {\n matches = parts[ii] === testParts[ii];\n } else {\n matches = false;\n }\n }\n\n // If matches, then return the component parts\n matches = matches && testParts;\n }\n }\n else if (typeof input.splice == 'function') {\n matches = [];\n\n for (ii = input.length; ii--; ) {\n if (this.match(input[ii])) {\n matches[matches.length] = input[ii];\n }\n }\n }\n else if (typeof input == 'object') {\n matches = {};\n\n for (var key in input) {\n if (this.match(key)) {\n matches[key] = input[key];\n }\n }\n }\n\n return matches;\n};\n\nmodule.exports = function(text, test, separator) {\n var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n if (typeof test != 'undefined') {\n return matcher.match(test);\n }\n\n return matcher;\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/* eslint-disable class-methods-use-this */\n\n/**\n * Core plugin logic that all plugins share.\n *\n * BasePlugin does not contain DOM rendering so it can be used for plugins\n * without a user interface.\n *\n * See `Plugin` for the extended version with Preact rendering for interfaces.\n */\n\nimport Translator from '@uppy/utils/lib/Translator';\n\n/**\n * DefinePluginOpts marks all of the passed AlwaysDefinedKeys as “required” or “always defined”.\n */\n\nexport default class BasePlugin {\n constructor(uppy, opts) {\n this.uppy = uppy;\n this.opts = opts != null ? opts : {};\n }\n getPluginState() {\n const {\n plugins\n } = this.uppy.getState();\n return (plugins == null ? void 0 : plugins[this.id]) || {};\n }\n setPluginState(update) {\n const {\n plugins\n } = this.uppy.getState();\n this.uppy.setState({\n plugins: {\n ...plugins,\n [this.id]: {\n ...plugins[this.id],\n ...update\n }\n }\n });\n }\n setOptions(newOpts) {\n this.opts = {\n ...this.opts,\n ...newOpts\n };\n this.setPluginState(undefined); // so that UI re-renders with new options\n this.i18nInit();\n }\n i18nInit() {\n const translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = translator.translate.bind(translator);\n this.i18nArray = translator.translateArray.bind(translator);\n this.setPluginState(undefined); // so that UI re-renders and we see the updated locale\n }\n\n /**\n * Extendable methods\n * ==================\n * These methods are here to serve as an overview of the extendable methods as well as\n * making them not conditional in use, such as `if (this.afterUpdate)`.\n */\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTarget(plugin) {\n throw new Error(\"Extend the addTarget method to add your plugin to another plugin's target\");\n }\n install() {}\n uninstall() {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n update(state) {}\n\n // Called after every state update, after everything's mounted. Debounced.\n afterUpdate() {}\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\n/* eslint-disable class-methods-use-this */\nimport { render } from 'preact';\nimport findDOMElement from '@uppy/utils/lib/findDOMElement';\nimport getTextDirection from '@uppy/utils/lib/getTextDirection';\nimport BasePlugin from \"./BasePlugin.js\";\n/**\n * Defer a frequent call to the microtask queue.\n */\nfunction debounce(fn) {\n let calling = null;\n let latestArgs;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n latestArgs = args;\n if (!calling) {\n calling = Promise.resolve().then(() => {\n calling = null;\n // At this point `args` may be different from the most\n // recent state, if multiple calls happened since this task\n // was queued. So we use the `latestArgs`, which definitely\n // is the most recent call.\n return fn(...latestArgs);\n });\n }\n return calling;\n };\n}\n\n/**\n * UIPlugin is the extended version of BasePlugin to incorporate rendering with Preact.\n * Use this for plugins that need a user interface.\n *\n * For plugins without an user interface, see BasePlugin.\n */\nvar _updateUI = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateUI\");\nclass UIPlugin extends BasePlugin {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, _updateUI, {\n writable: true,\n value: void 0\n });\n }\n getTargetPlugin(target // eslint-disable-line no-use-before-define\n ) {\n let targetPlugin;\n if (typeof (target == null ? void 0 : target.addTarget) === 'function') {\n // Targeting a plugin *instance*\n targetPlugin = target;\n if (!(targetPlugin instanceof UIPlugin)) {\n // eslint-disable-next-line no-console\n console.warn(new Error('The provided plugin is not an instance of UIPlugin. This is an indication of a bug with the way Uppy is bundled.', {\n cause: {\n targetPlugin,\n UIPlugin\n }\n }));\n }\n } else if (typeof target === 'function') {\n // Targeting a plugin type\n const Target = target;\n // Find the target plugin instance.\n this.uppy.iteratePlugins(p => {\n if (p instanceof Target) {\n targetPlugin = p;\n }\n });\n }\n return targetPlugin;\n }\n\n /**\n * Check if supplied `target` is a DOM element or an `object`.\n * If it’s an object — target is a plugin, and we search `plugins`\n * for a plugin with same name and return its target.\n */\n mount(target,\n // eslint-disable-line no-use-before-define\n plugin) {\n const callerPluginName = plugin.id;\n const targetElement = findDOMElement(target);\n if (targetElement) {\n this.isTargetDOMEl = true;\n // When target is with a single
            element,\n // Preact thinks it’s the Uppy root element in there when doing a diff,\n // and destroys it. So we are creating a fragment (could be empty div)\n const uppyRootElement = document.createElement('div');\n uppyRootElement.classList.add('uppy-Root');\n\n // API for plugins that require a synchronous rerender.\n _classPrivateFieldLooseBase(this, _updateUI)[_updateUI] = debounce(state => {\n // plugin could be removed, but this.rerender is debounced below,\n // so it could still be called even after uppy.removePlugin or uppy.destroy\n // hence the check\n if (!this.uppy.getPlugin(this.id)) return;\n render(this.render(state, uppyRootElement), uppyRootElement);\n this.afterUpdate();\n });\n this.uppy.log(`Installing ${callerPluginName} to a DOM element '${target}'`);\n if (this.opts.replaceTargetContent) {\n // Doing render(h(null), targetElement), which should have been\n // a better way, since because the component might need to do additional cleanup when it is removed,\n // stopped working — Preact just adds null into target, not replacing\n targetElement.innerHTML = '';\n }\n render(this.render(this.uppy.getState(), uppyRootElement), uppyRootElement);\n this.el = uppyRootElement;\n targetElement.appendChild(uppyRootElement);\n\n // Set the text direction if the page has not defined one.\n uppyRootElement.dir = this.opts.direction || getTextDirection(uppyRootElement) || 'ltr';\n this.onMount();\n return this.el;\n }\n const targetPlugin = this.getTargetPlugin(target);\n if (targetPlugin) {\n this.uppy.log(`Installing ${callerPluginName} to ${targetPlugin.id}`);\n this.parent = targetPlugin;\n this.el = targetPlugin.addTarget(plugin);\n this.onMount();\n return this.el;\n }\n this.uppy.log(`Not installing ${callerPluginName}`);\n let message = `Invalid target option given to ${callerPluginName}.`;\n if (typeof target === 'function') {\n message += ' The given target is not a Plugin class. ' + \"Please check that you're not specifying a React Component instead of a plugin. \" + 'If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: ' + 'run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.';\n } else {\n message += 'If you meant to target an HTML element, please make sure that the element exists. ' + 'Check that the